Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1729753
| From | Ben Hutchings <ben@decadent.org.uk> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 3.16 158/233] arm64: KVM: Preserve RES1 bits in SCTLR_EL2 |
| Date | 2017-09-10 01:10 +0200 |
| Message-ID | <unX30-3Jz-115@gated-at.bofh.it> (permalink) |
| References | <unWqd-3ep-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
3.16.48-rc1 review patch. If anyone has any objections, please let me know. ------------------ From: Marc Zyngier <marc.zyngier@arm.com> commit d68c1f7fd1b7148dab5fe658321d511998969f2d upstream. __do_hyp_init has the rather bad habit of ignoring RES1 bits and writing them back as zero. On a v8.0-8.2 CPU, this doesn't do anything bad, but may end-up being pretty nasty on future revisions of the architecture. Let's preserve those bits so that we don't have to fix this later on. Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Christoffer Dall <cdall@linaro.org> [bwh: Backported to 3.16: - s/ELx/EL2/ - Adjust filename, context] Signed-off-by: Ben Hutchings <ben@decadent.org.uk> --- --- a/arch/arm64/include/asm/kvm_arm.h +++ b/arch/arm64/include/asm/kvm_arm.h @@ -89,6 +89,11 @@ #define SCTLR_EL2_C (1 << 2) #define SCTLR_EL2_A (1 << 1) #define SCTLR_EL2_M 1 + +#define SCTLR_EL2_RES1 ((1 << 4) | (1 << 5) | (1 << 11) | (1 << 16) | \ + (1 << 16) | (1 << 18) | (1 << 22) | (1 << 23) | \ + (1 << 28) | (1 << 29)) + #define SCTLR_EL2_FLAGS (SCTLR_EL2_M | SCTLR_EL2_A | SCTLR_EL2_C | \ SCTLR_EL2_SA | SCTLR_EL2_I) --- a/arch/arm64/kvm/hyp-init.S +++ b/arch/arm64/kvm/hyp-init.S @@ -84,10 +84,12 @@ __do_hyp_init: tlbi alle2 dsb sy - mrs x4, sctlr_el2 - and x4, x4, #SCTLR_EL2_EE // preserve endianness of EL2 - ldr x5, =SCTLR_EL2_FLAGS - orr x4, x4, x5 + /* + * Preserve all the RES1 bits while setting the default flags, + * as well as the EE bit on BE. + */ + ldr x4, =(SCTLR_EL2_RES1 | SCTLR_EL2_FLAGS) +CPU_BE( orr x4, x4, #SCTLR_EL2_EE) msr sctlr_el2, x4 isb
Back to linux.kernel | Previous | Next | Find similar | Unroll thread
[PATCH 3.16 158/233] arm64: KVM: Preserve RES1 bits in SCTLR_EL2 Ben Hutchings <ben@decadent.org.uk> - 2017-09-10 01:10 +0200
csiph-web