X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fdevices%2Ficc_bus.c;h=0a74eee17f37666cdc54ef5855f3a6ddc10b918f;hb=d1f4efdef22f2f1ca60bebbc962058f3ec93d484;hp=9b42e8130742ce24d38dc35e67a4fd21100f7b12;hpb=381d76bf7d07e428b66672b766e93837dca67d3a;p=palacios.git diff --git a/palacios/src/devices/icc_bus.c b/palacios/src/devices/icc_bus.c index 9b42e81..0a74eee 100644 --- a/palacios/src/devices/icc_bus.c +++ b/palacios/src/devices/icc_bus.c @@ -351,31 +351,25 @@ 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; - } - + case 3: { // all and all-but-me + // 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; } + return 0; }