All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Zhu, Lingshan" <lingshan.zhu@intel.com>
To: Jason Wang <jasowang@redhat.com>
Cc: mst@redhat.com, virtualization@lists.linux-foundation.org,
	netdev@vger.kernel.org, kvm@vger.kernel.org
Subject: Re: [PATCH V2 RESEND 1/6] vDPA: allow userspace to query features of a vDPA device
Date: Tue, 27 Sep 2022 18:02:14 +0800	[thread overview]
Message-ID: <4d9b3ea4-b9b2-a2c6-67a4-b2f57e6491d4@intel.com> (raw)
In-Reply-To: <CACGkMEtDmG=YvcVcvO1c371sk5wvz+UO1i4keZXA2f4PrXzXBg@mail.gmail.com>



On 9/27/2022 12:36 PM, Jason Wang wrote:
> On Tue, Sep 27, 2022 at 11:09 AM Zhu Lingshan <lingshan.zhu@intel.com> wrote:
>> This commit adds a new vDPA netlink attribution
>> VDPA_ATTR_VDPA_DEV_SUPPORTED_FEATURES. Userspace can query
>> features of vDPA devices through this new attr.
>>
>> This commit invokes vdpa_config_ops.get_config()
>> rather than vdpa_get_config_unlocked() to read
>> the device config spcae, so no races in
>> vdpa_set_features_unlocked()
>>
>> Userspace tool iproute2 example:
>> $ vdpa dev config show vdpa0
>> vdpa0: mac 00:e8:ca:11:be:05 link up link_announce false max_vq_pairs 4 mtu 1500
>>    negotiated_features MRG_RXBUF CTRL_VQ MQ VERSION_1 ACCESS_PLATFORM
>>    dev_features MTU MAC MRG_RXBUF CTRL_VQ MQ ANY_LAYOUT VERSION_1 ACCESS_PLATFORM
>>
>> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com>
>> ---
>>   drivers/vdpa/vdpa.c       | 17 ++++++++++++-----
>>   include/uapi/linux/vdpa.h |  4 ++++
>>   2 files changed, 16 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/vdpa/vdpa.c b/drivers/vdpa/vdpa.c
>> index c06c02704461..2035700d6fc8 100644
>> --- a/drivers/vdpa/vdpa.c
>> +++ b/drivers/vdpa/vdpa.c
>> @@ -491,6 +491,7 @@ static int vdpa_mgmtdev_fill(const struct vdpa_mgmt_dev *mdev, struct sk_buff *m
>>                  err = -EMSGSIZE;
>>                  goto msg_err;
>>          }
>> +
> Nit: Unnecessary changes.
oh, yes!
>
>>          if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_SUPPORTED_FEATURES,
>>                                mdev->supported_features, VDPA_ATTR_PAD)) {
>>                  err = -EMSGSIZE;
>> @@ -815,10 +816,10 @@ static int vdpa_dev_net_mq_config_fill(struct vdpa_device *vdev,
>>   static int vdpa_dev_net_config_fill(struct vdpa_device *vdev, struct sk_buff *msg)
>>   {
>>          struct virtio_net_config config = {};
>> -       u64 features;
>> +       u64 features_device, features_driver;
>>          u16 val_u16;
>>
>> -       vdpa_get_config_unlocked(vdev, 0, &config, sizeof(config));
>> +       vdev->config->get_config(vdev, 0, &config, sizeof(config));
>>
>>          if (nla_put(msg, VDPA_ATTR_DEV_NET_CFG_MACADDR, sizeof(config.mac),
>>                      config.mac))
>> @@ -832,12 +833,18 @@ static int vdpa_dev_net_config_fill(struct vdpa_device *vdev, struct sk_buff *ms
>>          if (nla_put_u16(msg, VDPA_ATTR_DEV_NET_CFG_MTU, val_u16))
>>                  return -EMSGSIZE;
>>
>> -       features = vdev->config->get_driver_features(vdev);
>> -       if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_NEGOTIATED_FEATURES, features,
>> +       features_driver = vdev->config->get_driver_features(vdev);
>> +       if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_NEGOTIATED_FEATURES, features_driver,
>> +                             VDPA_ATTR_PAD))
>> +               return -EMSGSIZE;
> It looks to me that those parts were removed in patch 2. I wonder if
> it's better to reorder the patch to let patch 2 come first?
I am not sure, if we apply patch 2(check FEATURES_OK in 
vdpa_dev_config_fill and report driver features there) first,
we need to remove driver_features in vdpa_dev_net_config_fill(),
however, we still not introduce and initialize device features(which is 
in patch 1, introduce device_features) yet,
so the last line "return vdpa_dev_net_mq_config_fill()" which needs 
features as its parameter may not work,
filling NULL looks worse than keep features_driver here.

Thanks
Zhu Lingshan
>
> Thanks
>
>> +
>> +       features_device = vdev->config->get_device_features(vdev);
>> +
>> +       if (nla_put_u64_64bit(msg, VDPA_ATTR_VDPA_DEV_SUPPORTED_FEATURES, features_device,
>>                                VDPA_ATTR_PAD))
>>                  return -EMSGSIZE;
>>
>> -       return vdpa_dev_net_mq_config_fill(vdev, msg, features, &config);
>> +       return vdpa_dev_net_mq_config_fill(vdev, msg, features_driver, &config);
>>   }
>>
>>   static int
>> diff --git a/include/uapi/linux/vdpa.h b/include/uapi/linux/vdpa.h
>> index 25c55cab3d7c..07474183fdb3 100644
>> --- a/include/uapi/linux/vdpa.h
>> +++ b/include/uapi/linux/vdpa.h
>> @@ -46,12 +46,16 @@ enum vdpa_attr {
>>
>>          VDPA_ATTR_DEV_NEGOTIATED_FEATURES,      /* u64 */
>>          VDPA_ATTR_DEV_MGMTDEV_MAX_VQS,          /* u32 */
>> +       /* virtio features that are supported by the vDPA management device */
>>          VDPA_ATTR_DEV_SUPPORTED_FEATURES,       /* u64 */
>>
>>          VDPA_ATTR_DEV_QUEUE_INDEX,              /* u32 */
>>          VDPA_ATTR_DEV_VENDOR_ATTR_NAME,         /* string */
>>          VDPA_ATTR_DEV_VENDOR_ATTR_VALUE,        /* u64 */
>>
>> +       /* virtio features that are supported by the vDPA device */
>> +       VDPA_ATTR_VDPA_DEV_SUPPORTED_FEATURES,  /* u64 */
>> +
>>          /* new attributes must be added above here */
>>          VDPA_ATTR_MAX,
>>   };
>> --
>> 2.31.1
>>


  reply	other threads:[~2022-09-27 10:02 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-27  3:01 [PATCH V2 RESEND 0/6] Conditionally read fields in dev cfg space Zhu Lingshan
2022-09-27  3:01 ` [PATCH V2 RESEND 1/6] vDPA: allow userspace to query features of a vDPA device Zhu Lingshan
2022-09-27  4:36   ` Jason Wang
2022-09-27  4:36     ` Jason Wang
2022-09-27 10:02     ` Zhu, Lingshan [this message]
2022-09-27  3:01 ` [PATCH V2 RESEND 2/6] vDPA: only report driver features if FEATURES_OK is set Zhu Lingshan
2022-09-27  4:37   ` Jason Wang
2022-09-27  4:37     ` Jason Wang
2022-09-27 10:02     ` Zhu, Lingshan
2022-09-27  3:01 ` [PATCH V2 RESEND 3/6] vDPA: check VIRTIO_NET_F_RSS for max_virtqueue_paris's presence Zhu Lingshan
2022-09-27  4:38   ` Jason Wang
2022-09-27  4:38     ` Jason Wang
2022-09-27  3:01 ` [PATCH V2 RESEND 4/6] vDPA: check virtio device features to detect MQ Zhu Lingshan
2022-09-27  4:38   ` Jason Wang
2022-09-27  4:38     ` Jason Wang
2022-09-27  3:01 ` [PATCH V2 RESEND 5/6] vDPA: fix spars cast warning in vdpa_dev_net_mq_config_fill Zhu Lingshan
2022-09-27  4:38   ` Jason Wang
2022-09-27  4:38     ` Jason Wang
2022-09-27  3:01 ` [PATCH V2 RESEND 6/6] vDPA: conditionally read MTU and MAC in dev cfg space Zhu Lingshan

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=4d9b3ea4-b9b2-a2c6-67a4-b2f57e6491d4@intel.com \
    --to=lingshan.zhu@intel.com \
    --cc=jasowang@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=netdev@vger.kernel.org \
    --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 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.