efa06d90e0
- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-3.1 * Patches added: 0058-Revert-target-i386-kvm-add-VMX-migr.patch 0059-memory-Fix-the-memory-region-type-a.patch 0060-target-i386-sev-Do-not-pin-the-ram-.patch - Revert upstream patch which declares x86 vmx feature a migration blocker. Given the proliferation of using vm's with host features passed through and the general knowledge that nested virtualization has many usage caveats, but still gets put in use in restricted scenarios, this patch did more harm than good, I feel. So despite this relaxation, please consider yourself warned that nested virtualization is not yet a supportable feature. (bsc#1121604) 0058-Revert-target-i386-kvm-add-VMX-migr.patch - Fix SEV VM device assignment (bsc#1123205) 0059-memory-Fix-the-memory-region-type-a.patch 0060-target-i386-sev-Do-not-pin-the-ram-.patch - Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-3.1 - Revert upstream patch which declares x86 vmx feature a migration blocker. Given the proliferation of using vm's with host features passed through and the general knowledge that nested virtualization has many usage caveats, but still gets put in use in restricted scenarios, this patch did more harm than good, I feel. So despite this relaxation, please consider yourself warned that nested virtualization is not yet a supportable feature. (bsc#1121604) 0058-Revert-target-i386-kvm-add-VMX-migr.patch - Fix SEV VM device assignment (bsc#1123205) 0059-memory-Fix-the-memory-region-type-a.patch 0060-target-i386-sev-Do-not-pin-the-ram-.patch - Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-3.1 OBS-URL: https://build.opensuse.org/request/show/676606 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=455
44 lines
1.4 KiB
Diff
44 lines
1.4 KiB
Diff
From: "Singh, Brijesh" <brijesh.singh@amd.com>
|
|
Date: Fri, 15 Feb 2019 14:24:21 -0700
|
|
Subject: target/i386: sev: Do not pin the ram device memory region
|
|
|
|
The RAM device presents a memory region that should be handled
|
|
as an IO region and should not be pinned.
|
|
|
|
In the case of the vfio-pci, RAM device represents a MMIO BAR
|
|
and the memory region is not backed by pages hence
|
|
KVM_MEMORY_ENCRYPT_REG_REGION fails to lock the memory range.
|
|
|
|
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1667249
|
|
Cc: Alex Williamson <alex.williamson@redhat.com>
|
|
Cc: Paolo Bonzini <pbonzini@redhat.com>
|
|
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
|
|
[BSC#1123205]
|
|
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
|
---
|
|
target/i386/sev.c | 11 +++++++++++
|
|
1 file changed, 11 insertions(+)
|
|
|
|
diff --git a/target/i386/sev.c b/target/i386/sev.c
|
|
index 2395171acf..7d6f4032d6 100644
|
|
--- a/target/i386/sev.c
|
|
+++ b/target/i386/sev.c
|
|
@@ -130,6 +130,17 @@ sev_ram_block_added(RAMBlockNotifier *n, void *host, size_t size)
|
|
{
|
|
int r;
|
|
struct kvm_enc_region range;
|
|
+ ram_addr_t offset;
|
|
+ MemoryRegion *mr;
|
|
+
|
|
+ /*
|
|
+ * The RAM device presents a memory region that should be treated
|
|
+ * as IO region and should not be pinned.
|
|
+ */
|
|
+ mr = memory_region_from_host(host, &offset);
|
|
+ if (mr && memory_region_is_ram_device(mr)) {
|
|
+ return;
|
|
+ }
|
|
|
|
range.addr = (__u64)(unsigned long)host;
|
|
range.size = size;
|