• Stephen Boyd's avatar
    drivers: qcom: rpmh-rsc: Use rcuidle tracepoints for rpmh · efde2659
    Stephen Boyd authored
    This tracepoint is hit now that we call into the rpmh code from the cpu
    idle path. Let's move this to be an rcuidle tracepoint so that we avoid
    the RCU idle splat below
    
     =============================
     WARNING: suspicious RCU usage
     5.4.10 #68 Tainted: G S
     -----------------------------
     drivers/soc/qcom/trace-rpmh.h:72 suspicious rcu_dereference_check() usage!
    
     other info that might help us debug this:
    
     RCU used illegally from idle CPU!
     rcu_scheduler_active = 2, debug_locks = 1
     RCU used illegally from extended quiescent state!
     5 locks held by swapper/2/0:
      #0: ffffff81745d6ee8 (&(&genpd->slock)->rlock){+.+.}, at: genpd_lock_spin+0x1c/0x2c
      #1: ffffff81745da6e8 (&(&genpd->slock)->rlock/1){....}, at: genpd_lock_nested_spin+0x24/0x34
      #2: ffffff8174f2ca20 (&(&genpd->slock)->rlock/2){....}, at: genpd_lock_nested_spin+0x24/0x34
      #3: ffffff8174f2c300 (&(&drv->client.cache_lock)->rlock){....}, at: rpmh_flush+0x48/0x24c
      #4: ffffff8174f2c150 (&(&tcs->lock)->rlock){+.+.}, at: rpmh_rsc_write_ctrl_data+0x74/0x270
    
     stack backtrace:
     CPU: 2 PID: 0 Comm: swapper/2 Tainted: G S                5.4.10 #68
     Call trace:
      dump_backtrace+0x0/0x174
      show_stack+0x20/0x2c
      dump_stack+0xc8/0x124
      lockdep_rcu_suspicious+0xe4/0x104
      __tcs_buffer_write+0x230/0x2d0
      rpmh_rsc_write_ctrl_data+0x210/0x270
      rpmh_flush+0x84/0x24c
      rpmh_domain_power_off+0x78/0x98
      _genpd_power_off+0x40/0xc0
      genpd_power_off+0x168/0x208
      genpd_power_off+0x1e0/0x208
      genpd_power_off+0x1e0/0x208
      genpd_runtime_suspend+0x1ac/0x220
      __rpm_callback+0x70/0xfc
      rpm_callback+0x34/0x8c
      rpm_suspend+0x218/0x4a4
      __pm_runtime_suspend+0x88/0xac
      psci_enter_domain_idle_state+0x3c/0xb4
      cpuidle_enter_state+0xb8/0x284
      cpuidle_enter+0x38/0x4c
      call_cpuidle+0x3c/0x68
      do_idle+0x194/0x260
      cpu_startup_entry+0x24/0x28
      secondary_start_kernel+0x150/0x15c
    Acked-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
    Tested-by: default avatarSai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
    Fixes: a65a397f ("cpuidle: psci: Add support for PM domains by using genpd")
    Reported-by: default avatarSai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
    Cc: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: default avatarStephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/20200115013751.249588-1-swboyd@chromium.orgSigned-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
    efde2659
rpmh-rsc.c 16.4 KB