]> xenbits.xensource.com Git - people/pauldu/xenbus.git/commitdiff
Don't veto event channel binding if it's not necessary
authorPaul Durrant <pdurrant@amazon.com>
Wed, 25 Nov 2020 18:07:01 +0000 (18:07 +0000)
committerPaul Durrant <pdurrant@amazon.com>
Thu, 26 Nov 2020 13:02:47 +0000 (13:02 +0000)
Currently binding is vetoed if 'UpcallEnabled' is not set, but this is not
necessary if the selected processor is 0, as the callback via will also
interrupt that CPU.

Signed-off-by: Paul Durrant <pdurrant@amazon.com>
src/xenbus/evtchn.c

index 4a764c071433bb6b68dbcd54c548842a7e937788..46227725e23772f14c569ae1a0db6421050d48d1 100644 (file)
@@ -276,7 +276,7 @@ EvtchnOpenVirq(
     Processor = &Context->Processor[Cpu];
 
     status = STATUS_NOT_SUPPORTED;
-    if (!Processor->UpcallEnabled)
+    if (!Processor->UpcallEnabled && Cpu != 0)
         goto fail1;
 
     status = SystemVirtualCpuIndex(Cpu, &vcpu_id);
@@ -749,7 +749,7 @@ EvtchnBind(
     Processor = &Context->Processor[Cpu];
 
     status = STATUS_NOT_SUPPORTED;
-    if (!Processor->UpcallEnabled)
+    if (!Processor->UpcallEnabled && Cpu != 0)
         goto fail1;
 
     KeAcquireSpinLock(&Channel->Lock, &Irql);