summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Lendacky <thomas.lendacky@amd.com>2018-03-08 17:17:31 -0600
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-03-21 12:06:41 +0100
commit4b428e9998c175122d5c5b8f8fe74928a0847fd9 (patch)
tree1603675e38e9aa83c31ddd004b47f0469a690960
parent732f9a89fc1e72158a2d14fb890a81a7c21b4363 (diff)
downloadlinux-stable-4b428e9998c175122d5c5b8f8fe74928a0847fd9.tar.gz
linux-stable-4b428e9998c175122d5c5b8f8fe74928a0847fd9.tar.bz2
linux-stable-4b428e9998c175122d5c5b8f8fe74928a0847fd9.zip
KVM: x86: Fix device passthrough when SME is active
commit daaf216c06fba4ee4dc3f62715667da929d68774 upstream. When using device passthrough with SME active, the MMIO range that is mapped for the device should not be mapped encrypted. Add a check in set_spte() to insure that a page is not mapped encrypted if that page is a device MMIO page as indicated by kvm_is_mmio_pfn(). Cc: <stable@vger.kernel.org> # 4.14.x- Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--arch/x86/kvm/mmu.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 2b6f8a4f2731..f438e0c4aa8c 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -2758,8 +2758,10 @@ static int set_spte(struct kvm_vcpu *vcpu, u64 *sptep,
else
pte_access &= ~ACC_WRITE_MASK;
+ if (!kvm_is_mmio_pfn(pfn))
+ spte |= shadow_me_mask;
+
spte |= (u64)pfn << PAGE_SHIFT;
- spte |= shadow_me_mask;
if (pte_access & ACC_WRITE_MASK) {