From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 93A22C433FE for ; Thu, 10 Nov 2022 13:11:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230449AbiKJNLH (ORCPT ); Thu, 10 Nov 2022 08:11:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35556 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230445AbiKJNKp (ORCPT ); Thu, 10 Nov 2022 08:10:45 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C7654299 for ; Thu, 10 Nov 2022 05:09:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1668085786; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=g7yzyeLEGg0cjDYwQZn2MaPQ/bepIB2IEoD4XBCdYOM=; b=VdPQwJTiykdNd9VxldGZwtp7pp3R6M9DYXkRHZmXZsV/cUApSZul3my/Um/PowMsLEPs8K pyt0ZJRbKgfKpossx7LZY+J5HngkHIIw71aN9MwBhCJdWw7/5DxlVr2oODejj/zFVpeBAm rPfuArpictcoD8CtsbKVk2YsznZfq3w= Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-204-YufLHzHIPfKrRAoBbhjQCA-1; Thu, 10 Nov 2022 08:09:45 -0500 X-MC-Unique: YufLHzHIPfKrRAoBbhjQCA-1 Received: by mail-pf1-f200.google.com with SMTP id e8-20020a056a00162800b0056e953c5088so1028439pfc.2 for ; Thu, 10 Nov 2022 05:09:44 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=g7yzyeLEGg0cjDYwQZn2MaPQ/bepIB2IEoD4XBCdYOM=; b=Eu2SJRH+trpNFFLHYevZ/7/1lnKOONCyvfUAiWgMEb1XLEVvBAMYsqX317S0jdz8mf aaL2JKc1wtawH+OaI77PWYeRunEUBaXM1Ok8yhBEUyGvfUzgumstn21+pSatwQzj5P8w 6fNTx/A3nHGX81+41iRyj5ys83+GDX39p9uOacBMCFM0hpxu8Iy6mkxrjdSRuwmSQOkZ 15yLbaYNT6//yiByZqZOphJX/IWHSRhfvWRwWH40klq7xPQXXCRokR/YH4SpCV7iiF34 UD29nycse3SuRMTRlLrzA9q+X3jTOIPJjk4Kj0Evw4zEkhhwVFvXmQHsiVuAQiSTamp0 jHHA== X-Gm-Message-State: ACrzQf0DH2rlisrIPaIrK94ymMKWzDkLRT5QwbEvxv7m6RNCpOKBTAIC +4nijIImyLs9XN/7C3xin13xIKHE1Bzh55dxL7ftXTQ8ocQunxfh75wfkZWsygYLAZZEJthhBdv HPVVoLASsgvp6dsupWUZhkgB/nGq6 X-Received: by 2002:a17:902:ce82:b0:187:3591:edac with SMTP id f2-20020a170902ce8200b001873591edacmr48453114plg.153.1668085783799; Thu, 10 Nov 2022 05:09:43 -0800 (PST) X-Google-Smtp-Source: AMsMyM6KOEWfHhPK/2I37RD9J6zoYrru3BZj2gmnXvReWU8tS7nSkaqP/coNopRBOSYlstVFJkhfgWl9FCCsZ/0xYEE= X-Received: by 2002:a17:902:ce82:b0:187:3591:edac with SMTP id f2-20020a170902ce8200b001873591edacmr48453093plg.153.1668085783523; Thu, 10 Nov 2022 05:09:43 -0800 (PST) MIME-Version: 1.0 References: <20221108170755.92768-1-eperezma@redhat.com> <20221108170755.92768-6-eperezma@redhat.com> <56bfad97-74d2-8570-c391-83ecf9965cfd@redhat.com> In-Reply-To: <56bfad97-74d2-8570-c391-83ecf9965cfd@redhat.com> From: Eugenio Perez Martin Date: Thu, 10 Nov 2022 14:09:07 +0100 Message-ID: Subject: Re: [PATCH v6 05/10] vdpa: move SVQ vring features check to net/ To: Jason Wang Cc: qemu-devel@nongnu.org, Parav Pandit , Stefan Hajnoczi , Si-Wei Liu , Laurent Vivier , Harpreet Singh Anand , "Michael S. Tsirkin" , Gautam Dawar , Liuxiangdong , Stefano Garzarella , Cindy Lu , Eli Cohen , Cornelia Huck , Zhu Lingshan , kvm@vger.kernel.org, "Gonglei (Arei)" , Paolo Bonzini Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org On Thu, Nov 10, 2022 at 6:40 AM Jason Wang wrote: > > > =E5=9C=A8 2022/11/9 01:07, Eugenio P=C3=A9rez =E5=86=99=E9=81=93: > > The next patches will start control SVQ if possible. However, we don't > > know if that will be possible at qemu boot anymore. > > > If I was not wrong, there's no device specific feature that is checked > in the function. So it should be general enough to be used by devices > other than net. Then I don't see any advantage of doing this. > Because vhost_vdpa_init_svq is called at qemu boot, failing if it is not possible to shadow the Virtqueue. Now the CVQ will be shadowed if possible, so we need to check this at device start, not at initialization. To store this information at boot time is not valid anymore, because v->shadow_vqs_enabled is not valid at this time anymore. Thanks! > Thanks > > > > > > Since the moved checks will be already evaluated at net/ to know if it > > is ok to shadow CVQ, move them. > > > > Signed-off-by: Eugenio P=C3=A9rez > > --- > > hw/virtio/vhost-vdpa.c | 33 ++------------------------------- > > net/vhost-vdpa.c | 3 ++- > > 2 files changed, 4 insertions(+), 32 deletions(-) > > > > diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c > > index 3df2775760..146f0dcb40 100644 > > --- a/hw/virtio/vhost-vdpa.c > > +++ b/hw/virtio/vhost-vdpa.c > > @@ -402,29 +402,9 @@ static int vhost_vdpa_get_dev_features(struct vhos= t_dev *dev, > > return ret; > > } > > > > -static int vhost_vdpa_init_svq(struct vhost_dev *hdev, struct vhost_vd= pa *v, > > - Error **errp) > > +static void vhost_vdpa_init_svq(struct vhost_dev *hdev, struct vhost_v= dpa *v) > > { > > g_autoptr(GPtrArray) shadow_vqs =3D NULL; > > - uint64_t dev_features, svq_features; > > - int r; > > - bool ok; > > - > > - if (!v->shadow_vqs_enabled) { > > - return 0; > > - } > > - > > - r =3D vhost_vdpa_get_dev_features(hdev, &dev_features); > > - if (r !=3D 0) { > > - error_setg_errno(errp, -r, "Can't get vdpa device features"); > > - return r; > > - } > > - > > - svq_features =3D dev_features; > > - ok =3D vhost_svq_valid_features(svq_features, errp); > > - if (unlikely(!ok)) { > > - return -1; > > - } > > > > shadow_vqs =3D g_ptr_array_new_full(hdev->nvqs, vhost_svq_free); > > for (unsigned n =3D 0; n < hdev->nvqs; ++n) { > > @@ -436,7 +416,6 @@ static int vhost_vdpa_init_svq(struct vhost_dev *hd= ev, struct vhost_vdpa *v, > > } > > > > v->shadow_vqs =3D g_steal_pointer(&shadow_vqs); > > - return 0; > > } > > > > static int vhost_vdpa_init(struct vhost_dev *dev, void *opaque, Error= **errp) > > @@ -461,11 +440,7 @@ static int vhost_vdpa_init(struct vhost_dev *dev, = void *opaque, Error **errp) > > dev->opaque =3D opaque ; > > v->listener =3D vhost_vdpa_memory_listener; > > v->msg_type =3D VHOST_IOTLB_MSG_V2; > > - ret =3D vhost_vdpa_init_svq(dev, v, errp); > > - if (ret) { > > - goto err; > > - } > > - > > + vhost_vdpa_init_svq(dev, v); > > vhost_vdpa_get_iova_range(v); > > > > if (!vhost_vdpa_first_dev(dev)) { > > @@ -476,10 +451,6 @@ static int vhost_vdpa_init(struct vhost_dev *dev, = void *opaque, Error **errp) > > VIRTIO_CONFIG_S_DRIVER); > > > > return 0; > > - > > -err: > > - ram_block_discard_disable(false); > > - return ret; > > } > > > > static void vhost_vdpa_host_notifier_uninit(struct vhost_dev *dev, > > diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c > > index d3b1de481b..fb35b17ab4 100644 > > --- a/net/vhost-vdpa.c > > +++ b/net/vhost-vdpa.c > > @@ -117,9 +117,10 @@ static bool vhost_vdpa_net_valid_svq_features(uint= 64_t features, Error **errp) > > if (invalid_dev_features) { > > error_setg(errp, "vdpa svq does not work with features 0x%" P= RIx64, > > invalid_dev_features); > > + return false; > > } > > > > - return !invalid_dev_features; > > + return vhost_svq_valid_features(features, errp); > > } > > > > static int vhost_vdpa_net_check_device_id(struct vhost_net *net) >