MGS-3848-4 [#imx-854] correct hw-event synchronization between pm and other threads
authorXianzhong <xianzhong.li@nxp.com>
Wed, 25 Apr 2018 20:00:09 +0000 (04:00 +0800)
committerXianzhong <xianzhong.li@nxp.com>
Thu, 26 Apr 2018 15:39:28 +0000 (23:39 +0800)
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 <xianzhong.li@nxp.com>
(cherry picked from commit 1e2fae3d33a5e4b0690722dc112fd5a77eb90eac)

drivers/mxc/gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware.c

index e67e2f5..eb081cc 100644 (file)
@@ -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));
+            }
         }
     }