lkml.org 
[lkml]   [2020]   [Nov]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.9 24/33] cpuidle: tegra: Annotate tegra_pm_set_cpu_in_lp2() with RCU_NONIDLE
    Date
    From: Dmitry Osipenko <digetx@gmail.com>

    [ Upstream commit c39de538a06e76d89b7e598a71e16688009cd56c ]

    Annotate tegra_pm_set[clear]_cpu_in_lp2() with RCU_NONIDLE in order to
    fix lockdep warning about suspicious RCU usage of a spinlock during late
    idling phase.

    WARNING: suspicious RCU usage
    ...
    include/trace/events/lock.h:13 suspicious rcu_dereference_check() usage!
    ...
    (dump_stack) from (lock_acquire)
    (lock_acquire) from (_raw_spin_lock)
    (_raw_spin_lock) from (tegra_pm_set_cpu_in_lp2)
    (tegra_pm_set_cpu_in_lp2) from (tegra_cpuidle_enter)
    (tegra_cpuidle_enter) from (cpuidle_enter_state)
    (cpuidle_enter_state) from (cpuidle_enter_state_coupled)
    (cpuidle_enter_state_coupled) from (cpuidle_enter)
    (cpuidle_enter) from (do_idle)
    ...

    Tested-by: Peter Geis <pgwipeout@gmail.com>
    Reported-by: Peter Geis <pgwipeout@gmail.com>
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/cpuidle/cpuidle-tegra.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/drivers/cpuidle/cpuidle-tegra.c b/drivers/cpuidle/cpuidle-tegra.c
    index e8956706a2917..191966dc8d023 100644
    --- a/drivers/cpuidle/cpuidle-tegra.c
    +++ b/drivers/cpuidle/cpuidle-tegra.c
    @@ -189,7 +189,7 @@ static int tegra_cpuidle_state_enter(struct cpuidle_device *dev,
    }

    local_fiq_disable();
    - tegra_pm_set_cpu_in_lp2();
    + RCU_NONIDLE(tegra_pm_set_cpu_in_lp2());
    cpu_pm_enter();

    switch (index) {
    @@ -207,7 +207,7 @@ static int tegra_cpuidle_state_enter(struct cpuidle_device *dev,
    }

    cpu_pm_exit();
    - tegra_pm_clear_cpu_in_lp2();
    + RCU_NONIDLE(tegra_pm_clear_cpu_in_lp2());
    local_fiq_enable();

    return err ?: index;
    --
    2.27.0
    \
     
     \ /
      Last update: 2020-11-25 17:09    [W:3.017 / U:0.252 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site