From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Herongguang (Stephen)" Subject: Re: [PATCH v2] KVM: pci-assign: do not map smm memory slot pages Date: Tue, 28 Mar 2017 09:08:33 +0800 Message-ID: <58D9B791.2000905@huawei.com> References: <20170325111424.21752-1-herongguang.he@huawei.com> <58D8BD6D.8080404@huawei.com> <4c9e0c46-ac81-a455-e2ed-530ad916ff71@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit Cc: , To: Paolo Bonzini , , Return-path: Received: from szxga02-in.huawei.com ([45.249.212.188]:4397 "EHLO dggrg02-dlp.huawei.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1753610AbdC1BKX (ORCPT ); Mon, 27 Mar 2017 21:10:23 -0400 In-Reply-To: <4c9e0c46-ac81-a455-e2ed-530ad916ff71@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: From 8f5b9d2c2944ea7cd8149e9d3b4088f487217d20 Mon Sep 17 00:00:00 2001 From: herongguang Date: Mon, 27 Mar 2017 15:08:59 +0800 Subject: [PATCH] KVM: pci-assign: do not map smm memory slot pages in vt-d page table or VM memory are not put thus leaked in kvm_iommu_unmap_memslots() when destroy VM. This is consistent with current vfio implementation. Signed-off-by: herongguang --- virt/kvm/kvm_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 482612b..9018d06 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -1052,7 +1052,7 @@ int __kvm_set_memory_region(struct kvm *kvm, * changes) is disallowed above, so any other attribute changes getting * here can be skipped. */ - if ((change == KVM_MR_CREATE) || (change == KVM_MR_MOVE)) { + if ((as_id == 0) && ((change == KVM_MR_CREATE) || (change == KVM_MR_MOVE))) { r = kvm_iommu_map_pages(kvm, &new); return r; } -- 1.7.12.4 On 2017/3/27 20:22, Paolo Bonzini wrote: > > > On 27/03/2017 09:21, Herongguang (Stephen) wrote: >> From f6f0ee6831488bef7af841cb86f3d85a04848fe5 Mon Sep 17 00:00:00 2001 >> From: herongguang >> Date: Mon, 27 Mar 2017 15:08:59 +0800 >> Subject: [PATCH] KVM: pci-assign: do not map smm memory slot pages >> in vt-d page table >> >> or VM memory are not put thus leaked in kvm_iommu_unmap_memslots() when >> destroy VM. >> >> This is consistent with current vfio implementation. > > Oops, you forgot a Signed-off-by. > > Paolo > >> --- >> virt/kvm/kvm_main.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c >> index 482612b..9018d06 100644 >> --- a/virt/kvm/kvm_main.c >> +++ b/virt/kvm/kvm_main.c >> @@ -1052,7 +1052,7 @@ int __kvm_set_memory_region(struct kvm *kvm, >> * changes) is disallowed above, so any other attribute changes >> getting >> * here can be skipped. >> */ >> - if ((change == KVM_MR_CREATE) || (change == KVM_MR_MOVE)) { >> + if ((as_id == 0) && ((change == KVM_MR_CREATE) || (change == >> KVM_MR_MOVE))) { >> r = kvm_iommu_map_pages(kvm, &new); >> return r; >> } > > . > From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49876) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1csfdY-0006XM-Pb for qemu-devel@nongnu.org; Mon, 27 Mar 2017 21:09:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1csfdV-0004F9-IU for qemu-devel@nongnu.org; Mon, 27 Mar 2017 21:09:28 -0400 Received: from [45.249.212.188] (port=2968 helo=dggrg02-dlp.huawei.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.71) (envelope-from ) id 1csfdU-0004Dn-Sc for qemu-devel@nongnu.org; Mon, 27 Mar 2017 21:09:25 -0400 References: <20170325111424.21752-1-herongguang.he@huawei.com> <58D8BD6D.8080404@huawei.com> <4c9e0c46-ac81-a455-e2ed-530ad916ff71@redhat.com> From: "Herongguang (Stephen)" Message-ID: <58D9B791.2000905@huawei.com> Date: Tue, 28 Mar 2017 09:08:33 +0800 MIME-Version: 1.0 In-Reply-To: <4c9e0c46-ac81-a455-e2ed-530ad916ff71@redhat.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2] KVM: pci-assign: do not map smm memory slot pages List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini , rkrcmar@redhat.com, kvm@vger.kernel.org Cc: qemu-devel@nongnu.org, wangxinxin.wang@huawei.com From 8f5b9d2c2944ea7cd8149e9d3b4088f487217d20 Mon Sep 17 00:00:00 2001 From: herongguang Date: Mon, 27 Mar 2017 15:08:59 +0800 Subject: [PATCH] KVM: pci-assign: do not map smm memory slot pages in vt-d page table or VM memory are not put thus leaked in kvm_iommu_unmap_memslots() when destroy VM. This is consistent with current vfio implementation. Signed-off-by: herongguang --- virt/kvm/kvm_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 482612b..9018d06 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -1052,7 +1052,7 @@ int __kvm_set_memory_region(struct kvm *kvm, * changes) is disallowed above, so any other attribute changes getting * here can be skipped. */ - if ((change == KVM_MR_CREATE) || (change == KVM_MR_MOVE)) { + if ((as_id == 0) && ((change == KVM_MR_CREATE) || (change == KVM_MR_MOVE))) { r = kvm_iommu_map_pages(kvm, &new); return r; } -- 1.7.12.4 On 2017/3/27 20:22, Paolo Bonzini wrote: > > > On 27/03/2017 09:21, Herongguang (Stephen) wrote: >> From f6f0ee6831488bef7af841cb86f3d85a04848fe5 Mon Sep 17 00:00:00 2001 >> From: herongguang >> Date: Mon, 27 Mar 2017 15:08:59 +0800 >> Subject: [PATCH] KVM: pci-assign: do not map smm memory slot pages >> in vt-d page table >> >> or VM memory are not put thus leaked in kvm_iommu_unmap_memslots() when >> destroy VM. >> >> This is consistent with current vfio implementation. > > Oops, you forgot a Signed-off-by. > > Paolo > >> --- >> virt/kvm/kvm_main.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c >> index 482612b..9018d06 100644 >> --- a/virt/kvm/kvm_main.c >> +++ b/virt/kvm/kvm_main.c >> @@ -1052,7 +1052,7 @@ int __kvm_set_memory_region(struct kvm *kvm, >> * changes) is disallowed above, so any other attribute changes >> getting >> * here can be skipped. >> */ >> - if ((change == KVM_MR_CREATE) || (change == KVM_MR_MOVE)) { >> + if ((as_id == 0) && ((change == KVM_MR_CREATE) || (change == >> KVM_MR_MOVE))) { >> r = kvm_iommu_map_pages(kvm, &new); >> return r; >> } > > . >