All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Wang <jasowang@redhat.com>
To: Cornelia Huck <cohuck@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>
Cc: virtio-comment@lists.oasis-open.org,
	virtio-dev@lists.oasis-open.org, sgarzare@redhat.com,
	stefanha@redhat.com, nrupal.jani@intel.com,
	Piotr.Uminski@intel.com, hang.yuan@intel.com,
	virtio@lists.oasis-open.org,
	Zhu Lingshan <lingshan.zhu@intel.com>,
	pasic@linux.ibm.com, Shahaf Shuler <shahafs@nvidia.com>,
	Parav Pandit <parav@nvidia.com>,
	Max Gurtovoy <mgurtovoy@nvidia.com>
Subject: Re: [PATCH v9 01/10] virtio: document forward compatibility guarantees
Date: Mon, 28 Nov 2022 14:14:43 +0800	[thread overview]
Message-ID: <28de259e-d910-e37c-aeaa-01bfa7616ae0@redhat.com> (raw)
In-Reply-To: <87zgcfgw1a.fsf@redhat.com>


在 2022/11/25 18:37, Cornelia Huck 写道:
> On Fri, Nov 25 2022, Jason Wang <jasowang@redhat.com> wrote:
>
>> 在 2022/11/24 20:05, Cornelia Huck 写道:
>>> On Thu, Nov 24 2022, "Michael S. Tsirkin" <mst@redhat.com> wrote:
>>>
>>>> On Thu, Nov 24, 2022 at 03:34:19PM +0800, Jason Wang wrote:
>>>>> On Thu, Nov 24, 2022 at 2:59 PM Michael S. Tsirkin <mst@redhat.com> wrote:
>>>>>> On Thu, Nov 24, 2022 at 12:33:52PM +0800, Jason Wang wrote:
>>>>>>> On Thu, Nov 24, 2022 at 5:08 AM Michael S. Tsirkin <mst@redhat.com> wrote:
>>>>>>>> Feature negotiation forms the basis of forward compatibility
>>>>>>>> guarantees of virtio but has never been properly documented.
>>>>>>>> Do it now.
>>>>>>>>
>>>>>>>> Suggested-by: Halil Pasic <pasic@linux.ibm.com>
>>>>>>>> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>>>>>>>> ---
>>>>>>>>    content.tex | 42 ++++++++++++++++++++++++++++++++++++++++++
>>>>>>>>    1 file changed, 42 insertions(+)
>>>>>>>>
>>>>>>>> diff --git a/content.tex b/content.tex
>>>>>>>> index 3051399..e3203be 100644
>>>>>>>> --- a/content.tex
>>>>>>>> +++ b/content.tex
>>>>>>>> @@ -114,21 +114,63 @@ \section{Feature Bits}\label{sec:Basic Facilities of a Virtio Device / Feature B
>>>>>>>>    In particular, new fields in the device configuration space are
>>>>>>>>    indicated by offering a new feature bit.
>>>>>>>>
>>>>>>>> +To keep te feature negotiation mechanism extensible, it is important
>>>>>>>> +that devices \em{do not} offer any feature bits that they would not be
>>>>>>>> +able to handle if the driver accepted them (even though drivers are not
>>>>>>>> +supposed to accept them in the first place even if offered, according to
>>>>>>>> +this version of the specification.)
>>>>>>> It looks to me if we want to clarify like this, feature negotiation is
>>>>>>> not sufficient. Do we need to do something similar in other basic
>>>>>>> facilities? Generally, we probably need to do this for facilities that
>>>>>>> are similar to features (status, virtqueue size and others).
>>>>>> I'm not sure about "not sufficient". It's sufficient as long
>>>>>> as you just want to extend features. What triggered this
>>>>>> work is adding a transport specific feature.
>>>>> E.g:
>>>>>
>>>>> For status: Devices do not offer any status bit it would not be able to handle.
>>>>> For virtqueue size:  Devices do not offer virtqueue size it would not
>>>>> be able to handle.
>>>>>
>>>>> ?
>>>> Jason I think what you miss here is this part:
>>>>
>>>> "even though drivers are not
>>>> supposed to accept them in the first place even if offered, according to
>>>> this version of the specification"
>>>>
>>>> does not apply to status and virtqueue size.
>>>>
>>>>
>>>> Let me clarify what all this means.
>>>> It seems safe for a device to offer a reserved feature bit
>>
>> This depends really on the behaviour of the drivers.
>>
>>
>>>> since drivers are not supposed to accept it.
>>
>> So this is the case of the ADMIN_VQ.
>>
>>
>>>> This text says device must not rely on this.
>>>>
>>>> How would this apply to status or vq size? I don't see.
>>> Me neither... for the status, it's about either the driver noting its
>>> progress, or the device indicating that a reset is needed. The only case
>>> where setting something requires kind of an ack is FEATURES_OK, and
>>> there we already spell out the conditions clearly.
>>
>> I basically meant something like:
>>
>> Assuming we have a feature like VIRTIO_RING_F_NEW and a new status bit
>> was mapped to this feature, VIRTIO_CONFIG_S_NEW. And for some reason
>> this feature is reserved for some transports. Should we mention device
>> does not offer VIRTIO_CONFIG_S_NEW as well, or we assume it is implied
>> that we don't offer VIRTIO_CONFIG_S_NEW in this case?
> I'm not sure that adding a feature-specific status bit would make sense,
> given that the status bits either need to work before feature
> negotiation is complete, or are actually needed for feature negotiation.


It can work only after the feature negotiation. E.g the device stop 
(only makes sense after DRIVER_OK is set).


> Also, the status-bit space is way more limited than the feature-bit
> space. Therefore, I think we can safely ignore the status bits.
>
>>
>>> For the queue size,
>>> we specify that the device states what it can support, and that the
>>> driver may only reduce it, that seems clear enough to me.
>>
>> Similar to the above, assuming a feature VIRTIO_R_F_MAXSIZE_XXX, and it
>> is reserved. Should we mention that the new max virtqueue size should
>> not be advertised or it is implied in the feature advertisement?
> I'd say it's implied in the feature bit handling already.


Ok.

Thanks

>


  reply	other threads:[~2022-11-28  6:14 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-23 21:07 [PATCH v9 00/10] Introduce device group and device management Michael S. Tsirkin
2022-11-23 21:08 ` [PATCH v9 01/10] virtio: document forward compatibility guarantees Michael S. Tsirkin
2022-11-24  4:33   ` Jason Wang
2022-11-24  6:59     ` Michael S. Tsirkin
2022-11-24  7:34       ` Jason Wang
2022-11-24  8:15         ` Michael S. Tsirkin
2022-11-24 12:05           ` [virtio-dev] " Cornelia Huck
2022-11-25  3:17             ` Jason Wang
2022-11-25 10:37               ` [virtio-dev] " Cornelia Huck
2022-11-28  6:14                 ` Jason Wang [this message]
2022-11-23 21:08 ` [PATCH v9 02/10] admin: introduce device group and related concepts Michael S. Tsirkin
2022-11-24  5:41   ` Jason Wang
2022-11-24  7:08     ` Michael S. Tsirkin
2022-11-24  7:37       ` [virtio-dev] " Jason Wang
2022-11-24  8:18         ` Michael S. Tsirkin
2022-11-24 12:12           ` Cornelia Huck
2022-11-25  3:23             ` Jason Wang
2022-11-25 10:58               ` [virtio] " Cornelia Huck
2022-11-25 12:08               ` Michael S. Tsirkin
2022-11-23 21:08 ` [PATCH v9 03/10] admin: introduce group administration commands Michael S. Tsirkin
2022-11-24  5:52   ` [virtio-dev] " Jason Wang
2022-11-24  7:12     ` Michael S. Tsirkin
2022-11-24  7:42       ` Jason Wang
2022-11-24  8:03         ` Michael S. Tsirkin
2022-11-25  3:24           ` [virtio-comment] " Jason Wang
2022-11-24 12:21     ` [virtio-dev] " Cornelia Huck
2022-11-25  3:54       ` Jason Wang
2022-11-28 13:14   ` [virtio-comment] " Zhu Lingshan
2022-11-23 21:08 ` [PATCH v9 04/10] admin: introduce virtio admin virtqueues Michael S. Tsirkin
2022-11-28 13:12   ` [virtio-comment] " Zhu Lingshan
2022-11-23 21:08 ` [PATCH v9 05/10] pci: add admin vq registers to virtio over pci Michael S. Tsirkin
2022-11-24  6:00   ` Jason Wang
2022-11-24  7:14     ` Michael S. Tsirkin
2022-11-24  7:46       ` Jason Wang
2022-11-24  8:09         ` Michael S. Tsirkin
2022-11-25  3:27           ` Jason Wang
2022-11-23 21:08 ` [PATCH v9 06/10] mmio: document ADMIN_VQ as reserved Michael S. Tsirkin
2022-11-24  6:03   ` Jason Wang
2022-11-24  7:45     ` Michael S. Tsirkin
2022-11-23 21:08 ` [PATCH v9 07/10] ccw: " Michael S. Tsirkin
2022-11-23 21:08 ` [PATCH v9 08/10] admin: command list discovery Michael S. Tsirkin
2022-11-24  6:40   ` Jason Wang
2022-11-24  8:30     ` Michael S. Tsirkin
2022-11-25  3:38       ` [virtio-comment] " Jason Wang
2022-11-25 11:43         ` Michael S. Tsirkin
2022-11-28  4:34           ` Jason Wang
2022-11-28  7:42             ` Michael S. Tsirkin
2022-11-23 21:08 ` [PATCH v9 09/10] admin: conformance clauses Michael S. Tsirkin
2022-11-24  6:51   ` Jason Wang
2022-11-24  8:36     ` Michael S. Tsirkin
2022-11-25  3:50       ` Jason Wang
2022-11-25 11:42         ` [virtio] " Cornelia Huck
2022-11-25 11:56           ` Michael S. Tsirkin
2022-11-25 12:10             ` [virtio] " Cornelia Huck
2022-11-25 11:47         ` Michael S. Tsirkin
2022-11-28  4:32           ` Jason Wang
2022-11-28  7:39             ` Michael S. Tsirkin
2022-11-24 12:28     ` [virtio] " Cornelia Huck
2022-11-25  3:38       ` Jason Wang
2022-11-23 21:08 ` [PATCH RFC v9 10/10] ccw: document more reserved features Michael S. Tsirkin
2022-11-24  6:53   ` Jason Wang
2022-11-24  8:31     ` 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=28de259e-d910-e37c-aeaa-01bfa7616ae0@redhat.com \
    --to=jasowang@redhat.com \
    --cc=Piotr.Uminski@intel.com \
    --cc=cohuck@redhat.com \
    --cc=hang.yuan@intel.com \
    --cc=lingshan.zhu@intel.com \
    --cc=mgurtovoy@nvidia.com \
    --cc=mst@redhat.com \
    --cc=nrupal.jani@intel.com \
    --cc=parav@nvidia.com \
    --cc=pasic@linux.ibm.com \
    --cc=sgarzare@redhat.com \
    --cc=shahafs@nvidia.com \
    --cc=stefanha@redhat.com \
    --cc=virtio-comment@lists.oasis-open.org \
    --cc=virtio-dev@lists.oasis-open.org \
    --cc=virtio@lists.oasis-open.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.