* [PATCH 0/5] Improve GPU reset sequence for Adreno GPU
@ 2022-12-15 15:10 Akhil P Oommen
2022-12-15 15:10 ` [PATCH 2/5] clk: qcom: gdsc: Support 'synced_poweroff' genpd flag Akhil P Oommen
0 siblings, 1 reply; 3+ messages in thread
From: Akhil P Oommen @ 2022-12-15 15:10 UTC (permalink / raw)
To: freedreno, dri-devel, linux-arm-msm, Rob Clark, Ulf Hansson,
Bjorn Andersson
Cc: Akhil P Oommen, Abhinav Kumar, Andy Gross, Chia-I Wu,
Daniel Vetter, David Airlie, Dmitry Baryshkov, Douglas Anderson,
Geert Uytterhoeven, Greg Kroah-Hartman, Guenter Roeck,
Kevin Hilman, Konrad Dybcio, Konrad Dybcio, Len Brown,
Michael Turquette, Pavel Machek, Philipp Zabel, Rafael J. Wysocki,
Sean Paul, Stephen Boyd, linux-clk, linux-kernel, linux-pm
This is a rework of [1] using genpd instead of 'reset' framework.
As per the recommended reset sequence of Adreno gpu, we should ensure that
gpucc-cx-gdsc has collapsed at hardware to reset gpu's internal hardware states.
Because this gdsc is implemented as 'votable', gdsc driver doesn't poll and
wait until its hw status says OFF.
So use the newly introduced genpd api (dev_pm_genpd_synced_poweroff()) to
provide a hint to the gdsc driver to poll for the hw status and use genpd
notifier to wait from adreno gpu driver until gdsc is turned OFF.
This series is rebased on top of linux-next (20221215) since the changes span
multiple drivers.
[1] https://patchwork.freedesktop.org/series/107507/
Akhil P Oommen (4):
clk: qcom: gdsc: Support 'synced_poweroff' genpd flag
drm/msm/a6xx: Vote for cx gdsc from gpu driver
drm/msm/a6xx: Remove cx gdsc polling using 'reset'
drm/msm/a6xx: Use genpd notifier to ensure cx-gdsc collapse
Ulf Hansson (1):
PM: domains: Allow a genpd consumer to require a synced power off
drivers/base/power/domain.c | 23 ++++++++++++++++++
drivers/clk/qcom/gdsc.c | 11 +++++----
drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 46 ++++++++++++++++++++++++++++++++---
drivers/gpu/drm/msm/adreno/a6xx_gmu.h | 7 ++++++
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 13 +++++++---
drivers/gpu/drm/msm/msm_gpu.c | 4 ---
drivers/gpu/drm/msm/msm_gpu.h | 4 ---
include/linux/pm_domain.h | 5 ++++
8 files changed, 93 insertions(+), 20 deletions(-)
--
2.7.4
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 2/5] clk: qcom: gdsc: Support 'synced_poweroff' genpd flag
2022-12-15 15:10 [PATCH 0/5] Improve GPU reset sequence for Adreno GPU Akhil P Oommen
@ 2022-12-15 15:10 ` Akhil P Oommen
2022-12-16 16:09 ` Stephen Boyd
0 siblings, 1 reply; 3+ messages in thread
From: Akhil P Oommen @ 2022-12-15 15:10 UTC (permalink / raw)
To: freedreno, dri-devel, linux-arm-msm, Rob Clark, Ulf Hansson,
Bjorn Andersson
Cc: Akhil P Oommen, Andy Gross, Konrad Dybcio, Michael Turquette,
Stephen Boyd, linux-clk, linux-kernel
Add support for the newly added 'synced_poweroff' genpd flag. This allows
some clients (like adreno gpu driver) to request gdsc driver to ensure
a votable gdsc (like gpucc cx gdsc) has collapsed at hardware.
Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
---
drivers/clk/qcom/gdsc.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/clk/qcom/gdsc.c b/drivers/clk/qcom/gdsc.c
index 9e4d6ce891aa..575019ba4768 100644
--- a/drivers/clk/qcom/gdsc.c
+++ b/drivers/clk/qcom/gdsc.c
@@ -136,7 +136,8 @@ static int gdsc_update_collapse_bit(struct gdsc *sc, bool val)
return 0;
}
-static int gdsc_toggle_logic(struct gdsc *sc, enum gdsc_status status)
+static int gdsc_toggle_logic(struct gdsc *sc, enum gdsc_status status,
+ bool force_sync)
{
int ret;
@@ -149,7 +150,7 @@ static int gdsc_toggle_logic(struct gdsc *sc, enum gdsc_status status)
ret = gdsc_update_collapse_bit(sc, status == GDSC_OFF);
/* If disabling votable gdscs, don't poll on status */
- if ((sc->flags & VOTABLE) && status == GDSC_OFF) {
+ if ((sc->flags & VOTABLE) && status == GDSC_OFF && !force_sync) {
/*
* Add a short delay here to ensure that an enable
* right after it was disabled does not put it in an
@@ -275,7 +276,7 @@ static int gdsc_enable(struct generic_pm_domain *domain)
gdsc_deassert_clamp_io(sc);
}
- ret = gdsc_toggle_logic(sc, GDSC_ON);
+ ret = gdsc_toggle_logic(sc, GDSC_ON, false);
if (ret)
return ret;
@@ -352,7 +353,7 @@ static int gdsc_disable(struct generic_pm_domain *domain)
if (sc->pwrsts == PWRSTS_RET_ON)
return 0;
- ret = gdsc_toggle_logic(sc, GDSC_OFF);
+ ret = gdsc_toggle_logic(sc, GDSC_OFF, domain->synced_poweroff);
if (ret)
return ret;
@@ -392,7 +393,7 @@ static int gdsc_init(struct gdsc *sc)
/* Force gdsc ON if only ON state is supported */
if (sc->pwrsts == PWRSTS_ON) {
- ret = gdsc_toggle_logic(sc, GDSC_ON);
+ ret = gdsc_toggle_logic(sc, GDSC_ON, false);
if (ret)
return ret;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 2/5] clk: qcom: gdsc: Support 'synced_poweroff' genpd flag
2022-12-15 15:10 ` [PATCH 2/5] clk: qcom: gdsc: Support 'synced_poweroff' genpd flag Akhil P Oommen
@ 2022-12-16 16:09 ` Stephen Boyd
0 siblings, 0 replies; 3+ messages in thread
From: Stephen Boyd @ 2022-12-16 16:09 UTC (permalink / raw)
To: Akhil P Oommen, Bjorn Andersson, Rob Clark, Ulf Hansson,
dri-devel, freedreno, linux-arm-msm
Cc: Akhil P Oommen, Andy Gross, Konrad Dybcio, Michael Turquette,
linux-clk, linux-kernel
Quoting Akhil P Oommen (2022-12-15 07:10:58)
> Add support for the newly added 'synced_poweroff' genpd flag. This allows
> some clients (like adreno gpu driver) to request gdsc driver to ensure
> a votable gdsc (like gpucc cx gdsc) has collapsed at hardware.
>
> Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
> ---
>
> drivers/clk/qcom/gdsc.c | 11 ++++++-----
> 1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/clk/qcom/gdsc.c b/drivers/clk/qcom/gdsc.c
> index 9e4d6ce891aa..575019ba4768 100644
> --- a/drivers/clk/qcom/gdsc.c
> +++ b/drivers/clk/qcom/gdsc.c
> @@ -136,7 +136,8 @@ static int gdsc_update_collapse_bit(struct gdsc *sc, bool val)
> return 0;
> }
>
> -static int gdsc_toggle_logic(struct gdsc *sc, enum gdsc_status status)
> +static int gdsc_toggle_logic(struct gdsc *sc, enum gdsc_status status,
> + bool force_sync)
Maybe just 'wait'? That matches kernel style and is short.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-12-16 16:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-15 15:10 [PATCH 0/5] Improve GPU reset sequence for Adreno GPU Akhil P Oommen
2022-12-15 15:10 ` [PATCH 2/5] clk: qcom: gdsc: Support 'synced_poweroff' genpd flag Akhil P Oommen
2022-12-16 16:09 ` Stephen Boyd
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox