[dpdk-users] Hyper-V multi-queue not working on Kernel v4.20
gareth at vectra.ai
Thu Dec 13 17:48:55 CET 2018
I wanted to check in to see how the fix is going. I've repro'd the patches yourself and Mohammed Gamal were discussing on the development mailing list and see the same results, i.e. multi-channel works the first time testpmd is launched but subsequent launches result in an error setting up the sub-channels. I'm on the development mailing list so if you'd like to add me to the thread I'll be happy to test the patches.
From: Gareth Bradshaw
Sent: Wednesday 5 December 2018 17:10
To: Stephen Hemminger <stephen at networkplumber.org>
Cc: users at dpdk.org
Subject: RE: [dpdk-users] Hyper-V multi-queue not working on Kernel v4.20
Thanks for coming back to me Stephen. I found the thread you mentioned and will keep an eye on it. I'm happy to help out with testing the change.
From: Stephen Hemminger <stephen at networkplumber.org>
Sent: Wednesday 5 December 2018 16:04
To: Gareth Bradshaw <gareth at vectra.ai>
Cc: users at dpdk.org
Subject: Re: [dpdk-users] Hyper-V multi-queue not working on Kernel v4.20
On Wed, 5 Dec 2018 11:05:58 +0000
Gareth Bradshaw <gareth at vectra.ai> wrote:
> I'm developing a DPDK application for Hyper-V and would like to use Kernel v4.20 as it fixes a crash in previous kernels (per this pull request<https://github.com/torvalds/linux/commit/cdfa835c6e5e87d145f9f632b58843de97509f2b>) but multi-queue support seems to have broken in that kernel. It works in kernels 4.17, 4.18 and 4.19.
> Using testpmd with parameters "--forward-mode=txonly --nb-cores=3 --txq=3 --rxq=3" I get the following error "vmbus_uio_get_subchan(): invalid subchannel id 0".
> Tracing the code a bit I find that it's trying to read /sys/bus/devices/<devid>/channels/21/subchannel_id but when I try to cat the same file I get the error "Invalid argument". I've compared to previous kernel versions and see the following differences:
> * When the VM boots, the device is bound to the kernel driver and there are 4 channels on both kernel versions. It's a 4 core VM.
> * When I bind the device to uio_hv_generic, kernel v.19.5 (and previous) has a single channel and it has a valid subchannel_id. On kernel 4.20 the 4 channel folders remain but they are all invalid.
> * When I start testpmd with 3 queues, on kernel v4.19.5 two additional channels are created, they're valid and testpmd works as expected. On kernel 4.20 the 4 invalid channels remain invalid and testpmd gives the error I mentioned.
> Any help getting this working would be greatly appreciated.
There is a race that shows up in sub channel initialization, it is being worked on the development mailing list. No resolution yet.
More information about the users