Devices with CVQ needs to migrate state beyond vq state. Leaving this
to future series.
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
---
net/vhost-vdpa.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
index bca13f97fd..309861e56c 100644
--- a/net/vhost-vdpa.c
+++ b/net/vhost-vdpa.c
@@ -955,11 +955,17 @@ int net_init_vhost_vdpa(const Netdev *netdev, const char *name,
}
if (has_cvq) {
+ VhostVDPAState *s;
+
nc = net_vhost_vdpa_init(peer, TYPE_VHOST_VDPA, name,
vdpa_device_fd, i, 1, false,
opts->x_svq, iova_range);
if (!nc)
goto err;
+
+ s = DO_UPCAST(VhostVDPAState, nc, nc);
+ error_setg(&s->vhost_vdpa.dev->migration_blocker,
+ "net vdpa cannot migrate with MQ feature");
}
return 0;
--
2.31.1
在 2023/2/8 17:42, Eugenio Pérez 写道:
> Devices with CVQ needs to migrate state beyond vq state. Leaving this
> to future series.
I may miss something but what is missed to support CVQ/MQ?
Thanks
>
> Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
> ---
> net/vhost-vdpa.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
> index bca13f97fd..309861e56c 100644
> --- a/net/vhost-vdpa.c
> +++ b/net/vhost-vdpa.c
> @@ -955,11 +955,17 @@ int net_init_vhost_vdpa(const Netdev *netdev, const char *name,
> }
>
> if (has_cvq) {
> + VhostVDPAState *s;
> +
> nc = net_vhost_vdpa_init(peer, TYPE_VHOST_VDPA, name,
> vdpa_device_fd, i, 1, false,
> opts->x_svq, iova_range);
> if (!nc)
> goto err;
> +
> + s = DO_UPCAST(VhostVDPAState, nc, nc);
> + error_setg(&s->vhost_vdpa.dev->migration_blocker,
> + "net vdpa cannot migrate with MQ feature");
> }
>
> return 0;
On Wed, Feb 22, 2023 at 5:01 AM Jason Wang <jasowang@redhat.com> wrote:
>
>
> 在 2023/2/8 17:42, Eugenio Pérez 写道:
> > Devices with CVQ needs to migrate state beyond vq state. Leaving this
> > to future series.
>
>
> I may miss something but what is missed to support CVQ/MQ?
>
To restore all the device state set by CVQ in the migration source
(MAC, MQ, ...) before data vqs start. We don't have a reliable way to
not start data vqs until the device [1].
Thanks!
[1] https://lists.gnu.org/archive/html/qemu-devel/2023-01/msg02652.html
> Thanks
>
>
> >
> > Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
> > ---
> > net/vhost-vdpa.c | 6 ++++++
> > 1 file changed, 6 insertions(+)
> >
> > diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
> > index bca13f97fd..309861e56c 100644
> > --- a/net/vhost-vdpa.c
> > +++ b/net/vhost-vdpa.c
> > @@ -955,11 +955,17 @@ int net_init_vhost_vdpa(const Netdev *netdev, const char *name,
> > }
> >
> > if (has_cvq) {
> > + VhostVDPAState *s;
> > +
> > nc = net_vhost_vdpa_init(peer, TYPE_VHOST_VDPA, name,
> > vdpa_device_fd, i, 1, false,
> > opts->x_svq, iova_range);
> > if (!nc)
> > goto err;
> > +
> > + s = DO_UPCAST(VhostVDPAState, nc, nc);
> > + error_setg(&s->vhost_vdpa.dev->migration_blocker,
> > + "net vdpa cannot migrate with MQ feature");
> > }
> >
> > return 0;
>
在 2023/2/22 15:28, Eugenio Perez Martin 写道:
> On Wed, Feb 22, 2023 at 5:01 AM Jason Wang <jasowang@redhat.com> wrote:
>>
>> 在 2023/2/8 17:42, Eugenio Pérez 写道:
>>> Devices with CVQ needs to migrate state beyond vq state. Leaving this
>>> to future series.
>>
>> I may miss something but what is missed to support CVQ/MQ?
>>
> To restore all the device state set by CVQ in the migration source
> (MAC, MQ, ...) before data vqs start. We don't have a reliable way to
> not start data vqs until the device [1].
>
> Thanks!
>
> [1] https://lists.gnu.org/archive/html/qemu-devel/2023-01/msg02652.html
Right. It might be mention this defect in either the change log or
somewhere in the code as a comment.
(Btw, I think we should fix those vDPA drivers).
Thanks
>
>> Thanks
>>
>>
>>> Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
>>> ---
>>> net/vhost-vdpa.c | 6 ++++++
>>> 1 file changed, 6 insertions(+)
>>>
>>> diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
>>> index bca13f97fd..309861e56c 100644
>>> --- a/net/vhost-vdpa.c
>>> +++ b/net/vhost-vdpa.c
>>> @@ -955,11 +955,17 @@ int net_init_vhost_vdpa(const Netdev *netdev, const char *name,
>>> }
>>>
>>> if (has_cvq) {
>>> + VhostVDPAState *s;
>>> +
>>> nc = net_vhost_vdpa_init(peer, TYPE_VHOST_VDPA, name,
>>> vdpa_device_fd, i, 1, false,
>>> opts->x_svq, iova_range);
>>> if (!nc)
>>> goto err;
>>> +
>>> + s = DO_UPCAST(VhostVDPAState, nc, nc);
>>> + error_setg(&s->vhost_vdpa.dev->migration_blocker,
>>> + "net vdpa cannot migrate with MQ feature");
>>> }
>>>
>>> return 0;
On 2/8/2023 1:42 AM, Eugenio Pérez wrote:
> Devices with CVQ needs to migrate state beyond vq state. Leaving this
> to future series.
>
> Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
> ---
> net/vhost-vdpa.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
> index bca13f97fd..309861e56c 100644
> --- a/net/vhost-vdpa.c
> +++ b/net/vhost-vdpa.c
> @@ -955,11 +955,17 @@ int net_init_vhost_vdpa(const Netdev *netdev, const char *name,
> }
>
> if (has_cvq) {
> + VhostVDPAState *s;
> +
> nc = net_vhost_vdpa_init(peer, TYPE_VHOST_VDPA, name,
> vdpa_device_fd, i, 1, false,
> opts->x_svq, iova_range);
> if (!nc)
> goto err;
> +
> + s = DO_UPCAST(VhostVDPAState, nc, nc);
> + error_setg(&s->vhost_vdpa.dev->migration_blocker,
> + "net vdpa cannot migrate with MQ feature");
Not sure how this can work: migration_blocker is only checked and gets
added from vhost_dev_init(), which is already done through
net_vhost_vdpa_init() above. Same question applies to the next patch of
this series.
Thanks,
-Siwei
> }
>
> return 0;
On Mon, Feb 13, 2023 at 7:51 AM Si-Wei Liu <si-wei.liu@oracle.com> wrote:
>
>
>
> On 2/8/2023 1:42 AM, Eugenio Pérez wrote:
> > Devices with CVQ needs to migrate state beyond vq state. Leaving this
> > to future series.
> >
> > Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
> > ---
> > net/vhost-vdpa.c | 6 ++++++
> > 1 file changed, 6 insertions(+)
> >
> > diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
> > index bca13f97fd..309861e56c 100644
> > --- a/net/vhost-vdpa.c
> > +++ b/net/vhost-vdpa.c
> > @@ -955,11 +955,17 @@ int net_init_vhost_vdpa(const Netdev *netdev, const char *name,
> > }
> >
> > if (has_cvq) {
> > + VhostVDPAState *s;
> > +
> > nc = net_vhost_vdpa_init(peer, TYPE_VHOST_VDPA, name,
> > vdpa_device_fd, i, 1, false,
> > opts->x_svq, iova_range);
> > if (!nc)
> > goto err;
> > +
> > + s = DO_UPCAST(VhostVDPAState, nc, nc);
> > + error_setg(&s->vhost_vdpa.dev->migration_blocker,
> > + "net vdpa cannot migrate with MQ feature");
> Not sure how this can work: migration_blocker is only checked and gets
> added from vhost_dev_init(), which is already done through
> net_vhost_vdpa_init() above. Same question applies to the next patch of
> this series.
>
Good catch, fixing in v3.
Thanks!
© 2016 - 2026 Red Hat, Inc.