----- Original Message ----- > From: "Gary R Hook" <gh...@redhat.com> > To: rhvirt-patc...@redhat.com > Cc: qemu-devel@nongnu.org, "Paolo Bonzini" <pbonz...@redhat.com>, > gh...@redhat.com, "Eduardo Habkost" > <ehabk...@redhat.com>, "Richard Henderson" <r...@twiddle.net> > Sent: Tuesday, April 9, 2019 7:08:03 PM > Subject: [RHEL-8.1 virt 2/2] target/i386: sev: Do not pin the ram device > memory region > > BZ: 1667249 > Branch: rhel-8.1.0 > Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1667249 > Upstream Status: 4.0.0-rc1 > Build Info: > https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=20980582 > Conflicts: None > > commit cedc0ad539afbbb669dba9e73dfad2915bc1c25b > Author: Singh, Brijesh <brijesh.si...@amd.com> > Date: Mon Feb 4 22:23:40 2019 +0000 > > 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.william...@redhat.com> > Cc: Paolo Bonzini <pbonz...@redhat.com> > Signed-off-by: Brijesh Singh <brijesh.si...@amd.com> > Message-Id: <20190204222322.26766-3-brijesh.si...@amd.com> > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > > Cc: Paolo Bonzini <pbonz...@redhat.com> > Cc: Richard Henderson <r...@twiddle.net> > Cc: Eduardo Habkost <ehabk...@redhat.com> > Cc: qemu-devel@nongnu.org NACKed-by: Gary R Hook <gh...@redhat.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..b8009b001a 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; > -- > 2.18.1 > >