Jelajahi Sumber

Modern processors may need to drain the WB before WFI

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>
Catalin Marinas 16 tahun lalu
induk
melakukan
8553cb67d2
2 mengubah file dengan 3 tambahan dan 0 penghapusan
  1. 2 0
      arch/arm/mm/proc-v6.S
  2. 1 0
      arch/arm/mm/proc-v7.S

+ 2 - 0
arch/arm/mm/proc-v6.S

@@ -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
 

+ 1 - 0
arch/arm/mm/proc-v7.S

@@ -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)