X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fdevices%2Fio_apic.c;h=c725e86a7433d28084a1c49aac4e763e0903de9b;hb=f40945e5a406b48b7b5ee678a3d8d8f0b56f7d74;hp=506b7af745074fe40eb13d973f68c1e872e7bf06;hpb=b6e528a6dba181bfbf151ec72ebfad03971fa297;p=palacios.git diff --git a/palacios/src/devices/io_apic.c b/palacios/src/devices/io_apic.c index 506b7af..c725e86 100644 --- a/palacios/src/devices/io_apic.c +++ b/palacios/src/devices/io_apic.c @@ -274,20 +274,21 @@ static int ioapic_raise_irq(struct v3_vm_info * vm, void * private_data, int irq irq_entry = &(ioapic->redir_tbl[irq]); if (irq_entry->mask == 0) { + struct v3_gen_ipi ipi; PrintDebug("ioapic %u: IOAPIC Signalling APIC to raise INTR %d\n", ioapic->ioapic_id.id, irq_entry->vec); - - // May need these for future reference - // icr.val = irq_entry->val; - // icr.trig_mode = irq_entry->trig_mode; - PrintDebug("io apic: raising irq %u\n", irq); + ipi.vector = irq_entry->vec; + ipi.mode = irq_entry->del_mode; + ipi.logical = irq_entry->dst_mode; + ipi.trigger_mode = irq_entry->trig_mode; + ipi->dst = irq_entry->dst_field; + ipi->dst_shorthand = 0; // Need to add destination argument here... - v3_apic_raise_intr(vm, ioapic->apic_dev, irq, irq_entry->vec); - + v3_apic_send_ipi(vm, ioapic->apic_dev, &ipi); } return 0;