aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content.tex11
-rw-r--r--packed-ring.tex2
2 files changed, 10 insertions, 3 deletions
diff --git a/content.tex b/content.tex
index 68b7db0..979dbfc 100644
--- a/content.tex
+++ b/content.tex
@@ -786,7 +786,7 @@ struct virtio_pci_common_cfg {
/* About a specific virtqueue. */
le16 queue_select; /* read-write */
- le16 queue_size; /* read-write, power of 2, or 0. */
+ le16 queue_size; /* read-write */
le16 queue_msix_vector; /* read-write */
le16 queue_enable; /* read-write */
le16 queue_notify_off; /* read-only for driver */
@@ -903,11 +903,18 @@ The device MUST present a 0 in \field{queue_enable} on reset.
The device MUST present a 0 in \field{queue_size} if the virtqueue
corresponding to the current \field{queue_select} is unavailable.
+If VIRTIO_F_RING_PACKED has not been negotiated, the device MUST
+present either a value of 0 or a power of 2 in
+\field{queue_size}.
+
\drivernormative{\paragraph}{Common configuration structure layout}{Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Common configuration structure layout}
The driver MUST NOT write to \field{device_feature}, \field{num_queues}, \field{config_generation} or \field{queue_notify_off}.
-The driver MUST NOT write a value which is not a power of 2 to \field{queue_size}.
+If VIRTIO_F_RING_PACKED has been negotiated,
+the driver MUST NOT write the value 0 to \field{queue_size}.
+If VIRTIO_F_RING_PACKED has not been negotiated,
+the driver MUST NOT write a value which is not a power of 2 to \field{queue_size}.
The driver MUST configure the other virtqueue fields before enabling the virtqueue
with \field{queue_enable}.
diff --git a/packed-ring.tex b/packed-ring.tex
index f24f49b..2a6c685 100644
--- a/packed-ring.tex
+++ b/packed-ring.tex
@@ -386,7 +386,7 @@ part of the virtqueue.
Queue Size corresponds to the maximum number of descriptors in the
virtqueue\footnote{For example, if Queue Size is 4 then at most 4 buffers
can be queued at any given time.}. The Queue Size value does not
-have to be a power of 2 unless enforced by the transport.
+have to be a power of 2.
\drivernormative{\subsection}{Virtqueues}{Basic Facilities of a
Virtio Device / Packed Virtqueues}