Messages in this thread | | | Subject | Re: [PATCH v16 08/40] gpu: host1x: Add initial runtime PM and OPP support | From | Jon Hunter <> | Date | Wed, 22 Dec 2021 18:41:15 +0000 |
| |
On 22/12/2021 09:47, Jon Hunter wrote: > > On 21/12/2021 20:58, Dmitry Osipenko wrote: >> Hi, >> >> Thank you for testing it all. >> >> 21.12.2021 21:55, Jon Hunter пишет: >>> Hi Dmitry, Thierry, >>> >>> On 30/11/2021 23:23, Dmitry Osipenko wrote: >>>> Add runtime PM and OPP support to the Host1x driver. For the starter we >>>> will keep host1x always-on because dynamic power management require a >>>> major >>>> refactoring of the driver code since lot's of code paths are missing >>>> the >>>> RPM handling and we're going to remove some of these paths in the >>>> future. >>> >>> >>> Unfortunately, this change is breaking boot on Tegra186. Bisect points >>> to this and reverting on top of -next gets the board booting again. >>> Sadly, there is no panic or error reported, it is just a hard hang. I >>> will not have time to look at this this week and so we may need to >>> revert for the moment. >> >> Only T186 broken? What about T194? > > Yes interestingly only Tegra186 and no other board. > >> Which board model fails to boot? Is it running in hypervisor mode? > > This is Jetson TX2. No hypervisor. > >> Do you use any additional patches? > > No just plain -next. The tests run every day on top of tree. > >> Could you please test the below diff? I suspect that >> host1x_syncpt_save/restore may be entirely broken for T186 since we >> never used these funcs before. >> >> --- >8 --- >> >> diff --git a/drivers/gpu/host1x/dev.c b/drivers/gpu/host1x/dev.c >> index f5b4dcded088..fd5dfb875422 100644 >> --- a/drivers/gpu/host1x/dev.c >> +++ b/drivers/gpu/host1x/dev.c >> @@ -580,7 +580,6 @@ static int __maybe_unused >> host1x_runtime_suspend(struct device *dev) >> int err; >> >> host1x_intr_stop(host); >> - host1x_syncpt_save(host); >> >> err = reset_control_bulk_assert(host->nresets, host->resets); >> if (err) { >> @@ -596,9 +595,8 @@ static int __maybe_unused >> host1x_runtime_suspend(struct device *dev) >> return 0; >> >> resume_host1x: >> - host1x_setup_sid_table(host); >> - host1x_syncpt_restore(host); >> host1x_intr_start(host); >> + host1x_setup_sid_table(host); >> >> return err; >> } >> @@ -626,9 +624,8 @@ static int __maybe_unused >> host1x_runtime_resume(struct device *dev) >> goto disable_clk; >> } >> >> - host1x_setup_sid_table(host); >> - host1x_syncpt_restore(host); >> host1x_intr_start(host); >> + host1x_setup_sid_table(host); > > > Thanks! Will try this later, once the next bisect is finished :-)
I tested the above, but this did not fix it. It still hangs on boot.
Jon
-- nvpublic
| |