* [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2
@ 2013-02-27 10:41 Takuya Yoshikawa
2013-02-27 10:41 ` [PATCH 1/6] KVM: set_memory_region: Drop user_alloc from prepare/commit_memory_region() Takuya Yoshikawa
` (9 more replies)
0 siblings, 10 replies; 14+ messages in thread
From: Takuya Yoshikawa @ 2013-02-27 10:41 UTC (permalink / raw)
To: mtosatti, gleb; +Cc: kvm, agraf, borntraeger, cornelia.huck, cdall
Note: this is based on the latest master branch.
I'm sending this before 3.9-rc1 is released since this can cause extra
conflicts unless we make this available to all arch before we start
adding new stuff.
Please review: every change is trivial and should not change anything.
Takuya Yoshikawa (6):
KVM: set_memory_region: Drop user_alloc from prepare/commit_memory_region()
KVM: set_memory_region: Drop user_alloc from set_memory_region()
KVM: set_memory_region: Make kvm_mr_change available to arch code
KVM: set_memory_region: Refactor prepare_memory_region()
KVM: set_memory_region: Refactor commit_memory_region()
KVM: ARM: Remove kvm_arch_set_memory_region()
arch/arm/kvm/arm.c | 15 ++----------
arch/ia64/kvm/kvm-ia64.c | 25 ++-------------------
arch/powerpc/include/asm/kvm_ppc.h | 2 +-
arch/powerpc/kvm/book3s_hv.c | 4 +-
arch/powerpc/kvm/book3s_pr.c | 2 +-
arch/powerpc/kvm/booke.c | 2 +-
arch/powerpc/kvm/powerpc.c | 13 +++++------
arch/s390/kvm/kvm-s390.c | 10 ++------
arch/x86/kvm/vmx.c | 6 ++--
arch/x86/kvm/x86.c | 25 +++++++++------------
include/linux/kvm_host.h | 35 +++++++++++++++++++++---------
virt/kvm/kvm_main.c | 40 ++++++++---------------------------
12 files changed, 67 insertions(+), 112 deletions(-)
--
1.7.4.1
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 1/6] KVM: set_memory_region: Drop user_alloc from prepare/commit_memory_region()
2013-02-27 10:41 [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2 Takuya Yoshikawa
@ 2013-02-27 10:41 ` Takuya Yoshikawa
2013-02-27 10:43 ` [PATCH 2/6] KVM: set_memory_region: Drop user_alloc from set_memory_region() Takuya Yoshikawa
` (8 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Takuya Yoshikawa @ 2013-02-27 10:41 UTC (permalink / raw)
To: mtosatti, gleb; +Cc: kvm, agraf, borntraeger, cornelia.huck, cdall
X86 does not use this any more. The remaining user, s390's !user_alloc
check, can be simply removed since KVM_SET_MEMORY_REGION ioctl is no
longer supported.
Note: fixed powerpc's indentations with spaces to suppress checkpatch
errors.
Signed-off-by: Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp>
---
arch/arm/kvm/arm.c | 6 ++----
arch/ia64/kvm/kvm-ia64.c | 6 ++----
arch/powerpc/kvm/powerpc.c | 12 +++++-------
arch/s390/kvm/kvm-s390.c | 9 ++-------
arch/x86/kvm/x86.c | 6 ++----
include/linux/kvm_host.h | 6 ++----
virt/kvm/kvm_main.c | 4 ++--
7 files changed, 17 insertions(+), 32 deletions(-)
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
index 5a93698..24cb5f6 100644
--- a/arch/arm/kvm/arm.c
+++ b/arch/arm/kvm/arm.c
@@ -231,16 +231,14 @@ int kvm_arch_set_memory_region(struct kvm *kvm,
int kvm_arch_prepare_memory_region(struct kvm *kvm,
struct kvm_memory_slot *memslot,
struct kvm_memory_slot old,
- struct kvm_userspace_memory_region *mem,
- bool user_alloc)
+ struct kvm_userspace_memory_region *mem)
{
return 0;
}
void kvm_arch_commit_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old,
- bool user_alloc)
+ struct kvm_memory_slot old)
{
}
diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c
index ad3126a..cbc5b04 100644
--- a/arch/ia64/kvm/kvm-ia64.c
+++ b/arch/ia64/kvm/kvm-ia64.c
@@ -1579,8 +1579,7 @@ int kvm_arch_create_memslot(struct kvm_memory_slot *slot, unsigned long npages)
int kvm_arch_prepare_memory_region(struct kvm *kvm,
struct kvm_memory_slot *memslot,
struct kvm_memory_slot old,
- struct kvm_userspace_memory_region *mem,
- bool user_alloc)
+ struct kvm_userspace_memory_region *mem)
{
unsigned long i;
unsigned long pfn;
@@ -1610,8 +1609,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
void kvm_arch_commit_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old,
- bool user_alloc)
+ struct kvm_memory_slot old)
{
return;
}
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index 934413c..22b3315 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -411,18 +411,16 @@ int kvm_arch_create_memslot(struct kvm_memory_slot *slot, unsigned long npages)
}
int kvm_arch_prepare_memory_region(struct kvm *kvm,
- struct kvm_memory_slot *memslot,
- struct kvm_memory_slot old,
- struct kvm_userspace_memory_region *mem,
- bool user_alloc)
+ struct kvm_memory_slot *memslot,
+ struct kvm_memory_slot old,
+ struct kvm_userspace_memory_region *mem)
{
return kvmppc_core_prepare_memory_region(kvm, memslot, mem);
}
void kvm_arch_commit_memory_region(struct kvm *kvm,
- struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old,
- bool user_alloc)
+ struct kvm_userspace_memory_region *mem,
+ struct kvm_memory_slot old)
{
kvmppc_core_commit_memory_region(kvm, mem, old);
}
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index 4cf35a0..07ac302 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -975,8 +975,7 @@ int kvm_arch_create_memslot(struct kvm_memory_slot *slot, unsigned long npages)
int kvm_arch_prepare_memory_region(struct kvm *kvm,
struct kvm_memory_slot *memslot,
struct kvm_memory_slot old,
- struct kvm_userspace_memory_region *mem,
- bool user_alloc)
+ struct kvm_userspace_memory_region *mem)
{
/* A few sanity checks. We can have exactly one memory slot which has
to start at guest virtual zero and which has to be located at a
@@ -997,16 +996,12 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
if (mem->memory_size & 0xffffful)
return -EINVAL;
- if (!user_alloc)
- return -EINVAL;
-
return 0;
}
void kvm_arch_commit_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old,
- bool user_alloc)
+ struct kvm_memory_slot old)
{
int rc;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index f71500a..b2dcb6e 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -6907,8 +6907,7 @@ out_free:
int kvm_arch_prepare_memory_region(struct kvm *kvm,
struct kvm_memory_slot *memslot,
struct kvm_memory_slot old,
- struct kvm_userspace_memory_region *mem,
- bool user_alloc)
+ struct kvm_userspace_memory_region *mem)
{
int npages = memslot->npages;
@@ -6938,8 +6937,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
void kvm_arch_commit_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old,
- bool user_alloc)
+ struct kvm_memory_slot old)
{
int nr_mmu_pages = 0, npages = mem->memory_size >> PAGE_SHIFT;
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index cad77fe..b4757a1 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -464,12 +464,10 @@ int kvm_arch_create_memslot(struct kvm_memory_slot *slot, unsigned long npages);
int kvm_arch_prepare_memory_region(struct kvm *kvm,
struct kvm_memory_slot *memslot,
struct kvm_memory_slot old,
- struct kvm_userspace_memory_region *mem,
- bool user_alloc);
+ struct kvm_userspace_memory_region *mem);
void kvm_arch_commit_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old,
- bool user_alloc);
+ struct kvm_memory_slot old);
bool kvm_largepages_enabled(void);
void kvm_disable_largepages(void);
/* flush all memory translations */
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index adc68fe..fd30370 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -875,7 +875,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
slots = old_memslots;
}
- r = kvm_arch_prepare_memory_region(kvm, &new, old, mem, user_alloc);
+ r = kvm_arch_prepare_memory_region(kvm, &new, old, mem);
if (r)
goto out_slots;
@@ -915,7 +915,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
old_memslots = install_new_memslots(kvm, slots, &new);
- kvm_arch_commit_memory_region(kvm, mem, old, user_alloc);
+ kvm_arch_commit_memory_region(kvm, mem, old);
kvm_free_physmem_slot(&old, &new);
kfree(old_memslots);
--
1.7.4.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 2/6] KVM: set_memory_region: Drop user_alloc from set_memory_region()
2013-02-27 10:41 [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2 Takuya Yoshikawa
2013-02-27 10:41 ` [PATCH 1/6] KVM: set_memory_region: Drop user_alloc from prepare/commit_memory_region() Takuya Yoshikawa
@ 2013-02-27 10:43 ` Takuya Yoshikawa
2013-02-27 10:43 ` [PATCH 3/6] KVM: set_memory_region: Make kvm_mr_change available to arch code Takuya Yoshikawa
` (7 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Takuya Yoshikawa @ 2013-02-27 10:43 UTC (permalink / raw)
To: mtosatti, gleb; +Cc: kvm, agraf, borntraeger, cornelia.huck, cdall
Except ia64's stale code, KVM_SET_MEMORY_REGION support, this is only
used for sanity checks in __kvm_set_memory_region() which can easily
be changed to use slot id instead.
Signed-off-by: Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp>
---
arch/ia64/kvm/kvm-ia64.c | 18 ------------------
arch/x86/kvm/vmx.c | 6 +++---
include/linux/kvm_host.h | 10 +++-------
virt/kvm/kvm_main.c | 18 +++++++-----------
4 files changed, 13 insertions(+), 39 deletions(-)
diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c
index cbc5b04..43701f0 100644
--- a/arch/ia64/kvm/kvm-ia64.c
+++ b/arch/ia64/kvm/kvm-ia64.c
@@ -942,24 +942,6 @@ long kvm_arch_vm_ioctl(struct file *filp,
int r = -ENOTTY;
switch (ioctl) {
- case KVM_SET_MEMORY_REGION: {
- struct kvm_memory_region kvm_mem;
- struct kvm_userspace_memory_region kvm_userspace_mem;
-
- r = -EFAULT;
- if (copy_from_user(&kvm_mem, argp, sizeof kvm_mem))
- goto out;
- kvm_userspace_mem.slot = kvm_mem.slot;
- kvm_userspace_mem.flags = kvm_mem.flags;
- kvm_userspace_mem.guest_phys_addr =
- kvm_mem.guest_phys_addr;
- kvm_userspace_mem.memory_size = kvm_mem.memory_size;
- r = kvm_vm_ioctl_set_memory_region(kvm,
- &kvm_userspace_mem, false);
- if (r)
- goto out;
- break;
- }
case KVM_CREATE_IRQCHIP:
r = -EFAULT;
r = kvm_ioapic_init(kvm);
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 6667042..9245848 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -3692,7 +3692,7 @@ static int alloc_apic_access_page(struct kvm *kvm)
kvm_userspace_mem.flags = 0;
kvm_userspace_mem.guest_phys_addr = 0xfee00000ULL;
kvm_userspace_mem.memory_size = PAGE_SIZE;
- r = __kvm_set_memory_region(kvm, &kvm_userspace_mem, false);
+ r = __kvm_set_memory_region(kvm, &kvm_userspace_mem);
if (r)
goto out;
@@ -3722,7 +3722,7 @@ static int alloc_identity_pagetable(struct kvm *kvm)
kvm_userspace_mem.guest_phys_addr =
kvm->arch.ept_identity_map_addr;
kvm_userspace_mem.memory_size = PAGE_SIZE;
- r = __kvm_set_memory_region(kvm, &kvm_userspace_mem, false);
+ r = __kvm_set_memory_region(kvm, &kvm_userspace_mem);
if (r)
goto out;
@@ -4362,7 +4362,7 @@ static int vmx_set_tss_addr(struct kvm *kvm, unsigned int addr)
.flags = 0,
};
- ret = kvm_set_memory_region(kvm, &tss_mem, false);
+ ret = kvm_set_memory_region(kvm, &tss_mem);
if (ret)
return ret;
kvm->arch.tss_addr = addr;
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index b4757a1..84a994c 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -453,11 +453,9 @@ id_to_memslot(struct kvm_memslots *slots, int id)
}
int kvm_set_memory_region(struct kvm *kvm,
- struct kvm_userspace_memory_region *mem,
- bool user_alloc);
+ struct kvm_userspace_memory_region *mem);
int __kvm_set_memory_region(struct kvm *kvm,
- struct kvm_userspace_memory_region *mem,
- bool user_alloc);
+ struct kvm_userspace_memory_region *mem);
void kvm_arch_free_memslot(struct kvm_memory_slot *free,
struct kvm_memory_slot *dont);
int kvm_arch_create_memslot(struct kvm_memory_slot *slot, unsigned long npages);
@@ -553,9 +551,7 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
struct kvm_dirty_log *log);
int kvm_vm_ioctl_set_memory_region(struct kvm *kvm,
- struct
- kvm_userspace_memory_region *mem,
- bool user_alloc);
+ struct kvm_userspace_memory_region *mem);
int kvm_vm_ioctl_irq_line(struct kvm *kvm, struct kvm_irq_level *irq_level);
long kvm_arch_vm_ioctl(struct file *filp,
unsigned int ioctl, unsigned long arg);
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index fd30370..5b3e41b 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -745,8 +745,7 @@ enum kvm_mr_change {
* Must be called holding mmap_sem for write.
*/
int __kvm_set_memory_region(struct kvm *kvm,
- struct kvm_userspace_memory_region *mem,
- bool user_alloc)
+ struct kvm_userspace_memory_region *mem)
{
int r;
gfn_t base_gfn;
@@ -767,7 +766,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
if (mem->guest_phys_addr & (PAGE_SIZE - 1))
goto out;
/* We can read the guest memory with __xxx_user() later on. */
- if (user_alloc &&
+ if ((mem->slot < KVM_USER_MEM_SLOTS) &&
((mem->userspace_addr & (PAGE_SIZE - 1)) ||
!access_ok(VERIFY_WRITE,
(void __user *)(unsigned long)mem->userspace_addr,
@@ -932,26 +931,23 @@ out:
EXPORT_SYMBOL_GPL(__kvm_set_memory_region);
int kvm_set_memory_region(struct kvm *kvm,
- struct kvm_userspace_memory_region *mem,
- bool user_alloc)
+ struct kvm_userspace_memory_region *mem)
{
int r;
mutex_lock(&kvm->slots_lock);
- r = __kvm_set_memory_region(kvm, mem, user_alloc);
+ r = __kvm_set_memory_region(kvm, mem);
mutex_unlock(&kvm->slots_lock);
return r;
}
EXPORT_SYMBOL_GPL(kvm_set_memory_region);
int kvm_vm_ioctl_set_memory_region(struct kvm *kvm,
- struct
- kvm_userspace_memory_region *mem,
- bool user_alloc)
+ struct kvm_userspace_memory_region *mem)
{
if (mem->slot >= KVM_USER_MEM_SLOTS)
return -EINVAL;
- return kvm_set_memory_region(kvm, mem, user_alloc);
+ return kvm_set_memory_region(kvm, mem);
}
int kvm_get_dirty_log(struct kvm *kvm,
@@ -2198,7 +2194,7 @@ static long kvm_vm_ioctl(struct file *filp,
sizeof kvm_userspace_mem))
goto out;
- r = kvm_vm_ioctl_set_memory_region(kvm, &kvm_userspace_mem, true);
+ r = kvm_vm_ioctl_set_memory_region(kvm, &kvm_userspace_mem);
break;
}
case KVM_GET_DIRTY_LOG: {
--
1.7.4.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 3/6] KVM: set_memory_region: Make kvm_mr_change available to arch code
2013-02-27 10:41 [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2 Takuya Yoshikawa
2013-02-27 10:41 ` [PATCH 1/6] KVM: set_memory_region: Drop user_alloc from prepare/commit_memory_region() Takuya Yoshikawa
2013-02-27 10:43 ` [PATCH 2/6] KVM: set_memory_region: Drop user_alloc from set_memory_region() Takuya Yoshikawa
@ 2013-02-27 10:43 ` Takuya Yoshikawa
2013-02-27 10:44 ` [PATCH 4/6] KVM: set_memory_region: Refactor prepare_memory_region() Takuya Yoshikawa
` (6 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Takuya Yoshikawa @ 2013-02-27 10:43 UTC (permalink / raw)
To: mtosatti, gleb; +Cc: kvm, agraf, borntraeger, cornelia.huck, cdall
This will be used for cleaning up prepare/commit_memory_region() later.
Signed-off-by: Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp>
---
include/linux/kvm_host.h | 18 ++++++++++++++++++
virt/kvm/kvm_main.c | 18 ------------------
2 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index 84a994c..8eaf61f 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -452,6 +452,24 @@ id_to_memslot(struct kvm_memslots *slots, int id)
return slot;
}
+/*
+ * KVM_SET_USER_MEMORY_REGION ioctl allows the following operations:
+ * - create a new memory slot
+ * - delete an existing memory slot
+ * - modify an existing memory slot
+ * -- move it in the guest physical memory space
+ * -- just change its flags
+ *
+ * Since flags can be changed by some of these operations, the following
+ * differentiation is the best we can do for __kvm_set_memory_region():
+ */
+enum kvm_mr_change {
+ KVM_MR_CREATE,
+ KVM_MR_DELETE,
+ KVM_MR_MOVE,
+ KVM_MR_FLAGS_ONLY,
+};
+
int kvm_set_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem);
int __kvm_set_memory_region(struct kvm *kvm,
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 5b3e41b..c7979ed 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -719,24 +719,6 @@ static struct kvm_memslots *install_new_memslots(struct kvm *kvm,
}
/*
- * KVM_SET_USER_MEMORY_REGION ioctl allows the following operations:
- * - create a new memory slot
- * - delete an existing memory slot
- * - modify an existing memory slot
- * -- move it in the guest physical memory space
- * -- just change its flags
- *
- * Since flags can be changed by some of these operations, the following
- * differentiation is the best we can do for __kvm_set_memory_region():
- */
-enum kvm_mr_change {
- KVM_MR_CREATE,
- KVM_MR_DELETE,
- KVM_MR_MOVE,
- KVM_MR_FLAGS_ONLY,
-};
-
-/*
* Allocate some memory and give it an address in the guest physical address
* space.
*
--
1.7.4.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 4/6] KVM: set_memory_region: Refactor prepare_memory_region()
2013-02-27 10:41 [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2 Takuya Yoshikawa
` (2 preceding siblings ...)
2013-02-27 10:43 ` [PATCH 3/6] KVM: set_memory_region: Make kvm_mr_change available to arch code Takuya Yoshikawa
@ 2013-02-27 10:44 ` Takuya Yoshikawa
2013-02-27 10:45 ` [PATCH 5/6] KVM: set_memory_region: Refactor commit_memory_region() Takuya Yoshikawa
` (5 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Takuya Yoshikawa @ 2013-02-27 10:44 UTC (permalink / raw)
To: mtosatti, gleb; +Cc: kvm, agraf, borntraeger, cornelia.huck, cdall
This patch drops the parameter old, a copy of the old memory slot, and
adds a new parameter named change to know the change being requested.
This not only cleans up the code but also removes extra copying of the
memory slot structure.
Signed-off-by: Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp>
---
arch/arm/kvm/arm.c | 4 ++--
arch/ia64/kvm/kvm-ia64.c | 4 ++--
arch/powerpc/kvm/powerpc.c | 4 ++--
arch/s390/kvm/kvm-s390.c | 4 ++--
arch/x86/kvm/x86.c | 10 ++++------
include/linux/kvm_host.h | 4 ++--
virt/kvm/kvm_main.c | 2 +-
7 files changed, 15 insertions(+), 17 deletions(-)
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
index 24cb5f6..96ebab7 100644
--- a/arch/arm/kvm/arm.c
+++ b/arch/arm/kvm/arm.c
@@ -230,8 +230,8 @@ int kvm_arch_set_memory_region(struct kvm *kvm,
int kvm_arch_prepare_memory_region(struct kvm *kvm,
struct kvm_memory_slot *memslot,
- struct kvm_memory_slot old,
- struct kvm_userspace_memory_region *mem)
+ struct kvm_userspace_memory_region *mem,
+ enum kvm_mr_change change)
{
return 0;
}
diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c
index 43701f0..5c2b07e 100644
--- a/arch/ia64/kvm/kvm-ia64.c
+++ b/arch/ia64/kvm/kvm-ia64.c
@@ -1560,8 +1560,8 @@ int kvm_arch_create_memslot(struct kvm_memory_slot *slot, unsigned long npages)
int kvm_arch_prepare_memory_region(struct kvm *kvm,
struct kvm_memory_slot *memslot,
- struct kvm_memory_slot old,
- struct kvm_userspace_memory_region *mem)
+ struct kvm_userspace_memory_region *mem,
+ enum kvm_mr_change change)
{
unsigned long i;
unsigned long pfn;
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index 22b3315..8aa51cd 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -412,8 +412,8 @@ int kvm_arch_create_memslot(struct kvm_memory_slot *slot, unsigned long npages)
int kvm_arch_prepare_memory_region(struct kvm *kvm,
struct kvm_memory_slot *memslot,
- struct kvm_memory_slot old,
- struct kvm_userspace_memory_region *mem)
+ struct kvm_userspace_memory_region *mem,
+ enum kvm_mr_change change)
{
return kvmppc_core_prepare_memory_region(kvm, memslot, mem);
}
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index 07ac302..4288780 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -974,8 +974,8 @@ int kvm_arch_create_memslot(struct kvm_memory_slot *slot, unsigned long npages)
/* Section: memory related */
int kvm_arch_prepare_memory_region(struct kvm *kvm,
struct kvm_memory_slot *memslot,
- struct kvm_memory_slot old,
- struct kvm_userspace_memory_region *mem)
+ struct kvm_userspace_memory_region *mem,
+ enum kvm_mr_change change)
{
/* A few sanity checks. We can have exactly one memory slot which has
to start at guest virtual zero and which has to be located at a
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index b2dcb6e..d692be2 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -6906,23 +6906,21 @@ out_free:
int kvm_arch_prepare_memory_region(struct kvm *kvm,
struct kvm_memory_slot *memslot,
- struct kvm_memory_slot old,
- struct kvm_userspace_memory_region *mem)
+ struct kvm_userspace_memory_region *mem,
+ enum kvm_mr_change change)
{
- int npages = memslot->npages;
-
/*
* Only private memory slots need to be mapped here since
* KVM_SET_MEMORY_REGION ioctl is no longer supported.
*/
- if ((memslot->id >= KVM_USER_MEM_SLOTS) && npages && !old.npages) {
+ if ((memslot->id >= KVM_USER_MEM_SLOTS) && (change == KVM_MR_CREATE)) {
unsigned long userspace_addr;
/*
* MAP_SHARED to prevent internal slot pages from being moved
* by fork()/COW.
*/
- userspace_addr = vm_mmap(NULL, 0, npages * PAGE_SIZE,
+ userspace_addr = vm_mmap(NULL, 0, memslot->npages * PAGE_SIZE,
PROT_READ | PROT_WRITE,
MAP_SHARED | MAP_ANONYMOUS, 0);
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index 8eaf61f..caa72cf 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -479,8 +479,8 @@ void kvm_arch_free_memslot(struct kvm_memory_slot *free,
int kvm_arch_create_memslot(struct kvm_memory_slot *slot, unsigned long npages);
int kvm_arch_prepare_memory_region(struct kvm *kvm,
struct kvm_memory_slot *memslot,
- struct kvm_memory_slot old,
- struct kvm_userspace_memory_region *mem);
+ struct kvm_userspace_memory_region *mem,
+ enum kvm_mr_change change);
void kvm_arch_commit_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem,
struct kvm_memory_slot old);
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index c7979ed..8f85bae 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -856,7 +856,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
slots = old_memslots;
}
- r = kvm_arch_prepare_memory_region(kvm, &new, old, mem);
+ r = kvm_arch_prepare_memory_region(kvm, &new, mem, change);
if (r)
goto out_slots;
--
1.7.4.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 5/6] KVM: set_memory_region: Refactor commit_memory_region()
2013-02-27 10:41 [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2 Takuya Yoshikawa
` (3 preceding siblings ...)
2013-02-27 10:44 ` [PATCH 4/6] KVM: set_memory_region: Refactor prepare_memory_region() Takuya Yoshikawa
@ 2013-02-27 10:45 ` Takuya Yoshikawa
2013-02-27 10:46 ` [PATCH 6/6] KVM: ARM: Remove kvm_arch_set_memory_region() Takuya Yoshikawa
` (4 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Takuya Yoshikawa @ 2013-02-27 10:45 UTC (permalink / raw)
To: mtosatti, gleb; +Cc: kvm, agraf, borntraeger, cornelia.huck, cdall
This patch makes the parameter old a const pointer to the old memory
slot and adds a new parameter named change to know the change being
requested: the former is for removing extra copying and the latter is
for cleaning up the code.
Signed-off-by: Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp>
---
arch/arm/kvm/arm.c | 3 ++-
arch/ia64/kvm/kvm-ia64.c | 3 ++-
arch/powerpc/include/asm/kvm_ppc.h | 2 +-
arch/powerpc/kvm/book3s_hv.c | 4 ++--
arch/powerpc/kvm/book3s_pr.c | 2 +-
arch/powerpc/kvm/booke.c | 2 +-
arch/powerpc/kvm/powerpc.c | 3 ++-
arch/s390/kvm/kvm-s390.c | 3 ++-
arch/x86/kvm/x86.c | 15 ++++++++-------
include/linux/kvm_host.h | 3 ++-
virt/kvm/kvm_main.c | 2 +-
11 files changed, 24 insertions(+), 18 deletions(-)
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
index 96ebab7..b32dc44 100644
--- a/arch/arm/kvm/arm.c
+++ b/arch/arm/kvm/arm.c
@@ -238,7 +238,8 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
void kvm_arch_commit_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old)
+ const struct kvm_memory_slot *old,
+ enum kvm_mr_change change)
{
}
diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c
index 5c2b07e..7a54455 100644
--- a/arch/ia64/kvm/kvm-ia64.c
+++ b/arch/ia64/kvm/kvm-ia64.c
@@ -1591,7 +1591,8 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
void kvm_arch_commit_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old)
+ const struct kvm_memory_slot *old,
+ enum kvm_mr_change change)
{
return;
}
diff --git a/arch/powerpc/include/asm/kvm_ppc.h b/arch/powerpc/include/asm/kvm_ppc.h
index 44a657a..44fa9ad 100644
--- a/arch/powerpc/include/asm/kvm_ppc.h
+++ b/arch/powerpc/include/asm/kvm_ppc.h
@@ -152,7 +152,7 @@ extern int kvmppc_core_prepare_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem);
extern void kvmppc_core_commit_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old);
+ const struct kvm_memory_slot *old);
extern int kvm_vm_ioctl_get_smmu_info(struct kvm *kvm,
struct kvm_ppc_smmu_info *info);
extern void kvmppc_core_flush_memslot(struct kvm *kvm,
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 80dcc53..1e521ba 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -1639,12 +1639,12 @@ int kvmppc_core_prepare_memory_region(struct kvm *kvm,
void kvmppc_core_commit_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old)
+ const struct kvm_memory_slot *old)
{
unsigned long npages = mem->memory_size >> PAGE_SHIFT;
struct kvm_memory_slot *memslot;
- if (npages && old.npages) {
+ if (npages && old->npages) {
/*
* If modifying a memslot, reset all the rmap dirty bits.
* If this is a new memslot, we don't need to do anything
diff --git a/arch/powerpc/kvm/book3s_pr.c b/arch/powerpc/kvm/book3s_pr.c
index 5e93438..286e23e 100644
--- a/arch/powerpc/kvm/book3s_pr.c
+++ b/arch/powerpc/kvm/book3s_pr.c
@@ -1283,7 +1283,7 @@ int kvmppc_core_prepare_memory_region(struct kvm *kvm,
void kvmppc_core_commit_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old)
+ const struct kvm_memory_slot *old)
{
}
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 020923e..eb88fa6 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -1531,7 +1531,7 @@ int kvmppc_core_prepare_memory_region(struct kvm *kvm,
void kvmppc_core_commit_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old)
+ const struct kvm_memory_slot *old)
{
}
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index 8aa51cd..7b5d4d2 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -420,7 +420,8 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
void kvm_arch_commit_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old)
+ const struct kvm_memory_slot *old,
+ enum kvm_mr_change change)
{
kvmppc_core_commit_memory_region(kvm, mem, old);
}
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index 4288780..6cae4ad 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -1001,7 +1001,8 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
void kvm_arch_commit_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old)
+ const struct kvm_memory_slot *old,
+ enum kvm_mr_change change)
{
int rc;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index d692be2..f46dc0d 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -6935,16 +6935,17 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
void kvm_arch_commit_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old)
+ const struct kvm_memory_slot *old,
+ enum kvm_mr_change change)
{
- int nr_mmu_pages = 0, npages = mem->memory_size >> PAGE_SHIFT;
+ int nr_mmu_pages = 0;
- if ((mem->slot >= KVM_USER_MEM_SLOTS) && old.npages && !npages) {
+ if ((mem->slot >= KVM_USER_MEM_SLOTS) && (change == KVM_MR_DELETE)) {
int ret;
- ret = vm_munmap(old.userspace_addr,
- old.npages * PAGE_SIZE);
+ ret = vm_munmap(old->userspace_addr,
+ old->npages * PAGE_SIZE);
if (ret < 0)
printk(KERN_WARNING
"kvm_vm_ioctl_set_memory_region: "
@@ -6961,13 +6962,13 @@ void kvm_arch_commit_memory_region(struct kvm *kvm,
* Existing largepage mappings are destroyed here and new ones will
* not be created until the end of the logging.
*/
- if (npages && (mem->flags & KVM_MEM_LOG_DIRTY_PAGES))
+ if ((change != KVM_MR_DELETE) && (mem->flags & KVM_MEM_LOG_DIRTY_PAGES))
kvm_mmu_slot_remove_write_access(kvm, mem->slot);
/*
* If memory slot is created, or moved, we need to clear all
* mmio sptes.
*/
- if (npages && old.base_gfn != mem->guest_phys_addr >> PAGE_SHIFT) {
+ if ((change == KVM_MR_CREATE) || (change == KVM_MR_MOVE)) {
kvm_mmu_zap_all(kvm);
kvm_reload_remote_mmus(kvm);
}
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index caa72cf..ac584cc 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -483,7 +483,8 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
enum kvm_mr_change change);
void kvm_arch_commit_memory_region(struct kvm *kvm,
struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old);
+ const struct kvm_memory_slot *old,
+ enum kvm_mr_change change);
bool kvm_largepages_enabled(void);
void kvm_disable_largepages(void);
/* flush all memory translations */
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 8f85bae..0e919a1 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -896,7 +896,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
old_memslots = install_new_memslots(kvm, slots, &new);
- kvm_arch_commit_memory_region(kvm, mem, old);
+ kvm_arch_commit_memory_region(kvm, mem, &old, change);
kvm_free_physmem_slot(&old, &new);
kfree(old_memslots);
--
1.7.4.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 6/6] KVM: ARM: Remove kvm_arch_set_memory_region()
2013-02-27 10:41 [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2 Takuya Yoshikawa
` (4 preceding siblings ...)
2013-02-27 10:45 ` [PATCH 5/6] KVM: set_memory_region: Refactor commit_memory_region() Takuya Yoshikawa
@ 2013-02-27 10:46 ` Takuya Yoshikawa
2013-02-27 16:23 ` [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2 Gleb Natapov
` (3 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Takuya Yoshikawa @ 2013-02-27 10:46 UTC (permalink / raw)
To: mtosatti, gleb; +Cc: kvm, agraf, borntraeger, cornelia.huck, cdall
This was replaced with prepare/commit long before:
commit f7784b8ec9b6a041fa828cfbe9012fe51933f5ac
KVM: split kvm_arch_set_memory_region into prepare and commit
Signed-off-by: Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp>
---
arch/arm/kvm/arm.c | 8 --------
1 files changed, 0 insertions(+), 8 deletions(-)
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
index b32dc44..e4ad0bb 100644
--- a/arch/arm/kvm/arm.c
+++ b/arch/arm/kvm/arm.c
@@ -220,14 +220,6 @@ long kvm_arch_dev_ioctl(struct file *filp,
return -EINVAL;
}
-int kvm_arch_set_memory_region(struct kvm *kvm,
- struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot old,
- int user_alloc)
-{
- return 0;
-}
-
int kvm_arch_prepare_memory_region(struct kvm *kvm,
struct kvm_memory_slot *memslot,
struct kvm_userspace_memory_region *mem,
--
1.7.4.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2
2013-02-27 10:41 [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2 Takuya Yoshikawa
` (5 preceding siblings ...)
2013-02-27 10:46 ` [PATCH 6/6] KVM: ARM: Remove kvm_arch_set_memory_region() Takuya Yoshikawa
@ 2013-02-27 16:23 ` Gleb Natapov
2013-02-28 0:43 ` Takuya Yoshikawa
2013-02-28 1:02 ` Takuya Yoshikawa
2013-02-28 1:03 ` Marcelo Tosatti
` (2 subsequent siblings)
9 siblings, 2 replies; 14+ messages in thread
From: Gleb Natapov @ 2013-02-27 16:23 UTC (permalink / raw)
To: Takuya Yoshikawa; +Cc: mtosatti, kvm, agraf, borntraeger, cornelia.huck, cdall
On Wed, Feb 27, 2013 at 07:41:03PM +0900, Takuya Yoshikawa wrote:
> Note: this is based on the latest master branch.
>
> I'm sending this before 3.9-rc1 is released since this can cause extra
> conflicts unless we make this available to all arch before we start
> adding new stuff.
>
I do not quite sure what you want me to do. Why can't this wait for
3.10?
> Please review: every change is trivial and should not change anything.
>
> Takuya Yoshikawa (6):
> KVM: set_memory_region: Drop user_alloc from prepare/commit_memory_region()
> KVM: set_memory_region: Drop user_alloc from set_memory_region()
> KVM: set_memory_region: Make kvm_mr_change available to arch code
> KVM: set_memory_region: Refactor prepare_memory_region()
> KVM: set_memory_region: Refactor commit_memory_region()
> KVM: ARM: Remove kvm_arch_set_memory_region()
>
> arch/arm/kvm/arm.c | 15 ++----------
> arch/ia64/kvm/kvm-ia64.c | 25 ++-------------------
> arch/powerpc/include/asm/kvm_ppc.h | 2 +-
> arch/powerpc/kvm/book3s_hv.c | 4 +-
> arch/powerpc/kvm/book3s_pr.c | 2 +-
> arch/powerpc/kvm/booke.c | 2 +-
> arch/powerpc/kvm/powerpc.c | 13 +++++------
> arch/s390/kvm/kvm-s390.c | 10 ++------
> arch/x86/kvm/vmx.c | 6 ++--
> arch/x86/kvm/x86.c | 25 +++++++++------------
> include/linux/kvm_host.h | 35 +++++++++++++++++++++---------
> virt/kvm/kvm_main.c | 40 ++++++++---------------------------
> 12 files changed, 67 insertions(+), 112 deletions(-)
>
> --
> 1.7.4.1
--
Gleb.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2
2013-02-27 16:23 ` [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2 Gleb Natapov
@ 2013-02-28 0:43 ` Takuya Yoshikawa
2013-02-28 1:02 ` Takuya Yoshikawa
1 sibling, 0 replies; 14+ messages in thread
From: Takuya Yoshikawa @ 2013-02-28 0:43 UTC (permalink / raw)
To: Gleb Natapov; +Cc: mtosatti, kvm, agraf, borntraeger, cornelia.huck, cdall
On Wed, 27 Feb 2013 18:23:45 +0200
Gleb Natapov <gleb@redhat.com> wrote:
> On Wed, Feb 27, 2013 at 07:41:03PM +0900, Takuya Yoshikawa wrote:
> > Note: this is based on the latest master branch.
> >
> > I'm sending this before 3.9-rc1 is released since this can cause extra
> > conflicts unless we make this available to all arch before we start
> > adding new stuff.
> >
> I do not quite sure what you want me to do. Why can't this wait for
> 3.10?
This is for 3.10. Sorry for my confusing explanation.
I'd like to let each arch developer know the plan and get requests, if any,
to make this the start of the 3.10 development, at least for stuff using
set_memory_region related code.
I just don't want to make this later in the next development cycle since
people tend to queue up their own arch code soon.
Thanks,
Takuya
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2
2013-02-27 16:23 ` [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2 Gleb Natapov
2013-02-28 0:43 ` Takuya Yoshikawa
@ 2013-02-28 1:02 ` Takuya Yoshikawa
2013-02-28 9:18 ` Gleb Natapov
1 sibling, 1 reply; 14+ messages in thread
From: Takuya Yoshikawa @ 2013-02-28 1:02 UTC (permalink / raw)
To: Gleb Natapov; +Cc: mtosatti, kvm, agraf, borntraeger, cornelia.huck, cdall
[ Resending since my email client seemed to fail. ]
On Wed, 27 Feb 2013 18:23:45 +0200
Gleb Natapov <gleb@redhat.com> wrote:
> On Wed, Feb 27, 2013 at 07:41:03PM +0900, Takuya Yoshikawa wrote:
> > Note: this is based on the latest master branch.
> >
> > I'm sending this before 3.9-rc1 is released since this can cause extra
> > conflicts unless we make this available to all arch before we start
> > adding new stuff.
> >
> I do not quite sure what you want me to do. Why can't this wait for
> 3.10?
Sorry for my confusing explanation. This is exactly for 3.10.
I'd like to let the maintainers of arch code know the plan and make them
prepared for the possible changes for the next development cycle.
It would be nice if this won't make it difficult to sync later: people
tend to queue up their own code soon.
Thanks,
Takuya
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2
2013-02-27 10:41 [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2 Takuya Yoshikawa
` (6 preceding siblings ...)
2013-02-27 16:23 ` [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2 Gleb Natapov
@ 2013-02-28 1:03 ` Marcelo Tosatti
2013-02-28 9:48 ` Cornelia Huck
2013-03-04 23:22 ` Marcelo Tosatti
9 siblings, 0 replies; 14+ messages in thread
From: Marcelo Tosatti @ 2013-02-28 1:03 UTC (permalink / raw)
To: Takuya Yoshikawa; +Cc: gleb, kvm, agraf, borntraeger, cornelia.huck, cdall
On Wed, Feb 27, 2013 at 07:41:03PM +0900, Takuya Yoshikawa wrote:
> Note: this is based on the latest master branch.
>
> I'm sending this before 3.9-rc1 is released since this can cause extra
> conflicts unless we make this available to all arch before we start
> adding new stuff.
>
> Please review: every change is trivial and should not change anything.
>
> Takuya Yoshikawa (6):
> KVM: set_memory_region: Drop user_alloc from prepare/commit_memory_region()
> KVM: set_memory_region: Drop user_alloc from set_memory_region()
> KVM: set_memory_region: Make kvm_mr_change available to arch code
> KVM: set_memory_region: Refactor prepare_memory_region()
> KVM: set_memory_region: Refactor commit_memory_region()
> KVM: ARM: Remove kvm_arch_set_memory_region()
>
> arch/arm/kvm/arm.c | 15 ++----------
> arch/ia64/kvm/kvm-ia64.c | 25 ++-------------------
> arch/powerpc/include/asm/kvm_ppc.h | 2 +-
> arch/powerpc/kvm/book3s_hv.c | 4 +-
> arch/powerpc/kvm/book3s_pr.c | 2 +-
> arch/powerpc/kvm/booke.c | 2 +-
> arch/powerpc/kvm/powerpc.c | 13 +++++------
> arch/s390/kvm/kvm-s390.c | 10 ++------
> arch/x86/kvm/vmx.c | 6 ++--
> arch/x86/kvm/x86.c | 25 +++++++++------------
> include/linux/kvm_host.h | 35 +++++++++++++++++++++---------
> virt/kvm/kvm_main.c | 40 ++++++++---------------------------
> 12 files changed, 67 insertions(+), 112 deletions(-)
>
> --
> 1.7.4.1
Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2
2013-02-28 1:02 ` Takuya Yoshikawa
@ 2013-02-28 9:18 ` Gleb Natapov
0 siblings, 0 replies; 14+ messages in thread
From: Gleb Natapov @ 2013-02-28 9:18 UTC (permalink / raw)
To: Takuya Yoshikawa; +Cc: mtosatti, kvm, agraf, borntraeger, cornelia.huck, cdall
On Thu, Feb 28, 2013 at 10:02:13AM +0900, Takuya Yoshikawa wrote:
> [ Resending since my email client seemed to fail. ]
>
> On Wed, 27 Feb 2013 18:23:45 +0200
> Gleb Natapov <gleb@redhat.com> wrote:
>
> > On Wed, Feb 27, 2013 at 07:41:03PM +0900, Takuya Yoshikawa wrote:
> > > Note: this is based on the latest master branch.
> > >
> > > I'm sending this before 3.9-rc1 is released since this can cause extra
> > > conflicts unless we make this available to all arch before we start
> > > adding new stuff.
> > >
> > I do not quite sure what you want me to do. Why can't this wait for
> > 3.10?
>
> Sorry for my confusing explanation. This is exactly for 3.10.
>
> I'd like to let the maintainers of arch code know the plan and make them
> prepared for the possible changes for the next development cycle.
>
> It would be nice if this won't make it difficult to sync later: people
> tend to queue up their own code soon.
>
Make perfect sense. Will be applied after -rc1 is released. At this
point master will be merged to next/queue development branches.
--
Gleb.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2
2013-02-27 10:41 [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2 Takuya Yoshikawa
` (7 preceding siblings ...)
2013-02-28 1:03 ` Marcelo Tosatti
@ 2013-02-28 9:48 ` Cornelia Huck
2013-03-04 23:22 ` Marcelo Tosatti
9 siblings, 0 replies; 14+ messages in thread
From: Cornelia Huck @ 2013-02-28 9:48 UTC (permalink / raw)
To: Takuya Yoshikawa; +Cc: mtosatti, gleb, kvm, agraf, borntraeger, cdall
On Wed, 27 Feb 2013 19:41:03 +0900
Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp> wrote:
> Note: this is based on the latest master branch.
>
> I'm sending this before 3.9-rc1 is released since this can cause extra
> conflicts unless we make this available to all arch before we start
> adding new stuff.
>
> Please review: every change is trivial and should not change anything.
>
> Takuya Yoshikawa (6):
> KVM: set_memory_region: Drop user_alloc from prepare/commit_memory_region()
> KVM: set_memory_region: Drop user_alloc from set_memory_region()
> KVM: set_memory_region: Make kvm_mr_change available to arch code
> KVM: set_memory_region: Refactor prepare_memory_region()
> KVM: set_memory_region: Refactor commit_memory_region()
> KVM: ARM: Remove kvm_arch_set_memory_region()
>
> arch/arm/kvm/arm.c | 15 ++----------
> arch/ia64/kvm/kvm-ia64.c | 25 ++-------------------
> arch/powerpc/include/asm/kvm_ppc.h | 2 +-
> arch/powerpc/kvm/book3s_hv.c | 4 +-
> arch/powerpc/kvm/book3s_pr.c | 2 +-
> arch/powerpc/kvm/booke.c | 2 +-
> arch/powerpc/kvm/powerpc.c | 13 +++++------
> arch/s390/kvm/kvm-s390.c | 10 ++------
> arch/x86/kvm/vmx.c | 6 ++--
> arch/x86/kvm/x86.c | 25 +++++++++------------
> include/linux/kvm_host.h | 35 +++++++++++++++++++++---------
> virt/kvm/kvm_main.c | 40 ++++++++---------------------------
> 12 files changed, 67 insertions(+), 112 deletions(-)
>
Looks fine on s390.
Tested-by: Cornelia Huck <cornelia.huck@de.ibm.com>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2
2013-02-27 10:41 [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2 Takuya Yoshikawa
` (8 preceding siblings ...)
2013-02-28 9:48 ` Cornelia Huck
@ 2013-03-04 23:22 ` Marcelo Tosatti
9 siblings, 0 replies; 14+ messages in thread
From: Marcelo Tosatti @ 2013-03-04 23:22 UTC (permalink / raw)
To: Takuya Yoshikawa; +Cc: gleb, kvm, agraf, borntraeger, cornelia.huck, cdall
On Wed, Feb 27, 2013 at 07:41:03PM +0900, Takuya Yoshikawa wrote:
> Note: this is based on the latest master branch.
>
> I'm sending this before 3.9-rc1 is released since this can cause extra
> conflicts unless we make this available to all arch before we start
> adding new stuff.
>
> Please review: every change is trivial and should not change anything.
>
> Takuya Yoshikawa (6):
> KVM: set_memory_region: Drop user_alloc from prepare/commit_memory_region()
> KVM: set_memory_region: Drop user_alloc from set_memory_region()
> KVM: set_memory_region: Make kvm_mr_change available to arch code
> KVM: set_memory_region: Refactor prepare_memory_region()
> KVM: set_memory_region: Refactor commit_memory_region()
> KVM: ARM: Remove kvm_arch_set_memory_region()
>
> arch/arm/kvm/arm.c | 15 ++----------
> arch/ia64/kvm/kvm-ia64.c | 25 ++-------------------
> arch/powerpc/include/asm/kvm_ppc.h | 2 +-
> arch/powerpc/kvm/book3s_hv.c | 4 +-
> arch/powerpc/kvm/book3s_pr.c | 2 +-
> arch/powerpc/kvm/booke.c | 2 +-
> arch/powerpc/kvm/powerpc.c | 13 +++++------
> arch/s390/kvm/kvm-s390.c | 10 ++------
> arch/x86/kvm/vmx.c | 6 ++--
> arch/x86/kvm/x86.c | 25 +++++++++------------
> include/linux/kvm_host.h | 35 +++++++++++++++++++++---------
> virt/kvm/kvm_main.c | 40 ++++++++---------------------------
> 12 files changed, 67 insertions(+), 112 deletions(-)
Applied, thanks.
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2013-03-04 23:25 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-27 10:41 [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2 Takuya Yoshikawa
2013-02-27 10:41 ` [PATCH 1/6] KVM: set_memory_region: Drop user_alloc from prepare/commit_memory_region() Takuya Yoshikawa
2013-02-27 10:43 ` [PATCH 2/6] KVM: set_memory_region: Drop user_alloc from set_memory_region() Takuya Yoshikawa
2013-02-27 10:43 ` [PATCH 3/6] KVM: set_memory_region: Make kvm_mr_change available to arch code Takuya Yoshikawa
2013-02-27 10:44 ` [PATCH 4/6] KVM: set_memory_region: Refactor prepare_memory_region() Takuya Yoshikawa
2013-02-27 10:45 ` [PATCH 5/6] KVM: set_memory_region: Refactor commit_memory_region() Takuya Yoshikawa
2013-02-27 10:46 ` [PATCH 6/6] KVM: ARM: Remove kvm_arch_set_memory_region() Takuya Yoshikawa
2013-02-27 16:23 ` [PATCH 0/6] KVM: Clean up and optimize set_memory_region() - part2 Gleb Natapov
2013-02-28 0:43 ` Takuya Yoshikawa
2013-02-28 1:02 ` Takuya Yoshikawa
2013-02-28 9:18 ` Gleb Natapov
2013-02-28 1:03 ` Marcelo Tosatti
2013-02-28 9:48 ` Cornelia Huck
2013-03-04 23:22 ` Marcelo Tosatti
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox