[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 |