From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1AE17C001B0 for ; Tue, 27 Jun 2023 08:53:41 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 7E49F813F8; Tue, 27 Jun 2023 08:53:41 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 7E49F813F8 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jTFc6OWLBRmt; Tue, 27 Jun 2023 08:53:40 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp1.osuosl.org (Postfix) with ESMTPS id DB031813EC; Tue, 27 Jun 2023 08:53:39 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org DB031813EC Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id AF1CCC0072; Tue, 27 Jun 2023 08:53:39 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 54B01C0037 for ; Tue, 27 Jun 2023 08:53:38 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 2F991605BA for ; Tue, 27 Jun 2023 08:53:38 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 2F991605BA X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2i937d8ftl4W for ; Tue, 27 Jun 2023 08:53:36 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 04EFA605AF Received: from out30-118.freemail.mail.aliyun.com (out30-118.freemail.mail.aliyun.com [115.124.30.118]) by smtp3.osuosl.org (Postfix) with ESMTPS id 04EFA605AF for ; Tue, 27 Jun 2023 08:53:35 +0000 (UTC) X-Alimail-AntiSpam: AC=PASS; BC=-1|-1; BR=01201311R731e4; CH=green; DM=||false|; DS=||; FP=0|-1|-1|-1|0|-1|-1|-1; HT=ay29a033018046049; MF=xuanzhuo@linux.alibaba.com; NM=1; PH=DS; RN=13; SR=0; TI=SMTPD_---0Vm57mv3_1687856008; Received: from localhost(mailfrom:xuanzhuo@linux.alibaba.com fp:SMTPD_---0Vm57mv3_1687856008) by smtp.aliyun-inc.com; Tue, 27 Jun 2023 16:53:28 +0800 Message-ID: <1687855801.1280077-4-xuanzhuo@linux.alibaba.com> Subject: Re: [PATCH vhost v10 02/10] virtio_ring: introduce virtqueue_set_premapped() Date: Tue, 27 Jun 2023 16:50:01 +0800 From: Xuan Zhuo To: Jason Wang References: <20230602092206.50108-1-xuanzhuo@linux.alibaba.com> <20230602092206.50108-3-xuanzhuo@linux.alibaba.com> In-Reply-To: Cc: Jesper Dangaard Brouer , Daniel Borkmann , "Michael S. Tsirkin" , netdev@vger.kernel.org, John Fastabend , Alexei Starovoitov , virtualization@lists.linux-foundation.org, Eric Dumazet , Jakub Kicinski , bpf@vger.kernel.org, Paolo Abeni , "David S. Miller" X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" T24gVHVlLCAyNyBKdW4gMjAyMyAxNjowMzoyMyArMDgwMCwgSmFzb24gV2FuZyA8amFzb3dhbmdA cmVkaGF0LmNvbT4gd3JvdGU6Cj4gT24gRnJpLCBKdW4gMiwgMjAyMyBhdCA1OjIy4oCvUE0gWHVh biBaaHVvIDx4dWFuemh1b0BsaW51eC5hbGliYWJhLmNvbT4gd3JvdGU6Cj4gPgo+ID4gVGhpcyBo ZWxwZXIgYWxsb3dzIHRoZSBkcml2ZXIgY2hhbmdlIHRoZSBkbWEgbW9kZSB0byBwcmVtYXBwZWQg bW9kZS4KPiA+IFVuZGVyIHRoZSBwcmVtYXBwZWQgbW9kZSwgdGhlIHZpcnRpbyBjb3JlIGRvIG5v dCBkbyBkbWEgbWFwcGluZwo+ID4gaW50ZXJuYWxseS4KPiA+Cj4gPiBUaGlzIGp1c3Qgd29yayB3 aGVuIHRoZSB1c2VfZG1hX2FwaSBpcyB0cnVlLiBJZiB0aGUgdXNlX2RtYV9hcGkgaXMgZmFsc2Us Cj4gPiB0aGUgZG1hIG9wdGlvbnMgaXMgbm90IHRocm91Z2ggdGhlIERNQSBBUElzLCB0aGF0IGlz IG5vdCB0aGUgc3RhbmRhcmQKPiA+IHdheSBvZiB0aGUgbGludXgga2VybmVsLgo+ID4KPiA+IFNp Z25lZC1vZmYtYnk6IFh1YW4gWmh1byA8eHVhbnpodW9AbGludXguYWxpYmFiYS5jb20+Cj4gPiAt LS0KPiA+ICBkcml2ZXJzL3ZpcnRpby92aXJ0aW9fcmluZy5jIHwgNDAgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4gPiAgaW5jbHVkZS9saW51eC92aXJ0aW8uaCAgICAgICB8 ICAyICsrCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCA0MiBpbnNlcnRpb25zKCspCj4gPgo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19yaW5nLmMgYi9kcml2ZXJzL3ZpcnRpby92 aXJ0aW9fcmluZy5jCj4gPiBpbmRleCA3MmVkMDdhNjA0ZDQuLjJhZmRmYjllM2UzMCAxMDA2NDQK PiA+IC0tLSBhL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19yaW5nLmMKPiA+ICsrKyBiL2RyaXZlcnMv dmlydGlvL3ZpcnRpb19yaW5nLmMKPiA+IEBAIC0xNzIsNiArMTcyLDkgQEAgc3RydWN0IHZyaW5n X3ZpcnRxdWV1ZSB7Cj4gPiAgICAgICAgIC8qIEhvc3QgcHVibGlzaGVzIGF2YWlsIGV2ZW50IGlk eCAqLwo+ID4gICAgICAgICBib29sIGV2ZW50Owo+ID4KPiA+ICsgICAgICAgLyogRG8gRE1BIG1h cHBpbmcgYnkgZHJpdmVyICovCj4gPiArICAgICAgIGJvb2wgcHJlbWFwcGVkOwo+ID4gKwo+ID4g ICAgICAgICAvKiBIZWFkIG9mIGZyZWUgYnVmZmVyIGxpc3QuICovCj4gPiAgICAgICAgIHVuc2ln bmVkIGludCBmcmVlX2hlYWQ7Cj4gPiAgICAgICAgIC8qIE51bWJlciB3ZSd2ZSBhZGRlZCBzaW5j ZSBsYXN0IHN5bmMuICovCj4gPiBAQCAtMjA1OSw2ICsyMDYyLDcgQEAgc3RhdGljIHN0cnVjdCB2 aXJ0cXVldWUgKnZyaW5nX2NyZWF0ZV92aXJ0cXVldWVfcGFja2VkKAo+ID4gICAgICAgICB2cS0+ cGFja2VkX3JpbmcgPSB0cnVlOwo+ID4gICAgICAgICB2cS0+ZG1hX2RldiA9IGRtYV9kZXY7Cj4g PiAgICAgICAgIHZxLT51c2VfZG1hX2FwaSA9IHZyaW5nX3VzZV9kbWFfYXBpKHZkZXYpOwo+ID4g KyAgICAgICB2cS0+cHJlbWFwcGVkID0gZmFsc2U7Cj4gPgo+ID4gICAgICAgICB2cS0+aW5kaXJl Y3QgPSB2aXJ0aW9faGFzX2ZlYXR1cmUodmRldiwgVklSVElPX1JJTkdfRl9JTkRJUkVDVF9ERVND KSAmJgo+ID4gICAgICAgICAgICAgICAgICFjb250ZXh0Owo+ID4gQEAgLTI1NDgsNiArMjU1Miw3 IEBAIHN0YXRpYyBzdHJ1Y3QgdmlydHF1ZXVlICpfX3ZyaW5nX25ld192aXJ0cXVldWUodW5zaWdu ZWQgaW50IGluZGV4LAo+ID4gICNlbmRpZgo+ID4gICAgICAgICB2cS0+ZG1hX2RldiA9IGRtYV9k ZXY7Cj4gPiAgICAgICAgIHZxLT51c2VfZG1hX2FwaSA9IHZyaW5nX3VzZV9kbWFfYXBpKHZkZXYp Owo+ID4gKyAgICAgICB2cS0+cHJlbWFwcGVkID0gZmFsc2U7Cj4gPgo+ID4gICAgICAgICB2cS0+ aW5kaXJlY3QgPSB2aXJ0aW9faGFzX2ZlYXR1cmUodmRldiwgVklSVElPX1JJTkdfRl9JTkRJUkVD VF9ERVNDKSAmJgo+ID4gICAgICAgICAgICAgICAgICFjb250ZXh0Owo+ID4gQEAgLTI2OTEsNiAr MjY5Niw0MSBAQCBpbnQgdmlydHF1ZXVlX3Jlc2l6ZShzdHJ1Y3QgdmlydHF1ZXVlICpfdnEsIHUz MiBudW0sCj4gPiAgfQo+ID4gIEVYUE9SVF9TWU1CT0xfR1BMKHZpcnRxdWV1ZV9yZXNpemUpOwo+ ID4KPiA+ICsvKioKPiA+ICsgKiB2aXJ0cXVldWVfc2V0X3ByZW1hcHBlZCAtIHNldCB0aGUgdnJp bmcgcHJlbWFwcGVkIG1vZGUKPiA+ICsgKiBAX3ZxOiB0aGUgc3RydWN0IHZpcnRxdWV1ZSB3ZSdy ZSB0YWxraW5nIGFib3V0Lgo+ID4gKyAqCj4gPiArICogRW5hYmxlIHRoZSBwcmVtYXBwZWQgbW9k ZSBvZiB0aGUgdnEuCj4gPiArICoKPiA+ICsgKiBUaGUgdnJpbmcgaW4gcHJlbWFwcGVkIG1vZGUg ZG9lcyBub3QgZG8gZG1hIGludGVybmFsbHksIHNvIHRoZSBkcml2ZXIgbXVzdAo+ID4gKyAqIGRv IGRtYSBtYXBwaW5nIGluIGFkdmFuY2UuIFRoZSBkcml2ZXIgbXVzdCBwYXNzIHRoZSBkbWFfYWRk cmVzcyB0aHJvdWdoCj4gPiArICogZG1hX2FkZHJlc3Mgb2Ygc2NhdHRlcmxpc3QuIFdoZW4gdGhl IGRyaXZlciBnb3QgYSB1c2VkIGJ1ZmZlciBmcm9tCj4gPiArICogdGhlIHZyaW5nLCBpdCBoYXMg dG8gdW5tYXAgdGhlIGRtYSBhZGRyZXNzLiBTbyB0aGUgZHJpdmVyIG11c3QgY2FsbAo+ID4gKyAq IHZpcnRxdWV1ZV9nZXRfYnVmX3ByZW1hcHBlZCgpL3ZpcnRxdWV1ZV9kZXRhY2hfdW51c2VkX2J1 Zl9wcmVtYXBwZWQoKS4KPiA+ICsgKgo+ID4gKyAqIFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3Jl IGFkZGluZyBhbnkgYnVmIHRvIHZyaW5nLgo+Cj4gQW5kIGFueSBvbGQgYnVmZmVyIHNob3VsZCBi ZSBkZXRhY2hlZD8KCkkgbWVhbiB0aGF0IGJlZm9yZSBhZGRpbmcgYW55IGJ1ZiwgU28gdGhlcmUg YXJlIG5vdCBvbGQgYnVmZmVyLgoKCj4KPiA+ICsgKiBTbyB0aGlzIHNob3VsZCBiZSBjYWxsZWQg aW1tZWRpYXRlbHkgYWZ0ZXIgaW5pdCB2cSBvciB2cSByZXNldC4KPgo+IEFueSB3YXkgdG8gZGV0 ZWN0IGFuZCB3YXJuIGluIHRoaXMgY2FzZT8gKG5vdCBhIG11c3QgaWYgaXQncyB0b28KPiBleHBl bnNpdmUgdG8gZG8gdGhlIGNoZWNrKQoKCkkgY2FuIHRyeSB0byBjaGVjayB3aGV0aGVyIHRoZSBx ZXVldSBpcyBlbXB0eS4KCgo+Cj4gPiArICoKPiA+ICsgKiBDYWxsZXIgbXVzdCBlbnN1cmUgd2Ug ZG9uJ3QgY2FsbCB0aGlzIHdpdGggb3RoZXIgdmlydHF1ZXVlIG9wZXJhdGlvbnMKPiA+ICsgKiBh dCB0aGUgc2FtZSB0aW1lIChleGNlcHQgd2hlcmUgbm90ZWQpLgo+ID4gKyAqCj4gPiArICogUmV0 dXJucyB6ZXJvIG9yIGEgbmVnYXRpdmUgZXJyb3IuCj4gPiArICogMDogc3VjY2Vzcy4KPiA+ICsg KiAtRUlOVkFMOiB2cmluZyBkb2VzIG5vdCB1c2UgdGhlIGRtYSBhcGksIHNvIHdlIGNhbiBub3Qg ZW5hYmxlIHByZW1hcHBlZCBtb2RlLgo+ID4gKyAqLwo+ID4gK2ludCB2aXJ0cXVldWVfc2V0X3By ZW1hcHBlZChzdHJ1Y3QgdmlydHF1ZXVlICpfdnEpCj4gPiArewo+ID4gKyAgICAgICBzdHJ1Y3Qg dnJpbmdfdmlydHF1ZXVlICp2cSA9IHRvX3Z2cShfdnEpOwo+ID4gKwo+ID4gKyAgICAgICBpZiAo IXZxLT51c2VfZG1hX2FwaSkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ ICsKPiA+ICsgICAgICAgdnEtPnByZW1hcHBlZCA9IHRydWU7Cj4KPiBJIGd1ZXNzIHRoZXJlIHNo b3VsZCBiZSBhIHdheSB0byBkaXNhYmxlIGl0LiBXb3VsZCBpdCBiZSB1c2VmdWwgZm9yCj4gdGhl IGNhc2Ugd2hlbiBBRl9YRFAgc29ja2V0cyB3ZXJlIGRlc3Ryb3llZD8KClllcy4KCldoZW4gd2Ug cmVzZXQgdGhlIHF1ZXVlLCB0aGUgdnEtPnByZW1hcHBlZCB3aWxsIGJlIHNldCB0byAwLgoKVGhl IGlzIGNhbGxlZCBhZnRlciBmaW5kX3ZxcyBvciByZXNldCB2cS4KClRoYW5rcy4KCgoKPgo+IFRo YW5rcwo+Cj4KPiA+ICsKPiA+ICsgICAgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gK0VYUE9SVF9T WU1CT0xfR1BMKHZpcnRxdWV1ZV9zZXRfcHJlbWFwcGVkKTsKPiA+ICsKPiA+ICAvKiBPbmx5IGF2 YWlsYWJsZSBmb3Igc3BsaXQgcmluZyAqLwo+ID4gIHN0cnVjdCB2aXJ0cXVldWUgKnZyaW5nX25l d192aXJ0cXVldWUodW5zaWduZWQgaW50IGluZGV4LAo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnVtLAo+ID4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUvbGludXgvdmlydGlvLmggYi9pbmNsdWRlL2xpbnV4L3ZpcnRpby5oCj4gPiBpbmRleCBiOTMy MzhkYjk0ZTMuLjFmYzBlMTAyM2JkNCAxMDA2NDQKPiA+IC0tLSBhL2luY2x1ZGUvbGludXgvdmly dGlvLmgKPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvdmlydGlvLmgKPiA+IEBAIC03OCw2ICs3OCw4 IEBAIGJvb2wgdmlydHF1ZXVlX2VuYWJsZV9jYihzdHJ1Y3QgdmlydHF1ZXVlICp2cSk7Cj4gPgo+ ID4gIHVuc2lnbmVkIHZpcnRxdWV1ZV9lbmFibGVfY2JfcHJlcGFyZShzdHJ1Y3QgdmlydHF1ZXVl ICp2cSk7Cj4gPgo+ID4gK2ludCB2aXJ0cXVldWVfc2V0X3ByZW1hcHBlZChzdHJ1Y3QgdmlydHF1 ZXVlICpfdnEpOwo+ID4gKwo+ID4gIGJvb2wgdmlydHF1ZXVlX3BvbGwoc3RydWN0IHZpcnRxdWV1 ZSAqdnEsIHVuc2lnbmVkKTsKPiA+Cj4gPiAgYm9vbCB2aXJ0cXVldWVfZW5hYmxlX2NiX2RlbGF5 ZWQoc3RydWN0IHZpcnRxdWV1ZSAqdnEpOwo+ID4gLS0KPiA+IDIuMzIuMC4zLmcwMTE5NWNmOWYK PiA+Cj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVmly dHVhbGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5k YXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL3ZpcnR1YWxpemF0aW9u From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8E2D7BA55; Tue, 27 Jun 2023 08:53:35 +0000 (UTC) Received: from out30-130.freemail.mail.aliyun.com (out30-130.freemail.mail.aliyun.com [115.124.30.130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 79260106; Tue, 27 Jun 2023 01:53:32 -0700 (PDT) X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R731e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046049;MF=xuanzhuo@linux.alibaba.com;NM=1;PH=DS;RN=13;SR=0;TI=SMTPD_---0Vm57mv3_1687856008; Received: from localhost(mailfrom:xuanzhuo@linux.alibaba.com fp:SMTPD_---0Vm57mv3_1687856008) by smtp.aliyun-inc.com; Tue, 27 Jun 2023 16:53:28 +0800 Message-ID: <1687855801.1280077-4-xuanzhuo@linux.alibaba.com> Subject: Re: [PATCH vhost v10 02/10] virtio_ring: introduce virtqueue_set_premapped() Date: Tue, 27 Jun 2023 16:50:01 +0800 From: Xuan Zhuo To: Jason Wang Cc: virtualization@lists.linux-foundation.org, "Michael S. Tsirkin" , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , netdev@vger.kernel.org, bpf@vger.kernel.org References: <20230602092206.50108-1-xuanzhuo@linux.alibaba.com> <20230602092206.50108-3-xuanzhuo@linux.alibaba.com> In-Reply-To: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: On Tue, 27 Jun 2023 16:03:23 +0800, Jason Wang wrote: > On Fri, Jun 2, 2023 at 5:22=E2=80=AFPM Xuan Zhuo wrote: > > > > This helper allows the driver change the dma mode to premapped mode. > > Under the premapped mode, the virtio core do not do dma mapping > > internally. > > > > This just work when the use_dma_api is true. If the use_dma_api is fals= e, > > the dma options is not through the DMA APIs, that is not the standard > > way of the linux kernel. > > > > Signed-off-by: Xuan Zhuo > > --- > > drivers/virtio/virtio_ring.c | 40 ++++++++++++++++++++++++++++++++++++ > > include/linux/virtio.h | 2 ++ > > 2 files changed, 42 insertions(+) > > > > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c > > index 72ed07a604d4..2afdfb9e3e30 100644 > > --- a/drivers/virtio/virtio_ring.c > > +++ b/drivers/virtio/virtio_ring.c > > @@ -172,6 +172,9 @@ struct vring_virtqueue { > > /* Host publishes avail event idx */ > > bool event; > > > > + /* Do DMA mapping by driver */ > > + bool premapped; > > + > > /* Head of free buffer list. */ > > unsigned int free_head; > > /* Number we've added since last sync. */ > > @@ -2059,6 +2062,7 @@ static struct virtqueue *vring_create_virtqueue_p= acked( > > vq->packed_ring =3D true; > > vq->dma_dev =3D dma_dev; > > vq->use_dma_api =3D vring_use_dma_api(vdev); > > + vq->premapped =3D false; > > > > vq->indirect =3D virtio_has_feature(vdev, VIRTIO_RING_F_INDIREC= T_DESC) && > > !context; > > @@ -2548,6 +2552,7 @@ static struct virtqueue *__vring_new_virtqueue(un= signed int index, > > #endif > > vq->dma_dev =3D dma_dev; > > vq->use_dma_api =3D vring_use_dma_api(vdev); > > + vq->premapped =3D false; > > > > vq->indirect =3D virtio_has_feature(vdev, VIRTIO_RING_F_INDIREC= T_DESC) && > > !context; > > @@ -2691,6 +2696,41 @@ int virtqueue_resize(struct virtqueue *_vq, u32 = num, > > } > > EXPORT_SYMBOL_GPL(virtqueue_resize); > > > > +/** > > + * virtqueue_set_premapped - set the vring premapped mode > > + * @_vq: the struct virtqueue we're talking about. > > + * > > + * Enable the premapped mode of the vq. > > + * > > + * The vring in premapped mode does not do dma internally, so the driv= er must > > + * do dma mapping in advance. The driver must pass the dma_address thr= ough > > + * dma_address of scatterlist. When the driver got a used buffer from > > + * the vring, it has to unmap the dma address. So the driver must call > > + * virtqueue_get_buf_premapped()/virtqueue_detach_unused_buf_premapped= (). > > + * > > + * This must be called before adding any buf to vring. > > And any old buffer should be detached? I mean that before adding any buf, So there are not old buffer. > > > + * So this should be called immediately after init vq or vq reset. > > Any way to detect and warn in this case? (not a must if it's too > expensive to do the check) I can try to check whether the qeueu is empty. > > > + * > > + * Caller must ensure we don't call this with other virtqueue operatio= ns > > + * at the same time (except where noted). > > + * > > + * Returns zero or a negative error. > > + * 0: success. > > + * -EINVAL: vring does not use the dma api, so we can not enable prema= pped mode. > > + */ > > +int virtqueue_set_premapped(struct virtqueue *_vq) > > +{ > > + struct vring_virtqueue *vq =3D to_vvq(_vq); > > + > > + if (!vq->use_dma_api) > > + return -EINVAL; > > + > > + vq->premapped =3D true; > > I guess there should be a way to disable it. Would it be useful for > the case when AF_XDP sockets were destroyed? Yes. When we reset the queue, the vq->premapped will be set to 0. The is called after find_vqs or reset vq. Thanks. > > Thanks > > > > + > > + return 0; > > +} > > +EXPORT_SYMBOL_GPL(virtqueue_set_premapped); > > + > > /* Only available for split ring */ > > struct virtqueue *vring_new_virtqueue(unsigned int index, > > unsigned int num, > > diff --git a/include/linux/virtio.h b/include/linux/virtio.h > > index b93238db94e3..1fc0e1023bd4 100644 > > --- a/include/linux/virtio.h > > +++ b/include/linux/virtio.h > > @@ -78,6 +78,8 @@ bool virtqueue_enable_cb(struct virtqueue *vq); > > > > unsigned virtqueue_enable_cb_prepare(struct virtqueue *vq); > > > > +int virtqueue_set_premapped(struct virtqueue *_vq); > > + > > bool virtqueue_poll(struct virtqueue *vq, unsigned); > > > > bool virtqueue_enable_cb_delayed(struct virtqueue *vq); > > -- > > 2.32.0.3.g01195cf9f > > >