summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Gortmaker <paul.gortmaker@windriver.com>2017-05-21 00:53:35 -0400
committerPaul Gortmaker <paul.gortmaker@windriver.com>2017-05-21 00:54:32 -0400
commit157a28c94c1380fedd232fe63fb666d76f0d5c32 (patch)
treed94a525895b26cafaa25666c4d384f8ec8f88645
parent6e5813e7ba51b41d483730fead002c94b77a4b8d (diff)
downloadlongterm-queue-4.8-157a28c94c1380fedd232fe63fb666d76f0d5c32.tar.gz
arm64: remove KVM patch not applicable to 4.8.x baseline
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-rw-r--r--queue/arm64-KVM-VHE-Clear-HCR_TGE-when-invalidating-guest-.patch137
-rw-r--r--queue/series1
2 files changed, 0 insertions, 138 deletions
diff --git a/queue/arm64-KVM-VHE-Clear-HCR_TGE-when-invalidating-guest-.patch b/queue/arm64-KVM-VHE-Clear-HCR_TGE-when-invalidating-guest-.patch
deleted file mode 100644
index d886d79..0000000
--- a/queue/arm64-KVM-VHE-Clear-HCR_TGE-when-invalidating-guest-.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-From 68925176296a8b995e503349200e256674bfe5ac Mon Sep 17 00:00:00 2001
-From: Marc Zyngier <marc.zyngier@arm.com>
-Date: Fri, 17 Feb 2017 14:32:18 +0000
-Subject: [PATCH] arm64: KVM: VHE: Clear HCR_TGE when invalidating guest TLBs
-
-commit 68925176296a8b995e503349200e256674bfe5ac upstream.
-
-When invalidating guest TLBs, special care must be taken to
-actually shoot the guest TLBs and not the host ones if we're
-running on a VHE system. This is controlled by the HCR_EL2.TGE
-bit, which we forget to clear before invalidating TLBs.
-
-Address the issue by introducing two wrappers (__tlb_switch_to_guest
-and __tlb_switch_to_host) that take care of both the VTTBR_EL2
-and HCR_EL2.TGE switching.
-
-Reported-by: Tomasz Nowicki <tnowicki@caviumnetworks.com>
-Tested-by: Tomasz Nowicki <tnowicki@caviumnetworks.com>
-Reviewed-by: Christoffer Dall <cdall@linaro.org>
-Cc: stable@vger.kernel.org
-Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
-
-diff --git a/arch/arm64/kvm/hyp/tlb.c b/arch/arm64/kvm/hyp/tlb.c
-index e8e7ba2bc11f..9e1d2b75eecd 100644
---- a/arch/arm64/kvm/hyp/tlb.c
-+++ b/arch/arm64/kvm/hyp/tlb.c
-@@ -18,14 +18,62 @@
- #include <asm/kvm_hyp.h>
- #include <asm/tlbflush.h>
-
-+static void __hyp_text __tlb_switch_to_guest_vhe(struct kvm *kvm)
-+{
-+ u64 val;
-+
-+ /*
-+ * With VHE enabled, we have HCR_EL2.{E2H,TGE} = {1,1}, and
-+ * most TLB operations target EL2/EL0. In order to affect the
-+ * guest TLBs (EL1/EL0), we need to change one of these two
-+ * bits. Changing E2H is impossible (goodbye TTBR1_EL2), so
-+ * let's flip TGE before executing the TLB operation.
-+ */
-+ write_sysreg(kvm->arch.vttbr, vttbr_el2);
-+ val = read_sysreg(hcr_el2);
-+ val &= ~HCR_TGE;
-+ write_sysreg(val, hcr_el2);
-+ isb();
-+}
-+
-+static void __hyp_text __tlb_switch_to_guest_nvhe(struct kvm *kvm)
-+{
-+ write_sysreg(kvm->arch.vttbr, vttbr_el2);
-+ isb();
-+}
-+
-+static hyp_alternate_select(__tlb_switch_to_guest,
-+ __tlb_switch_to_guest_nvhe,
-+ __tlb_switch_to_guest_vhe,
-+ ARM64_HAS_VIRT_HOST_EXTN);
-+
-+static void __hyp_text __tlb_switch_to_host_vhe(struct kvm *kvm)
-+{
-+ /*
-+ * We're done with the TLB operation, let's restore the host's
-+ * view of HCR_EL2.
-+ */
-+ write_sysreg(0, vttbr_el2);
-+ write_sysreg(HCR_HOST_VHE_FLAGS, hcr_el2);
-+}
-+
-+static void __hyp_text __tlb_switch_to_host_nvhe(struct kvm *kvm)
-+{
-+ write_sysreg(0, vttbr_el2);
-+}
-+
-+static hyp_alternate_select(__tlb_switch_to_host,
-+ __tlb_switch_to_host_nvhe,
-+ __tlb_switch_to_host_vhe,
-+ ARM64_HAS_VIRT_HOST_EXTN);
-+
- void __hyp_text __kvm_tlb_flush_vmid_ipa(struct kvm *kvm, phys_addr_t ipa)
- {
- dsb(ishst);
-
- /* Switch to requested VMID */
- kvm = kern_hyp_va(kvm);
-- write_sysreg(kvm->arch.vttbr, vttbr_el2);
-- isb();
-+ __tlb_switch_to_guest()(kvm);
-
- /*
- * We could do so much better if we had the VA as well.
-@@ -46,7 +94,7 @@ void __hyp_text __kvm_tlb_flush_vmid_ipa(struct kvm *kvm, phys_addr_t ipa)
- dsb(ish);
- isb();
-
-- write_sysreg(0, vttbr_el2);
-+ __tlb_switch_to_host()(kvm);
- }
-
- void __hyp_text __kvm_tlb_flush_vmid(struct kvm *kvm)
-@@ -55,14 +103,13 @@ void __hyp_text __kvm_tlb_flush_vmid(struct kvm *kvm)
-
- /* Switch to requested VMID */
- kvm = kern_hyp_va(kvm);
-- write_sysreg(kvm->arch.vttbr, vttbr_el2);
-- isb();
-+ __tlb_switch_to_guest()(kvm);
-
- __tlbi(vmalls12e1is);
- dsb(ish);
- isb();
-
-- write_sysreg(0, vttbr_el2);
-+ __tlb_switch_to_host()(kvm);
- }
-
- void __hyp_text __kvm_tlb_flush_local_vmid(struct kvm_vcpu *vcpu)
-@@ -70,14 +117,13 @@ void __hyp_text __kvm_tlb_flush_local_vmid(struct kvm_vcpu *vcpu)
- struct kvm *kvm = kern_hyp_va(kern_hyp_va(vcpu)->kvm);
-
- /* Switch to requested VMID */
-- write_sysreg(kvm->arch.vttbr, vttbr_el2);
-- isb();
-+ __tlb_switch_to_guest()(kvm);
-
- __tlbi(vmalle1);
- dsb(nsh);
- isb();
-
-- write_sysreg(0, vttbr_el2);
-+ __tlb_switch_to_host()(kvm);
- }
-
- void __hyp_text __kvm_flush_vm_context(void)
---
-2.12.0
-
diff --git a/queue/series b/queue/series
index d110223..907a442 100644
--- a/queue/series
+++ b/queue/series
@@ -156,7 +156,6 @@ usb-gadget-udc-atmel-remove-memory-leak.patch
clk-bcm2835-Fix-fixed_divider-of-pllh_aux.patch
drm-vc4-Fix-race-between-page-flip-completion-event-.patch
drm-vc4-Fix-clock_select-setting-for-the-VEC-encoder.patch
-arm64-KVM-VHE-Clear-HCR_TGE-when-invalidating-guest-.patch
irqchip-gicv3-its-Add-workaround-for-QDF2400-ITS-err.patch
x86-tsc-Fix-ART-for-TSC_KNOWN_FREQ.patch
x86-kasan-Fix-boot-with-KASAN-y-and-PROFILE_ANNOTATE.patch