arm64: Apply errata to swsusp_arch_suspend_exit
authorFuad Tabba <tabba@google.com>
Mon, 24 May 2021 08:29:46 +0000 (09:29 +0100)
committerWill Deacon <will@kernel.org>
Tue, 25 May 2021 18:27:48 +0000 (19:27 +0100)
The Arm errata covered by ARM64_WORKAROUND_CLEAN_CACHE require
that "dc cvau" instructions get promoted to "dc civac".

Reported-by: Mark Rutland <mark.rutland@arm.com>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Fuad Tabba <tabba@google.com>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20210524083001.2586635-4-tabba@google.com
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/kernel/hibernate-asm.S

index 8ccca660034e4859bfb821f3053f49946fb258d4..0ed2f72a6b94312d3336af560ee8e04c1bc3fd2c 100644 (file)
@@ -91,7 +91,8 @@ SYM_CODE_START(swsusp_arch_suspend_exit)
        raw_dcache_line_size x2, x3
        sub     x3, x2, #1
        bic     x4, x10, x3
-2:     dc      cvau, x4        /* clean D line / unified line */
+2:     /* clean D line / unified line */
+alternative_insn "dc cvau, x4",  "dc civac, x4",  ARM64_WORKAROUND_CLEAN_CACHE
        add     x4, x4, x2
        cmp     x4, x1
        b.lo    2b