All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Eric Auger <eric.auger@linaro.org>,
	Christoffer Dall <christoffer.dall@linaro.org>,
	Shannon Zhao <shannon.zhao@linaro.org>
Subject: [PATCH 3.14 09/17] ARM: KVM: Unmap IPA on memslot delete/move
Date: Fri, 26 Jun 2015 18:08:31 -0700	[thread overview]
Message-ID: <20150627010820.518580340@linuxfoundation.org> (raw)
In-Reply-To: <20150627010820.231673616@linuxfoundation.org>

3.14-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Eric Auger <eric.auger@linaro.org>

commit df6ce24f2ee485c4f9a5cb610063a5eb60da8267 upstream.

Currently when a KVM region is deleted or moved after
KVM_SET_USER_MEMORY_REGION ioctl, the corresponding
intermediate physical memory is not unmapped.

This patch corrects this and unmaps the region's IPA range
in kvm_arch_commit_memory_region using unmap_stage2_range.

Signed-off-by: Eric Auger <eric.auger@linaro.org>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm/kvm/arm.c |   37 -------------------------------------
 arch/arm/kvm/mmu.c |   46 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+), 37 deletions(-)

--- a/arch/arm/kvm/arm.c
+++ b/arch/arm/kvm/arm.c
@@ -155,16 +155,6 @@ int kvm_arch_vcpu_fault(struct kvm_vcpu
 	return VM_FAULT_SIGBUS;
 }
 
-void kvm_arch_free_memslot(struct kvm *kvm, struct kvm_memory_slot *free,
-			   struct kvm_memory_slot *dont)
-{
-}
-
-int kvm_arch_create_memslot(struct kvm *kvm, struct kvm_memory_slot *slot,
-			    unsigned long npages)
-{
-	return 0;
-}
 
 /**
  * kvm_arch_destroy_vm - destroy the VM data structure
@@ -224,33 +214,6 @@ long kvm_arch_dev_ioctl(struct file *fil
 	return -EINVAL;
 }
 
-void kvm_arch_memslots_updated(struct kvm *kvm)
-{
-}
-
-int kvm_arch_prepare_memory_region(struct kvm *kvm,
-				   struct kvm_memory_slot *memslot,
-				   struct kvm_userspace_memory_region *mem,
-				   enum kvm_mr_change change)
-{
-	return 0;
-}
-
-void kvm_arch_commit_memory_region(struct kvm *kvm,
-				   struct kvm_userspace_memory_region *mem,
-				   const struct kvm_memory_slot *old,
-				   enum kvm_mr_change change)
-{
-}
-
-void kvm_arch_flush_shadow_all(struct kvm *kvm)
-{
-}
-
-void kvm_arch_flush_shadow_memslot(struct kvm *kvm,
-				   struct kvm_memory_slot *slot)
-{
-}
 
 struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm, unsigned int id)
 {
--- a/arch/arm/kvm/mmu.c
+++ b/arch/arm/kvm/mmu.c
@@ -1111,3 +1111,49 @@ out:
 	free_hyp_pgds();
 	return err;
 }
+
+void kvm_arch_commit_memory_region(struct kvm *kvm,
+				   struct kvm_userspace_memory_region *mem,
+				   const struct kvm_memory_slot *old,
+				   enum kvm_mr_change change)
+{
+	gpa_t gpa = old->base_gfn << PAGE_SHIFT;
+	phys_addr_t size = old->npages << PAGE_SHIFT;
+	if (change == KVM_MR_DELETE || change == KVM_MR_MOVE) {
+		spin_lock(&kvm->mmu_lock);
+		unmap_stage2_range(kvm, gpa, size);
+		spin_unlock(&kvm->mmu_lock);
+	}
+}
+
+int kvm_arch_prepare_memory_region(struct kvm *kvm,
+				   struct kvm_memory_slot *memslot,
+				   struct kvm_userspace_memory_region *mem,
+				   enum kvm_mr_change change)
+{
+	return 0;
+}
+
+void kvm_arch_free_memslot(struct kvm *kvm, struct kvm_memory_slot *free,
+			   struct kvm_memory_slot *dont)
+{
+}
+
+int kvm_arch_create_memslot(struct kvm *kvm, struct kvm_memory_slot *slot,
+			    unsigned long npages)
+{
+	return 0;
+}
+
+void kvm_arch_memslots_updated(struct kvm *kvm)
+{
+}
+
+void kvm_arch_flush_shadow_all(struct kvm *kvm)
+{
+}
+
+void kvm_arch_flush_shadow_memslot(struct kvm *kvm,
+				   struct kvm_memory_slot *slot)
+{
+}



  parent reply	other threads:[~2015-06-27  1:10 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-27  1:08 [PATCH 3.14 00/17] 3.14.46-stable review Greg Kroah-Hartman
2015-06-27  1:08 ` [PATCH 3.14 01/17] crypto: caam - fix RNG buffer cache alignment Greg Kroah-Hartman
2015-06-27  1:08 ` [PATCH 3.14 02/17] tracing: Have filter check for balanced ops Greg Kroah-Hartman
2015-06-27  1:08 ` [PATCH 3.14 03/17] drm/mgag200: Reject non-character-cell-aligned mode widths Greg Kroah-Hartman
2015-06-27  1:08 ` [PATCH 3.14 04/17] ath3k: Add support of 0489:e076 AR3012 device Greg Kroah-Hartman
2015-06-27  1:08 ` [PATCH 3.14 05/17] ath3k: add support of 13d3:3474 " Greg Kroah-Hartman
2015-06-27  1:08 ` [PATCH 3.14 06/17] pipe: iovec: Fix memory corruption when retrying atomic copy as non-atomic Greg Kroah-Hartman
2015-06-27  1:08 ` [PATCH 3.14 07/17] lpfc: Add iotag memory barrier Greg Kroah-Hartman
2015-06-27  1:08 ` [PATCH 3.14 08/17] arm/arm64: KVM: Fix and refactor unmap_range Greg Kroah-Hartman
2015-06-27  1:08 ` Greg Kroah-Hartman [this message]
2015-06-27  1:08 ` [PATCH 3.14 10/17] ARM: KVM: user_mem_abort: support stage 2 MMIO page mapping Greg Kroah-Hartman
2015-06-27  1:08 ` [PATCH 3.14 12/17] ARM: virt: fix wrong HSCTLR.EE bit setting Greg Kroah-Hartman
2015-06-27  1:08 ` [PATCH 3.14 13/17] ARM64: KVM: store kvm_vcpu_fault_info est_el2 as word Greg Kroah-Hartman
2015-06-27  1:08 ` [PATCH 3.14 14/17] KVM: ARM/arm64: fix non-const declaration of function returning const Greg Kroah-Hartman
2015-06-27  1:08 ` [PATCH 3.14 15/17] KVM: ARM/arm64: fix broken __percpu annotation Greg Kroah-Hartman
2015-06-27  1:08 ` [PATCH 3.14 16/17] KVM: ARM/arm64: avoid returning negative error code as bool Greg Kroah-Hartman
2015-06-27  1:08 ` [PATCH 3.14 17/17] KVM: vgic: return int instead of bool when checking I/O ranges Greg Kroah-Hartman
2015-06-27  3:12 ` [PATCH 3.14 00/17] 3.14.46-stable review Shuah Khan
2015-06-27  5:41 ` Guenter Roeck
2015-06-27 10:15 ` Sudip Mukherjee

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150627010820.518580340@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=christoffer.dall@linaro.org \
    --cc=eric.auger@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=shannon.zhao@linaro.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.