From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jens Freimann <jfreimann@redhat.com>
Cc: "Liang, Cunming" <cunming.liang@intel.com>,
"Steven Luong (sluong)" <sluong@cisco.com>,
"virtio-dev@lists.oasis-open.org"
<virtio-dev@lists.oasis-open.org>,
"virtualization@lists.linux-foundation.org"
<virtualization@lists.linux-foundation.org>
Subject: Re: [virtio-dev] packed ring layout proposal v3
Date: Wed, 4 Oct 2017 15:58:17 +0300 [thread overview]
Message-ID: <20171004155532-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20171004123901.oomueufqg52uhas4@localhost.localdomain>
On Wed, Oct 04, 2017 at 02:39:01PM +0200, Jens Freimann wrote:
> On Sun, Oct 01, 2017 at 04:08:29AM +0000, Michael S. Tsirkin wrote:
> > On Thu, Sep 28, 2017 at 09:44:35AM +0000, Liang, Cunming wrote:
> > >
> > > Get it now. Please correct me if I missing something.
> > >
> > >
> > > Flags status hints,
> > >
> > > - DESC_DRIVER only: driver owns the descriptor w/o available info ready for device to use
> > >
> > > - DESC_DRIVER | DESC_WRAP: driver has prepared an available descriptor, device hasn't used it yet
> > >
> > > - None: device has used the descriptor, and write descriptor out
> > >
> > > - DESC_WRAP only: shall not happen, device make sure to clear it
> > >
> > >
> > > Polling behavior is,
> > >
> > > - Device monitor DESC_WRAP bit set or not; If set, go to use descriptor and clear DESC_DRIVER bit in the end (note: always need to clear DESC_WRAP)
> > >
> > > - Driver monitor DESC_DRIVER bit cleared or not; If cleared, reclaim descriptor(set DESC_DRIVER) and set DESC_WRAP once new available descriptor get ready to go
> > >
> > >
> > > --
> > > Steve
> >
> >
> > Hmm no, not what I had in mind.
> >
> > DESC_DRIVER: used by driver to poll. Driver sets it when writing a
> > descriptor. Device clears it when overwriting a descriptor.
> > Thus driver uses DESC_DRIVER to detect that device data in
> > descriptor is valid.
>
> Basically DESC_HW from v2 split in two?
Yes in order to avoid overwriting all descriptors.
> >
> > DESC_WRAP: used by device to poll. Driver sets it to a *different*
> > value every time it overwrites a descriptor. How to achieve it?
> > since descriptors are written out in ring order,
> > simply maintain the current value internally (start value 1) and flip it
> > every time you overwrite the first descriptor.
> > Device leaves it intact when overwriting a descriptor.
>
> This is confusing me a bit.
>
> My understanding is: 1. the internally kept wrap value only flipped when the
> first
> descriptor is overwritten
>
> 2. the moment the first descriptor is written the internal wrap value
> is flipped 0->1 or 1->0 and this value is written to every descriptor
> DESC_WRAP until we reach the first descriptor again
Yes this is what I tried to say. Can you suggest a better wording then?
> >
> > After writing down this explanation, I think the names aren't
> > great.
> >
> > Let me try an alternative explanation.
> >
> > ---------------
> > A two-bit field, DRIVER_OWNER, signals the buffer ownership.
> > It has 4 possible values:
> > values 0x1, 0x11 are written by driver
> > values 0x0, 0x10 are written by device
>
> The 0x prefix might add to the confusion here. It is really just two
> bits, no?
Ouch. Yes I meant 0b. Thanks!
> > each time driver writes out a descriptor, it must make sure
> > that the high bit in OWNER changes.
> >
> > each time device writes out a descriptor, it must make sure
> > that the high bit in OWNER does not change.
> >
> > this is exactly the same functionally, DRIVER is high bit and
> > WRAP is the low bit. Does this make things clearer?
>
> So far it makes sense to me.
> > ---------------
> >
> >
> >
> > Maybe the difference between device and driver
> > is confusing. We can fix that by changing the values.
> > Here is an alternative. Let me know if you like it better -
> > I need to think a bit more to make sure it works,
> > but to give you an idea:
> >
> >
> > ---------------
> > A two-bit field, DRIVER_OWNER, signals the buffer ownership.
> > It has 4 possible values:
> > values 0x1, 0x10 are written by driver
> > values 0x0, 0x11 are written by device
> >
> > each time driver writes out a descriptor, it must make sure
> > that the high bit in OWNER changes. Thus first time
> > it writes 0x10, next time 0x1, then 0x10 again.
> >
> > each time device writes out a descriptor, it must make sure
> > that the low bit in OWNER changes. Thus first time
> > it writes 0x11, next time 0x0, then 0x11 again.
>
> DESC_WRAP is changed by the device now, so this would work differently
> than in the scenario from above. This would mean we don't need the
> internally kept wrap value, right?
I think no but I did not complete simulating this yet so I don't
yet know if it even works.
>
> regards,
> Jens
---------------------------------------------------------------------
To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org
For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
next prev parent reply other threads:[~2017-10-04 12:58 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-10 5:06 [virtio-dev] packed ring layout proposal v3 Michael S. Tsirkin
[not found] ` <240c623b-2d8f-28d9-d349-d01e2c24b93a@redhat.com>
[not found] ` <20170208214435-mutt-send-email-mst@kernel.org>
[not found] ` <cc075b18-0913-ef89-96a8-a29869abd73e@redhat.com>
[not found] ` <20170209171105.075a9d9c.cornelia.huck@de.ibm.com>
[not found] ` <20170222181333-mutt-send-email-mst@kernel.org>
[not found] ` <20170307165353.00ff80d9.cornelia.huck@de.ibm.com>
[not found] ` <20170307223057-mutt-send-email-mst@kernel.org>
2017-07-10 16:27 ` [virtio-dev] packed ring layout proposal v2 Amnon Ilan
2017-07-16 6:00 ` Lior Narkis
2017-07-18 16:23 ` Michael S. Tsirkin
2017-07-19 7:41 ` Lior Narkis
2017-07-20 13:06 ` Michael S. Tsirkin
2017-09-11 7:47 ` [virtio-dev] Re: packed ring layout proposal v3 Jason Wang
2017-09-12 16:23 ` Willem de Bruijn
2017-09-13 1:26 ` Jason Wang
2017-09-12 16:20 ` [virtio-dev] " Willem de Bruijn
2017-09-20 9:11 ` Liang, Cunming
2017-09-25 22:24 ` Michael S. Tsirkin
2017-09-26 23:38 ` Steven Luong (sluong)
2017-09-27 23:49 ` Michael S. Tsirkin
2017-09-28 9:44 ` Liang, Cunming
2017-10-01 4:08 ` Michael S. Tsirkin
[not found] ` <20171004123901.oomueufqg52uhas4@localhost.localdomain>
2017-10-04 12:58 ` Michael S. Tsirkin [this message]
2017-10-10 9:56 ` Liang, Cunming
2017-09-28 21:13 ` Michael S. Tsirkin
2017-09-21 13:36 ` Liang, Cunming
2017-09-28 21:27 ` Michael S. Tsirkin
2017-10-08 6:16 ` [virtio-dev] " Ilya Lesokhin
2017-10-25 16:20 ` [virtio-dev] " Michael S. Tsirkin
2017-10-29 9:05 ` [virtio-dev] " Ilya Lesokhin
2017-10-29 14:21 ` [virtio-dev] " Michael S. Tsirkin
2017-10-29 14:34 ` [virtio-dev] " Ilya Lesokhin
2017-10-30 2:08 ` [virtio-dev] " Michael S. Tsirkin
2017-10-30 6:30 ` [virtio-dev] " Ilya Lesokhin
2017-10-30 16:30 ` [virtio-dev] " Michael S. Tsirkin
-- strict thread matches above, loose matches on Subject: below --
2017-10-20 9:50 [virtio-dev] " Lars Ganrot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171004155532-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=cunming.liang@intel.com \
--cc=jfreimann@redhat.com \
--cc=sluong@cisco.com \
--cc=virtio-dev@lists.oasis-open.org \
--cc=virtualization@lists.linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox