[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [virtio-dev] [PATCH] split-ring: Demand that a device must not change descriptor entries
On Mon, Nov 11, 2019 at 12:17:51PM -0500, Rob Miller wrote: > On Mon, Nov 11, 2019 at 12:13 PM Jan Kiszka <jan.kiszka@siemens.com> wrote: > > From: Jan Kiszka <jan.kiszka@siemens.com> > > So far the spec only indirectly says that a descriptor table entry is > not modified by a device when processing it. Make this explicit by > adding it as normative requirement. Existing drivers already depend on > this. > > See also https://lists.oasis-open.org/archives/virtio-dev/201910/ > msg00057.html. > > Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> > --- > split-ring.tex | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/split-ring.tex b/split-ring.tex > index 123ac9f..bfef62d 100644 > --- a/split-ring.tex > +++ b/split-ring.tex > @@ -217,7 +217,7 @@ \subsection{The Virtqueue Descriptor Table}\label > {sec:Basic Facilities of a Virt > \devicenormative{\subsubsection}{The Virtqueue Descriptor Table}{Basic > Facilities of a Virtio Device / Virtqueues / The Virtqueue Descriptor > Table} > A device MUST NOT write to a device-readable buffer, and a device SHOULD > NOT > read a device-writable buffer (it MAY do so for debugging or diagnostic > -purposes). > +purposes). A device MUST NOT write to any descriptor table entry. > > \drivernormative{\subsubsection}{The Virtqueue Descriptor Table}{Basic > Facilities of a Virtio Device / Virtqueues / The Virtqueue Descriptor > Table} > Drivers MUST NOT add a descriptor chain longer than $2^{32}$ bytes in > total; > -- > 2.16.4 > > > what is trying to be solved here? There is a reason why this is allowed as some > vendors update the table when using RX_MERABLE_BUFFERs & F_IN_ORDER features > > Rob Miller > rob.miller@broadcom.com > (919)721-3339 > > Going back to this, I don't see how this can work with current Linux guests at least when VIRTIO_F_IOMMU_PLATFORM is specified, since the data is mapped to devices as follows: dma_addr_t addr = vring_map_one_sg(vq, sg, DMA_TO_DEVICE); and I guess we all agreed physical devices all set this flag? Could you explain a bit more about how writing into descriptors is useful with RX_MERABLE_BUFFERs? -- MST
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]