OASIS Virtual I/O Device (VIRTIO) TC

 View Only

[PATCH v2] ccw: allow WRITE_STATUS to fail

  • 1.  [PATCH v2] ccw: allow WRITE_STATUS to fail

    Posted 02-04-2015 15:26
    We want to be able to fail setting a status on the device (e.g. FEATURES_OK if the device can't work with the features negotiated). The easiest way to do that is to allow the device to fail the WRITE_STATUS command by posting a command reject. VIRTIO-116 Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> --- conformance.tex 2 ++ content.tex 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/conformance.tex b/conformance.tex index 29c6ba8..59193e9 100644 --- a/conformance.tex +++ b/conformance.tex @@ -79,6 +79,7 @@ A Channel I/O driver MUST conform to the following normative statements: egin{itemize} item
    ef{drivernormative:Virtio Transport Options / Virtio over channel I/O / Basic Concepts} item
    ef{drivernormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Setting the Virtio Revision} +item
    ef{drivernormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Communicating Status Information} item
    ef{drivernormative:Virtio Transport Options / Virtio over channel I/O / Device Operation / Host->Guest Notification / Notification via Adapter I/O Interrupts} item
    ef{drivernormative:Virtio Transport Options / Virtio over channel I/O / Device Operation / Guest->Host Notification} end{itemize} @@ -182,6 +183,7 @@ A Channel I/O device MUST conform to the following normative statements: item
    ef{devicenormative:Virtio Transport Options / Virtio over channel I/O / Basic Concepts} item
    ef{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Setting the Virtio Revision} item
    ef{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Configuring a Virtqueue} +item
    ef{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Communicating Status Information} item
    ef{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Setting Up Indicators / Setting Up Two-Stage Queue Indicators} item
    ef{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Operation / Host->Guest Notification / Notification via Adapter I/O Interrupts} item
    ef{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Operation / Guest->Host Notification} diff --git a/content.tex b/content.tex index 952b605..449a512 100644 --- a/content.tex +++ b/content.tex @@ -2616,6 +2616,23 @@ The driver changes the status of a device via the CCW_CMD_WRITE_STATUS command, which transmits an 8 bit status value. +As described in +
    ef{devicenormative:Basic Facilities of a Virtio Device / Feature Bits}, +a device sometimes fails to set the field{status} field: For example, it +might fail to accept the FEATURES_OK status bit during device initialization. + +drivernormative{paragraph}{Communicating Status Information}{Virtio Transport Options / Virtio over channel I/O / Device Initialization / Communicating Status Information} + +If the device posts a unit check with command reject in response to the +CCW_CMD_WRITE_STATUS command, the driver MUST assume that the device failed +to set the status and the field{status} field retained its previous value. + +devicenormative{paragraph}{Communicating Status Information}{Virtio Transport Options / Virtio over channel I/O / Device Initialization / Communicating Status Information} + +If the device fails to set the field{status} field to the value written by +the driver, the device MUST assure that the field{status} field is left +unchanged and MUST post a unit check with command reject. + subsubsection{Handling Device Features}label{sec:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Handling Device Features} Feature bits are arranged in an array of 32 bit values, making -- 1.7.9.5