OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

virtio-dev message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]

Subject: Re: queue_enable vs QueueReady

On Thu, May 28, 2020 at 09:06:36PM +0800, Jason Wang wrote:
> Hi:
> I found ambiguity in the virtio specification:
> In PCI part, it describes the queue_enable as:
> The driver uses this to selectively prevent the device from executing
> requests from this virtqueue. 1 - enabled; 0 - disabled.
> In MMIO part, it describes the QueueReady as:
> Writing one (0x1) to this register notifies the device that it can execute
> requests from this virtual queue. Reading from this register returns the
> last value written to it. Both read and write accesses apply to the queue
> selected by writing to QueueSel.
> If I understand this correctly, they have the same meaning, but the driver
> requirements section looks conflict:
> PCI said: The driver MUST NOT write a 0 to queue_enable.
> MMIO said:
> To stop using the queue the driver MUST write zero (0x0) to this QueueReady
> and MUST read the value back to ensure synchronization.
> So we can't disable a queue via queue_enable but QueueReady. Any reason for
> such inconsistency?
> Thanks

PCI assumed device reset is enough to stop all queues.  We had tons of
bugs around shutdown because of this, so in hindsight, MMIO had maybe a
better idea.

Ability to stop a queue and take back buffers would be nice, e.g. serial
is kind of messed up around port disconnect without it.


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]