[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [virtio-comment] VirtIO spec issue - Available Buffer Notification Suppression
On Mon, Feb 11, 2019 at 01:58:09AM -0500, Michael S. Tsirkin wrote: > On Thu, Jan 31, 2019 at 01:16:29PM +0000, Savir, Gil wrote: > > Hi, > > > > > > > > If VIRTIO_F_EVENT_IDX feature bit is negotiated, then Available Buffer > > Notification Suppression mechanism used is avail event (not flags). > > > > The spec (both v1.0 / v1.1-draft) states that the device MAY use this mechanism > > (Paragraph 2.4.9.2 / 2.6.10.2 respectively). > > > > This statement implies that the device may choose not to use this suppression > > mechanism (even if VIRTIO_F_EVENT_IDX was negotiated). > > > > > > > > However â thereâs no way for the device to inform the driver that he is not > > using avail_event. > > > > As consequence, since there will be a default value in avail_event (probably > > 0x0), then the driver will always assume that it has to send notify âonce-per > > ringâ. > > > No I think this part is wrong, pls see below. > > > > This will render performance futile, or force the device to actively update > > avail_event. > > > > > > > > Is there a way for the device to inform the driver that he is not using > > avail_event (and I missed it)? > > > > > > > > If yes, than my apologies for wasting your time. > > > > If no, then I suggest one of the following: > > > > Â Either, to change the âMAYâ (referred above) to âMUSTâ, > > > > Thanks for the feedback! > > So we are talking about split queues. > > If avail_event is never set and remains 0, driver will send > notifications every time index wraps around to 0, which > would be every 2^16. > > This is I think expected since the spec says: > > The device MUST handle spurious notifications from the driver. > > 2^16 does not seem excessive so I don't think it will render performance > futile. To add to that, above is based on 2.6.10.1 Driver Requirements: Available Buffer Notification Suppression which states: After the driver writes a descriptor index into the available ring: â If the idx field in the available ring (which determined where that descriptor index was placed) was equal to avail_event, the driver MUST send a notification. â Otherwise the driver SHOULD NOT send a notification. Pls let the TC know whether taking the above into account you think further clarification in the spec is necessary. Thanks! > > Â Or, to add way for the device to inform the driver that he is not > > using avail_event (flag /certain reserved value in avail_event /other > > mechanism). > > > > > > > > Thanks, > > > > Gil Savir > > > > Intel Corporation > > It might be a good addition to spec, probably along the lines > of an option to send notifications on > even suppression changes (which was proposed in the past, but > was not included due to lack of time). > > -- > MST
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]