summaryrefslogtreecommitdiffstats
path: root/arch/arm64/include/asm/sysreg.h
diff options
context:
space:
mode:
authorMarc Zyngier <marc.zyngier@arm.com>2018-04-06 12:27:28 +0100
committerMarc Zyngier <marc.zyngier@arm.com>2018-07-09 11:37:41 +0100
commite48d53a91f6e90873e21a5ca5e8c0d7a9f8936a4 (patch)
tree8226aa3bd5ae8eefb39ad90d66fff26917bd747b /arch/arm64/include/asm/sysreg.h
parent1e4b044d22517cae7047c99038abb444423243ca (diff)
downloadtalos-obmc-linux-e48d53a91f6e90873e21a5ca5e8c0d7a9f8936a4.tar.gz
talos-obmc-linux-e48d53a91f6e90873e21a5ca5e8c0d7a9f8936a4.zip
arm64: KVM: Add support for Stage-2 control of memory types and cacheability
Up to ARMv8.3, the combinaison of Stage-1 and Stage-2 attributes results in the strongest attribute of the two stages. This means that the hypervisor has to perform quite a lot of cache maintenance just in case the guest has some non-cacheable mappings around. ARMv8.4 solves this problem by offering a different mode (FWB) where Stage-2 has total control over the memory attribute (this is limited to systems where both I/O and instruction fetches are coherent with the dcache). This is achieved by having a different set of memory attributes in the page tables, and a new bit set in HCR_EL2. On such a system, we can then safely sidestep any form of dcache management. Acked-by: Catalin Marinas <catalin.marinas@arm.com> Reviewed-by: Christoffer Dall <christoffer.dall@arm.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Diffstat (limited to 'arch/arm64/include/asm/sysreg.h')
-rw-r--r--arch/arm64/include/asm/sysreg.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h
index a8f84812c6e8..98af0b37fb31 100644
--- a/arch/arm64/include/asm/sysreg.h
+++ b/arch/arm64/include/asm/sysreg.h
@@ -576,6 +576,7 @@
#define ID_AA64MMFR1_VMIDBITS_16 2
/* id_aa64mmfr2 */
+#define ID_AA64MMFR2_FWB_SHIFT 40
#define ID_AA64MMFR2_AT_SHIFT 32
#define ID_AA64MMFR2_LVA_SHIFT 16
#define ID_AA64MMFR2_IESB_SHIFT 12
OpenPOWER on IntegriCloud