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;
|
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)
|
static int vhost_vdpa_net_check_device_id(struct vhost_net *net)
|
||||||
{
|
{
|
||||||
uint32_t device_id;
|
uint32_t device_id;
|
||||||
@ -676,15 +692,7 @@ int net_init_vhost_vdpa(const Netdev *netdev, const char *name,
|
|||||||
if (opts->x_svq) {
|
if (opts->x_svq) {
|
||||||
struct vhost_vdpa_iova_range iova_range;
|
struct vhost_vdpa_iova_range iova_range;
|
||||||
|
|
||||||
uint64_t invalid_dev_features =
|
if (!vhost_vdpa_net_valid_svq_features(features, errp)) {
|
||||||
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);
|
|
||||||
goto err_svq;
|
goto err_svq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user