[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 12/15] vdpa: block migration if device has unsupported fea
From: |
Jason Wang |
Subject: |
Re: [PATCH v4 12/15] vdpa: block migration if device has unsupported features |
Date: |
Mon, 27 Feb 2023 16:19:53 +0800 |
On Mon, Feb 27, 2023 at 4:15 PM Jason Wang <jasowang@redhat.com> wrote:
>
>
> 在 2023/2/24 23:54, Eugenio Pérez 写道:
> > A vdpa net device must initialize with SVQ in order to be migratable at
> > this moment, and initialization code verifies some conditions. If the
> > device is not initialized with the x-svq parameter, it will not expose
> > _F_LOG so the vhost subsystem will block VM migration from its
> > initialization.
> >
> > Next patches change this, so we need to verify migration conditions
> > differently.
> >
> > QEMU only supports a subset of net features in SVQ, and it cannot
> > migrate state that cannot track or restore in the destination. Add a
> > migration blocker if the device offer an unsupported feature.
> >
> > Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
> > ---
> > v3: add mirgation blocker properly so vhost_dev can handle it.
> > ---
> > net/vhost-vdpa.c | 12 ++++++++----
> > 1 file changed, 8 insertions(+), 4 deletions(-)
> >
> > diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
> > index 4f983df000..094dc1c2d0 100644
> > --- a/net/vhost-vdpa.c
> > +++ b/net/vhost-vdpa.c
> > @@ -795,7 +795,8 @@ static NetClientState
> > *net_vhost_vdpa_init(NetClientState *peer,
> > int nvqs,
> > bool is_datapath,
> > bool svq,
> > - struct vhost_vdpa_iova_range
> > iova_range)
> > + struct vhost_vdpa_iova_range
> > iova_range,
> > + uint64_t features)
> > {
> > NetClientState *nc = NULL;
> > VhostVDPAState *s;
> > @@ -818,7 +819,10 @@ static NetClientState
> > *net_vhost_vdpa_init(NetClientState *peer,
> > s->vhost_vdpa.shadow_vqs_enabled = svq;
> > s->vhost_vdpa.iova_range = iova_range;
> > s->vhost_vdpa.shadow_data = svq;
> > - if (!is_datapath) {
> > + if (queue_pair_index == 0) {
> > + vhost_vdpa_net_valid_svq_features(features,
> > +
> > &s->vhost_vdpa.migration_blocker);
>
>
> Since we do validation at initialization, is this necessary to valid
> once again in other places?
Ok, after reading patch 13, I think the question is:
The validation seems to be independent to net, can we valid it once
during vhost_vdpa_init()?
Thanks
>
> Thanks
>
>
> > + } else if (!is_datapath) {
> > s->cvq_cmd_out_buffer = qemu_memalign(qemu_real_host_page_size(),
> >
> > vhost_vdpa_net_cvq_cmd_page_len());
> > memset(s->cvq_cmd_out_buffer, 0,
> > vhost_vdpa_net_cvq_cmd_page_len());
> > @@ -956,7 +960,7 @@ int net_init_vhost_vdpa(const Netdev *netdev, const
> > char *name,
> > for (i = 0; i < queue_pairs; i++) {
> > ncs[i] = net_vhost_vdpa_init(peer, TYPE_VHOST_VDPA, name,
> > vdpa_device_fd, i, 2, true,
> > opts->x_svq,
> > - iova_range);
> > + iova_range, features);
> > if (!ncs[i])
> > goto err;
> > }
> > @@ -964,7 +968,7 @@ int net_init_vhost_vdpa(const Netdev *netdev, const
> > char *name,
> > if (has_cvq) {
> > nc = net_vhost_vdpa_init(peer, TYPE_VHOST_VDPA, name,
> > vdpa_device_fd, i, 1, false,
> > - opts->x_svq, iova_range);
> > + opts->x_svq, iova_range, features);
> > if (!nc)
> > goto err;
> > }
- Re: [PATCH v4 06/15] vdpa: add vhost_vdpa->suspended parameter, (continued)
- [PATCH v4 07/15] vdpa: add vhost_vdpa_suspend, Eugenio Pérez, 2023/02/24
- [PATCH v4 10/15] vdpa: disable RAM block discard only for the first device, Eugenio Pérez, 2023/02/24
- [PATCH v4 13/15] vdpa: block migration if SVQ does not admit a feature, Eugenio Pérez, 2023/02/24
- [PATCH v4 08/15] vdpa: rewind at get_base, not set_base, Eugenio Pérez, 2023/02/24
- [PATCH v4 12/15] vdpa: block migration if device has unsupported features, Eugenio Pérez, 2023/02/24
- [PATCH v4 11/15] vdpa net: block migration if the device has CVQ, Eugenio Pérez, 2023/02/24
- [PATCH v4 15/15] vdpa: return VHOST_F_LOG_ALL in vhost-vdpa devices, Eugenio Pérez, 2023/02/24
- Re: [PATCH v4 00/15] Dynamically switch to vhost shadow virtqueues at vdpa net migration, Alvaro Karsz, 2023/02/27