ARM: kvm: use inner-shareable barriers after TLB flushing
authorWill Deacon <will.deacon@arm.com>
Mon, 13 May 2013 11:08:06 +0000 (12:08 +0100)
committerChristoffer Dall <christoffer.dall@linaro.org>
Thu, 2 Oct 2014 15:18:00 +0000 (17:18 +0200)
When flushing the TLB at PL2 in response to remapping at stage-2 or VMID
rollover, we have a dsb instruction to ensure completion of the command
before continuing.

Since we only care about other processors for TLB invalidation, use the
inner-shareable variant of the dsb instruction instead.

Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
(cherry picked from commit e3ab547f57bd626201d4b715b696c80ad1ef4ba2)
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
arch/arm/kvm/init.S
arch/arm/kvm/interrupts.S

index f048338135f7a5b20bf52371d03a3af0b922b68f..1b9844d369cc08e6e1a88fc60b6f3fd6db0b6965 100644 (file)
@@ -142,7 +142,7 @@ target:     @ We're now in the trampoline code, switch page tables
 
        @ Invalidate the old TLBs
        mcr     p15, 4, r0, c8, c7, 0   @ TLBIALLH
-       dsb
+       dsb     ish
 
        eret
 
index 16cd4ba5d7fd6d0ff0781da759712167cbc17508..f85052facffc528fb6a1dee9049844316688afd4 100644 (file)
@@ -55,7 +55,7 @@ ENTRY(__kvm_tlb_flush_vmid_ipa)
        mcrr    p15, 6, r2, r3, c2      @ Write VTTBR
        isb
        mcr     p15, 0, r0, c8, c3, 0   @ TLBIALLIS (rt ignored)
-       dsb
+       dsb     ish
        isb
        mov     r2, #0
        mov     r3, #0
@@ -79,7 +79,7 @@ ENTRY(__kvm_flush_vm_context)
        mcr     p15, 4, r0, c8, c3, 4
        /* Invalidate instruction caches Inner Shareable (ICIALLUIS) */
        mcr     p15, 0, r0, c7, c1, 0
-       dsb
+       dsb     ish
        isb                             @ Not necessary if followed by eret
 
        bx      lr