summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormstsirkin <mstsirkin@0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652>2015-04-22 08:26:11 +0000
committermstsirkin <mstsirkin@0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652>2015-04-22 08:26:11 +0000
commitfdc047cb06529edebed75a185b2bab7383161470 (patch)
tree8b56dc6bed5398a2ef05c7fd81c7ee483b9545f4
parenta75a70b428f33cf2b684f09a4b0dcc7985726b02 (diff)
pci: missing documentation for dealing with 64 bit config fields
pci spec says what width access to use for 32, 16 and 8 bit fields, but does not explicitly say what to do for 32 bit fields. As we have text that says driver must treat 64 bit accesses as non-atomic, this seems to imply driver should always do two 32 bit wide accesses. Let's make this an explicit requirement, and require devices to support this. VIRTIO-139 Signed-off-by: Michael S. Tsirkin <mst@redhat.com> git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@508 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652
-rw-r--r--conformance.tex1
-rw-r--r--content.tex19
2 files changed, 15 insertions, 5 deletions
diff --git a/conformance.tex b/conformance.tex
index 350d2d0..0f601d7 100644
--- a/conformance.tex
+++ b/conformance.tex
@@ -155,6 +155,7 @@ 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}
diff --git a/content.tex b/content.tex
index 48d735d..95ae23e 100644
--- a/content.tex
+++ b/content.tex
@@ -1083,14 +1083,23 @@ Structure PCI Capabilities.
Fields of different sizes are present in the device
configuration regions.
-All 32-bit and 16-bit fields are little-endian.
+All 64-bit, 32-bit and 16-bit fields are little-endian.
+64-bit fields are to be treated as two 32-bit fields,
+with low 32 bit part followed by the high 32 bit part.
\drivernormative{\subsubsection}{PCI Device Layout}{Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout}
-The driver
-MUST access each field using the ``natural'' access method, i.e.
-32-bit accesses for 32-bit fields, 16-bit accesses for 16-bit
-fields and 8-bit accesses for 8-bit fields.
+For device configuration access, the driver MUST use 8-bit wide
+accesses for 8-bit wide fields, 16-bit wide and aligned accesses
+for 16-bit wide fields and 32-bit wide and aligned accesses for
+32-bit and 64-bit wide fields. For 64-bit fields, the driver MAY
+access each of the high and low 32-bit parts of the field
+independently.
+
+\devicenormative{\subsubsection}{PCI Device Layout}{Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout}
+
+For 64-bit device configuration fields, the device MUST allow driver
+independent access to high and low 32-bit parts of the field.
\subsection{Virtio Structure PCI Capabilities}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / Virtio Structure PCI Capabilities}