On 1/20/24 09:03, Paul B. Henson wrote:
> We've been running Debian 11 for a while, using sr-iov:
>
> <network>
> <name>sr-iov-intel-10G-1</name>
> <uuid>6bdaa4c8-e720-4ea0-9a50-91cb7f2c83b1</uuid>
> <forward mode='hostdev' managed='yes'>
> <pf dev='eth2'/>
> </forward>
> </network>
>
> and allocating vf's from the pool:
>
> <interface type='network' trustGuestRxFilters='yes'>
> <mac address='52:54:00:08:da:5b'/>
> <source network='sr-iov-intel-10G-1'/>
> <vlan>
> <tag id='50'/>
> </vlan>
> <model type='virtio'/>
> <address type='pci' domain='0x0000' bus='0x00'
slot='0x03' function='0x0'/>
> </interface>
>
> After upgrading to Debian 12, when I try to start any vm which uses the
> trustGuestRxFilters option, it fails to start with the message:
>
> error: internal error: unable to execute QEMU command 'query-rx-filter':
> invalid net client name: hostdev0
>
I think it may be a regression caused by the following commit:
https://gitlab.com/libvirt/libvirt/-/commit/060d4c83ef436cf56abfad51a4d64...
(contained in libvirt-8.9.0)
In two functions (qemuProcessRefreshState() and qemuProcessReconnect())
there's a call to qemuProcessRefreshRxFilters() added. And since you
have trustGuestRxFilters='yes' it then proceeds and queries QEMU on the
monitor for MAC address.
Let me see if I can cook up a patch, since I'm the one who broke it.
In fact, there's an easy reproducer without any SRIOV involved: just try
to start a domain with <interface type='direct'
trustGuestRxFilters='yes'/>
and !virtio model (say rtl8139).
Patch posted here: