netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Si-Wei Liu <si-wei.liu@oracle.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Parav Pandit <parav@nvidia.com>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"virtualization@lists.linux-foundation.org" 
	<virtualization@lists.linux-foundation.org>,
	"xieyongji@bytedance.com" <xieyongji@bytedance.com>,
	"gautam.dawar@amd.com" <gautam.dawar@amd.com>,
	"Zhu, Lingshan" <lingshan.zhu@intel.com>
Subject: Re: [PATCH V3 5/6] vDPA: answer num of queue pairs = 1 to userspace when VIRTIO_NET_F_MQ == 0
Date: Wed, 27 Jul 2022 03:09:43 -0700	[thread overview]
Message-ID: <6d5b03ee-5362-8534-5881-a34c9ea626f0@oracle.com> (raw)
In-Reply-To: <20220727050102-mutt-send-email-mst@kernel.org>



On 7/27/2022 2:01 AM, Michael S. Tsirkin wrote:
> On Wed, Jul 27, 2022 at 12:50:33AM -0700, Si-Wei Liu wrote:
>>
>> On 7/26/2022 11:01 PM, Michael S. Tsirkin wrote:
>>> On Wed, Jul 27, 2022 at 03:47:35AM +0000, Parav Pandit wrote:
>>>>> From: Zhu, Lingshan <lingshan.zhu@intel.com>
>>>>> Sent: Tuesday, July 26, 2022 10:53 PM
>>>>>
>>>>> On 7/27/2022 10:17 AM, Parav Pandit wrote:
>>>>>>> From: Zhu, Lingshan <lingshan.zhu@intel.com>
>>>>>>> Sent: Tuesday, July 26, 2022 10:15 PM
>>>>>>>
>>>>>>> On 7/26/2022 11:56 PM, Parav Pandit wrote:
>>>>>>>>> From: Zhu, Lingshan <lingshan.zhu@intel.com>
>>>>>>>>> Sent: Tuesday, July 12, 2022 11:46 PM
>>>>>>>>>> When the user space which invokes netlink commands, detects that
>>>>>>> _MQ
>>>>>>>>> is not supported, hence it takes max_queue_pair = 1 by itself.
>>>>>>>>> I think the kernel module have all necessary information and it is
>>>>>>>>> the only one which have precise information of a device, so it
>>>>>>>>> should answer precisely than let the user space guess. The kernel
>>>>>>>>> module should be reliable than stay silent, leave the question to
>>>>>>>>> the user space
>>>>>>> tool.
>>>>>>>> Kernel is reliable. It doesn’t expose a config space field if the
>>>>>>>> field doesn’t
>>>>>>> exist regardless of field should have default or no default.
>>>>>>> so when you know it is one queue pair, you should answer one, not try
>>>>>>> to guess.
>>>>>>>> User space should not guess either. User space gets to see if _MQ
>>>>>>> present/not present. If _MQ present than get reliable data from kernel.
>>>>>>>> If _MQ not present, it means this device has one VQ pair.
>>>>>>> it is still a guess, right? And all user space tools implemented this
>>>>>>> feature need to guess
>>>>>> No. it is not a guess.
>>>>>> It is explicitly checking the _MQ feature and deriving the value.
>>>>>> The code you proposed will be present in the user space.
>>>>>> It will be uniform for _MQ and 10 other features that are present now and
>>>>> in the future.
>>>>> MQ and other features like RSS are different. If there is no _RSS_XX, there
>>>>> are no attributes like max_rss_key_size, and there is not a default value.
>>>>> But for MQ, we know it has to be 1 wihtout _MQ.
>>>> "we" = user space.
>>>> To keep the consistency among all the config space fields.
>>> Actually I looked and the code some more and I'm puzzled:
>>>
>>>
>>> 	struct virtio_net_config config = {};
>>> 	u64 features;
>>> 	u16 val_u16;
>>>
>>> 	vdpa_get_config_unlocked(vdev, 0, &config, sizeof(config));
>>>
>>> 	if (nla_put(msg, VDPA_ATTR_DEV_NET_CFG_MACADDR, sizeof(config.mac),
>>> 		    config.mac))
>>> 		return -EMSGSIZE;
>>>
>>>
>>> Mac returned even without VIRTIO_NET_F_MAC
>>>
>>>
>>> 	val_u16 = le16_to_cpu(config.status);
>>> 	if (nla_put_u16(msg, VDPA_ATTR_DEV_NET_STATUS, val_u16))
>>> 		return -EMSGSIZE;
>>>
>>>
>>> status returned even without VIRTIO_NET_F_STATUS
>>>
>>> 	val_u16 = le16_to_cpu(config.mtu);
>>> 	if (nla_put_u16(msg, VDPA_ATTR_DEV_NET_CFG_MTU, val_u16))
>>> 		return -EMSGSIZE;
>>>
>>>
>>> MTU returned even without VIRTIO_NET_F_MTU
>>>
>>>
>>> What's going on here?
>>>
>>>
>> I guess this is spec thing (historical debt), I vaguely recall these fields
>> are always present in config space regardless the existence of corresponding
>> feature bit.
>>
>> -Siwei
> Nope:
>
> 2.5.1  Driver Requirements: Device Configuration Space
>
> ...
>
> For optional configuration space fields, the driver MUST check that the corresponding feature is offered
> before accessing that part of the configuration space.
Well, this is driver side of requirement. As this interface is for host 
admin tool to query or configure vdpa device, we don't have to wait 
until feature negotiation is done on guest driver to extract vdpa 
attributes/parameters, say if we want to replicate another vdpa device 
with the same config on migration destination. I think what may need to 
be fix is to move off from using .vdpa_get_config_unlocked() which 
depends on feature negotiation. And/or expose config space register 
values through another set of attributes.

-Siwei





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

Thread overview: 113+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-01 13:28 [PATCH V3 0/6] ifcvf/vDPA: support query device config space through netlink Zhu Lingshan
2022-07-01 13:28 ` [PATCH V3 1/6] vDPA/ifcvf: get_config_size should return a value no greater than dev implementation Zhu Lingshan
2022-07-04  4:39   ` Jason Wang
2022-07-08  6:44     ` Zhu, Lingshan
2022-07-13  5:44       ` Michael S. Tsirkin
2022-07-13  7:52         ` Zhu, Lingshan
2022-07-13  5:31   ` Michael S. Tsirkin
2022-07-13  7:48     ` Zhu, Lingshan
2022-07-01 13:28 ` [PATCH V3 2/6] vDPA/ifcvf: support userspace to query features and MQ of a management device Zhu Lingshan
2022-07-04  4:43   ` Jason Wang
2022-07-08  6:54     ` Zhu, Lingshan
2022-07-01 13:28 ` [PATCH V3 3/6] vDPA: allow userspace to query features of a vDPA device Zhu Lingshan
2022-07-01 22:02   ` Parav Pandit
2022-07-04  4:46     ` Jason Wang
2022-07-04 12:53       ` Parav Pandit
2022-07-05  7:59         ` Zhu, Lingshan
2022-07-05 11:56           ` Parav Pandit
2022-07-05 16:56             ` Zhu, Lingshan
2022-07-05 17:01               ` Parav Pandit
2022-07-06  2:25                 ` Zhu, Lingshan
2022-07-06  2:28                   ` Parav Pandit
2022-07-23 11:27                   ` Zhu, Lingshan
2022-07-24 15:23                     ` Parav Pandit
2022-07-27  8:15             ` Si-Wei Liu
2022-07-27 11:38               ` Zhu, Lingshan
2022-07-08  6:16     ` Zhu, Lingshan
2022-07-08 16:13       ` Parav Pandit
2022-07-11  2:18         ` Zhu, Lingshan
2022-07-01 13:28 ` [PATCH V3 4/6] vDPA: !FEATURES_OK should not block querying device config space Zhu Lingshan
2022-07-01 22:12   ` Parav Pandit
2022-07-08  6:22     ` Zhu, Lingshan
2022-07-13  5:23     ` Michael S. Tsirkin
2022-07-13  7:46       ` Zhu, Lingshan
     [not found]     ` <00889067-50ac-d2cd-675f-748f171e5c83@oracle.com>
     [not found]       ` <63242254-ba84-6810-dad8-34f900b97f2f@intel.com>
     [not found]         ` <8002554a-a77c-7b25-8f99-8d68248a741d@oracle.com>
2022-07-28  2:06           ` Jason Wang
2022-07-28  7:08             ` Si-Wei Liu
2022-07-28  7:36               ` Jason Wang
2022-07-28  7:44                 ` Zhu, Lingshan
     [not found]                 ` <2dfff5f3-3100-4a63-6da3-3e3d21ffb364@oracle.com>
2022-07-28 11:28                   ` spec clarification (was Re: [PATCH V3 4/6] vDPA: !FEATURES_OK should not block querying device config space) Michael S. Tsirkin
2022-07-28 11:35               ` [PATCH V3 4/6] vDPA: !FEATURES_OK should not block querying device config space Michael S. Tsirkin
2022-07-28 22:12                 ` Si-Wei Liu
     [not found]           ` <00e2e07e-1a2e-7af8-a060-cc9034e0d33f@intel.com>
     [not found]             ` <b58dba25-3258-d600-ea06-879094639852@oracle.com>
     [not found]               ` <c143e2da-208e-b046-9b8f-1780f75ed3e6@intel.com>
2022-07-29 20:55                 ` Si-Wei Liu
2022-08-01  4:44                   ` Jason Wang
2022-08-01 22:53                     ` Si-Wei Liu
2022-08-01 22:58                       ` Si-Wei Liu
2022-08-02  6:33                         ` Jason Wang
2022-08-03  1:26                           ` Si-Wei Liu
2022-08-03  2:30                             ` Zhu, Lingshan
2022-08-03 23:09                               ` Si-Wei Liu
2022-08-04  1:41                                 ` Zhu, Lingshan
2022-08-04  1:41                                 ` Zhu, Lingshan
2022-07-01 13:28 ` [PATCH V3 5/6] vDPA: answer num of queue pairs = 1 to userspace when VIRTIO_NET_F_MQ == 0 Zhu Lingshan
2022-07-01 22:07   ` Parav Pandit
2022-07-08  6:21     ` Zhu, Lingshan
2022-07-08 16:23       ` Parav Pandit
2022-07-11  2:29         ` Zhu, Lingshan
2022-07-12 16:48           ` Parav Pandit
2022-07-13  3:03             ` Zhu, Lingshan
2022-07-13  3:06               ` Parav Pandit
2022-07-13  3:45                 ` Zhu, Lingshan
2022-07-26 15:56                   ` Parav Pandit
2022-07-26 19:52                     ` Michael S. Tsirkin
2022-07-26 20:49                       ` Parav Pandit
2022-07-27  2:14                     ` Zhu, Lingshan
2022-07-27  2:17                       ` Parav Pandit
2022-07-27  2:53                         ` Zhu, Lingshan
2022-07-27  3:47                           ` Parav Pandit
2022-07-27  4:24                             ` Zhu, Lingshan
2022-07-27  6:01                             ` Michael S. Tsirkin
2022-07-27  6:25                               ` Zhu, Lingshan
2022-07-27  6:56                                 ` Jason Wang
2022-07-27  9:05                                   ` Michael S. Tsirkin
2022-07-27  6:54                               ` Jason Wang
2022-07-27  9:02                                 ` Michael S. Tsirkin
2022-07-27  9:50                                   ` Jason Wang
2022-07-27 15:45                                     ` Michael S. Tsirkin
2022-07-28  1:21                                       ` Jason Wang
2022-07-28  3:46                                         ` Zhu, Lingshan
2022-07-28  5:53                                           ` Jason Wang
2022-07-28  6:02                                             ` Zhu, Lingshan
2022-07-28  6:41                                             ` Michael S. Tsirkin
2022-08-01  4:50                                               ` Jason Wang
2022-07-27  7:50                               ` Si-Wei Liu
2022-07-27  9:01                                 ` Michael S. Tsirkin
2022-07-27 10:09                                   ` Si-Wei Liu [this message]
2022-07-27 11:54                                     ` Zhu, Lingshan
2022-07-28  1:41                                       ` Si-Wei Liu
2022-07-28  2:44                                         ` Zhu, Lingshan
2022-07-28 21:54                                           ` Si-Wei Liu
2022-07-29  2:07                                             ` Zhu, Lingshan
2022-07-27 15:48                                     ` Michael S. Tsirkin
2022-07-13  5:26     ` Michael S. Tsirkin
2022-07-13  7:47       ` Zhu, Lingshan
2022-07-26 15:54       ` Parav Pandit
2022-07-26 19:48         ` Michael S. Tsirkin
2022-07-26 20:53           ` Parav Pandit
2022-07-27  1:56             ` Zhu, Lingshan
2022-07-27  2:11             ` Zhu, Lingshan
2022-07-01 13:28 ` [PATCH V3 6/6] vDPA: fix 'cast to restricted le16' warnings in vdpa.c Zhu Lingshan
2022-07-01 22:18   ` Parav Pandit
2022-07-08  6:25     ` Zhu, Lingshan
2022-07-08 16:08       ` Parav Pandit
2022-07-29  8:53   ` Michael S. Tsirkin
2022-07-29  9:07     ` Zhu, Lingshan
2022-07-29  9:17       ` Michael S. Tsirkin
2022-07-29  9:20         ` Zhu, Lingshan
2022-07-29  9:23           ` Michael S. Tsirkin
2022-07-29  9:35             ` Zhu, Lingshan
2022-07-29  9:39               ` Michael S. Tsirkin
2022-07-29 10:01                 ` Zhu, Lingshan
2022-07-29 10:16                   ` Michael S. Tsirkin
2022-07-29 10:18                     ` Zhu, Lingshan
2022-08-01  4:33                 ` Jason Wang
2022-08-01  6:25                   ` Michael S. Tsirkin

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=6d5b03ee-5362-8534-5881-a34c9ea626f0@oracle.com \
    --to=si-wei.liu@oracle.com \
    --cc=gautam.dawar@amd.com \
    --cc=lingshan.zhu@intel.com \
    --cc=mst@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=parav@nvidia.com \
    --cc=virtualization@lists.linux-foundation.org \
    --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 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).