Re: [PATCH v2] vdpa: Allow VDPA to work on big-endian machine
On 2025/06/16 22:36, Konstantin Shkolnyy wrote:
After commit 0caed25cd171 vhost_vdpa_net_load_vlan() started seeing
VIRTIO_NET_F_CTRL_VLAN flag and making 4096 calls to the kernel with
VIRTIO_NET_CTRL_VLAN_ADD command. However, it forgot to convert the
16-bit VLAN IDs to LE format. On BE machine, the kernel calls failed
when they saw "VLAN IDs" greater than 4095, and QEMU then said:
"unable to start vhost net: 5: falling back on userspace virtio", and
VDPA became disabled.
Convert the VLAN ID to LE before putting it into virtio queue.
Fixes: 8f7e9967484d ("vdpa: Restore vlan filtering state")
Signed-off-by: Konstantin Shkolnyy
Acked-by: Jason Wang
Acked-by: Eugenio Pérez
Reviewed-by: Akihiko Odaki
Re: [PATCH v2] vdpa: Allow vDPA to work on big-endian machine
On Mon, Mar 17, 2025 at 08:26:37AM +0800, Jason Wang wrote: > On Thu, Mar 13, 2025 at 11:14 PM Konstantin Shkolnyy > wrote: > > > > On 2/23/2025 19:57, Jason Wang wrote: > > > On Sat, Feb 22, 2025 at 3:08 AM Konstantin Shkolnyy > > > wrote: > > >> > > >> Add .set_vnet_le() function that always returns success, assuming that > > >> vDPA h/w always implements LE data format. Otherwise, QEMU disables vDPA > > >> and > > >> outputs the message: > > >> "backend does not support LE vnet headers; falling back on userspace > > >> virtio" > > >> > > >> Signed-off-by: Konstantin Shkolnyy > > >> --- > > >> Changes in V2: Add code comment. > > >> > > > > > > Acked-by: Jason Wang > > > > Is this patch all set to be eventually integrated, or more review is needed? > > > > Michael, do you want to queue this or can I do that? > > Thanks Go ahead. Reviewed-by: Michael S. Tsirkin
Re: [PATCH v2] vdpa: Allow vDPA to work on big-endian machine
On Thu, Mar 13, 2025 at 11:14 PM Konstantin Shkolnyy wrote: > > On 2/23/2025 19:57, Jason Wang wrote: > > On Sat, Feb 22, 2025 at 3:08 AM Konstantin Shkolnyy > > wrote: > >> > >> Add .set_vnet_le() function that always returns success, assuming that > >> vDPA h/w always implements LE data format. Otherwise, QEMU disables vDPA > >> and > >> outputs the message: > >> "backend does not support LE vnet headers; falling back on userspace > >> virtio" > >> > >> Signed-off-by: Konstantin Shkolnyy > >> --- > >> Changes in V2: Add code comment. > >> > > > > Acked-by: Jason Wang > > Is this patch all set to be eventually integrated, or more review is needed? > Michael, do you want to queue this or can I do that? Thanks
Re: [PATCH v2] vdpa: Allow vDPA to work on big-endian machine
On Fri, Feb 21, 2025 at 8:08 PM Konstantin Shkolnyy wrote:
>
> Add .set_vnet_le() function that always returns success, assuming that
> vDPA h/w always implements LE data format. Otherwise, QEMU disables vDPA and
> outputs the message:
> "backend does not support LE vnet headers; falling back on userspace virtio"
>
Acked-by: Eugenio Pérez
> Signed-off-by: Konstantin Shkolnyy
> ---
> Changes in V2: Add code comment.
>
> net/vhost-vdpa.c | 13 +
> 1 file changed, 13 insertions(+)
>
> diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
> index 231b45246c..6e7cec4d45 100644
> --- a/net/vhost-vdpa.c
> +++ b/net/vhost-vdpa.c
> @@ -270,6 +270,18 @@ static bool vhost_vdpa_has_ufo(NetClientState *nc)
>
> }
>
> +/*
> + * FIXME: vhost_vdpa doesn't have an API to "set h/w endianness". But it's
> + * reasonable to assume that h/w is LE by default, because LE is what
> + * virtio 1.0 and later ask for. So, this function just says "yes, the h/w is
> + * LE". Otherwise, on a BE machine, higher-level code would mistakely think
> + * the h/w is BE and can't support VDPA for a virtio 1.0 client.
> + */
> +static int vhost_vdpa_set_vnet_le(NetClientState *nc, bool enable)
> +{
> +return 0;
> +}
> +
> static bool vhost_vdpa_check_peer_type(NetClientState *nc, ObjectClass *oc,
> Error **errp)
> {
> @@ -437,6 +449,7 @@ static NetClientInfo net_vhost_vdpa_info = {
> .cleanup = vhost_vdpa_cleanup,
> .has_vnet_hdr = vhost_vdpa_has_vnet_hdr,
> .has_ufo = vhost_vdpa_has_ufo,
> +.set_vnet_le = vhost_vdpa_set_vnet_le,
> .check_peer_type = vhost_vdpa_check_peer_type,
> .set_steering_ebpf = vhost_vdpa_set_steering_ebpf,
> };
> --
> 2.34.1
>
Re: [PATCH v2] vdpa: Allow vDPA to work on big-endian machine
On 2/23/2025 19:57, Jason Wang wrote: On Sat, Feb 22, 2025 at 3:08 AM Konstantin Shkolnyy wrote: Add .set_vnet_le() function that always returns success, assuming that vDPA h/w always implements LE data format. Otherwise, QEMU disables vDPA and outputs the message: "backend does not support LE vnet headers; falling back on userspace virtio" Signed-off-by: Konstantin Shkolnyy --- Changes in V2: Add code comment. Acked-by: Jason Wang Is this patch all set to be eventually integrated, or more review is needed?
Re: [PATCH v2] vdpa: Allow vDPA to work on big-endian machine
On Sat, Feb 22, 2025 at 3:08 AM Konstantin Shkolnyy wrote: > > Add .set_vnet_le() function that always returns success, assuming that > vDPA h/w always implements LE data format. Otherwise, QEMU disables vDPA and > outputs the message: > "backend does not support LE vnet headers; falling back on userspace virtio" > > Signed-off-by: Konstantin Shkolnyy > --- > Changes in V2: Add code comment. > Acked-by: Jason Wang Thanks
