Revert "regulator: qcom-rpmh: Revert "regulator: qcom-rpmh: Use PROBE_FORCE_SYNCHRONOUS""

Message ID 20230515145323.1693044-1-amit.pundir@linaro.org
State New
Headers
Series Revert "regulator: qcom-rpmh: Revert "regulator: qcom-rpmh: Use PROBE_FORCE_SYNCHRONOUS"" |

Commit Message

Amit Pundir May 15, 2023, 2:53 p.m. UTC
  This reverts commit ad44ac082fdff7ee57fe125432f7d9d7cb610a23.

This patch restores the synchronous probing for
qcom-rpmh-regulator because asynchronous probing broke
Dragonboard 845c (SDM845) running AOSP. UFSHC fail to
initialize properly and DB845c fails to boot regardless
of "rootwait" bootarg being present or not
https://bugs.linaro.org/show_bug.cgi?id=5975.

Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
---
 drivers/regulator/qcom-rpmh-regulator.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Doug Anderson May 15, 2023, 3:05 p.m. UTC | #1
Hi,

On Mon, May 15, 2023 at 7:53 AM Amit Pundir <amit.pundir@linaro.org> wrote:
>
> This reverts commit ad44ac082fdff7ee57fe125432f7d9d7cb610a23.
>
> This patch restores the synchronous probing for
> qcom-rpmh-regulator because asynchronous probing broke
> Dragonboard 845c (SDM845) running AOSP. UFSHC fail to
> initialize properly and DB845c fails to boot regardless
> of "rootwait" bootarg being present or not
> https://bugs.linaro.org/show_bug.cgi?id=5975.
>
> Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
> ---
>  drivers/regulator/qcom-rpmh-regulator.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

As mentioned in the other thread [1], I'd rather at least do a little
debugging before jumping to a revert, just so we don't end up having
to do a revert of a revert for the same driver again.

[1] https://lore.kernel.org/r/CAD=FV=VSFDe445WEVTHXxU1WS_HGUV5jR5E8_Vgd4eyhn3rHyA@mail.gmail.com
  
Bjorn Andersson May 15, 2023, 4 p.m. UTC | #2
On Mon, May 15, 2023 at 08:23:23PM +0530, Amit Pundir wrote:
> This reverts commit ad44ac082fdff7ee57fe125432f7d9d7cb610a23.
> 
> This patch restores the synchronous probing for
> qcom-rpmh-regulator because asynchronous probing broke
> Dragonboard 845c (SDM845) running AOSP. UFSHC fail to
> initialize properly and DB845c fails to boot regardless
> of "rootwait" bootarg being present or not
> https://bugs.linaro.org/show_bug.cgi?id=5975.
> 

Looking at the first attachment, I would suggest that UFS fails because
it's not able to get hold of its regulators, just as any other device
with supplies would.

The typical cause for rpmh timeouts is that you're no longer able to
talk to the rpmh. Could you please attempt to trace the system and see
what's happening in parallel that would cause such issue.

Also note that such issues often also results in UFS timeouts, which
results in the familiar UFS debug dumps.


In the second log, the system crashes 51 seconds after rpmh probes,
around the time where other sync_state is happening. This too would seem
related to missing resource votes, but I would expect being a separate
issue.

PS. this is a patch in the regulator code, but I don't see Mark in the
recipients list...

Regards,
Bjorn

> Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
> ---
>  drivers/regulator/qcom-rpmh-regulator.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/regulator/qcom-rpmh-regulator.c b/drivers/regulator/qcom-rpmh-regulator.c
> index b0a58c62b1e2..30659922b0aa 100644
> --- a/drivers/regulator/qcom-rpmh-regulator.c
> +++ b/drivers/regulator/qcom-rpmh-regulator.c
> @@ -1517,7 +1517,7 @@ MODULE_DEVICE_TABLE(of, rpmh_regulator_match_table);
>  static struct platform_driver rpmh_regulator_driver = {
>  	.driver = {
>  		.name = "qcom-rpmh-regulator",
> -		.probe_type = PROBE_PREFER_ASYNCHRONOUS,
> +		.probe_type = PROBE_FORCE_SYNCHRONOUS,
>  		.of_match_table	= of_match_ptr(rpmh_regulator_match_table),
>  	},
>  	.probe = rpmh_regulator_probe,
> -- 
> 2.25.1
>
  
Amit Pundir May 15, 2023, 5:31 p.m. UTC | #3
+ Mark.

On Mon, 15 May 2023 at 21:26, Bjorn Andersson <andersson@kernel.org> wrote:
>
> On Mon, May 15, 2023 at 08:23:23PM +0530, Amit Pundir wrote:
> > This reverts commit ad44ac082fdff7ee57fe125432f7d9d7cb610a23.
> >
> > This patch restores the synchronous probing for
> > qcom-rpmh-regulator because asynchronous probing broke
> > Dragonboard 845c (SDM845) running AOSP. UFSHC fail to
> > initialize properly and DB845c fails to boot regardless
> > of "rootwait" bootarg being present or not
> > https://bugs.linaro.org/show_bug.cgi?id=5975.
> >
>
> Looking at the first attachment, I would suggest that UFS fails because
> it's not able to get hold of its regulators, just as any other device
> with supplies would.
>
> The typical cause for rpmh timeouts is that you're no longer able to
> talk to the rpmh. Could you please attempt to trace the system and see
> what's happening in parallel that would cause such issue.

This is happening very early in the boot process (first stag init),
wherein init is supposed to load the kernel modules from ramdisk and
mount the partitions.

System does boot successfully 2/5 times, so this is definitely a
timing issue as Douglas also pointed out in the other thread. I'll try
to follow his suggestions and narrow down the issue further.

>
> Also note that such issues often also results in UFS timeouts, which
> results in the familiar UFS debug dumps.
>
>
> In the second log, the system crashes 51 seconds after rpmh probes,
> around the time where other sync_state is happening. This too would seem
> related to missing resource votes, but I would expect being a separate
> issue.
>
> PS. this is a patch in the regulator code, but I don't see Mark in the
> recipients list...

Sorry about that. I thought I had Mark copied over from the other
thread, after-all he was the one who suggested this patch, but I
didn't :facepalm:

Regards,
Amit Pundir


>
> Regards,
> Bjorn
>
> > Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
> > ---
> >  drivers/regulator/qcom-rpmh-regulator.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/regulator/qcom-rpmh-regulator.c b/drivers/regulator/qcom-rpmh-regulator.c
> > index b0a58c62b1e2..30659922b0aa 100644
> > --- a/drivers/regulator/qcom-rpmh-regulator.c
> > +++ b/drivers/regulator/qcom-rpmh-regulator.c
> > @@ -1517,7 +1517,7 @@ MODULE_DEVICE_TABLE(of, rpmh_regulator_match_table);
> >  static struct platform_driver rpmh_regulator_driver = {
> >       .driver = {
> >               .name = "qcom-rpmh-regulator",
> > -             .probe_type = PROBE_PREFER_ASYNCHRONOUS,
> > +             .probe_type = PROBE_FORCE_SYNCHRONOUS,
> >               .of_match_table = of_match_ptr(rpmh_regulator_match_table),
> >       },
> >       .probe = rpmh_regulator_probe,
> > --
> > 2.25.1
> >
  
Mark Brown May 16, 2023, 12:51 a.m. UTC | #4
On Mon, May 15, 2023 at 11:01:31PM +0530, Amit Pundir wrote:
> On Mon, 15 May 2023 at 21:26, Bjorn Andersson <andersson@kernel.org> wrote:

> > PS. this is a patch in the regulator code, but I don't see Mark in the
> > recipients list...

> Sorry about that. I thought I had Mark copied over from the other
> thread, after-all he was the one who suggested this patch, but I
> didn't :facepalm:

Please resend a copy of the patch to me and...

Please submit patches using subject lines reflecting the style for the
subsystem, this makes it easier for people to identify relevant patches.
Look at what existing commits in the area you're changing are doing and
make sure your subject lines visually resemble what they're doing.
There's no need to resubmit to fix this alone.
  
Linux regression tracking (Thorsten Leemhuis) May 24, 2023, 1:51 p.m. UTC | #5
[CCing the regression list, as it should be in the loop for regressions:
https://docs.kernel.org/admin-guide/reporting-regressions.html]

On 15.05.23 16:53, Amit Pundir wrote:
> This reverts commit ad44ac082fdff7ee57fe125432f7d9d7cb610a23.
> 
> This patch restores the synchronous probing for
> qcom-rpmh-regulator because asynchronous probing broke
> Dragonboard 845c (SDM845) running AOSP. UFSHC fail to
> initialize properly and DB845c fails to boot regardless
> of "rootwait" bootarg being present or not
> https://bugs.linaro.org/show_bug.cgi?id=5975.
> 
> Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
> ---
>  drivers/regulator/qcom-rpmh-regulator.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/regulator/qcom-rpmh-regulator.c b/drivers/regulator/qcom-rpmh-regulator.c
> index b0a58c62b1e2..30659922b0aa 100644
> --- a/drivers/regulator/qcom-rpmh-regulator.c
> +++ b/drivers/regulator/qcom-rpmh-regulator.c
> @@ -1517,7 +1517,7 @@ MODULE_DEVICE_TABLE(of, rpmh_regulator_match_table);
>  static struct platform_driver rpmh_regulator_driver = {
>  	.driver = {
>  		.name = "qcom-rpmh-regulator",
> -		.probe_type = PROBE_PREFER_ASYNCHRONOUS,
> +		.probe_type = PROBE_FORCE_SYNCHRONOUS,
>  		.of_match_table	= of_match_ptr(rpmh_regulator_match_table),
>  	},
>  	.probe = rpmh_regulator_probe,

Amit, just wondering: what happened to this? It seems there was some
agreement to go down this route to fix your regression, but then nothing
happened anymore since about a week. Or am I missing something?

Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat)
--
Everything you wanna know about Linux kernel regression tracking:
https://linux-regtracking.leemhuis.info/about/#tldr
If I did something stupid, please tell me, as explained on that page.

#regzbot ^backmonitor:
https://lore.kernel.org/lkml/CAMi1Hd1avQDcDQf137m2auz2znov4XL8YGrLZsw5edb-NtRJRw@mail.gmail.com/
  
Amit Pundir May 24, 2023, 3:18 p.m. UTC | #6
On Wed, 24 May 2023 at 19:21, Linux regression tracking (Thorsten
Leemhuis) <regressions@leemhuis.info> wrote:
>
> [CCing the regression list, as it should be in the loop for regressions:
> https://docs.kernel.org/admin-guide/reporting-regressions.html]
>
> On 15.05.23 16:53, Amit Pundir wrote:
> > This reverts commit ad44ac082fdff7ee57fe125432f7d9d7cb610a23.
> >
> > This patch restores the synchronous probing for
> > qcom-rpmh-regulator because asynchronous probing broke
> > Dragonboard 845c (SDM845) running AOSP. UFSHC fail to
> > initialize properly and DB845c fails to boot regardless
> > of "rootwait" bootarg being present or not
> > https://bugs.linaro.org/show_bug.cgi?id=5975.
> >
> > Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
> > ---
> >  drivers/regulator/qcom-rpmh-regulator.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/regulator/qcom-rpmh-regulator.c b/drivers/regulator/qcom-rpmh-regulator.c
> > index b0a58c62b1e2..30659922b0aa 100644
> > --- a/drivers/regulator/qcom-rpmh-regulator.c
> > +++ b/drivers/regulator/qcom-rpmh-regulator.c
> > @@ -1517,7 +1517,7 @@ MODULE_DEVICE_TABLE(of, rpmh_regulator_match_table);
> >  static struct platform_driver rpmh_regulator_driver = {
> >       .driver = {
> >               .name = "qcom-rpmh-regulator",
> > -             .probe_type = PROBE_PREFER_ASYNCHRONOUS,
> > +             .probe_type = PROBE_FORCE_SYNCHRONOUS,
> >               .of_match_table = of_match_ptr(rpmh_regulator_match_table),
> >       },
> >       .probe = rpmh_regulator_probe,
>
> Amit, just wondering: what happened to this? It seems there was some
> agreement to go down this route to fix your regression, but then nothing
> happened anymore since about a week. Or am I missing something?

Hi, I didn't get around to try out new things last week as suggested
on the original thread [1]. I'll get back to debugging it later in the
week hopefully.

Regards,
Amit Pundir
[1] https://lore.kernel.org/all/CAD=FV=VSFDe445WEVTHXxU1WS_HGUV5jR5E8_Vgd4eyhn3rHyA@mail.gmail.com/

>
> Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat)
> --
> Everything you wanna know about Linux kernel regression tracking:
> https://linux-regtracking.leemhuis.info/about/#tldr
> If I did something stupid, please tell me, as explained on that page.
>
> #regzbot ^backmonitor:
> https://lore.kernel.org/lkml/CAMi1Hd1avQDcDQf137m2auz2znov4XL8YGrLZsw5edb-NtRJRw@mail.gmail.com/
  

Patch

diff --git a/drivers/regulator/qcom-rpmh-regulator.c b/drivers/regulator/qcom-rpmh-regulator.c
index b0a58c62b1e2..30659922b0aa 100644
--- a/drivers/regulator/qcom-rpmh-regulator.c
+++ b/drivers/regulator/qcom-rpmh-regulator.c
@@ -1517,7 +1517,7 @@  MODULE_DEVICE_TABLE(of, rpmh_regulator_match_table);
 static struct platform_driver rpmh_regulator_driver = {
 	.driver = {
 		.name = "qcom-rpmh-regulator",
-		.probe_type = PROBE_PREFER_ASYNCHRONOUS,
+		.probe_type = PROBE_FORCE_SYNCHRONOUS,
 		.of_match_table	= of_match_ptr(rpmh_regulator_match_table),
 	},
 	.probe = rpmh_regulator_probe,