linux_dsm_epyc7002/drivers/soc/qcom
Douglas Anderson d2a8cfc6f3 soc: qcom: rpmh-rsc: Remove the pm_lock
It has been postulated that the pm_lock is bad for performance because
a CPU currently running rpmh_flush() could block other CPUs from
coming out of idle.  Similarly CPUs coming out of / going into idle
all need to contend with each other for the spinlock just to update
the variable tracking who's in PM.

Let's optimize this a bit.  Specifically:

- Use a count rather than a bitmask.  This is faster to access and
  also means we can use the atomic_inc_return() function to really
  detect who the last one to enter PM was.
- Accept that it's OK if we race and are doing the flush (because we
  think we're last) while another CPU is coming out of idle.  As long
  as we block that CPU if/when it tries to do an active-only transfer
  we're OK.

Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Link: https://lore.kernel.org/r/20200504104917.v6.5.I295cb72bc5334a2af80313cbe97cb5c9dcb1442c@changeid
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2020-05-15 11:45:21 -07:00
..
apr.c soc: qcom: apr: Add avs/audio tracking functionality 2020-03-14 22:38:50 -07:00
cmd-db.c soc: qcom: cmd-db: Properly endian swap the slv_id for debugfs 2020-04-19 23:06:29 -07:00
glink_ssr.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284 2019-06-05 17:36:37 +02:00
Kconfig soc: qcom: rpmpd: Allow RPMPD driver to be loaded as a module 2020-04-14 15:39:56 -07:00
llcc-qcom.c soc: qcom: llcc: Add configuration data for SC7180 2019-10-20 19:15:20 -07:00
Makefile soc: qcom: Introduce Protection Domain Restart helpers 2020-03-14 22:38:42 -07:00
mdt_loader.c
ocmem.c soc: qcom: add OCMEM driver 2019-10-07 08:17:33 -07:00
pdr_interface.c soc: qcom: pdr: Remove impossible error condition 2020-04-20 23:57:58 -07:00
pdr_internal.h soc: qcom: Introduce Protection Domain Restart helpers 2020-03-14 22:38:42 -07:00
qcom_aoss.c soc: qcom: aoss: Add SM8250 compatible 2020-05-11 17:17:23 -07:00
qcom_gsbi.c
qcom-geni-se.c
qmi_encdec.c
qmi_interface.c soc: qcom: qmi: Return EPROBE_DEFER if no address family 2019-12-10 22:44:34 -08:00
rmtfs_mem.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284 2019-06-05 17:36:37 +02:00
rpmh-internal.h soc: qcom: rpmh-rsc: Remove the pm_lock 2020-05-15 11:45:21 -07:00
rpmh-rsc.c soc: qcom: rpmh-rsc: Remove the pm_lock 2020-05-15 11:45:21 -07:00
rpmh.c soc: qcom: rpmh-rsc: Remove the pm_lock 2020-05-15 11:45:21 -07:00
rpmhpd.c soc: qcom: rpmhpd: Add SM8250 power domains 2020-04-20 23:31:48 -07:00
rpmpd.c soc: qcom: rpmpd: Allow RPMPD driver to be loaded as a module 2020-04-14 15:39:56 -07:00
smd-rpm.c
smem_state.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284 2019-06-05 17:36:37 +02:00
smem.c soc: qcom: smem: Update max processor count 2019-08-21 15:58:01 -07:00
smp2p.c soc: qcom: smp2p: Delete an error message in qcom_smp2p_probe() 2020-04-13 18:10:12 -07:00
smsm.c
socinfo.c soc: qcom: socinfo: add msm8936/39 and apq8036/39 soc ids 2020-05-11 17:32:07 -07:00
spm.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284 2019-06-05 17:36:37 +02:00
trace-rpmh.h
wcnss_ctrl.c