* [PATCH v1] gpu: host1x: Fix hang on Tegra186+
@ 2021-12-23 14:46 Dmitry Osipenko
2022-01-27 17:32 ` Thierry Reding
0 siblings, 1 reply; 2+ messages in thread
From: Dmitry Osipenko @ 2021-12-23 14:46 UTC (permalink / raw)
To: Thierry Reding, Jonathan Hunter, Mikko Perttunen; +Cc: dri-devel, linux-tegra
Tegra186+ hangs if host1x hardware is disabled at a kernel boot time
because we touch hardware before runtime PM is resumed. Move sync point
assignment initialization to the RPM-resume callback. Older SoCs were
unaffected because they skip that sync point initialization.
Tested-by: Jon Hunter <jonathanh@nvidia.com> # T186
Reported-by: Jon Hunter <jonathanh@nvidia.com> # T186
Fixes: 6b6776e2ab8a ("gpu: host1x: Add initial runtime PM and OPP support")
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
drivers/gpu/host1x/syncpt.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/host1x/syncpt.c b/drivers/gpu/host1x/syncpt.c
index e08e331e46ae..83a16e46146b 100644
--- a/drivers/gpu/host1x/syncpt.c
+++ b/drivers/gpu/host1x/syncpt.c
@@ -137,8 +137,15 @@ void host1x_syncpt_restore(struct host1x *host)
struct host1x_syncpt *sp_base = host->syncpt;
unsigned int i;
- for (i = 0; i < host1x_syncpt_nb_pts(host); i++)
+ for (i = 0; i < host1x_syncpt_nb_pts(host); i++) {
+ /*
+ * Unassign syncpt from channels for purposes of Tegra186
+ * syncpoint protection. This prevents any channel from
+ * accessing it until it is reassigned.
+ */
+ host1x_hw_syncpt_assign_to_channel(host, sp_base + i, NULL);
host1x_hw_syncpt_restore(host, sp_base + i);
+ }
for (i = 0; i < host1x_syncpt_nb_bases(host); i++)
host1x_hw_syncpt_restore_wait_base(host, sp_base + i);
@@ -352,13 +359,6 @@ int host1x_syncpt_init(struct host1x *host)
for (i = 0; i < host->info->nb_pts; i++) {
syncpt[i].id = i;
syncpt[i].host = host;
-
- /*
- * Unassign syncpt from channels for purposes of Tegra186
- * syncpoint protection. This prevents any channel from
- * accessing it until it is reassigned.
- */
- host1x_hw_syncpt_assign_to_channel(host, &syncpt[i], NULL);
}
for (i = 0; i < host->info->nb_bases; i++)
--
2.33.1
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH v1] gpu: host1x: Fix hang on Tegra186+
2021-12-23 14:46 [PATCH v1] gpu: host1x: Fix hang on Tegra186+ Dmitry Osipenko
@ 2022-01-27 17:32 ` Thierry Reding
0 siblings, 0 replies; 2+ messages in thread
From: Thierry Reding @ 2022-01-27 17:32 UTC (permalink / raw)
To: Dmitry Osipenko; +Cc: Jonathan Hunter, Mikko Perttunen, dri-devel, linux-tegra
[-- Attachment #1: Type: text/plain, Size: 742 bytes --]
On Thu, Dec 23, 2021 at 05:46:50PM +0300, Dmitry Osipenko wrote:
> Tegra186+ hangs if host1x hardware is disabled at a kernel boot time
> because we touch hardware before runtime PM is resumed. Move sync point
> assignment initialization to the RPM-resume callback. Older SoCs were
> unaffected because they skip that sync point initialization.
>
> Tested-by: Jon Hunter <jonathanh@nvidia.com> # T186
> Reported-by: Jon Hunter <jonathanh@nvidia.com> # T186
> Fixes: 6b6776e2ab8a ("gpu: host1x: Add initial runtime PM and OPP support")
> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
> ---
> drivers/gpu/host1x/syncpt.c | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
Applied, thanks.
Thierry
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-01-27 17:33 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-12-23 14:46 [PATCH v1] gpu: host1x: Fix hang on Tegra186+ Dmitry Osipenko
2022-01-27 17:32 ` Thierry Reding
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox