From df9e9d2cfeafc4ef98d1216df2160232c25e6124 Mon Sep 17 00:00:00 2001
From: mstsirkin <mstsirkin@0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652>
Date: Sun, 2 Mar 2014 21:36:29 +0000
Subject: non-transitional devices with legacy drivers

Change accepted on VIRTIO TC Meeting, 3 December 2013

weaken hacky requirements helpful for graceful failure
for non transitional PCI devices from MUST to SHOULD.
It's nice to have but it's not like it makes things work, and you
can avoid trouble simply by using the most recent drivers.
also move them out to a separate section

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio@301 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652
---
 content.tex | 27 ++++++++++++++++++++++++---
 1 file changed, 24 insertions(+), 3 deletions(-)

(limited to 'content.tex')

diff --git a/content.tex b/content.tex
index c91dd69..cb0d648 100644
--- a/content.tex
+++ b/content.tex
@@ -962,7 +962,10 @@ The Subsystem Vendor ID SHOULD reflect
 the PCI Vendor ID of the environment (it's currently only used
 for informational purposes by the driver).
 
-Non-transitional devices MUST have a Revision ID of 1 or higher.
+Non-transitional devices SHOULD have a Revision ID of 1 or higher.
+
+This is to reduce the chance of a legacy driver attempting
+to drive the device.
 
 \drivernormative{\subsubsection}{PCI Device Discovery}{Virtio Transport Options / Virtio Over PCI Bus / PCI Device Discovery}
 All drivers MUST match devices with any Revision ID, this
@@ -971,8 +974,9 @@ is to allow devices to be versioned without breaking drivers.
 Drivers MUST match any Revision ID value. 
 
 \subsubsection{Legacy Interfaces: A Note on PCI Device Discovery}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Discovery / Legacy Interfaces: A Note on PCI Device Discovery}
-Transitional devices MUST have a Revision ID of 0 to match
-legacy drivers.
+Transitional devices MUST have a Revision ID of 0.
+
+This is to match legacy drivers.
 
 \subsection{PCI Device Layout}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout}
 
@@ -1508,6 +1512,23 @@ see \ref{sec:Basic Facilities of a Virtio Device / Device
 Configuration Space / Legacy Interface: Device Configuration
 Space}~\nameref{sec:Basic Facilities of a Virtio Device / Device Configuration Space / Legacy Interface: Device Configuration Space} for workarounds.
 
+\subsubsection{Non-transitional Device With Legacy Driver: A Note
+on PCI Device Layout}\label{sec:Virtio Transport Options / Virtio
+Over PCI Bus / PCI Device Layout / Non-transitional Device With
+Legacy Driver: A Note on PCI Device Layout}
+
+Non-transitional devices, on a platform where a legacy driver for
+a legacy device with the same ID might have previously existed,
+SHOULD take the following steps to fail gracefully when a legacy
+driver attempts to drive them:
+
+\begin{enumerate}
+\item Present an I/O BAR in BAR0, and
+\item Respond to a single-byte zero write to offset 18
+   (corresponding to Device Status register in the legacy layout)
+   of BAR0 by presenting zeroes on every BAR and ignoring writes.
+\end{enumerate}
+
 \subsection{PCI-specific Initialization And Device Operation}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation}
 
 \subsubsection{Device Initialization}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Device Initialization}
-- 
cgit v1.2.3

