[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: (VIRTIO-13) Remove VIRTIO_F_NOTIFY_ON_EMPTY?
Rusty Russell <firstname.lastname@example.org> writes: > OASIS Issues Tracker <email@example.com> writes: >> Remove VIRTIO_F_NOTIFY_ON_EMPTY? >> --------------------------------- >> >> Key: VIRTIO-13 >> URL: http://tools.oasis-open.org/issues/browse/VIRTIO-13 >> Project: OASIS Virtual I/O Device (VIRTIO) TC >> Issue Type: Improvement >> Reporter: Rusty Russell >> >> >> Notify on empty means that the device interrupts even if it wouldn't normally, in the case where a normally-full virtqueue is empty. >> >> ISTR this was a performance hack; it's no longer used in Linux anyway, and performance issues may have been due to a race which sometimes lost interrupts :) > > Which would look something like this: This is updated on the more recent draft, using an explicit legacy section: commit 65b90ebe8be6a55c4c3c5033d597a6c3de87adf8 Author: Rusty Russell <firstname.lastname@example.org> Date: Mon Sep 9 16:55:06 2013 +0930 Remove VIRTIO_F_NOTIFY_ON_EMPTY As per http://tools.oasis-open.org/issues/browse/VIRTIO-13 (Includes le8 -> u8 fix) Signed-off-by: Rusty Russell <email@example.com> diff --git a/virtio-v1.0-wd01-part1-specification.txt b/virtio-v1.0-wd01-part1-specification.txt index 9b0bbca..aea3b3f 100644 --- a/virtio-v1.0-wd01-part1-specification.txt +++ b/virtio-v1.0-wd01-part1-specification.txt @@ -1361,9 +1361,7 @@ the different features the driver negotiated. Often a driver will suppress transmission interrupts using the VRING_AVAIL_F_NO_INTERRUPT flag (see "2.4.2. Receiving Used Buffers From The Device") and check for used packets in the transmit path of following -packets. However, it will still receive interrupts if the -VIRTIO_F_NOTIFY_ON_EMPTY feature is negotiated, indicating that -the transmission queue is completely emptied. +packets. The normal behavior in this interrupt handler is to retrieve and new descriptors from the used ring and free the corresponding @@ -2568,18 +2566,7 @@ contents of the event field. The following events are defined: 2.5. Reserved Feature Bits ========================= -Currently there are five device-independent feature bits defined: - - VIRTIO_F_NOTIFY_ON_EMPTY (24) Negotiating this feature - indicates that the driver wants an interrupt if the device runs - out of available descriptors on a virtqueue, even though - interrupts are suppressed using the VRING_AVAIL_F_NO_INTERRUPT - flag or the used_event field. An example of this is the - networking driver: it doesn't need to know every time a packet - is transmitted, but it does need to free the transmitted - packets a finite time after they are transmitted. It can avoid - using a timer if the device interrupts it when all the packets - are transmitted. +Currently there are four device-independent feature bits defined: VIRTIO_F_ANY_LAYOUT (27) This feature indicates that the device accepts arbitrary descriptor layouts, as described in Section "22.214.171.124. Message Framing". @@ -2607,6 +2594,22 @@ In addition, bit 30 is used by qemu's implementation to check for experimental early versions of virtio which did not perform correct feature negotiation, and should not be used. +2.5.1 Legacy Interface: Reserved Feature Bits +-------------------------------------------- + +Legacy or transitional devices may offer the following: + +VIRTIO_F_NOTIFY_ON_EMPTY (24) Negotiating this feature + indicates that the driver wants an interrupt if the device runs + out of available descriptors on a virtqueue, even though + interrupts are suppressed using the VRING_AVAIL_F_NO_INTERRUPT + flag or the used_event field. An example of this is the + networking driver: it doesn't need to know every time a packet + is transmitted, but it does need to free the transmitted + packets a finite time after they are transmitted. It can avoid + using a timer if the device interrupts it when all the packets + are transmitted. + 2.6. virtio_ring.h =================