lkml.org 
[lkml]   [2021]   [Dec]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH v16 08/40] gpu: host1x: Add initial runtime PM and OPP support
From
Date

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

Jon

--
nvpublic

\
 
 \ /
  Last update: 2021-12-22 10:48    [W:0.100 / U:0.052 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site