diff options
Diffstat (limited to 'conformance.tex')
-rw-r--r-- | conformance.tex | 330 |
1 files changed, 330 insertions, 0 deletions
diff --git a/conformance.tex b/conformance.tex new file mode 100644 index 0000000..f59e360 --- /dev/null +++ b/conformance.tex @@ -0,0 +1,330 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Conformance +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Conformance} + +This chapter lists the conformance targets and clauses for each; this +also forms a useful checklist which authors are asked to consult for their +implementations! + +\section{Conformance Targets}\label{sec:Conformance / Conformance Targets} + +Conformance targets: +\begin{description} +\item[Driver] A driver MUST conform to three conformance clauses: + \begin{itemize} + \item Clause \ref{sec:Conformance / Driver Conformance}, + \item One of clauses \ref{sec:Conformance / Driver Conformance / PCI Driver Conformance}, \ref{sec:Conformance / Driver Conformance / MMIO Driver Conformance} or \ref{sec:Conformance / Driver Conformance / Channel I/O Driver Conformance}. + \item One of clauses \ref{sec:Conformance / Driver Conformance / Network Driver Conformance}, \ref{sec:Conformance / Driver Conformance / Block Driver Conformance}, \ref{sec:Conformance / Driver Conformance / Console Driver Conformance}, \ref{sec:Conformance / Driver Conformance / Entropy Driver Conformance}, \ref{sec:Conformance / Driver Conformance / Traditional Memory Balloon Driver Conformance} or \ref{sec:Conformance / Driver Conformance / SCSI Host Driver Conformance}. + \end{itemize} +\item[Device] A device MUST conform to three conformance clauses: + \begin{itemize} + \item Clause \ref{sec:Conformance / Device Conformance}, + \item One of clauses \ref{sec:Conformance / Device Conformance / PCI Device Conformance}, \ref{sec:Conformance / Device Conformance / MMIO Device Conformance} or \ref{sec:Conformance / Device Conformance / Channel I/O Device Conformance}. + \item One of clauses \ref{sec:Conformance / Device Conformance / Network Device Conformance}, \ref{sec:Conformance / Device Conformance / Block Device Conformance}, \ref{sec:Conformance / Device Conformance / Console Device Conformance}, \ref{sec:Conformance / Device Conformance / Entropy Device Conformance}, \ref{sec:Conformance / Device Conformance / Traditional Memory Balloon Device Conformance} or \ref{sec:Conformance / Device Conformance / SCSI Host Device Conformance}. + \end{itemize} +\end{description} + +\section{Driver Conformance}\label{sec:Conformance / Driver Conformance} + +A driver MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{drivernormative:Basic Facilities of a Virtio Device / Device Status Field} +\item \ref{drivernormative:Basic Facilities of a Virtio Device / Feature Bits} +\item \ref{drivernormative:Basic Facilities of a Virtio Device / Device Configuration Space} +\item \ref{drivernormative:Basic Facilities of a Virtio Device / Virtqueues} +\item \ref{drivernormative:Basic Facilities of a Virtio Device / Message Framing} +\item \ref{drivernormative:Basic Facilities of a Virtio Device / Virtqueues / The Virtqueue Descriptor Table} +\item \ref{drivernormative:Basic Facilities of a Virtio Device / Virtqueues / The Virtqueue Descriptor Table / Indirect Descriptors} +\item \ref{drivernormative:Basic Facilities of a Virtio Device / Virtqueues / Virtqueue Interrupt Suppression} +\item \ref{drivernormative:Basic Facilities of a Virtio Device / Virtqueues / The Virtqueue Used Ring} +\item \ref{drivernormative:Basic Facilities of a Virtio Device / Virtqueues / Virtqueue Notification Suppression} +\item \ref{drivernormative:General Initialization And Device Operation / Device Initialization} +\item \ref{drivernormative:General Initialization And Device Operation / Device Operation / Supplying Buffers to The Device / Updating idx} +\item \ref{drivernormative:General Initialization And Device Operation / Device Operation / Supplying Buffers to The Device / Notifying The Device} +\item \ref{drivernormative:General Initialization And Device Operation / Device Cleanup} +\item \ref{drivernormative:Reserved Feature Bits} +\end{itemize} + +\subsection{PCI Driver Conformance}\label{sec:Conformance / Driver Conformance / PCI Driver Conformance} + +A PCI driver MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{drivernormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Discovery} +\item \ref{drivernormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout} +\item \ref{drivernormative:Virtio Transport Options / Virtio Over PCI Bus / Virtio Structure PCI Capabilities} +\item \ref{drivernormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Common configuration structure layout} +\item \ref{drivernormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / ISR status capability} +\item \ref{drivernormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / PCI configuration access capability} +\item \ref{drivernormative:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Device Initialization / MSI-X Vector Configuration} +\item \ref{drivernormative:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Notification of Device Configuration Changes} +\end{itemize} + +\subsection{MMIO Driver Conformance}\label{sec:Conformance / Driver Conformance / MMIO Driver Conformance} + +An MMIO driver MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{drivernormative:Virtio Transport Options / Virtio Over MMIO / MMIO Device Register Layout} +\item \ref{drivernormative:Virtio Transport Options / Virtio Over MMIO / MMIO-specific Initialization And Device Operation / Device Initialization} +\item \ref{drivernormative:Virtio Transport Options / Virtio Over MMIO / MMIO-specific Initialization And Device Operation / Notifications From The Device} +\end{itemize} + +\subsection{Channel I/O Driver Conformance}\label{sec:Conformance / Driver Conformance / Channel I/O Driver Conformance} + +A Channel I/O driver MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{drivernormative:Virtio Transport Options / Virtio over channel I/O / Basic Concepts} +\item \ref{drivernormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Setting the Virtio Revision} +\item \ref{drivernormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Communicating Status Information} +\item \ref{drivernormative:Virtio Transport Options / Virtio over channel I/O / Device Operation / Host->Guest Notification / Notification via Adapter I/O Interrupts} +\item \ref{drivernormative:Virtio Transport Options / Virtio over channel I/O / Device Operation / Guest->Host Notification} +\end{itemize} + +\subsection{Network Driver Conformance}\label{sec:Conformance / Driver Conformance / Network Driver Conformance} + +A network driver MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{drivernormative:Device Types / Network Device / Device configuration layout} +\item \ref{drivernormative:Device Types / Network Device / Device Operation / Packet Transmission} +\item \ref{drivernormative:Device Types / Network Device / Device Operation / Setting Up Receive Buffers} +\item \ref{drivernormative:Device Types / Network Device / Device Operation / Processing of Incoming Packets} +\item \ref{drivernormative:Device Types / Network Device / Device Operation / Control Virtqueue / Packet Receive Filtering} +\item \ref{drivernormative:Device Types / Network Device / Device Operation / Control Virtqueue / Setting MAC Address Filtering} +\item \ref{drivernormative:Device Types / Network Device / Device Operation / Control Virtqueue / Gratuitous Packet Sending} +\item \ref{drivernormative:Device Types / Network Device / Device Operation / Control Virtqueue / Automatic receive steering in multiqueue mode} +\item \ref{drivernormative:Device Types / Network Device / Device Operation / Control Virtqueue / Offloads State Configuration / Setting Offloads State} +\end{itemize} + +\subsection{Block Driver Conformance}\label{sec:Conformance / Driver Conformance / Block Driver Conformance} + +A block driver MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{drivernormative:Device Types / Block Device / Device Initialization} +\item \ref{drivernormative:Device Types / Block Device / Device Operation} +\end{itemize} + +\subsection{Console Driver Conformance}\label{sec:Conformance / Driver Conformance / Console Driver Conformance} + +A console driver MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{drivernormative:Device Types / Console Device / Device Operation} +\item \ref{drivernormative:Device Types / Console Device / Device Operation / Multiport Device Operation} +\end{itemize} + +\subsection{Entropy Driver Conformance}\label{sec:Conformance / Driver Conformance / Entropy Driver Conformance} + +An entropy driver MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{drivernormative:Device Types / Entropy Device / Device Operation} +\end{itemize} + +\subsection{Traditional Memory Balloon Driver Conformance}\label{sec:Conformance / Driver Conformance / Traditional Memory Balloon Driver Conformance} + +A traditional memory balloon driver MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{drivernormative:Device Types / Memory Balloon Device / Feature bits} +\item \ref{drivernormative:Device Types / Memory Balloon Device / Device Operation} +\item \ref{drivernormative:Device Types / Memory Balloon Device / Device Operation / Memory Statistics} +\end{itemize} + +\subsection{SCSI Host Driver Conformance}\label{sec:Conformance / Driver Conformance / SCSI Host Driver Conformance} + +An SCSI host driver MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{drivernormative:Device Types / SCSI Host Device / Device configuration layout} +\item \ref{drivernormative:Device Types / SCSI Host Device / Device Operation / Device Operation: Request Queues} +\item \ref{drivernormative:Device Types / SCSI Host Device / Device Operation / Device Operation: eventq} +\end{itemize} + +\section{Device Conformance}\label{sec:Conformance / Device Conformance} + +A device MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{devicenormative:Basic Facilities of a Virtio Device / Device Status Field} +\item \ref{devicenormative:Basic Facilities of a Virtio Device / Feature Bits} +\item \ref{devicenormative:Basic Facilities of a Virtio Device / Device Configuration Space} +\item \ref{devicenormative:Basic Facilities of a Virtio Device / Message Framing} +\item \ref{devicenormative:Basic Facilities of a Virtio Device / Virtqueues / The Virtqueue Descriptor Table} +\item \ref{devicenormative:Basic Facilities of a Virtio Device / Virtqueues / The Virtqueue Descriptor Table / Indirect Descriptors} +\item \ref{devicenormative:Basic Facilities of a Virtio Device / Virtqueues / Virtqueue Interrupt Suppression} +\item \ref{devicenormative:Basic Facilities of a Virtio Device / Virtqueues / The Virtqueue Used Ring} +\item \ref{devicenormative:Basic Facilities of a Virtio Device / Virtqueues / Virtqueue Notification Suppression} +\item \ref{devicenormative:Reserved Feature Bits} +\end{itemize} + +\subsection{PCI Device Conformance}\label{sec:Conformance / Device Conformance / PCI Device Conformance} + +A PCI device MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus} +\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Discovery} +\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout} +\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / Virtio Structure PCI Capabilities} +\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Common configuration structure layout} +\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Notification capability} +\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / ISR status capability} +\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Device-specific configuration} +\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / PCI configuration access capability} +\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Device Initialization / Non-transitional Device With Legacy Driver} +\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Device Initialization / MSI-X Vector Configuration} +\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Virtqueue Interrupts From The Device} +\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Notification of Device Configuration Changes} +\end{itemize} + +\subsection{MMIO Device Conformance}\label{sec:Conformance / Device Conformance / MMIO Device Conformance} + +An MMIO device MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{devicenormative:Virtio Transport Options / Virtio Over MMIO / MMIO Device Register Layout} +\end{itemize} + +\subsection{Channel I/O Device Conformance}\label{sec:Conformance / Device Conformance / Channel I/O Device Conformance} + +A Channel I/O device MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{devicenormative:Virtio Transport Options / Virtio over channel I/O / Basic Concepts} +\item \ref{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Setting the Virtio Revision} +\item \ref{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Configuring a Virtqueue} +\item \ref{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Communicating Status Information} +\item \ref{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Setting Up Indicators / Setting Up Two-Stage Queue Indicators} +\item \ref{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Operation / Host->Guest Notification / Notification via Adapter I/O Interrupts} +\item \ref{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Operation / Guest->Host Notification} +\end{itemize} + +\subsection{Network Device Conformance}\label{sec:Conformance / Device Conformance / Network Device Conformance} + +A network device MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{devicenormative:Device Types / Network Device / Device configuration layout} +\item \ref{devicenormative:Device Types / Network Device / Device Operation / Packet Transmission} +\item \ref{devicenormative:Device Types / Network Device / Device Operation / Setting Up Receive Buffers} +\item \ref{devicenormative:Device Types / Network Device / Device Operation / Processing of Incoming Packets} +\item \ref{devicenormative:Device Types / Network Device / Device Operation / Control Virtqueue / Packet Receive Filtering} +\item \ref{devicenormative:Device Types / Network Device / Device Operation / Control Virtqueue / Setting MAC Address Filtering} +\item \ref{devicenormative:Device Types / Network Device / Device Operation / Control Virtqueue / Gratuitous Packet Sending} +\item \ref{devicenormative:Device Types / Network Device / Device Operation / Control Virtqueue / Automatic receive steering in multiqueue mode} +\end{itemize} + +\subsection{Block Device Conformance}\label{sec:Conformance / Device Conformance / Block Device Conformance} + +A block device MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{devicenormative:Device Types / Block Device / Device Initialization} +\item \ref{devicenormative:Device Types / Block Device / Device Operation} +\end{itemize} + +\subsection{Console Device Conformance}\label{sec:Conformance / Device Conformance / Console Device Conformance} + +A console device MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{devicenormative:Device Types / Console Device / Device Initialization} +\item \ref{devicenormative:Device Types / Console Device / Device Operation / Multiport Device Operation} +\end{itemize} + +\subsection{Entropy Device Conformance}\label{sec:Conformance / Device Conformance / Entropy Device Conformance} + +An entropy device MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{devicenormative:Device Types / Entropy Device / Device Operation} +\end{itemize} + +\subsection{Traditional Memory Balloon Device Conformance}\label{sec:Conformance / Device Conformance / Traditional Memory Balloon Device Conformance} + +A traditional memory balloon device MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{devicenormative:Device Types / Memory Balloon Device / Feature bits} +\item \ref{devicenormative:Device Types / Memory Balloon Device / Device Operation} +\item \ref{devicenormative:Device Types / Memory Balloon Device / Device Operation / Memory Statistics} +\end{itemize} + +\subsection{SCSI Host Device Conformance}\label{sec:Conformance / Device Conformance / SCSI Host Device Conformance} + +An SCSI host device MUST conform to the following normative statements: + +\begin{itemize} +\item \ref{devicenormative:Device Types / SCSI Host Device / Device configuration layout} +\item \ref{devicenormative:Device Types / SCSI Host Device / Device Initialization} +\item \ref{devicenormative:Device Types / SCSI Host Device / Device Operation / Device Operation: Request Queues} +\item \ref{devicenormative:Device Types / SCSI Host Device / Device Operation / Device Operation: eventq} +\end{itemize} + +\section{Legacy Interface: Transitional Device and +Transitional Driver Conformance}\label{sec:Conformance / Legacy +Interface: Transitional Device and +Transitional Driver Conformance} +A conformant implementation MUST be either transitional or +non-transitional, see \ref{intro:Legacy +Interface: Terminology}. + +A non-transitional implementation conforms to this specification +if it satisfies all of the MUST or REQUIRED level requirements +defined above. + +An implementation MAY choose to implement OPTIONAL support for the +legacy interface, including support for legacy drivers +or devices, by additionally conforming to all of the MUST or +REQUIRED level requirements for the legacy interface +for the transitional devices and drivers. + +The requirements for the legacy interface for transitional implementations +are located in sections named ``Legacy Interface'' listed below: +\begin{itemize} +\item Section \ref{sec:Basic Facilities of a Virtio Device / +Feature Bits / Legacy Interface: A Note on Feature Bits} +\item Section \ref{sec:Basic Facilities of a Virtio Device / Device Configuration Space / Legacy Interface: A Note on Configuration Space endian-ness} +\item Section \ref{sec:Basic Facilities of a Virtio Device / Device Configuration Space / Legacy Interface: Device Configuration Space} +\item Section \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / Legacy Interfaces: A Note on Virtqueue Layout} +\item Section \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / Legacy Interfaces: A Note on Virtqueue Endianness} +\item Section \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / Message Framing / Legacy Interface: Message Framing} +\item Section \ref{sec:General Initialization And Device Operation / Device Initialization / Legacy Interface: Device Initialization} +\item Section \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Discovery / Legacy Interfaces: A Note on PCI Device Discovery} +\item Section \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Legacy Interfaces: A Note on PCI Device Layout} +\item Section \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Device Initialization / Virtio Device Configuration Layout Detection / Legacy Interface: A Note on Device Layout Detection} +\item Section \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Device Initialization / Virtqueue Configuration / Legacy Interface: A Note on Virtqueue Configuration} +\item Section \ref{sec:Virtio Transport Options / Virtio Over MMIO / Legacy interface} +\item Section \ref{sec:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Setting the Virtio Revision / Legacy Interfaces: A Note on Setting the Virtio Revision} +\item Section \ref{sec:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Configuring a Virtqueue / Legacy Interface: A Note on Configuring a Virtqueue} +\item Section \ref{sec:Virtio Transport Options / Virtio over channel I/O / Device Operation / Host->Guest Notification / Legacy Interfaces: A Note on Host->Guest Notification} +\item Section \ref{sec:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Setting Up Indicators / Legacy Interfaces: A Note on Setting Up Indicators} +\item Section \ref{sec:Device Types / Network Device / Feature bits / Legacy Interface: Feature bits} +\item Section \ref{sec:Device Types / Network Device / Device configuration layout / Legacy Interface: Device configuration layout} +\item Section \ref{sec:Device Types / Network Device / Device Operation / Legacy Interface: Device Operation} +\item Section \ref{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Setting MAC Address Filtering / Legacy Interface: Setting MAC Address Filtering} +\item Section \ref{sec:Device Types / Network Device / Device Operation / Control Virtqueue / VLAN Filtering / Legacy Interface: VLAN Filtering} +\item Section \ref{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Automatic receive steering in multiqueue mode / Legacy Interface: Automatic receive steering in multiqueue mode} +\item Section \ref{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Offloads State Configuration / Setting Offloads State / Legacy Interface: Setting Offloads State} +\item Section \ref{sec:Device Types / Block Device / Feature bits / Legacy Interface: Feature bits} +\item Section \ref{sec:Device Types / Block Device / Device configuration layout / Legacy Interface: Device configuration layout} +\item Section \ref{sec:Device Types / Block Device / Device Initialization / Legacy Interface: Device Initialization} +\item Section \ref{sec:Device Types / Block Device / Device Operation / Legacy Interface: Device Operation} +\item Section \ref{sec:Device Types / Console Device / Device configuration layout / Legacy Interface: Device configuration layout} +\item Section \ref{sec:Device Types / Console Device / Device Operation / Legacy Interface: Device Operation} +\item Section \ref{sec:Device Types / Memory Balloon Device / Feature bits / Legacy Interface: Feature bits} +\item Section \ref{sec:Device Types / Memory Balloon Device / Device Operation / Legacy Interface: Device Operation} +\item Section \ref{sec:Device Types / Memory Balloon Device / Device Operation / Memory Statistics / Legacy Interface: Memory Statistics} +\item Section \ref{sec:Device Types / SCSI Host Device / Device configuration layout / Legacy Interface: Device configuration layout} +\item Section \ref{sec:Device Types / SCSI Host Device / Device Operation / Legacy Interface: Device Operation} +\item Section \ref{sec:Device Types / SCSI Host Device / Device Operation / Device Operation: Request Queues / Legacy Interface: Device Operation: Request Queues} +\item Section \ref{sec:Device Types / SCSI Host Device / Device Operation / Device Operation: controlq / Legacy Interface: Device Operation: controlq} +\item Section \ref{sec:Device Types / SCSI Host Device / Device Operation / Device Operation: eventq / Legacy Interface: Device Operation: eventq} +\item Section \ref{sec:Reserved Feature Bits / Legacy Interface: Reserved Feature Bits} +\end{itemize} |