[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [PATCH v3 1/2] content: Explain better the status clearing bits
On Thu, Nov 11 2021, Eugenio PÃrez <eperezma@redhat.com> wrote: > The spec tells that "The driver MUST NOT clear a device status bit", but > a device using PCI transport reset a virtio device writing 0 to device I think MMIO uses that mechanism as well? > status. In some way, that is to clear all its bits. > > Instead of add an exception, tell explicitely the status bits that > the driver cannot clear anytime in a normal operation, so conformant > device and drivers keeps being conformant. > > Signed-off-by: Eugenio PÃrez <eperezma@redhat.com> > --- > content.tex | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/content.tex b/content.tex > index 5d112af..2aa3006 100644 > --- a/content.tex > +++ b/content.tex > @@ -60,9 +60,10 @@ \section{\field{Device Status} Field}\label{sec:Basic Facilities of a Virtio Dev > initialization sequence specified in > \ref{sec:General Initialization And Device Operation / Device > Initialization}. > -The driver MUST NOT clear a > -\field{device status} bit. If the driver sets the FAILED bit, > -the driver MUST later reset the device before attempting to re-initialize. > +The driver MUST NOT clear ACKNOWLEDGE, DRIVER, DRIVER_OK, FEATURES_OK or > +DEVICE_NEEDS_RESET bits of \field{device status}, except if resetting the whole > +device. If the driver sets the FAILED bit, the driver MUST later reset the > +device before attempting to re-initialize. I think we need to distinguish "driver wants to clear a status bit" from "driver is initiating a reset, and that transport implements that by writing 0 to the device status". So, what about "The driver MUST NOT clear a \field{device status} bit, except when setting \field{device status} to 0 as a transport-specific way to intitiate a reset." If we introduce driver-clearable bits later, we can simply make that "The driver MUST NOT clear a \field{device status} bit other than NEW_BIT, ..."
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]