Merge branch 'kvm-arm64/nvhe-wxn' into kvmarm-master/next
Signed-off-by: Marc Zyngier <maz@kernel.org>
This commit is contained in:
commit
bba8857feb
|
@ -630,9 +630,6 @@
|
||||||
#define SCTLR_ELx_A (BIT(1))
|
#define SCTLR_ELx_A (BIT(1))
|
||||||
#define SCTLR_ELx_M (BIT(0))
|
#define SCTLR_ELx_M (BIT(0))
|
||||||
|
|
||||||
#define SCTLR_ELx_FLAGS (SCTLR_ELx_M | SCTLR_ELx_A | SCTLR_ELx_C | \
|
|
||||||
SCTLR_ELx_SA | SCTLR_ELx_I | SCTLR_ELx_IESB)
|
|
||||||
|
|
||||||
/* SCTLR_EL2 specific flags. */
|
/* SCTLR_EL2 specific flags. */
|
||||||
#define SCTLR_EL2_RES1 ((BIT(4)) | (BIT(5)) | (BIT(11)) | (BIT(16)) | \
|
#define SCTLR_EL2_RES1 ((BIT(4)) | (BIT(5)) | (BIT(11)) | (BIT(16)) | \
|
||||||
(BIT(18)) | (BIT(22)) | (BIT(23)) | (BIT(28)) | \
|
(BIT(18)) | (BIT(22)) | (BIT(23)) | (BIT(28)) | \
|
||||||
|
@ -644,6 +641,10 @@
|
||||||
#define ENDIAN_SET_EL2 0
|
#define ENDIAN_SET_EL2 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define INIT_SCTLR_EL2_MMU_ON \
|
||||||
|
(SCTLR_ELx_M | SCTLR_ELx_C | SCTLR_ELx_SA | SCTLR_ELx_I | \
|
||||||
|
SCTLR_ELx_IESB | SCTLR_ELx_WXN | ENDIAN_SET_EL2 | SCTLR_EL2_RES1)
|
||||||
|
|
||||||
#define INIT_SCTLR_EL2_MMU_OFF \
|
#define INIT_SCTLR_EL2_MMU_OFF \
|
||||||
(SCTLR_EL2_RES1 | ENDIAN_SET_EL2)
|
(SCTLR_EL2_RES1 | ENDIAN_SET_EL2)
|
||||||
|
|
||||||
|
|
|
@ -30,10 +30,7 @@
|
||||||
* flat identity mapping.
|
* flat identity mapping.
|
||||||
*/
|
*/
|
||||||
SYM_CODE_START(__cpu_soft_restart)
|
SYM_CODE_START(__cpu_soft_restart)
|
||||||
/* Clear sctlr_el1 flags. */
|
mov_q x12, INIT_SCTLR_EL1_MMU_OFF
|
||||||
mrs x12, sctlr_el1
|
|
||||||
mov_q x13, SCTLR_ELx_FLAGS
|
|
||||||
bic x12, x12, x13
|
|
||||||
pre_disable_mmu_workaround
|
pre_disable_mmu_workaround
|
||||||
/*
|
/*
|
||||||
* either disable EL1&0 translation regime or disable EL2&0 translation
|
* either disable EL1&0 translation regime or disable EL2&0 translation
|
||||||
|
|
|
@ -122,13 +122,7 @@ alternative_else_nop_endif
|
||||||
tlbi vmalls12e1
|
tlbi vmalls12e1
|
||||||
dsb sy
|
dsb sy
|
||||||
|
|
||||||
/*
|
mov_q x0, INIT_SCTLR_EL2_MMU_ON
|
||||||
* Preserve all the RES1 bits while setting the default flags,
|
|
||||||
* as well as the EE bit on BE. Drop the A flag since the compiler
|
|
||||||
* is allowed to generate unaligned accesses.
|
|
||||||
*/
|
|
||||||
mov_q x0, (SCTLR_EL2_RES1 | (SCTLR_ELx_FLAGS & ~SCTLR_ELx_A))
|
|
||||||
CPU_BE( orr x0, x0, #SCTLR_ELx_EE)
|
|
||||||
alternative_if ARM64_HAS_ADDRESS_AUTH
|
alternative_if ARM64_HAS_ADDRESS_AUTH
|
||||||
mov_q x1, (SCTLR_ELx_ENIA | SCTLR_ELx_ENIB | \
|
mov_q x1, (SCTLR_ELx_ENIA | SCTLR_ELx_ENIB | \
|
||||||
SCTLR_ELx_ENDA | SCTLR_ELx_ENDB)
|
SCTLR_ELx_ENDA | SCTLR_ELx_ENDB)
|
||||||
|
@ -226,9 +220,7 @@ SYM_CODE_START(__kvm_handle_stub_hvc)
|
||||||
mov x0, xzr
|
mov x0, xzr
|
||||||
reset:
|
reset:
|
||||||
/* Reset kvm back to the hyp stub. */
|
/* Reset kvm back to the hyp stub. */
|
||||||
mrs x5, sctlr_el2
|
mov_q x5, INIT_SCTLR_EL2_MMU_OFF
|
||||||
mov_q x6, SCTLR_ELx_FLAGS
|
|
||||||
bic x5, x5, x6 // Clear SCTL_M and etc
|
|
||||||
pre_disable_mmu_workaround
|
pre_disable_mmu_workaround
|
||||||
msr sctlr_el2, x5
|
msr sctlr_el2, x5
|
||||||
isb
|
isb
|
||||||
|
|
Loading…
Reference in New Issue