linux/drivers/soc
Bjorn Andersson 0779521576 pmdomain: qcom: rpmhpd: Fix enabled_corner aggregation
commit 2a93c6cbd5 upstream.

Commit 'e3e56c050a ("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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2024-03-06 14:38:49 +00:00
..
actions soc: actions: include header to fix missing prototype 2020-09-22 12:45:16 +05:30
amlogic drivers: meson: secure-pwrc: always enable DMA domain 2023-07-23 13:47:09 +02:00
aspeed soc: aspeed: socinfo: Add kfree for kstrdup 2023-08-26 14:23:36 +02:00
atmel ARM: at91: fix soc detection for SAM9X60 SiPs 2022-07-12 16:35:15 +02:00
bcm soc: brcmstb: pm-arm: Fix refcount leak and __iomem leak bugs 2022-09-15 11:30:04 +02:00
canaan drivers: bus: Delete CONFIG_SIMPLE_PM_BUS 2021-10-05 17:47:22 +02:00
dove treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
fsl soc/fsl/qe: fix usb.c build errors 2023-07-23 13:47:04 +02:00
gemini soc: Add SoC driver for Gemini 2018-01-04 17:01:53 +01:00
imx soc: imx8m: Enable OCOTP clock for imx8mm before reading registers 2023-10-06 13:18:14 +02:00
ixp4xx soc: ixp4xx/npe: Fix unused match warning 2022-07-21 21:24:40 +02:00
lantiq soc: lantiq: convert to devm_platform_ioremap_resource 2020-01-10 11:44:52 -08:00
litex drivers/soc/litex: remove 8-bit subregister option 2021-06-11 04:35:40 +09:00
mediatek pmdomain: mediatek: fix race conditions with genpd 2024-03-01 13:21:47 +01:00
qcom pmdomain: qcom: rpmhpd: Fix enabled_corner aggregation 2024-03-06 14:38:49 +00:00
renesas pmdomain: renesas: r8a77980-sysc: CR7 must be always on 2024-03-01 13:21:48 +01:00
rockchip soc: rockchip: Fix refcount leak in rockchip_grf_init 2022-06-14 18:36:07 +02:00
samsung soc: samsung: exynos-pmu: Fix compilation when nothing selects CONFIG_MFD_CORE 2021-11-18 19:16:01 +01:00
sifive soc: sifive: l2_cache: fix missing of_node_put() in sifive_l2_init() 2023-04-26 13:51:56 +02:00
sunxi soc: sunxi: sram: Fix debugfs info for A64 SRAM C 2022-10-05 10:39:41 +02:00
tegra soc/tegra: fuse: Drop Kconfig dependency on TEGRA20_APB_DMA 2022-10-26 12:35:00 +02:00
ti soc: ti: pm33xx: Fix refcount leak in am33xx_pm_probe 2023-05-11 23:00:20 +09:00
ux500 ARM: ux500: do not directly dereference __iomem 2023-01-12 11:58:50 +01:00
versatile soc: integrator: Drop pointless static qualifier in integrator_soc_init() 2020-08-20 08:57:05 +02:00
xilinx clk: xilinx: move xlnx_vcu clock driver from soc 2021-02-08 18:31:25 -08:00
Kconfig RISC-V Patches for the 5.12 Merge Window 2021-02-26 10:28:35 -08:00
Makefile ARM: ixp4xx: fix compile-testing soc drivers 2021-08-02 14:31:15 +02:00