aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/kvm
diff options
context:
space:
mode:
authorVladimir Murzin <vladimir.murzin@arm.com>2018-07-31 14:08:57 +0100
committerCatalin Marinas <catalin.marinas@arm.com>2018-09-18 12:03:34 +0100
commitab510027dc4dbd1eeb611a34b0cda8b21fcde492 (patch)
tree6f71d3b509e910de4db2cebd1b76f33ef11873b7 /arch/arm64/kvm
parentarm64: mm: Support Common Not Private translations (diff)
downloadlinux-dev-ab510027dc4dbd1eeb611a34b0cda8b21fcde492.tar.xz
linux-dev-ab510027dc4dbd1eeb611a34b0cda8b21fcde492.zip
arm64: KVM: Enable Common Not Private translations
We rely on cpufeature framework to detect and enable CNP so for KVM we need to patch hyp to set CNP bit just before TTBR0_EL2 gets written. For the guest we encode CNP bit while building vttbr, so we don't need to bother with that in a world switch. Reviewed-by: James Morse <james.morse@arm.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Acked-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm64/kvm')
-rw-r--r--arch/arm64/kvm/hyp-init.S3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/arm64/kvm/hyp-init.S b/arch/arm64/kvm/hyp-init.S
index ea9225160786..4576b86a5579 100644
--- a/arch/arm64/kvm/hyp-init.S
+++ b/arch/arm64/kvm/hyp-init.S
@@ -65,6 +65,9 @@ __do_hyp_init:
b.lo __kvm_handle_stub_hvc
phys_to_ttbr x4, x0
+alternative_if ARM64_HAS_CNP
+ orr x4, x4, #TTBR_CNP_BIT
+alternative_else_nop_endif
msr ttbr0_el2, x4
mrs x4, tcr_el1