Andres Freund
2022-Aug-15 21:28 UTC
[PATCH] virtio_net: Revert "virtio_net: set the default max ring size by find_vqs()"
Hi, On 2022-08-15 17:04:10 -0400, Michael S. Tsirkin wrote:> So virtio has a queue_size register. When read, it will give you > originally the maximum queue size. Normally we just read it and > use it as queue size. > > However, when queue memory allocation fails, and unconditionally with a > network device with the problematic patch, driver is asking the > hypervisor to make the ring smaller by writing a smaller value into this > register. > > I suspect that what happens is hypervisor still uses the original value > somewhere.It looks more like the host is never told about the changed size for legacy devices... Indeed, adding a vp_legacy_set_queue_size() & call to it to setup_vq(), makes 5.19 + restricting queue sizes to 1024 boot again. I'd bet that it also would fix 6.0rc1, but I'm running out of time to test that. Greetings, Andres Freund
Michael S. Tsirkin
2022-Aug-15 21:39 UTC
[PATCH] virtio_net: Revert "virtio_net: set the default max ring size by find_vqs()"
On Mon, Aug 15, 2022 at 02:28:39PM -0700, Andres Freund wrote:> Hi, > > On 2022-08-15 17:04:10 -0400, Michael S. Tsirkin wrote: > > So virtio has a queue_size register. When read, it will give you > > originally the maximum queue size. Normally we just read it and > > use it as queue size. > > > > However, when queue memory allocation fails, and unconditionally with a > > network device with the problematic patch, driver is asking the > > hypervisor to make the ring smaller by writing a smaller value into this > > register. > > > > I suspect that what happens is hypervisor still uses the original value > > somewhere. > > It looks more like the host is never told about the changed size for legacy > devices... > > Indeed, adding a vp_legacy_set_queue_size() & call to it to setup_vq(), makes > 5.19 + restricting queue sizes to 1024 boot again.Interesting, the register is RO in the legacy interface. And to be frank I can't find where is vp_legacy_set_queue_size even implemented. It's midnight here too ...> I'd bet that it also would > fix 6.0rc1, but I'm running out of time to test that. > > Greetings, > > Andres FreundYes I figured this out too. And I was able to reproduce on qemu now. Andres thanks a lot for the help! I'm posting a new patchset reverting all the handing of resize restrictions, I think we should rethink it for the next release. Thanks everyone for the help! -- MST