[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH] poller: fix event channels when backends do not support multi-queue
The event channels for rx & tx are written to a multi-queue formatted path even when multiple queues are not supported. This results in a hung VM with the following logs: XENBUS|EvtchnWait: TIMED OUT: Count = 00000001 Channel->Count = 00000000 ... This can be reproduced by having a Linux VM network backend with 1 vCPU. If FrontendGetNumQueues() is 1 and multiple queues are not supported, the following paths are used for the poller event channel: device/vif/1/queue-0/event-channel-[rx|tx] However, the proper xenstore path in this case is: device/vif/1/event-channel-[rx|tx] PollerInstanceInitialize() sets its path using FrontendFormatPath(), which assumes a multi-queue path layout. This is done in a fashion similar to the transmitter and receiver rings. However, the tx/rx rings check for the mutually supported number of queues to determine the actual path written to xenstore, using FrontendGetNumQueues(). See __TransmitterRingStoreWrite() and __ReceiverRingStoreWrite(). This patch adds a similar procedure for the poller to write to the appropriate path in xenstore. Signed-off-by: Chris Patterson <cjp256@xxxxxxxxx> --- src/xenvif/poller.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/xenvif/poller.c b/src/xenvif/poller.c index a7ce37a..6ff2c8c 100644 --- a/src/xenvif/poller.c +++ b/src/xenvif/poller.c @@ -351,6 +351,7 @@ PollerChannelStoreWrite( { PXENVIF_POLLER_INSTANCE Instance; PXENVIF_POLLER Poller; + PCHAR Path; ULONG Port; NTSTATUS status; @@ -360,6 +361,10 @@ PollerChannelStoreWrite( if (Channel->Channel == NULL) goto done; + Path = (FrontendGetNumQueues(Poller->Frontend) == 1) ? + FrontendGetPath(Poller->Frontend) : + Instance->Path; + Port = XENBUS_EVTCHN(GetPort, &Poller->EvtchnInterface, Channel->Channel); @@ -367,7 +372,7 @@ PollerChannelStoreWrite( status = XENBUS_STORE(Printf, &Poller->StoreInterface, Transaction, - Instance->Path, + Path, (PCHAR)Channel->Node, "%u", Port); -- 2.1.4 _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |