linux/drivers/pmdomain
Bjorn Andersson 2a93c6cbd5 pmdomain: qcom: rpmhpd: Fix enabled_corner aggregation
Commit 'e3e56c050ab6 ("soc: qcom: rpmhpd: Make power_on actually enable
the domain")' aimed to make sure that a power-domain that is being
enabled without any particular performance-state requested will at least
turn the rail on, to avoid filling DeviceTree with otherwise unnecessary
required-opps properties.

But in the event that aggregation happens on a disabled power-domain, with
an enabled peer without performance-state, both the local and peer
corner are 0. The peer's enabled_corner is not considered, with the
result that the underlying (shared) resource is disabled.

One case where this can be observed is when the display stack keeps mmcx
enabled (but without a particular performance-state vote) in order to
access registers and sync_state happens in the rpmhpd driver. As mmcx_ao
is flushed the state of the peer (mmcx) is not considered and mmcx_ao
ends up turning off "mmcx.lvl" underneath mmcx. This has been observed
several times, but has been painted over in DeviceTree by adding an
explicit vote for the lowest non-disabled performance-state.

Fixes: e3e56c050a ("soc: qcom: rpmhpd: Make power_on actually enable the domain")
Reported-by: Johan Hovold <johan@kernel.org>
Closes: https://lore.kernel.org/linux-arm-msm/ZdMwZa98L23mu3u6@hovoldconsulting.com/
Cc:  <stable@vger.kernel.org>
Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Tested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Tested-by: Johan Hovold <johan+linaro@kernel.org>
Link: https://lore.kernel.org/r/20240226-rpmhpd-enable-corner-fix-v1-1-68c004cec48c@quicinc.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
2024-02-28 16:31:45 +01:00
..
actions pmdomain: Use device_get_match_data() 2023-10-17 11:45:11 +02:00
amlogic pmdomain: amlogic: meson-ee-pwrc: add support for G12A ISP power domain 2023-11-30 12:05:21 +01:00
apple pmdomain: apple: Move Kconfig option to the pmdomain subsystem 2023-09-20 10:08:49 +02:00
arm pmdomain: arm: Fix NULL dereference on scmi_perf_domain removal 2024-02-13 13:04:19 +01:00
bcm pmdomain: Merge branch fixes into next 2023-10-26 16:01:03 +02:00
imx pmdomain: imx93-pd: Convert to platform remove callback returning void 2023-11-30 12:15:35 +01:00
mediatek pmdomain: mediatek: fix race conditions with genpd 2024-01-23 13:19:15 +01:00
qcom pmdomain: qcom: rpmhpd: Fix enabled_corner aggregation 2024-02-28 16:31:45 +01:00
renesas pmdomain: renesas: r8a77980-sysc: CR7 must be always on 2024-01-22 15:49:56 +01:00
rockchip pmdomain: Use device_get_match_data() 2023-10-17 11:45:11 +02:00
samsung pmdomain: samsung: Move Kconfig option to the pmdomain subsystem 2023-10-04 23:41:56 +02:00
st pmdomain: st: Add a Kconfig option for the ux500 power domain 2023-10-04 23:41:56 +02:00
starfive pmdomain: starfive: Update prefixes for AON power domain 2023-10-04 23:41:57 +02:00
sunxi pmdomain: sunxi: Move Kconfig option to the pmdomain subsystem 2023-10-04 23:41:56 +02:00
tegra pmdomain: tegra: Move Kconfig option to the pmdomain subsystem 2023-10-04 23:41:56 +02:00
ti pmdomain: ti: add missing of_node_put 2023-10-17 11:42:29 +02:00
xilinx pmdomain: xilinx/zynqmp: Convert to platform remove callback returning void 2023-11-30 12:15:36 +01:00
core.c pmdomain: core: Move the unused cleanup to a _sync initcall 2024-01-22 15:47:36 +01:00
governor.c PM: domains: Move genpd and its governor to the pmdomain subsystem 2023-12-18 12:49:48 +01:00
Kconfig pmdomain: arm_scmi: Move Kconfig options to the pmdomain subsystem 2023-11-23 17:32:53 +01:00
Makefile PM: domains: Move genpd and its governor to the pmdomain subsystem 2023-12-18 12:49:48 +01:00