← Prev in month ← Prev in thread
Next in thread → Next in month →

[PATCH v2] ccw: allow WRITE_STATUS to fail

From
Cornelia Huck
Date
2015-02-04T15:26:00+00:00
ID
Thread
[PATCH v2] ccw: allow WRITE_STATUS to fail
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 <> ---  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
← Prev in month ← Prev in thread
Next in thread → Next in month →