From 3fd796f0ba33dcf0cff714657e7d4505dd917c83 Mon Sep 17 00:00:00 2001 From: Xianzhong Date: Thu, 26 Apr 2018 04:00:09 +0800 Subject: [PATCH] MGS-3848-4 [#imx-854] correct hw-event synchronization between pm and other threads When pm is running power ON to OFF (not broadcast), gckCOMMAND_Stall is called for synchronization. But it does not blocks more events. Signed-off-by: Xianzhong (cherry picked from commit 1e2fae3d33a5e4b0690722dc112fd5a77eb90eac) --- .../gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/mxc/gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware.c b/drivers/mxc/gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware.c index e67e2f59f6dc..eb081cc7a890 100644 --- a/drivers/mxc/gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware.c +++ b/drivers/mxc/gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware.c @@ -8009,6 +8009,18 @@ gckHARDWARE_SetPowerManagementState( { /* Wait to finish all commands. */ gcmkONERROR(gckCOMMAND_Stall(command, gcvTRUE)); + + for (;;) + { + gcmkONERROR(gckHARDWARE_QueryIdle(Hardware, &idle)); + + if (idle) + { + break; + } + + gcmkVERIFY_OK(gckOS_Delay(Hardware->os, 1)); + } } } -- 2.17.1