Mailing List Archive

[xen-unstable] [IA64] All vcpus can sync interrupts from qemu
# HG changeset patch
# User awilliam@xenbuild.aw
# 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@intel.com>
---
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@lists.xensource.com
http://lists.xensource.com/xen-changelog