All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Wang <jasowang@redhat.com>
To: Si-Wei Liu <si-wei.liu@oracle.com>
Cc: mst <mst@redhat.com>, Eli Cohen <elic@nvidia.com>,
	Parav Pandit <parav@nvidia.com>,
	Wu Zongyong <wuzongyong@linux.alibaba.com>,
	virtualization <virtualization@lists.linux-foundation.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	eperezma <eperezma@redhat.com>,
	Zhu Lingshan <lingshan.zhu@intel.com>,
	Gautam Dawar <gdawar@xilinx.com>, Cindy Lu <lulu@redhat.com>,
	Yongji Xie <xieyongji@bytedance.com>
Subject: Re: [PATCH V2 3/3] vp_vdpa: support feature provisioning
Date: Mon, 26 Sep 2022 15:14:05 +0800	[thread overview]
Message-ID: <CACGkMEvHNdp1MCt4VLVGFnC-CEqgpur+uwXiRz1d6ke30L-iJg@mail.gmail.com> (raw)
In-Reply-To: <649cf77d-849b-1ed1-e804-3abab9e339d1@oracle.com>

On Sat, Sep 24, 2022 at 4:11 AM Si-Wei Liu <si-wei.liu@oracle.com> wrote:
>
>
>
> On 9/21/2022 7:43 PM, Jason Wang wrote:
> > This patch allows the device features to be provisioned via
> > netlink. This is done by:
> >
> > 1) validating the provisioned features to be a subset of the parent
> >     features.
> > 2) clearing the features that is not wanted by the userspace
> >
> > For example:
> >
> > # vdpa mgmtdev show
> > pci/0000:02:00.0:
> >    supported_classes net
> >    max_supported_vqs 3
> >    dev_features CSUM GUEST_CSUM CTRL_GUEST_OFFLOADS MAC GUEST_TSO4
> >    GUEST_TSO6 GUEST_ECN GUEST_UFO HOST_TSO4 HOST_TSO6 HOST_ECN HOST_UFO
> >    MRG_RXBUF STATUS CTRL_VQ CTRL_RX CTRL_VLAN CTRL_RX_EXTRA
> >    GUEST_ANNOUNCE CTRL_MAC_ADDR RING_INDIRECT_DESC RING_EVENT_IDX
> >    VERSION_1 ACCESS_PLATFORM
> >
> > 1) provision vDPA device with all features that are supported by the virtio-pci
> >
> > # vdpa dev add name dev1 mgmtdev pci/0000:02:00.0
> > # vdpa dev config show
> > dev1: mac 52:54:00:12:34:56 link up link_announce false mtu 65535
> >    negotiated_features CSUM GUEST_CSUM CTRL_GUEST_OFFLOADS MAC
> >    GUEST_TSO4 GUEST_TSO6 GUEST_ECN GUEST_UFO HOST_TSO4 HOST_TSO6
> >    HOST_ECN HOST_UFO MRG_RXBUF STATUS CTRL_VQ CTRL_RX CTRL_VLAN
> >    GUEST_ANNOUNCE CTRL_MAC_ADDR RING_INDIRECT_DESC RING_EVENT_IDX
> >    VERSION_1 ACCESS_PLATFORM
> >
> > 2) provision vDPA device with a subset of the features
> >
> > # vdpa dev add name dev1 mgmtdev pci/0000:02:00.0 device_features 0x300020000
> > # dev1: mac 52:54:00:12:34:56 link up link_announce false mtu 65535
> >    negotiated_features CTRL_VQ VERSION_1 ACCESS_PLATFORM
> >
> > Reviewed-by: Eli Cohen <elic@nvidia.com>
> > Signed-off-by: Jason Wang <jasowang@redhat.com>
> > ---
> >   drivers/vdpa/virtio_pci/vp_vdpa.c | 16 ++++++++++++++--
> >   1 file changed, 14 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/vdpa/virtio_pci/vp_vdpa.c b/drivers/vdpa/virtio_pci/vp_vdpa.c
> > index 04522077735b..4b28e0c95ba2 100644
> > --- a/drivers/vdpa/virtio_pci/vp_vdpa.c
> > +++ b/drivers/vdpa/virtio_pci/vp_vdpa.c
> > @@ -17,6 +17,7 @@
> >   #include <linux/virtio_ring.h>
> >   #include <linux/virtio_pci.h>
> >   #include <linux/virtio_pci_modern.h>
> > +#include <uapi/linux/vdpa.h>
> >
> >   #define VP_VDPA_QUEUE_MAX 256
> >   #define VP_VDPA_DRIVER_NAME "vp_vdpa"
> > @@ -35,6 +36,7 @@ struct vp_vdpa {
> >       struct virtio_pci_modern_device *mdev;
> >       struct vp_vring *vring;
> >       struct vdpa_callback config_cb;
> > +     u64 device_features;
> >       char msix_name[VP_VDPA_NAME_SIZE];
> >       int config_irq;
> >       int queues;
> > @@ -66,9 +68,9 @@ static struct virtio_pci_modern_device *vp_vdpa_to_mdev(struct vp_vdpa *vp_vdpa)
> >
> >   static u64 vp_vdpa_get_device_features(struct vdpa_device *vdpa)
> >   {
> > -     struct virtio_pci_modern_device *mdev = vdpa_to_mdev(vdpa);
> > +     struct vp_vdpa *vp_vdpa = vdpa_to_vp(vdpa);
> >
> > -     return vp_modern_get_features(mdev);
> > +     return vp_vdpa->device_features;
> >   }
> >
> >   static int vp_vdpa_set_driver_features(struct vdpa_device *vdpa, u64 features)
> > @@ -475,6 +477,7 @@ static int vp_vdpa_dev_add(struct vdpa_mgmt_dev *v_mdev, const char *name,
> >       struct pci_dev *pdev = mdev->pci_dev;
> >       struct device *dev = &pdev->dev;
> >       struct vp_vdpa *vp_vdpa = NULL;
> > +     u64 device_features;
> >       int ret, i;
> >
> >       vp_vdpa = vdpa_alloc_device(struct vp_vdpa, vdpa,
> > @@ -491,6 +494,14 @@ static int vp_vdpa_dev_add(struct vdpa_mgmt_dev *v_mdev, const char *name,
> >       vp_vdpa->queues = vp_modern_get_num_queues(mdev);
> >       vp_vdpa->mdev = mdev;
> >
> > +     device_features = vp_modern_get_features(mdev);
> > +     if (add_config->mask & BIT_ULL(VDPA_ATTR_DEV_FEATURES)) {
> > +             if (add_config->device_features & ~device_features)
> > +                     return -EINVAL;
> Should use "goto err" rather than direct return. Also, would be the best
> to tell user the reason why device creation is failing. In the other
> places of the same function, dev_err() or dev_warn() is used.

Right, let me fix this.

Thanks

>
> -Siwei
>
> > +             device_features &= add_config->device_features;
> > +     }
> > +     vp_vdpa->device_features = device_features;
> > +
> >       ret = devm_add_action_or_reset(dev, vp_vdpa_free_irq_vectors, pdev);
> >       if (ret) {
> >               dev_err(&pdev->dev,
> > @@ -599,6 +610,7 @@ static int vp_vdpa_probe(struct pci_dev *pdev, const struct pci_device_id *id)
> >       mgtdev->id_table = mdev_id;
> >       mgtdev->max_supported_vqs = vp_modern_get_num_queues(mdev);
> >       mgtdev->supported_features = vp_modern_get_features(mdev);
> > +     mgtdev->config_attr_mask = (1 << VDPA_ATTR_DEV_FEATURES);
> >       pci_set_master(pdev);
> >       pci_set_drvdata(pdev, vp_vdpa_mgtdev);
> >
>


WARNING: multiple messages have this Message-ID (diff)
From: Jason Wang <jasowang@redhat.com>
To: Si-Wei Liu <si-wei.liu@oracle.com>
Cc: Cindy Lu <lulu@redhat.com>, mst <mst@redhat.com>,
	Yongji Xie <xieyongji@bytedance.com>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	Gautam Dawar <gdawar@xilinx.com>,
	virtualization <virtualization@lists.linux-foundation.org>,
	eperezma <eperezma@redhat.com>,
	Wu Zongyong <wuzongyong@linux.alibaba.com>,
	Eli Cohen <elic@nvidia.com>,
	Zhu Lingshan <lingshan.zhu@intel.com>
Subject: Re: [PATCH V2 3/3] vp_vdpa: support feature provisioning
Date: Mon, 26 Sep 2022 15:14:05 +0800	[thread overview]
Message-ID: <CACGkMEvHNdp1MCt4VLVGFnC-CEqgpur+uwXiRz1d6ke30L-iJg@mail.gmail.com> (raw)
In-Reply-To: <649cf77d-849b-1ed1-e804-3abab9e339d1@oracle.com>

On Sat, Sep 24, 2022 at 4:11 AM Si-Wei Liu <si-wei.liu@oracle.com> wrote:
>
>
>
> On 9/21/2022 7:43 PM, Jason Wang wrote:
> > This patch allows the device features to be provisioned via
> > netlink. This is done by:
> >
> > 1) validating the provisioned features to be a subset of the parent
> >     features.
> > 2) clearing the features that is not wanted by the userspace
> >
> > For example:
> >
> > # vdpa mgmtdev show
> > pci/0000:02:00.0:
> >    supported_classes net
> >    max_supported_vqs 3
> >    dev_features CSUM GUEST_CSUM CTRL_GUEST_OFFLOADS MAC GUEST_TSO4
> >    GUEST_TSO6 GUEST_ECN GUEST_UFO HOST_TSO4 HOST_TSO6 HOST_ECN HOST_UFO
> >    MRG_RXBUF STATUS CTRL_VQ CTRL_RX CTRL_VLAN CTRL_RX_EXTRA
> >    GUEST_ANNOUNCE CTRL_MAC_ADDR RING_INDIRECT_DESC RING_EVENT_IDX
> >    VERSION_1 ACCESS_PLATFORM
> >
> > 1) provision vDPA device with all features that are supported by the virtio-pci
> >
> > # vdpa dev add name dev1 mgmtdev pci/0000:02:00.0
> > # vdpa dev config show
> > dev1: mac 52:54:00:12:34:56 link up link_announce false mtu 65535
> >    negotiated_features CSUM GUEST_CSUM CTRL_GUEST_OFFLOADS MAC
> >    GUEST_TSO4 GUEST_TSO6 GUEST_ECN GUEST_UFO HOST_TSO4 HOST_TSO6
> >    HOST_ECN HOST_UFO MRG_RXBUF STATUS CTRL_VQ CTRL_RX CTRL_VLAN
> >    GUEST_ANNOUNCE CTRL_MAC_ADDR RING_INDIRECT_DESC RING_EVENT_IDX
> >    VERSION_1 ACCESS_PLATFORM
> >
> > 2) provision vDPA device with a subset of the features
> >
> > # vdpa dev add name dev1 mgmtdev pci/0000:02:00.0 device_features 0x300020000
> > # dev1: mac 52:54:00:12:34:56 link up link_announce false mtu 65535
> >    negotiated_features CTRL_VQ VERSION_1 ACCESS_PLATFORM
> >
> > Reviewed-by: Eli Cohen <elic@nvidia.com>
> > Signed-off-by: Jason Wang <jasowang@redhat.com>
> > ---
> >   drivers/vdpa/virtio_pci/vp_vdpa.c | 16 ++++++++++++++--
> >   1 file changed, 14 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/vdpa/virtio_pci/vp_vdpa.c b/drivers/vdpa/virtio_pci/vp_vdpa.c
> > index 04522077735b..4b28e0c95ba2 100644
> > --- a/drivers/vdpa/virtio_pci/vp_vdpa.c
> > +++ b/drivers/vdpa/virtio_pci/vp_vdpa.c
> > @@ -17,6 +17,7 @@
> >   #include <linux/virtio_ring.h>
> >   #include <linux/virtio_pci.h>
> >   #include <linux/virtio_pci_modern.h>
> > +#include <uapi/linux/vdpa.h>
> >
> >   #define VP_VDPA_QUEUE_MAX 256
> >   #define VP_VDPA_DRIVER_NAME "vp_vdpa"
> > @@ -35,6 +36,7 @@ struct vp_vdpa {
> >       struct virtio_pci_modern_device *mdev;
> >       struct vp_vring *vring;
> >       struct vdpa_callback config_cb;
> > +     u64 device_features;
> >       char msix_name[VP_VDPA_NAME_SIZE];
> >       int config_irq;
> >       int queues;
> > @@ -66,9 +68,9 @@ static struct virtio_pci_modern_device *vp_vdpa_to_mdev(struct vp_vdpa *vp_vdpa)
> >
> >   static u64 vp_vdpa_get_device_features(struct vdpa_device *vdpa)
> >   {
> > -     struct virtio_pci_modern_device *mdev = vdpa_to_mdev(vdpa);
> > +     struct vp_vdpa *vp_vdpa = vdpa_to_vp(vdpa);
> >
> > -     return vp_modern_get_features(mdev);
> > +     return vp_vdpa->device_features;
> >   }
> >
> >   static int vp_vdpa_set_driver_features(struct vdpa_device *vdpa, u64 features)
> > @@ -475,6 +477,7 @@ static int vp_vdpa_dev_add(struct vdpa_mgmt_dev *v_mdev, const char *name,
> >       struct pci_dev *pdev = mdev->pci_dev;
> >       struct device *dev = &pdev->dev;
> >       struct vp_vdpa *vp_vdpa = NULL;
> > +     u64 device_features;
> >       int ret, i;
> >
> >       vp_vdpa = vdpa_alloc_device(struct vp_vdpa, vdpa,
> > @@ -491,6 +494,14 @@ static int vp_vdpa_dev_add(struct vdpa_mgmt_dev *v_mdev, const char *name,
> >       vp_vdpa->queues = vp_modern_get_num_queues(mdev);
> >       vp_vdpa->mdev = mdev;
> >
> > +     device_features = vp_modern_get_features(mdev);
> > +     if (add_config->mask & BIT_ULL(VDPA_ATTR_DEV_FEATURES)) {
> > +             if (add_config->device_features & ~device_features)
> > +                     return -EINVAL;
> Should use "goto err" rather than direct return. Also, would be the best
> to tell user the reason why device creation is failing. In the other
> places of the same function, dev_err() or dev_warn() is used.

Right, let me fix this.

Thanks

>
> -Siwei
>
> > +             device_features &= add_config->device_features;
> > +     }
> > +     vp_vdpa->device_features = device_features;
> > +
> >       ret = devm_add_action_or_reset(dev, vp_vdpa_free_irq_vectors, pdev);
> >       if (ret) {
> >               dev_err(&pdev->dev,
> > @@ -599,6 +610,7 @@ static int vp_vdpa_probe(struct pci_dev *pdev, const struct pci_device_id *id)
> >       mgtdev->id_table = mdev_id;
> >       mgtdev->max_supported_vqs = vp_modern_get_num_queues(mdev);
> >       mgtdev->supported_features = vp_modern_get_features(mdev);
> > +     mgtdev->config_attr_mask = (1 << VDPA_ATTR_DEV_FEATURES);
> >       pci_set_master(pdev);
> >       pci_set_drvdata(pdev, vp_vdpa_mgtdev);
> >
>

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

  reply	other threads:[~2022-09-26  7:14 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-22  2:43 [PATCH V2 0/3] vdpa: device feature provisioning Jason Wang
2022-09-22  2:43 ` Jason Wang
2022-09-22  2:43 ` [PATCH V2 1/3] " Jason Wang
2022-09-22  2:43   ` Jason Wang
2022-09-22  2:43 ` [PATCH V2 2/3] vdpa_sim_net: support " Jason Wang
2022-09-22  2:43   ` Jason Wang
2022-09-22  5:13   ` Eli Cohen
2022-09-22  7:29     ` Michael S. Tsirkin
2022-09-22  7:29       ` Michael S. Tsirkin
2022-09-22  7:47       ` Eli Cohen
2022-09-22  7:53         ` Michael S. Tsirkin
2022-09-22  7:53           ` Michael S. Tsirkin
2022-09-22  8:01           ` Eli Cohen
2022-09-22  9:11             ` Michael S. Tsirkin
2022-09-22  9:11               ` Michael S. Tsirkin
2022-09-23  4:17               ` Jason Wang
2022-09-23  4:17                 ` Jason Wang
2022-09-23  4:20     ` Jason Wang
2022-09-23  4:20       ` Jason Wang
2022-09-22  9:22   ` Stefano Garzarella
2022-09-22  9:22     ` Stefano Garzarella
2022-09-23  3:33     ` Jason Wang
2022-09-23  3:33       ` Jason Wang
2022-09-23 20:01   ` Si-Wei Liu
2022-09-23 20:01     ` Si-Wei Liu
2022-09-26  7:11     ` Jason Wang
2022-09-26  7:11       ` Jason Wang
2022-09-26  7:11       ` Jason Wang
2022-09-26  7:11         ` Jason Wang
2022-09-27  1:01       ` Si-Wei Liu
2022-09-27  3:59         ` Jason Wang
2022-09-27  3:59           ` Jason Wang
2022-09-27  4:07           ` Jason Wang
2022-09-27  4:07             ` Jason Wang
2022-09-27 10:00             ` Si-Wei Liu
2022-09-29  4:10               ` Jason Wang
2022-09-29  4:10                 ` Jason Wang
2022-10-10 17:44                 ` Si-Wei Liu
2022-10-10 17:44                   ` Si-Wei Liu
2022-09-27  9:41           ` Si-Wei Liu
2022-09-29  4:55             ` Jason Wang
2022-09-29  4:55               ` Jason Wang
2022-10-07  0:35               ` Si-Wei Liu
2022-10-07  0:35                 ` Si-Wei Liu
2022-10-13  7:10                 ` Jason Wang
2022-10-13  7:10                   ` Jason Wang
2022-10-17 18:43                   ` Si-Wei Liu
2022-10-18  7:45                     ` Jason Wang
2022-10-18  7:45                       ` Jason Wang
2022-09-22  2:43 ` [PATCH V2 3/3] vp_vdpa: " Jason Wang
2022-09-22  2:43   ` Jason Wang
2022-09-23 20:11   ` Si-Wei Liu
2022-09-23 20:11     ` Si-Wei Liu
2022-09-26  7:14     ` Jason Wang [this message]
2022-09-26  7:14       ` Jason Wang

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=CACGkMEvHNdp1MCt4VLVGFnC-CEqgpur+uwXiRz1d6ke30L-iJg@mail.gmail.com \
    --to=jasowang@redhat.com \
    --cc=elic@nvidia.com \
    --cc=eperezma@redhat.com \
    --cc=gdawar@xilinx.com \
    --cc=lingshan.zhu@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lulu@redhat.com \
    --cc=mst@redhat.com \
    --cc=parav@nvidia.com \
    --cc=si-wei.liu@oracle.com \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=wuzongyong@linux.alibaba.com \
    --cc=xieyongji@bytedance.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.