[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [IA64] All vcpus can sync interrupts from qemu



# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID 1612675ca4cf11a0c64c78058886e7bf5cd926f8
# Parent  65042393b3e9b74cdb9cc9b5acd05173c192e350
[IA64] All vcpus can sync interrupts from qemu

Previously only vcpu0 can sync interrupt from qemu.
Now all vcpus can sync.

Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx>
---
 xen/arch/ia64/vmx/vmx_init.c    |    3 +++
 xen/arch/ia64/vmx/vmx_support.c |    4 +++-
 xen/include/asm-ia64/domain.h   |    2 ++
 xen/include/asm-ia64/vmx_vpd.h  |    6 ++++++
 4 files changed, 14 insertions(+), 1 deletion(-)

diff -r 65042393b3e9 -r 1612675ca4cf xen/arch/ia64/vmx/vmx_init.c
--- a/xen/arch/ia64/vmx/vmx_init.c      Thu Aug 24 11:48:35 2006 -0600
+++ b/xen/arch/ia64/vmx/vmx_init.c      Thu Aug 24 11:52:23 2006 -0600
@@ -445,6 +445,9 @@ void vmx_setup_platform(struct domain *d
        memset(&d->shared_info->evtchn_mask[0], 0xff,
            sizeof(d->shared_info->evtchn_mask));
 
+       /* initiate spinlock for pass virq */
+       spin_lock_init(&d->arch.arch_vmx.virq_assist_lock);
+
        /* Initialize the virtual interrupt lines */
        vmx_virq_line_init(d);
 
diff -r 65042393b3e9 -r 1612675ca4cf xen/arch/ia64/vmx/vmx_support.c
--- a/xen/arch/ia64/vmx/vmx_support.c   Thu Aug 24 11:48:35 2006 -0600
+++ b/xen/arch/ia64/vmx/vmx_support.c   Thu Aug 24 11:52:23 2006 -0600
@@ -73,8 +73,10 @@ void vmx_intr_assist(struct vcpu *v)
 {
 #ifdef V_IOSAPIC_READY
     /* Confirm virtual interrupt line signals, and set pending bits in vpd */
-    if(v->vcpu_id==0)
+    if (spin_trylock(&v->domain->arch.arch_vmx.virq_assist_lock)) {
         vmx_virq_line_assist(v);
+        spin_unlock(&v->domain->arch.arch_vmx.virq_assist_lock);
+    }
 #endif
     return;
 }
diff -r 65042393b3e9 -r 1612675ca4cf xen/include/asm-ia64/domain.h
--- a/xen/include/asm-ia64/domain.h     Thu Aug 24 11:48:35 2006 -0600
+++ b/xen/include/asm-ia64/domain.h     Thu Aug 24 11:52:23 2006 -0600
@@ -137,6 +137,8 @@ struct arch_domain {
     atomic64_t shadow_fault_count;
 
     struct last_vcpu last_vcpu[NR_CPUS];
+
+    struct arch_vmx_domain arch_vmx; /* Virtual Machine Extensions */
 };
 #define INT_ENABLE_OFFSET(v)             \
     (sizeof(vcpu_info_t) * (v)->vcpu_id + \
diff -r 65042393b3e9 -r 1612675ca4cf xen/include/asm-ia64/vmx_vpd.h
--- a/xen/include/asm-ia64/vmx_vpd.h    Thu Aug 24 11:48:35 2006 -0600
+++ b/xen/include/asm-ia64/vmx_vpd.h    Thu Aug 24 11:52:23 2006 -0600
@@ -27,6 +27,7 @@
 #include <asm/vtm.h>
 #include <asm/vmx_platform.h>
 #include <public/xen.h>
+#include <xen/spinlock.h>
 
 #define VPD_SHIFT      17      /* 128K requirement */
 #define VPD_SIZE       (1 << VPD_SHIFT)
@@ -72,6 +73,11 @@ struct ivt_debug{
 };
 #define IVT_DEBUG_MAX 128
 #endif
+
+struct arch_vmx_domain {
+    spinlock_t virq_assist_lock; /* spinlock for pass virq */
+};
+
 struct arch_vmx_struct {
 //     vpd_t       *vpd;
     vtime_t        vtm;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.