From 09255de1ec979c9f963db9543b120d9aa8046b87 Mon Sep 17 00:00:00 2001
From: "Michael S. Tsirkin" <mst@redhat.com>
Date: Thu, 26 Apr 2018 00:43:20 +0300
Subject: Revert "VIRTIO_F_NOTIFICATION_DATA: extra data to devices"

This reverts commit 396b1957817e0bd14697e28d9fe61bfc80f1350f.

Was pushed by mistake.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 content.tex | 109 ++++--------------------------------------------------------
 1 file changed, 6 insertions(+), 103 deletions(-)

(limited to 'content.tex')

diff --git a/content.tex b/content.tex
index ae5fa4c..7a92cb1 100644
--- a/content.tex
+++ b/content.tex
@@ -283,49 +283,9 @@ Packed Virtqueues}).
 Every driver and device supports either the Packed or the Split
 Virtqueue format, or both.
 
-\subsection{Driver notifications} \label{sec:Virtqueues / Driver notifications}
-The driver is sometimes required to notify the device after
-making changes to the virtqueue.
-
-When VIRTIO_F_NOTIFICATION_DATA has not been negotiated,
-this notification involves sending the
-virtqueue number to the device (method depending on the transport).
-
-However, some devices benefit from the ability to find out the number of
-available descriptors in the ring without accessing the virtqueue in memory:
-for efficiency or as a debugging aid.
-
-To help with these optimizations, when VIRTIO_F_NOTIFICATION_DATA
-has been negotiated, driver notifications to the device include
-the following information:
-
-\begin{description}
-\item [VQ number]
-\item [Offset]
-      Within the ring where the next available ring entry
-      will be written.
-      Without VIRTIO_F_RING_PACKED this refers to the
-      15 least significant bits of the available index.
-      With VIRTIO_F_RING_PACKED this refers to the offset
-      (in units of descriptor entries)
-      within the descriptor ring where the next available
-      descriptor will be written.
-\item [Wrap Counter]
-      With VIRTIO_F_RING_PACKED this is the wrap counter
-      referring to the next available descriptor.
-      Without VIRTIO_F_RING_PACKED this is the most significant bit
-      of the available index.
-\end{description}
-
-Note that the driver can trigger multiple notifications even without
-making any more changes to the ring. When VIRTIO_F_NOTIFICATION_DATA
-has been negotiated, these notifications would then have
-identical \field{Offset} and \field{Wrap Counter} values.
-
 \input{split-ring.tex}
 
 \input{packed-ring.tex}
-
 \chapter{General Initialization And Device Operation}\label{sec:General Initialization And Device Operation}
 
 We start with an overview of device initialization, then expand on the
@@ -902,9 +862,7 @@ the same Queue Notify address for all queues.
 \devicenormative{\paragraph}{Notification capability}{Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Notification capability}
 The device MUST present at least one notification capability.
 
-For devices not offering VIRTIO_F_NOTIFICATION_DATA:
-
-The \field{cap.offset} MUST be 2-byte aligned.
+The \field{cap.offset} MUST be 2-byte aligned.  
 
 The device MUST either present \field{notify_off_multiplier} as an even power of 2,
 or present \field{notify_off_multiplier} as 0.
@@ -918,23 +876,6 @@ For all queues, the value \field{cap.length} presented by the device MUST satisf
 cap.length >= queue_notify_off * notify_off_multiplier + 2
 \end{lstlisting}
 
-For devices offering VIRTIO_F_NOTIFICATION_DATA:
-
-The device MUST either present \field{notify_off_multiplier} as a
-number that is a power of 2 that is also a multiple 4,
-or present \field{notify_off_multiplier} as 0.
-
-The \field{cap.offset} MUST be 4-byte aligned.
-
-The value \field{cap.length} presented by the device MUST be at least 4
-and MUST be large enough to support queue notification offsets
-for all supported queues in all possible configurations.
-
-For all queues, the value \field{cap.length} presented by the device MUST satisfy:
-\begin{lstlisting}
-cap.length >= queue_notify_off * notify_off_multiplier + 4
-\end{lstlisting}
-
 \subsubsection{ISR status capability}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / ISR status capability}
 
 The VIRTIO_PCI_CAP_ISR_CFG capability
@@ -1327,21 +1268,8 @@ separate cache lines.
 
 \subsubsection{Notifying The Device}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Notifying The Device}
 
-When VIRTIO_F_NOTIFICATION_DATA has not been negotiated,
-the driver notifies the device by writing the 16-bit virtqueue index
-of this virtqueue (in little-endian byte order format)
-to the Queue Notify address.
-
-When VIRTIO_F_NOTIFICATION_DATA has been negotiated,
-the driver notifies the device by writing the following
-32-bit value to the Queue Notify address:
-\lstinputlisting{notifications-le.c}
-
-See \ref{sec:Virtqueues / Driver notifications}~\nameref{sec:Virtqueues / Driver notifications}
-for the definition of the components.
-
-See \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Notification capability} for how to calculate the
-Queue Notify address.
+The driver notifies the device by writing the 16-bit virtqueue index
+of this virtqueue to the Queue Notify address.  See \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Notification capability} for how to calculate this address.
 
 \subsubsection{Virtqueue Interrupts From The Device}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Virtqueue Interrupts From The Device}
 
@@ -1572,19 +1500,8 @@ All register values are organized as Little Endian.
   }
   \hline 
   \mmioreg{QueueNotify}{Queue notifier}{0x050}{W}{%
-    Writing a value this register notifies the device that
-    there are new buffers to process in a queue.
-
-    When VIRTIO_F_NOTIFICATION_DATA has not been negotiated,
-    the value written is the queue index.
-
-    When VIRTIO_F_NOTIFICATION_DATA has been negotiated,
-    the value has the following format:
-
-    \lstinputlisting{notifications-le.c}
-
-    See \ref{sec:Virtqueues / Driver notifications}~\nameref{sec:Virtqueues / Driver notifications}
-    for the definition of the components.
+    Writing a queue index to this register notifies the device that
+    there are new buffers to process in the queue.
   }
   \hline 
   \mmioreg{InterruptStatus}{Interrupt status}{0x60}{R}{%
@@ -2423,22 +2340,12 @@ GPR  &   Input Value     & Output Value \\
 \hline
   2   &  Subchannel ID    & Host Cookie  \\
 \hline
-  3   & Notification data &              \\
+  3   & Virtqueue number  &              \\
 \hline
   4   &   Host Cookie     &              \\
 \hline
 \end{tabular}
 
-When VIRTIO_F_NOTIFICATION_DATA has not been negotiated,
-the \field{Notification data} contains the Virtqueue number.
-
-When VIRTIO_F_NOTIFICATION_DATA has been negotiated,
-the value has the following format:
-\lstinputlisting{notifications-be.c}
-
-See \ref{sec:Virtqueues / Driver notifications}~\nameref{sec:Virtqueues / Driver notifications}
-for the definition of the components.
-
 \devicenormative{\paragraph}{Guest->Host Notification}{Virtio Transport Options / Virtio over channel I/O / Device Operation / Guest->Host Notification}
 The device MUST ignore bits 0-31 (counting from the left) of GPR2.
 This aligns passing the subchannel ID with the way it is passed
@@ -5441,10 +5348,6 @@ Descriptors} and \ref{sec:Packed Virtqueues / Indirect Flag: Scatter-Gather Supp
   \item[VIRTIO_F_IN_ORDER(35)] This feature indicates
   that all buffers are used by the device in the same
   order in which they have been made available.
-  \item[VIRTIO_F_NOTIFICATION_DATA(36)] This feature indicates
-  that drivers pass extra data (besides identifying the Virtqueue)
-  in their device notifications.
-  See \ref{sec:Virtqueues / Driver notifications}~\nameref{sec:Virtqueues / Driver notifications}.
 \end{description}
 
 \drivernormative{\section}{Reserved Feature Bits}{Reserved Feature Bits}
-- 
cgit v1.2.3

