qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jason Wang <jasowang@redhat.com>
To: Eugenio Perez Martin <eperezma@redhat.com>
Cc: qemu-devel@nongnu.org, Stefano Garzarella <sgarzare@redhat.com>,
	Shannon Nelson <snelson@pensando.io>,
	Gautam Dawar <gdawar@xilinx.com>,
	Laurent Vivier <lvivier@redhat.com>,
	alvaro.karsz@solid-run.com, longpeng2@huawei.com,
	virtualization@lists.linux-foundation.org,
	Stefan Hajnoczi <stefanha@redhat.com>, Cindy Lu <lulu@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	si-wei.liu@oracle.com, Liuxiangdong <liuxiangdong5@huawei.com>,
	Parav Pandit <parav@mellanox.com>, Eli Cohen <eli@mellanox.com>,
	Zhu Lingshan <lingshan.zhu@intel.com>,
	Harpreet Singh Anand <hanand@xilinx.com>,
	"Gonglei (Arei)" <arei.gonglei@huawei.com>,
	Lei Yang <leiyang@redhat.com>
Subject: Re: [PATCH v4 12/15] vdpa: block migration if device has unsupported features
Date: Fri, 3 Mar 2023 11:48:22 +0800	[thread overview]
Message-ID: <69983de5-7cb7-02a1-8869-0977ff2928b2@redhat.com> (raw)
In-Reply-To: <CAJaqyWcUMwchHZ66=o+aayVvsAT78iOnWo0g3jbg4A1TiAupfQ@mail.gmail.com>


在 2023/3/2 03:32, Eugenio Perez Martin 写道:
> On Mon, Feb 27, 2023 at 9:20 AM Jason Wang <jasowang@redhat.com> wrote:
>> 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()?
>>
> vhost_vdpa_net_valid_svq_features also checks for net features. In
> particular, all the non transport features must be in
> vdpa_svq_device_features.
>
> This is how we protect that the device / guest will never negotiate
> things like VLAN filtering support, as SVQ still does not know how to
> restore at the destination.
>
> In the VLAN filtering case CVQ is needed to restore VLAN, so it is
> covered by patch 11/15. But other future features may need support for
> restoring it in the destination.


I wonder how hard to have a general validation code let net specific 
code to advertise a blacklist to avoid code duplication.

Thanks


>
> Thanks!
>
>> 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;
>>>>        }



  reply	other threads:[~2023-03-03  3:49 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-24 15:54 [PATCH v4 00/15] Dynamically switch to vhost shadow virtqueues at vdpa net migration Eugenio Pérez
2023-02-24 15:54 ` [PATCH v4 01/15] vdpa net: move iova tree creation from init to start Eugenio Pérez
2023-02-27  7:04   ` Jason Wang
2023-03-01  7:01     ` Eugenio Perez Martin
2023-03-03  3:32       ` Jason Wang
2023-03-03  8:00         ` Eugenio Perez Martin
2023-03-06  3:43           ` Jason Wang
2023-02-24 15:54 ` [PATCH v4 02/15] vdpa: Remember last call fd set Eugenio Pérez
2023-02-24 15:54 ` [PATCH v4 03/15] vdpa: stop svq at vhost_vdpa_dev_start(false) Eugenio Pérez
2023-02-27  7:15   ` Jason Wang
2023-03-03 16:29     ` Eugenio Perez Martin
2023-02-24 15:54 ` [PATCH v4 04/15] vdpa: Negotiate _F_SUSPEND feature Eugenio Pérez
2023-02-24 15:54 ` [PATCH v4 05/15] vdpa: move vhost reset after get vring base Eugenio Pérez
2023-02-27  7:22   ` Jason Wang
2023-03-01 19:11     ` Eugenio Perez Martin
2023-02-24 15:54 ` [PATCH v4 06/15] vdpa: add vhost_vdpa->suspended parameter Eugenio Pérez
2023-02-27  7:24   ` Jason Wang
2023-03-01 19:11     ` Eugenio Perez Martin
2023-02-24 15:54 ` [PATCH v4 07/15] vdpa: add vhost_vdpa_suspend Eugenio Pérez
2023-02-27  7:27   ` Jason Wang
2023-03-01  1:30   ` Si-Wei Liu
2023-03-03 16:34     ` Eugenio Perez Martin
2023-02-24 15:54 ` [PATCH v4 08/15] vdpa: rewind at get_base, not set_base Eugenio Pérez
2023-02-27  7:34   ` Jason Wang
2023-02-24 15:54 ` [PATCH v4 09/15] vdpa: add vdpa net migration state notifier Eugenio Pérez
2023-02-27  8:08   ` Jason Wang
2023-03-01 19:26     ` Eugenio Perez Martin
2023-03-03  3:34       ` Jason Wang
2023-03-03  8:42         ` Eugenio Perez Martin
2023-02-24 15:54 ` [PATCH v4 10/15] vdpa: disable RAM block discard only for the first device Eugenio Pérez
2023-02-27  8:11   ` Jason Wang
2023-03-02 15:11     ` Eugenio Perez Martin
2023-02-24 15:54 ` [PATCH v4 11/15] vdpa net: block migration if the device has CVQ Eugenio Pérez
2023-02-27  8:12   ` Jason Wang
2023-03-02 15:13     ` Eugenio Perez Martin
2023-02-24 15:54 ` [PATCH v4 12/15] vdpa: block migration if device has unsupported features Eugenio Pérez
2023-02-27  8:15   ` Jason Wang
2023-02-27  8:19     ` Jason Wang
2023-03-01 19:32       ` Eugenio Perez Martin
2023-03-03  3:48         ` Jason Wang [this message]
2023-03-03  8:58           ` Eugenio Perez Martin
2023-03-06  3:42             ` Jason Wang
2023-03-06 11:32               ` Eugenio Perez Martin
2023-03-07  6:48                 ` Jason Wang
2023-02-24 15:54 ` [PATCH v4 13/15] vdpa: block migration if SVQ does not admit a feature Eugenio Pérez
2023-02-24 15:54 ` [PATCH v4 14/15] vdpa net: allow VHOST_F_LOG_ALL Eugenio Pérez
2023-02-24 15:54 ` [PATCH v4 15/15] vdpa: return VHOST_F_LOG_ALL in vhost-vdpa devices Eugenio Pérez
2023-02-27 12:40 ` [PATCH v4 00/15] Dynamically switch to vhost shadow virtqueues at vdpa net migration Alvaro Karsz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=69983de5-7cb7-02a1-8869-0977ff2928b2@redhat.com \
    --to=jasowang@redhat.com \
    --cc=alvaro.karsz@solid-run.com \
    --cc=arei.gonglei@huawei.com \
    --cc=eli@mellanox.com \
    --cc=eperezma@redhat.com \
    --cc=gdawar@xilinx.com \
    --cc=hanand@xilinx.com \
    --cc=leiyang@redhat.com \
    --cc=lingshan.zhu@intel.com \
    --cc=liuxiangdong5@huawei.com \
    --cc=longpeng2@huawei.com \
    --cc=lulu@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=mst@redhat.com \
    --cc=parav@mellanox.com \
    --cc=qemu-devel@nongnu.org \
    --cc=sgarzare@redhat.com \
    --cc=si-wei.liu@oracle.com \
    --cc=snelson@pensando.io \
    --cc=stefanha@redhat.com \
    --cc=virtualization@lists.linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).