vdpa: add vhost_vdpa_net_valid_svq_features
It will be reused at vdpa device start so let's extract in its own function. Signed-off-by: Eugenio Pérez <eperezma@redhat.com> Acked-by: Jason Wang <jasowang@redhat.com> Message-Id: <20221215113144.322011-6-eperezma@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
5fde952bbd
commit
36e4647247
@ -107,6 +107,22 @@ VHostNetState *vhost_vdpa_get_vhost_net(NetClientState *nc)
|
||||
return s->vhost_net;
|
||||
}
|
||||
|
||||
static bool vhost_vdpa_net_valid_svq_features(uint64_t features, Error **errp)
|
||||
{
|
||||
uint64_t invalid_dev_features =
|
||||
features & ~vdpa_svq_device_features &
|
||||
/* Transport are all accepted at this point */
|
||||
~MAKE_64BIT_MASK(VIRTIO_TRANSPORT_F_START,
|
||||
VIRTIO_TRANSPORT_F_END - VIRTIO_TRANSPORT_F_START);
|
||||
|
||||
if (invalid_dev_features) {
|
||||
error_setg(errp, "vdpa svq does not work with features 0x%" PRIx64,
|
||||
invalid_dev_features);
|
||||
}
|
||||
|
||||
return !invalid_dev_features;
|
||||
}
|
||||
|
||||
static int vhost_vdpa_net_check_device_id(struct vhost_net *net)
|
||||
{
|
||||
uint32_t device_id;
|
||||
@ -676,15 +692,7 @@ int net_init_vhost_vdpa(const Netdev *netdev, const char *name,
|
||||
if (opts->x_svq) {
|
||||
struct vhost_vdpa_iova_range iova_range;
|
||||
|
||||
uint64_t invalid_dev_features =
|
||||
features & ~vdpa_svq_device_features &
|
||||
/* Transport are all accepted at this point */
|
||||
~MAKE_64BIT_MASK(VIRTIO_TRANSPORT_F_START,
|
||||
VIRTIO_TRANSPORT_F_END - VIRTIO_TRANSPORT_F_START);
|
||||
|
||||
if (invalid_dev_features) {
|
||||
error_setg(errp, "vdpa svq does not work with features 0x%" PRIx64,
|
||||
invalid_dev_features);
|
||||
if (!vhost_vdpa_net_valid_svq_features(features, errp)) {
|
||||
goto err_svq;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user