Modern processors may need to drain the WB before WFI
authorCatalin Marinas <catalin.marinas@arm.com>
Mon, 10 Nov 2008 14:14:11 +0000 (14:14 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Mon, 10 Nov 2008 14:14:11 +0000 (14:14 +0000)
Since WFI may cause the processor to enter a low-power mode, data may
still be in the write buffer. This patch adds a DSB (or DWB) to the
cpu_(v6|v7)_do_idle functions before the WFI.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm/mm/proc-v6.S
arch/arm/mm/proc-v7.S

index 294943b85973c3df54341885cba4d2470d1af2bc..f0cc599facb747cb5df423242f736cca75f528ab 100644 (file)
@@ -71,6 +71,8 @@ ENTRY(cpu_v6_reset)
  *     IRQs are already disabled.
  */
 ENTRY(cpu_v6_do_idle)
+       mov     r1, #0
+       mcr     p15, 0, r1, c7, c10, 4          @ DWB - WFI may enter a low-power mode
        mcr     p15, 0, r1, c7, c0, 4           @ wait for interrupt
        mov     pc, lr
 
index 721b7d53bfd882372410e22d75d4f36691d7a1e5..0e11d9716a7dfbdf00b78f9d2215999a6a5b3bab 100644 (file)
@@ -63,6 +63,7 @@ ENDPROC(cpu_v7_reset)
  *     IRQs are already disabled.
  */
 ENTRY(cpu_v7_do_idle)
+       dsb                                     @ WFI may enter a low-power mode
        wfi
        mov     pc, lr
 ENDPROC(cpu_v7_do_idle)