mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-01-05 14:07:41 -07:00
vdpa: Allow vDPA to work on big-endian machine
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"
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Eugenio Pérez <eperezma@redhat.com>
Signed-off-by: Konstantin Shkolnyy <kshk@linux.ibm.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
(cherry picked from commit b027f55a99)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
This commit is contained in:
parent
3d12a79a6c
commit
33c255bb95
1 changed files with 13 additions and 0 deletions
|
|
@ -203,6 +203,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)
|
||||
{
|
||||
|
|
@ -230,6 +242,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,
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue