From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: virtio-dev-return-2572-cohuck=redhat.com@lists.oasis-open.org Sender: List-Post: List-Help: List-Unsubscribe: List-Subscribe: Received: from lists.oasis-open.org (oasis-open.org [66.179.20.138]) by lists.oasis-open.org (Postfix) with ESMTP id A7CB05818082 for ; Wed, 27 Sep 2017 16:49:17 -0700 (PDT) Date: Thu, 28 Sep 2017 02:49:15 +0300 From: "Michael S. Tsirkin" Message-ID: <20170928023112-mutt-send-email-mst@kernel.org> References: <20160915223915.qjlnlvf2w7u37bu3@redhat.com> <20170926011826-mutt-send-email-mst@kernel.org> <7A0DC0C9-F148-4161-B2D1-8D8D14D8B9A1@cisco.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <7A0DC0C9-F148-4161-B2D1-8D8D14D8B9A1@cisco.com> Subject: Re: [virtio-dev] packed ring layout proposal v3 To: "Steven Luong (sluong)" Cc: "Liang, Cunming" , "virtio-dev@lists.oasis-open.org" , "virtualization@lists.linux-foundation.org" List-ID: On Tue, Sep 26, 2017 at 11:38:18PM +0000, Steven Luong (sluong) wrote: > Michael, > > Would you please give an example or two how these two flags DESC_DRIVER and DESC_WRAP are used together? Like others, I am confused by the description and still don’t quite grok it. > > Steven My bad, I will need to work on it. Here is an example: Let's assume device promised to consume packets in order ring size = 2 Ring is 0 initialized. Device initially polls DESC[0].flags for WRAP bit to change. driver adds: DESC[0].addr = 1234 DESC[0].id = 0 DESC[0].flags = DESC_DRIVER | DESC_NEXT | DESC_WRAP and DESC[0].addr = 5678 DESC[1].id = 1 DESC[1].flags = DESC_DRIVER | DESC_WRAP it now starts polling DESC[0] flags. Device reads 1234, executes it, does not use it. Device reads 5678, executes it, and uses it: DESC[0].id = 1 DESC[0].flags = 0 Device now polls DESC[0].flags for WRAP bit to change. Now driver sees that DRIVER bit has been cleared, so it nows that id is valid. I sees id 1, therefore id 0 and 1 has been read and are safe to overwrite. So it writes it out. It wrapped around to beginning of ring, so it flips the WRAP bit to 0 on all descriptors now: DESC[0].addr = 9ABC DESC[0].id = 0 DESC[0].flags = DESC_DRIVER | DESC_NEXT DESC[0].addr = DEF0 DESC[0].id = 1 DESC[0].flags = DESC_DRIVER Next round wrap will be 1 again. To summarise: DRIVER bit is used by driver to detect device has used one or more descriptors. WRAP is is used by device to detect driver has made a new descriptor available. -- MST --------------------------------------------------------------------- To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael S. Tsirkin" Subject: Re: [virtio-dev] packed ring layout proposal v3 Date: Thu, 28 Sep 2017 02:49:15 +0300 Message-ID: <20170928023112-mutt-send-email-mst@kernel.org> References: <20160915223915.qjlnlvf2w7u37bu3@redhat.com> <20170926011826-mutt-send-email-mst@kernel.org> <7A0DC0C9-F148-4161-B2D1-8D8D14D8B9A1@cisco.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <7A0DC0C9-F148-4161-B2D1-8D8D14D8B9A1@cisco.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: "Steven Luong (sluong)" Cc: "virtio-dev@lists.oasis-open.org" , "virtualization@lists.linux-foundation.org" List-Id: virtualization@lists.linuxfoundation.org T24gVHVlLCBTZXAgMjYsIDIwMTcgYXQgMTE6Mzg6MThQTSArMDAwMCwgU3RldmVuIEx1b25nIChz bHVvbmcpIHdyb3RlOgo+IE1pY2hhZWwsCj4gCj4gV291bGQgeW91IHBsZWFzZSBnaXZlIGFuIGV4 YW1wbGUgb3IgdHdvIGhvdyB0aGVzZSB0d28gZmxhZ3MgREVTQ19EUklWRVIgYW5kIERFU0NfV1JB UCBhcmUgdXNlZCB0b2dldGhlcj8gTGlrZSBvdGhlcnMsIEkgYW0gY29uZnVzZWQgYnkgdGhlIGRl c2NyaXB0aW9uIGFuZCBzdGlsbCBkb27igJl0IHF1aXRlIGdyb2sgaXQuCj4gCj4gU3RldmVuCgpN eSBiYWQsIEkgd2lsbCBuZWVkIHRvIHdvcmsgb24gaXQuIEhlcmUgaXMgYW4gZXhhbXBsZToKCkxl dCdzIGFzc3VtZSBkZXZpY2UgcHJvbWlzZWQgdG8gY29uc3VtZSBwYWNrZXRzIGluIG9yZGVyCgpy aW5nIHNpemUgPSAyCgpSaW5nIGlzIDAgaW5pdGlhbGl6ZWQuCgpEZXZpY2UgaW5pdGlhbGx5IHBv bGxzIERFU0NbMF0uZmxhZ3MgZm9yIFdSQVAgYml0IHRvIGNoYW5nZS4KCmRyaXZlciBhZGRzOgoK REVTQ1swXS5hZGRyID0gMTIzNApERVNDWzBdLmlkID0gMApERVNDWzBdLmZsYWdzID0gREVTQ19E UklWRVIgfCBERVNDX05FWFQgfCBERVNDX1dSQVAKCmFuZAoKREVTQ1swXS5hZGRyID0gNTY3OApE RVNDWzFdLmlkID0gMQpERVNDWzFdLmZsYWdzID0gREVTQ19EUklWRVIgfCBERVNDX1dSQVAKCgpp dCBub3cgc3RhcnRzIHBvbGxpbmcgREVTQ1swXSBmbGFncy4KCgpEZXZpY2UgcmVhZHMgMTIzNCwg ZXhlY3V0ZXMgaXQsIGRvZXMgbm90IHVzZSBpdC4KCkRldmljZSByZWFkcyA1Njc4LCBleGVjdXRl cyBpdCwgYW5kIHVzZXMgaXQ6CgpERVNDWzBdLmlkID0gMQpERVNDWzBdLmZsYWdzID0gMAoKRGV2 aWNlIG5vdyBwb2xscyBERVNDWzBdLmZsYWdzIGZvciBXUkFQIGJpdCB0byBjaGFuZ2UuCgpOb3cg ZHJpdmVyIHNlZXMgdGhhdCBEUklWRVIgYml0IGhhcyBiZWVuIGNsZWFyZWQsIHNvIGl0IG5vd3Mg dGhhdCBpZCBpcwp2YWxpZC4gSSBzZWVzIGlkIDEsIHRoZXJlZm9yZSBpZCAwIGFuZCAxIGhhcyBi ZWVuIHJlYWQgYW5kIGFyZSBzYWZlIHRvCm92ZXJ3cml0ZS4KClNvIGl0IHdyaXRlcyBpdCBvdXQu IEl0IHdyYXBwZWQgYXJvdW5kIHRvIGJlZ2lubmluZyBvZiByaW5nLApzbyBpdCBmbGlwcyB0aGUg V1JBUCBiaXQgdG8gMCBvbiBhbGwgZGVzY3JpcHRvcnMgbm93OgoKREVTQ1swXS5hZGRyID0gOUFC QwpERVNDWzBdLmlkID0gMApERVNDWzBdLmZsYWdzID0gREVTQ19EUklWRVIgfCBERVNDX05FWFQK CgpERVNDWzBdLmFkZHIgPSBERUYwCkRFU0NbMF0uaWQgPSAxCkRFU0NbMF0uZmxhZ3MgPSBERVND X0RSSVZFUgoKCk5leHQgcm91bmQgd3JhcCB3aWxsIGJlIDEgYWdhaW4uCgoKVG8gc3VtbWFyaXNl OgoKRFJJVkVSIGJpdCBpcyB1c2VkIGJ5IGRyaXZlciB0byBkZXRlY3QgZGV2aWNlIGhhcyB1c2Vk IG9uZSBvciBtb3JlCmRlc2NyaXB0b3JzLiAgV1JBUCBpcyBpcyB1c2VkIGJ5IGRldmljZSB0byBk ZXRlY3QgZHJpdmVyIGhhcyBtYWRlIGEKbmV3IGRlc2NyaXB0b3IgYXZhaWxhYmxlLgoKCi0tIApN U1QKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVmlydHVh bGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRp b24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZv L3ZpcnR1YWxpemF0aW9u