Re: [PATCH v16 08/40] gpu: host1x: Add initial runtime PM and OPP support

Dmitry Osipenko
2021-12-21T20:59:04Z

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?

Which board model fails to boot? Is it running in hypervisor mode?

Do you use any additional patches?

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);

return 0;