[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [HVM] Ensure that, if AP is blocked, it is woken by interrupt delivered by IOAPIC.
# HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxxx # Node ID ee140fbcb88df2e55259b0c6519de7645641468a # Parent a1939d76c0e8e27bdac5233df7bd78c004ea8deb [HVM] Ensure that, if AP is blocked, it is woken by interrupt delivered by IOAPIC. This fixes 64-bit SMP Windows 2k3 boot. Signed-off-by: Xiaowei Yang <xiaowei.yang@xxxxxxxxx> Signed-off-by: Xin Li <xin.b.li@xxxxxxxxx> --- xen/arch/x86/hvm/vioapic.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff -r a1939d76c0e8 -r ee140fbcb88d xen/arch/x86/hvm/vioapic.c --- a/xen/arch/x86/hvm/vioapic.c Fri Oct 27 18:00:03 2006 +0100 +++ b/xen/arch/x86/hvm/vioapic.c Fri Oct 27 18:02:40 2006 +0100 @@ -39,6 +39,7 @@ #include <asm/hvm/vpic.h> #include <asm/hvm/support.h> #include <asm/current.h> +#include <asm/event.h> /* HACK: Route IRQ0 only to VCPU0 to prevent time jumps. */ #define IRQ0_SPECIAL_ROUTING 1 @@ -455,9 +456,10 @@ static void ioapic_deliver(hvm_vioapic_t #endif target = apic_round_robin(s->domain, dest_mode, vector, deliver_bitmask); - if (target) + if (target) { ioapic_inj_irq(s, target, vector, trig_mode, delivery_mode); - else + vcpu_kick(target->vcpu); + } else HVM_DBG_LOG(DBG_LEVEL_IOAPIC, "null round robin mask %x vector %x delivery_mode %x\n", deliver_bitmask, vector, dest_LowestPrio); @@ -478,8 +480,10 @@ static void ioapic_deliver(hvm_vioapic_t else #endif target = s->lapic_info[bit]; - if (target) + if (target) { ioapic_inj_irq(s, target, vector, trig_mode, delivery_mode); + vcpu_kick(target->vcpu); + } } break; } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |