public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] Preparation for PIC-APIC rewiring
@ 2010-06-20 16:21 Avi Kivity
  2010-06-20 16:21 ` [PATCH 1/4] KVM: i8259: reduce excessive abstraction for pic_irq_request() Avi Kivity
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Avi Kivity @ 2010-06-20 16:21 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: kvm

These four patches were part of an optimization patchset I've been neglecting,
but are equally useful as preparation for fixing the PIC-APIC wiring issues.

Avi Kivity (4):
  KVM: i8259: reduce excessive abstraction for pic_irq_request()
  KVM: i8259: simplify pic_irq_request() calling sequence
  KVM: Add mini-API for vcpu->requests
  KVM: Reduce atomic operations on vcpu->requests

 arch/x86/kvm/i8259.c     |   18 ++++++------------
 arch/x86/kvm/irq.h       |    4 ----
 arch/x86/kvm/lapic.c     |    2 +-
 arch/x86/kvm/mmu.c       |    6 +++---
 arch/x86/kvm/svm.c       |    2 +-
 arch/x86/kvm/timer.c     |    2 +-
 arch/x86/kvm/vmx.c       |    2 +-
 arch/x86/kvm/x86.c       |   27 +++++++++++++--------------
 include/linux/kvm_host.h |   20 ++++++++++++++++++++
 virt/kvm/kvm_main.c      |    4 ++--
 10 files changed, 48 insertions(+), 39 deletions(-)


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/4] KVM: i8259: reduce excessive abstraction for pic_irq_request()
  2010-06-20 16:21 [PATCH 0/4] Preparation for PIC-APIC rewiring Avi Kivity
@ 2010-06-20 16:21 ` Avi Kivity
  2010-06-20 16:21 ` [PATCH 2/4] KVM: i8259: simplify pic_irq_request() calling sequence Avi Kivity
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Avi Kivity @ 2010-06-20 16:21 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: kvm

Part of the i8259 code pretends it isn't part of kvm, but we know better.
Reduce excessive abstraction, eliminating callbacks and void pointers.

Signed-off-by: Avi Kivity <avi@redhat.com>
---
 arch/x86/kvm/i8259.c |   17 +++++++----------
 arch/x86/kvm/irq.h   |    4 ----
 2 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/arch/x86/kvm/i8259.c b/arch/x86/kvm/i8259.c
index 2c73f44..caf6e1b 100644
--- a/arch/x86/kvm/i8259.c
+++ b/arch/x86/kvm/i8259.c
@@ -34,6 +34,8 @@
 #include <linux/kvm_host.h>
 #include "trace.h"
 
+static void pic_irq_request(struct kvm *kvm, int level);
+
 static void pic_lock(struct kvm_pic *s)
 	__acquires(&s->lock)
 {
@@ -175,9 +177,9 @@ static void pic_update_irq(struct kvm_pic *s)
 	}
 	irq = pic_get_irq(&s->pics[0]);
 	if (irq >= 0)
-		s->irq_request(s->irq_request_opaque, 1);
+		pic_irq_request(s->kvm, 1);
 	else
-		s->irq_request(s->irq_request_opaque, 0);
+		pic_irq_request(s->kvm, 0);
 }
 
 void kvm_pic_update_irq(struct kvm_pic *s)
@@ -262,8 +264,7 @@ int kvm_pic_read_irq(struct kvm *kvm)
 void kvm_pic_reset(struct kvm_kpic_state *s)
 {
 	int irq;
-	struct kvm *kvm = s->pics_state->irq_request_opaque;
-	struct kvm_vcpu *vcpu0 = kvm->bsp_vcpu;
+	struct kvm_vcpu *vcpu0 = s->pics_state->kvm->bsp_vcpu;
 	u8 irr = s->irr, isr = s->imr;
 
 	s->last_irr = 0;
@@ -302,8 +303,7 @@ static void pic_ioport_write(void *opaque, u32 addr, u32 val)
 			/*
 			 * deassert a pending interrupt
 			 */
-			s->pics_state->irq_request(s->pics_state->
-						   irq_request_opaque, 0);
+			pic_irq_request(s->pics_state->kvm, 0);
 			s->init_state = 1;
 			s->init4 = val & 1;
 			if (val & 0x02)
@@ -519,9 +519,8 @@ static int picdev_read(struct kvm_io_device *this,
 /*
  * callback when PIC0 irq status changed
  */
-static void pic_irq_request(void *opaque, int level)
+static void pic_irq_request(struct kvm *kvm, int level)
 {
-	struct kvm *kvm = opaque;
 	struct kvm_vcpu *vcpu = kvm->bsp_vcpu;
 	struct kvm_pic *s = pic_irqchip(kvm);
 	int irq = pic_get_irq(&s->pics[0]);
@@ -550,8 +549,6 @@ struct kvm_pic *kvm_create_pic(struct kvm *kvm)
 	s->kvm = kvm;
 	s->pics[0].elcr_mask = 0xf8;
 	s->pics[1].elcr_mask = 0xde;
-	s->irq_request = pic_irq_request;
-	s->irq_request_opaque = kvm;
 	s->pics[0].pics_state = s;
 	s->pics[1].pics_state = s;
 
diff --git a/arch/x86/kvm/irq.h b/arch/x86/kvm/irq.h
index cd1f362..ffed068 100644
--- a/arch/x86/kvm/irq.h
+++ b/arch/x86/kvm/irq.h
@@ -38,8 +38,6 @@
 struct kvm;
 struct kvm_vcpu;
 
-typedef void irq_request_func(void *opaque, int level);
-
 struct kvm_kpic_state {
 	u8 last_irr;	/* edge detection */
 	u8 irr;		/* interrupt request register */
@@ -67,8 +65,6 @@ struct kvm_pic {
 	unsigned pending_acks;
 	struct kvm *kvm;
 	struct kvm_kpic_state pics[2]; /* 0 is master pic, 1 is slave pic */
-	irq_request_func *irq_request;
-	void *irq_request_opaque;
 	int output;		/* intr from master PIC */
 	struct kvm_io_device dev;
 	void (*ack_notifier)(void *opaque, int irq);
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/4] KVM: i8259: simplify pic_irq_request() calling sequence
  2010-06-20 16:21 [PATCH 0/4] Preparation for PIC-APIC rewiring Avi Kivity
  2010-06-20 16:21 ` [PATCH 1/4] KVM: i8259: reduce excessive abstraction for pic_irq_request() Avi Kivity
@ 2010-06-20 16:21 ` Avi Kivity
  2010-06-20 16:21 ` [PATCH 3/4] KVM: Add mini-API for vcpu->requests Avi Kivity
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Avi Kivity @ 2010-06-20 16:21 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: kvm

Signed-off-by: Avi Kivity <avi@redhat.com>
---
 arch/x86/kvm/i8259.c |    5 +----
 1 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/arch/x86/kvm/i8259.c b/arch/x86/kvm/i8259.c
index caf6e1b..bc10f0b 100644
--- a/arch/x86/kvm/i8259.c
+++ b/arch/x86/kvm/i8259.c
@@ -176,10 +176,7 @@ static void pic_update_irq(struct kvm_pic *s)
 		pic_set_irq1(&s->pics[0], 2, 0);
 	}
 	irq = pic_get_irq(&s->pics[0]);
-	if (irq >= 0)
-		pic_irq_request(s->kvm, 1);
-	else
-		pic_irq_request(s->kvm, 0);
+	pic_irq_request(s->kvm, irq >= 0);
 }
 
 void kvm_pic_update_irq(struct kvm_pic *s)
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/4] KVM: Add mini-API for vcpu->requests
  2010-06-20 16:21 [PATCH 0/4] Preparation for PIC-APIC rewiring Avi Kivity
  2010-06-20 16:21 ` [PATCH 1/4] KVM: i8259: reduce excessive abstraction for pic_irq_request() Avi Kivity
  2010-06-20 16:21 ` [PATCH 2/4] KVM: i8259: simplify pic_irq_request() calling sequence Avi Kivity
@ 2010-06-20 16:21 ` Avi Kivity
  2010-06-20 16:21 ` [PATCH 4/4] KVM: Reduce atomic operations on vcpu->requests Avi Kivity
  2010-06-21 20:05 ` [PATCH 0/4] Preparation for PIC-APIC rewiring Marcelo Tosatti
  4 siblings, 0 replies; 7+ messages in thread
From: Avi Kivity @ 2010-06-20 16:21 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: kvm

Makes it a little more readable and hackable.

Signed-off-by: Avi Kivity <avi@redhat.com>
---
 arch/x86/kvm/lapic.c     |    2 +-
 arch/x86/kvm/mmu.c       |    6 +++---
 arch/x86/kvm/svm.c       |    2 +-
 arch/x86/kvm/timer.c     |    2 +-
 arch/x86/kvm/vmx.c       |    2 +-
 arch/x86/kvm/x86.c       |   27 +++++++++++++--------------
 include/linux/kvm_host.h |   15 +++++++++++++++
 virt/kvm/kvm_main.c      |    4 ++--
 8 files changed, 37 insertions(+), 23 deletions(-)

diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
index 49573c7..77d8c0f 100644
--- a/arch/x86/kvm/lapic.c
+++ b/arch/x86/kvm/lapic.c
@@ -534,7 +534,7 @@ static void __report_tpr_access(struct kvm_lapic *apic, bool write)
 	struct kvm_vcpu *vcpu = apic->vcpu;
 	struct kvm_run *run = vcpu->run;
 
-	set_bit(KVM_REQ_REPORT_TPR_ACCESS, &vcpu->requests);
+	kvm_make_request(KVM_REQ_REPORT_TPR_ACCESS, vcpu);
 	run->tpr_access.rip = kvm_rip_read(vcpu);
 	run->tpr_access.is_write = write;
 }
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 8668689..fa5189d 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -1386,7 +1386,7 @@ static struct kvm_mmu_page *kvm_mmu_get_page(struct kvm_vcpu *vcpu,
 
 		mmu_page_add_parent_pte(vcpu, sp, parent_pte);
 		if (sp->unsync_children) {
-			set_bit(KVM_REQ_MMU_SYNC, &vcpu->requests);
+			kvm_make_request(KVM_REQ_MMU_SYNC, vcpu);
 			kvm_mmu_mark_parents_unsync(sp);
 		} else if (sp->unsync)
 			kvm_mmu_mark_parents_unsync(sp);
@@ -2137,7 +2137,7 @@ static int mmu_check_root(struct kvm_vcpu *vcpu, gfn_t root_gfn)
 	int ret = 0;
 
 	if (!kvm_is_visible_gfn(vcpu->kvm, root_gfn)) {
-		set_bit(KVM_REQ_TRIPLE_FAULT, &vcpu->requests);
+		kvm_make_request(KVM_REQ_TRIPLE_FAULT, vcpu);
 		ret = 1;
 	}
 
@@ -2335,7 +2335,7 @@ static int nonpaging_init_context(struct kvm_vcpu *vcpu)
 void kvm_mmu_flush_tlb(struct kvm_vcpu *vcpu)
 {
 	++vcpu->stat.tlb_flush;
-	set_bit(KVM_REQ_TLB_FLUSH, &vcpu->requests);
+	kvm_make_request(KVM_REQ_TLB_FLUSH, vcpu);
 }
 
 static void paging_new_cr3(struct kvm_vcpu *vcpu)
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index f7a6fdc..587b99d 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -1494,7 +1494,7 @@ static void svm_handle_mce(struct vcpu_svm *svm)
 		 */
 		pr_err("KVM: Guest triggered AMD Erratum 383\n");
 
-		set_bit(KVM_REQ_TRIPLE_FAULT, &svm->vcpu.requests);
+		kvm_make_request(KVM_REQ_TRIPLE_FAULT, &svm->vcpu);
 
 		return;
 	}
diff --git a/arch/x86/kvm/timer.c b/arch/x86/kvm/timer.c
index 564548f..e16a0db 100644
--- a/arch/x86/kvm/timer.c
+++ b/arch/x86/kvm/timer.c
@@ -32,7 +32,7 @@ static int __kvm_timer_fn(struct kvm_vcpu *vcpu, struct kvm_timer *ktimer)
 	if (ktimer->reinject || !atomic_read(&ktimer->pending)) {
 		atomic_inc(&ktimer->pending);
 		/* FIXME: this code should not know anything about vcpus */
-		set_bit(KVM_REQ_PENDING_TIMER, &vcpu->requests);
+		kvm_make_request(KVM_REQ_PENDING_TIMER, vcpu);
 	}
 
 	if (waitqueue_active(q))
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 6c81f0e..e565689 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -899,7 +899,7 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
 		unsigned long sysenter_esp;
 
 		kvm_migrate_timers(vcpu);
-		set_bit(KVM_REQ_TLB_FLUSH, &vcpu->requests);
+		kvm_make_request(KVM_REQ_TLB_FLUSH, vcpu);
 		local_irq_disable();
 		list_add(&vmx->local_vcpus_link,
 			 &per_cpu(vcpus_on_cpu, cpu));
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 33156a3..b785ef4 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -296,7 +296,7 @@ static void kvm_multiple_exception(struct kvm_vcpu *vcpu,
 	prev_nr = vcpu->arch.exception.nr;
 	if (prev_nr == DF_VECTOR) {
 		/* triple fault -> shutdown */
-		set_bit(KVM_REQ_TRIPLE_FAULT, &vcpu->requests);
+		kvm_make_request(KVM_REQ_TRIPLE_FAULT, vcpu);
 		return;
 	}
 	class1 = exception_class(prev_nr);
@@ -948,7 +948,7 @@ static int kvm_request_guest_time_update(struct kvm_vcpu *v)
 
 	if (!vcpu->time_page)
 		return 0;
-	set_bit(KVM_REQ_KVMCLOCK_UPDATE, &v->requests);
+	kvm_make_request(KVM_REQ_KVMCLOCK_UPDATE, v);
 	return 1;
 }
 
@@ -2253,7 +2253,7 @@ static int kvm_vcpu_ioctl_x86_set_mce(struct kvm_vcpu *vcpu,
 			printk(KERN_DEBUG "kvm: set_mce: "
 			       "injects mce exception while "
 			       "previous one is in progress!\n");
-			set_bit(KVM_REQ_TRIPLE_FAULT, &vcpu->requests);
+			kvm_make_request(KVM_REQ_TRIPLE_FAULT, vcpu);
 			return 0;
 		}
 		if (banks[1] & MCI_STATUS_VAL)
@@ -4751,7 +4751,7 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
 		vcpu->run->request_interrupt_window;
 
 	if (vcpu->requests)
-		if (test_and_clear_bit(KVM_REQ_MMU_RELOAD, &vcpu->requests))
+		if (kvm_check_request(KVM_REQ_MMU_RELOAD, vcpu))
 			kvm_mmu_unload(vcpu);
 
 	r = kvm_mmu_reload(vcpu);
@@ -4759,26 +4759,25 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
 		goto out;
 
 	if (vcpu->requests) {
-		if (test_and_clear_bit(KVM_REQ_MIGRATE_TIMER, &vcpu->requests))
+		if (kvm_check_request(KVM_REQ_MIGRATE_TIMER, vcpu))
 			__kvm_migrate_timers(vcpu);
-		if (test_and_clear_bit(KVM_REQ_KVMCLOCK_UPDATE, &vcpu->requests))
+		if (kvm_check_request(KVM_REQ_KVMCLOCK_UPDATE, vcpu))
 			kvm_write_guest_time(vcpu);
-		if (test_and_clear_bit(KVM_REQ_MMU_SYNC, &vcpu->requests))
+		if (kvm_check_request(KVM_REQ_MMU_SYNC, vcpu))
 			kvm_mmu_sync_roots(vcpu);
-		if (test_and_clear_bit(KVM_REQ_TLB_FLUSH, &vcpu->requests))
+		if (kvm_check_request(KVM_REQ_TLB_FLUSH, vcpu))
 			kvm_x86_ops->tlb_flush(vcpu);
-		if (test_and_clear_bit(KVM_REQ_REPORT_TPR_ACCESS,
-				       &vcpu->requests)) {
+		if (kvm_check_request(KVM_REQ_REPORT_TPR_ACCESS, vcpu)) {
 			vcpu->run->exit_reason = KVM_EXIT_TPR_ACCESS;
 			r = 0;
 			goto out;
 		}
-		if (test_and_clear_bit(KVM_REQ_TRIPLE_FAULT, &vcpu->requests)) {
+		if (kvm_check_request(KVM_REQ_TRIPLE_FAULT, vcpu)) {
 			vcpu->run->exit_reason = KVM_EXIT_SHUTDOWN;
 			r = 0;
 			goto out;
 		}
-		if (test_and_clear_bit(KVM_REQ_DEACTIVATE_FPU, &vcpu->requests)) {
+		if (kvm_check_request(KVM_REQ_DEACTIVATE_FPU, vcpu)) {
 			vcpu->fpu_active = 0;
 			kvm_x86_ops->fpu_deactivate(vcpu);
 		}
@@ -4907,7 +4906,7 @@ static int __vcpu_run(struct kvm_vcpu *vcpu)
 			srcu_read_unlock(&kvm->srcu, vcpu->srcu_idx);
 			kvm_vcpu_block(vcpu);
 			vcpu->srcu_idx = srcu_read_lock(&kvm->srcu);
-			if (test_and_clear_bit(KVM_REQ_UNHALT, &vcpu->requests))
+			if (kvm_check_request(KVM_REQ_UNHALT, vcpu))
 			{
 				switch(vcpu->arch.mp_state) {
 				case KVM_MP_STATE_HALTED:
@@ -5389,7 +5388,7 @@ void kvm_put_guest_fpu(struct kvm_vcpu *vcpu)
 	vcpu->guest_fpu_loaded = 0;
 	fpu_save_init(&vcpu->arch.guest_fpu);
 	++vcpu->stat.fpu_reload;
-	set_bit(KVM_REQ_DEACTIVATE_FPU, &vcpu->requests);
+	kvm_make_request(KVM_REQ_DEACTIVATE_FPU, vcpu);
 	trace_kvm_fpu(0);
 }
 
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index 2d96555..e706c1e 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -630,5 +630,20 @@ static inline long kvm_vm_ioctl_assigned_device(struct kvm *kvm, unsigned ioctl,
 
 #endif
 
+static inline void kvm_make_request(int req, struct kvm_vcpu *vcpu)
+{
+	set_bit(req, &vcpu->requests);
+}
+
+static inline bool kvm_make_check_request(int req, struct kvm_vcpu *vcpu)
+{
+	return test_and_set_bit(req, &vcpu->requests);
+}
+
+static inline bool kvm_check_request(int req, struct kvm_vcpu *vcpu)
+{
+	return test_and_clear_bit(req, &vcpu->requests);
+}
+
 #endif
 
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 84a0906..b89526c 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -145,7 +145,7 @@ static bool make_all_cpus_request(struct kvm *kvm, unsigned int req)
 	raw_spin_lock(&kvm->requests_lock);
 	me = smp_processor_id();
 	kvm_for_each_vcpu(i, vcpu, kvm) {
-		if (test_and_set_bit(req, &vcpu->requests))
+		if (kvm_make_check_request(req, vcpu))
 			continue;
 		cpu = vcpu->cpu;
 		if (cpus != NULL && cpu != -1 && cpu != me)
@@ -1222,7 +1222,7 @@ void kvm_vcpu_block(struct kvm_vcpu *vcpu)
 		prepare_to_wait(&vcpu->wq, &wait, TASK_INTERRUPTIBLE);
 
 		if (kvm_arch_vcpu_runnable(vcpu)) {
-			set_bit(KVM_REQ_UNHALT, &vcpu->requests);
+			kvm_make_request(KVM_REQ_UNHALT, vcpu);
 			break;
 		}
 		if (kvm_cpu_has_pending_timer(vcpu))
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/4] KVM: Reduce atomic operations on vcpu->requests
  2010-06-20 16:21 [PATCH 0/4] Preparation for PIC-APIC rewiring Avi Kivity
                   ` (2 preceding siblings ...)
  2010-06-20 16:21 ` [PATCH 3/4] KVM: Add mini-API for vcpu->requests Avi Kivity
@ 2010-06-20 16:21 ` Avi Kivity
  2010-06-21 20:05 ` [PATCH 0/4] Preparation for PIC-APIC rewiring Marcelo Tosatti
  4 siblings, 0 replies; 7+ messages in thread
From: Avi Kivity @ 2010-06-20 16:21 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: kvm

Usually the vcpu->requests bitmap is sparse, so a test_and_clear_bit() for
each request generates a large number of unneeded atomics if a bit is set.

Replace with a separate test/clear sequence.  This is safe since there is
no clear_bit() outside the vcpu thread.

Signed-off-by: Avi Kivity <avi@redhat.com>
---
 include/linux/kvm_host.h |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index e706c1e..e478f3f 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -642,7 +642,12 @@ static inline bool kvm_make_check_request(int req, struct kvm_vcpu *vcpu)
 
 static inline bool kvm_check_request(int req, struct kvm_vcpu *vcpu)
 {
-	return test_and_clear_bit(req, &vcpu->requests);
+	if (test_bit(req, &vcpu->requests)) {
+		clear_bit(req, &vcpu->requests);
+		return true;
+	} else {
+		return false;
+	}
 }
 
 #endif
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/4] Preparation for PIC-APIC rewiring
  2010-06-20 16:21 [PATCH 0/4] Preparation for PIC-APIC rewiring Avi Kivity
                   ` (3 preceding siblings ...)
  2010-06-20 16:21 ` [PATCH 4/4] KVM: Reduce atomic operations on vcpu->requests Avi Kivity
@ 2010-06-21 20:05 ` Marcelo Tosatti
  2010-06-22  5:51   ` Gleb Natapov
  4 siblings, 1 reply; 7+ messages in thread
From: Marcelo Tosatti @ 2010-06-21 20:05 UTC (permalink / raw)
  To: Avi Kivity; +Cc: kvm


Looks good.

On Sun, Jun 20, 2010 at 07:21:54PM +0300, Avi Kivity wrote:
> These four patches were part of an optimization patchset I've been neglecting,
> but are equally useful as preparation for fixing the PIC-APIC wiring issues.
> 
> Avi Kivity (4):
>   KVM: i8259: reduce excessive abstraction for pic_irq_request()
>   KVM: i8259: simplify pic_irq_request() calling sequence
>   KVM: Add mini-API for vcpu->requests
>   KVM: Reduce atomic operations on vcpu->requests
> 
>  arch/x86/kvm/i8259.c     |   18 ++++++------------
>  arch/x86/kvm/irq.h       |    4 ----
>  arch/x86/kvm/lapic.c     |    2 +-
>  arch/x86/kvm/mmu.c       |    6 +++---
>  arch/x86/kvm/svm.c       |    2 +-
>  arch/x86/kvm/timer.c     |    2 +-
>  arch/x86/kvm/vmx.c       |    2 +-
>  arch/x86/kvm/x86.c       |   27 +++++++++++++--------------
>  include/linux/kvm_host.h |   20 ++++++++++++++++++++
>  virt/kvm/kvm_main.c      |    4 ++--
>  10 files changed, 48 insertions(+), 39 deletions(-)

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/4] Preparation for PIC-APIC rewiring
  2010-06-21 20:05 ` [PATCH 0/4] Preparation for PIC-APIC rewiring Marcelo Tosatti
@ 2010-06-22  5:51   ` Gleb Natapov
  0 siblings, 0 replies; 7+ messages in thread
From: Gleb Natapov @ 2010-06-22  5:51 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: Avi Kivity, kvm

On Mon, Jun 21, 2010 at 05:05:27PM -0300, Marcelo Tosatti wrote:
> 
> Looks good.
> 
Looks good here too.

> On Sun, Jun 20, 2010 at 07:21:54PM +0300, Avi Kivity wrote:
> > These four patches were part of an optimization patchset I've been neglecting,
> > but are equally useful as preparation for fixing the PIC-APIC wiring issues.
> > 
> > Avi Kivity (4):
> >   KVM: i8259: reduce excessive abstraction for pic_irq_request()
> >   KVM: i8259: simplify pic_irq_request() calling sequence
> >   KVM: Add mini-API for vcpu->requests
> >   KVM: Reduce atomic operations on vcpu->requests
> > 
> >  arch/x86/kvm/i8259.c     |   18 ++++++------------
> >  arch/x86/kvm/irq.h       |    4 ----
> >  arch/x86/kvm/lapic.c     |    2 +-
> >  arch/x86/kvm/mmu.c       |    6 +++---
> >  arch/x86/kvm/svm.c       |    2 +-
> >  arch/x86/kvm/timer.c     |    2 +-
> >  arch/x86/kvm/vmx.c       |    2 +-
> >  arch/x86/kvm/x86.c       |   27 +++++++++++++--------------
> >  include/linux/kvm_host.h |   20 ++++++++++++++++++++
> >  virt/kvm/kvm_main.c      |    4 ++--
> >  10 files changed, 48 insertions(+), 39 deletions(-)
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
			Gleb.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-06-22  5:51 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-06-20 16:21 [PATCH 0/4] Preparation for PIC-APIC rewiring Avi Kivity
2010-06-20 16:21 ` [PATCH 1/4] KVM: i8259: reduce excessive abstraction for pic_irq_request() Avi Kivity
2010-06-20 16:21 ` [PATCH 2/4] KVM: i8259: simplify pic_irq_request() calling sequence Avi Kivity
2010-06-20 16:21 ` [PATCH 3/4] KVM: Add mini-API for vcpu->requests Avi Kivity
2010-06-20 16:21 ` [PATCH 4/4] KVM: Reduce atomic operations on vcpu->requests Avi Kivity
2010-06-21 20:05 ` [PATCH 0/4] Preparation for PIC-APIC rewiring Marcelo Tosatti
2010-06-22  5:51   ` Gleb Natapov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox