From: Jack Lange Date: Sun, 18 Mar 2012 21:43:49 +0000 (-0400) Subject: apic fix X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=commitdiff_plain;h=68a5f03fab0737ce304261028a4517c49ea954c6;hp=b8152adfb5d52ea2f3578b6eb38c32cc51b7269e;p=palacios.git apic fix --- diff --git a/palacios/src/devices/apic.c b/palacios/src/devices/apic.c index 3586794..4823cb6 100644 --- a/palacios/src/devices/apic.c +++ b/palacios/src/devices/apic.c @@ -239,7 +239,7 @@ struct apic_state { uint8_t trig_mode_reg[32]; struct { - int (*ack)(struct guest_info * core, uint8_t irq, void * private_data); + int (*ack)(struct guest_info * core, uint32_t irq, void * private_data); void * private_data; } irq_ack_cbs[256]; @@ -424,6 +424,7 @@ static int activate_apic_irq(struct apic_state * apic, uint32_t irq_num, *req_location |= flag; apic->irq_ack_cbs[irq_num].ack = ack; apic->irq_ack_cbs[irq_num].private_data = private_data; + return 1; } else { PrintDebug("apic %u: core %d: Interrupt not enabled... %.2x\n", @@ -764,13 +765,10 @@ static int deliver_ipi(struct apic_state * src_apic, add_apic_irq_entry(dst_apic, ipi->vector, ipi->ack, ipi->private_data); -#ifdef V3_CONFIG_MULTITHREAD_OS if (dst_apic != src_apic) { PrintDebug(" non-local core with new interrupt, forcing it to exit now\n"); v3_interrupt_cpu(dst_core->vm_info, dst_core->pcpu_id, 0); } -#endif - break; }