|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |