[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |