[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[win-pv-devel] [PATCH 10/10] Only call EVTCHN:Open for rx and tx or single event channel, based on "feature-split-event-channels"



Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
---
 src/xenvif/notifier.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/src/xenvif/notifier.c b/src/xenvif/notifier.c
index 93f2395..e9972d2 100644
--- a/src/xenvif/notifier.c
+++ b/src/xenvif/notifier.c
@@ -295,6 +295,27 @@ NotifierQueueConnect(
         PKSERVICE_ROUTINE   Callback = NotifierQueueEvtchnCallback[Index];
         BOOLEAN             Pending;
 
+        switch (Index) {
+        case XENVIF_NOTIFIER_EVTCHN_COMBINED:
+            if (Notifier->Split)
+                continue;
+            break;
+
+        case XENVIF_NOTIFIER_EVTCHN_RX:
+            if (!Notifier->Split)
+                continue;
+            break;
+
+        case XENVIF_NOTIFIER_EVTCHN_TX:
+            if (!Notifier->Split)
+                continue;
+            break;
+
+        default:
+            ASSERT(FALSE);
+            break;
+        }
+
         if (FrontendGetQueueCount(Frontend) > 1) {
             KeSetTargetProcessorDpc(&Queue->Dpc[Index],
                                     (CCHAR)Queue->Index);
@@ -328,6 +349,9 @@ fail1:
     Error("fail1 (%08x)\n", status);
 
     while (--Index >= 0) {
+        if (Queue->Channel[Index] == NULL)
+            continue;
+
         XENBUS_EVTCHN(Close,
                       &Notifier->EvtchnInterface,
                       Queue->Channel[Index]);
@@ -384,6 +408,7 @@ NotifierQueueStoreWrite(
             break;
         }
 
+        ASSERT(Queue->Channel[Index] != NULL);
         Port = XENBUS_EVTCHN(GetPort,
                              &Notifier->EvtchnInterface,
                              Queue->Channel[Index]);
-- 
1.9.4.msysgit.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.