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

Jon Hunter jonathanh at nvidia.com
Wed Dec 22 09:47:35 UTC 2021


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


More information about the dri-devel mailing list