From 3801029f7ab50559eb0e7cfa4253142c46cd0085 Mon Sep 17 00:00:00 2001
From: hornet <hornet@0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652>
Date: Thu, 12 Dec 2013 18:05:18 +0000
Subject: 2.3.2 MMIO: Further clarifications

Clarified driver behaviour for out-of-spec MagicValue,
Version and DeviceID values.

Signed-off-by: Pawel Moll <pawel.moll@arm.com>



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

(limited to 'content.tex')

diff --git a/content.tex b/content.tex
index 01f87e4..709bbbf 100644
--- a/content.tex
+++ b/content.tex
@@ -1417,17 +1417,26 @@ All register values are organized as Little Endian.
   \endfoot
   \endlastfoot
   \mmioreg{MagicValue}{Magic value}{0x000}{R}{%
-    MUST be 0x74726976 (a Little Endian equivalent of the "virt" string).
+    Device MUST return value 0x74726976
+    (a Little Endian equivalent of the "virt" string).
+    Driver MUST ignore device returning other values,
+    although it MAY report an error.
   } 
   \hline
   \mmioreg{Version}{Device version number}{0x004}{R}{%
     Devices compliant with this specification MUST return value 0x2.
+    Legacy device (see \ref{sec:Virtio Transport Options / Virtio Over MMIO / Legacy interface}~\nameref{sec:Virtio Transport Options / Virtio Over MMIO / Legacy interface}) MAY return value 0x1.
+    Driver MUST ignore device returning other values,
+    although it MAY report an error.
   }
   \hline 
   \mmioreg{DeviceID}{Virtio Subsystem Device ID}{0x008}{R}{%
     See \ref{sec:Device Types}~\nameref{sec:Device Types} for possible values.
-    Value zero (0x0) is invalid and devices returning this ID MUST be ignored
-    by the driver.
+    Value zero (0x0) is invalid and driver MUST ignore such device
+    but MUST NOT report any error. This behaviour can be used to
+    define a system memory map with placeholder devices at static,
+    well known addresses, assigning functions to them depending
+    on user's needs.
   }
   \hline 
   \mmioreg{VendorID}{Virtio Subsystem Vendor ID}{0x00c}{R}{}
@@ -1675,7 +1684,7 @@ nor behaviour:
   \endlastfoot
   \mmioreg{MagicValue}{Magic value}{0x000}{R}{}
   \hline
-  \mmioreg{Version}{Device version number}{0x004}{R}{Legacy devices MUST return value 0x1.}
+  \mmioreg{Version}{Device version number}{0x004}{R}{Legacy device MUST return value 0x1.}
   \hline
   \mmioreg{DeviceID}{Virtio Subsystem Device ID}{0x008}{R}{}
   \hline
-- 
cgit v1.2.3

