Re: [PATCH] KVM: IA64: enable external interrupt in vmm

2009-03-26 Thread Avi Kivity

Zhang, Yang wrote:

From 2cf75eff171ef823b3b17c945504d0233a6bd427 Mon Sep 17 00:00:00 2001
From: Yang Zhang yang.zh...@intel.com
Date: Mon, 23 Mar 2009 03:31:04 -0400
Subject: [PATCH] KVM: IA64: enable external interrupt in vmm

In the previous version, the interrupt bit is cleared when in
the vmm. This patch opens the bit and the externanl interrupt can
be deal with when in the vmm. It will improve the I/O performance.
  


Applied, thanks.

--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] KVM: IA64: enable external interrupt in vmm

2009-03-25 Thread Zhang, Yang
From 2cf75eff171ef823b3b17c945504d0233a6bd427 Mon Sep 17 00:00:00 2001
From: Yang Zhang yang.zh...@intel.com
Date: Mon, 23 Mar 2009 03:31:04 -0400
Subject: [PATCH] KVM: IA64: enable external interrupt in vmm

In the previous version, the interrupt bit is cleared when in
the vmm. This patch opens the bit and the externanl interrupt can
be deal with when in the vmm. It will improve the I/O performance.

Signed-off-by: Yang Zhang yang.zh...@intel.com
---
 arch/ia64/kvm/process.c |5 +
 arch/ia64/kvm/vmm_ivt.S |   18 +-
 arch/ia64/kvm/vtlb.c|3 +++
 3 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/arch/ia64/kvm/process.c b/arch/ia64/kvm/process.c
index b1dc809..a8f84da 100644
--- a/arch/ia64/kvm/process.c
+++ b/arch/ia64/kvm/process.c
@@ -652,20 +652,25 @@ void  kvm_ia64_handle_break(unsigned long ifa, struct 
kvm_pt_regs *regs,
unsigned long isr, unsigned long iim)
 {
struct kvm_vcpu *v = current_vcpu;
+   long psr;
 
if (ia64_psr(regs)-cpl == 0) {
/* Allow hypercalls only when cpl = 0.  */
if (iim == DOMN_PAL_REQUEST) {
+   local_irq_save(psr);
set_pal_call_data(v);
vmm_transition(v);
get_pal_call_result(v);
vcpu_increment_iip(v);
+   local_irq_restore(psr);
return;
} else if (iim == DOMN_SAL_REQUEST) {
+   local_irq_save(psr);
set_sal_call_data(v);
vmm_transition(v);
get_sal_call_result(v);
vcpu_increment_iip(v);
+   local_irq_restore(psr);
return;
}
}
diff --git a/arch/ia64/kvm/vmm_ivt.S b/arch/ia64/kvm/vmm_ivt.S
index 3ef1a01..40920c6 100644
--- a/arch/ia64/kvm/vmm_ivt.S
+++ b/arch/ia64/kvm/vmm_ivt.S
@@ -95,7 +95,7 @@ GLOBAL_ENTRY(kvm_vmm_panic)
;;
srlz.i// guarantee that interruption collection is on
;;
-   //(p15) ssm psr.i   // restore psr.i
+   (p15) ssm psr.i   // restore psr.
addl r...@gprel(ia64_leave_hypervisor),gp
;;
KVM_SAVE_REST
@@ -249,7 +249,7 @@ ENTRY(kvm_break_fault)
;;
srlz.i // guarantee that interruption collection is on
;;
-   //(p15)ssm psr.i   // restore psr.i
+   (p15)ssm psr.i   // restore psr.i
addl r...@gprel(ia64_leave_hypervisor),gp
;;
KVM_SAVE_REST
@@ -439,7 +439,7 @@ kvm_dispatch_vexirq:
;;
srlz.i // guarantee that interruption collection is on
;;
-   //(p15) ssm psr.i   // restore psr.i
+   (p15) ssm psr.i   // restore psr.i
adds r3=8,r2// set up second base pointer
;;
KVM_SAVE_REST
@@ -819,7 +819,7 @@ ENTRY(kvm_dtlb_miss_dispatch)
;;
srlz.i // guarantee that interruption collection is on
;;
-   //(p15) ssm psr.i   // restore psr.i
+   (p15) ssm psr.i   // restore psr.i
addl r...@gprel(ia64_leave_hypervisor_prepare),gp
;;
KVM_SAVE_REST
@@ -842,7 +842,7 @@ ENTRY(kvm_itlb_miss_dispatch)
;;
srlz.i   // guarantee that interruption collection is on
;;
-   //(p15) ssm psr.i   // restore psr.i
+   (p15) ssm psr.i   // restore psr.i
addl r...@gprel(ia64_leave_hypervisor),gp
;;
KVM_SAVE_REST
@@ -871,7 +871,7 @@ ENTRY(kvm_dispatch_reflection)
;;
srlz.i   // guarantee that interruption collection is on
;;
-   //(p15) ssm psr.i   // restore psr.i
+   (p15) ssm psr.i   // restore psr.i
addl r...@gprel(ia64_leave_hypervisor),gp
;;
KVM_SAVE_REST
@@ -898,7 +898,7 @@ ENTRY(kvm_dispatch_virtualization_fault)
;;
srlz.i// guarantee that interruption collection is on
;;
-   //(p15) ssm psr.i   // restore psr.i
+   (p15) ssm psr.i   // restore psr.i
addl r...@gprel(ia64_leave_hypervisor_prepare),gp
;;
KVM_SAVE_REST
@@ -920,7 +920,7 @@ ENTRY(kvm_dispatch_interrupt)
;;
srlz.i
;;
-   //(p15) ssm psr.i
+   (p15) ssm psr.i
addl r...@gprel(ia64_leave_hypervisor),gp
;;
KVM_SAVE_REST
@@ -1333,7 +1333,7 @@ hostret =   r24
;;
 (p7)srlz.i
;;
-//(p6)ssm psr.i
+(p6)ssm psr.i
;;
mov rp=rpsave
mov ar.pfs=pfssave
diff --git a/arch/ia64/kvm/vtlb.c b/arch/ia64/kvm/vtlb.c
index 38232b3..d46e267 100644
--- a/arch/ia64/kvm/vtlb.c
+++ b/arch/ia64/kvm/vtlb.c
@@ -253,7 +253,8 @@ u64 guest_vhpt_lookup(u64 iha, u64 *pte)
(p7) st8 [%2]=r9