From: Peter Dinda Date: Wed, 6 Oct 2010 00:46:38 +0000 (-0500) Subject: Implemented all and all-but-me shorthand delivery for IPIs X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=commitdiff_plain;h=d7d072c27d0f94634ffc247704b7f4314d1ae66f;p=palacios-OLD.git Implemented all and all-but-me shorthand delivery for IPIs where the logical destination mode is specified --- diff --git a/palacios/src/devices/icc_bus.c b/palacios/src/devices/icc_bus.c index cfe3c05..0a74eee 100644 --- a/palacios/src/devices/icc_bus.c +++ b/palacios/src/devices/icc_bus.c @@ -352,26 +352,20 @@ int v3_icc_send_ipi(struct vm_device * icc_bus, uint32_t src_apic, uint64_t icr_ case 2: case 3: { // all and all-but-me - if (icr->dst_mode==0) { - // physical - int i; - for (i=0;iapics[i]); - if (dest_apic->present && (i!=src_apic || icr->dst_shorthand==2)) { - if (deliver(src_apic,dest_apic,icr,state,extirq)) { - return -1; - } - + // assuming that logical verus physical doesn't matter + // although it is odd that both are used + int i; + for (i=0;iapics[i]); + if (dest_apic->present && (i!=src_apic || icr->dst_shorthand==2)) { + if (deliver(src_apic,dest_apic,icr,state,extirq)) { + return -1; } } - } else { - // logical delivery - PrintError("icc_bus: use of logical delivery in %s is not yet supported\n", - icr->dst_shorthand==2 ? "all" : "all-but-me" ); - return -1; } - break; } + break; + default: return -1; }