diff options
Diffstat (limited to 'arch/arm/kvm/init.S')
| -rw-r--r-- | arch/arm/kvm/init.S | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/arch/arm/kvm/init.S b/arch/arm/kvm/init.S index 1b9844d369cc..3988e72d16ff 100644 --- a/arch/arm/kvm/init.S +++ b/arch/arm/kvm/init.S @@ -17,6 +17,7 @@   */  #include <linux/linkage.h> +#include <asm/assembler.h>  #include <asm/unified.h>  #include <asm/asm-offsets.h>  #include <asm/kvm_asm.h> @@ -71,7 +72,7 @@ __do_hyp_init:  	bne	phase2			@ Yes, second stage init  	@ Set the HTTBR to point to the hypervisor PGD pointer passed -	mcrr	p15, 4, r2, r3, c2 +	mcrr	p15, 4, rr_lo_hi(r2, r3), c2  	@ Set the HTCR and VTCR to the same shareability and cacheability  	@ settings as the non-secure TTBCR and with T0SZ == 0. @@ -98,6 +99,10 @@ __do_hyp_init:  	mrc	p15, 0, r0, c10, c2, 1  	mcr	p15, 4, r0, c10, c2, 1 +	@ Invalidate the stale TLBs from Bootloader +	mcr	p15, 4, r0, c8, c7, 0	@ TLBIALLH +	dsb	ish +  	@ Set the HSCTLR to:  	@  - ARM/THUMB exceptions: Kernel config (Thumb-2 kernel)  	@  - Endianness: Kernel config @@ -134,10 +139,10 @@ phase2:  	ldr	r0, =TRAMPOLINE_VA  	adr	r1, target  	bfi	r0, r1, #0, #PAGE_SHIFT -	mov	pc, r0 +	ret	r0  target:	@ We're now in the trampoline code, switch page tables -	mcrr	p15, 4, r2, r3, c2 +	mcrr	p15, 4, rr_lo_hi(r2, r3), c2  	isb  	@ Invalidate the old TLBs  |