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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6F0F9C4332F for ; Mon, 18 Apr 2022 08:55:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233282AbiDRI5h (ORCPT ); Mon, 18 Apr 2022 04:57:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51834 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231738AbiDRI5g (ORCPT ); Mon, 18 Apr 2022 04:57:36 -0400 Received: from out30-43.freemail.mail.aliyun.com (out30-43.freemail.mail.aliyun.com [115.124.30.43]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F24EC257; Mon, 18 Apr 2022 01:54:53 -0700 (PDT) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R231e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e01e04357;MF=xuanzhuo@linux.alibaba.com;NM=1;PH=DS;RN=33;SR=0;TI=SMTPD_---0VALaedj_1650272086; Received: from localhost(mailfrom:xuanzhuo@linux.alibaba.com fp:SMTPD_---0VALaedj_1650272086) by smtp.aliyun-inc.com(127.0.0.1); Mon, 18 Apr 2022 16:54:48 +0800 Message-ID: <1650271705.1503067-1-xuanzhuo@linux.alibaba.com> Subject: Re: [PATCH v9 31/32] virtio_net: support rx/tx queue resize Date: Mon, 18 Apr 2022 16:48:25 +0800 From: Xuan Zhuo To: Jason Wang Cc: Jeff Dike , Richard Weinberger , Anton Ivanov , "Michael S. Tsirkin" , "David S. Miller" , Jakub Kicinski , Hans de Goede , Mark Gross , Vadim Pasternak , Bjorn Andersson , Mathieu Poirier , Cornelia Huck , Halil Pasic , Heiko Carstens , Vasily Gorbik , Christian Borntraeger , Alexander Gordeev , Sven Schnelle , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Johannes Berg , Vincent Whitchurch , linux-um@lists.infradead.org, netdev , platform-driver-x86@vger.kernel.org, linux-remoteproc@vger.kernel.org, linux-s390@vger.kernel.org, kvm , "open list:XDP (eXpress Data Path)" , virtualization References: <20220406034346.74409-1-xuanzhuo@linux.alibaba.com> <20220406034346.74409-32-xuanzhuo@linux.alibaba.com> <122008a6-1e79-14d3-1478-59f96464afc9@redhat.com> <1650252077.7934203-1-xuanzhuo@linux.alibaba.com> In-Reply-To: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-remoteproc@vger.kernel.org On Mon, 18 Apr 2022 15:49:29 +0800, Jason Wang wrote: > On Mon, Apr 18, 2022 at 11:24 AM Xuan Zhuo w= rote: > > > > On Wed, 13 Apr 2022 16:00:18 +0800, Jason Wang wr= ote: > > > > > > =E5=9C=A8 2022/4/6 =E4=B8=8A=E5=8D=8811:43, Xuan Zhuo =E5=86=99=E9=81= =93: > > > > This patch implements the resize function of the rx, tx queues. > > > > Based on this function, it is possible to modify the ring num of the > > > > queue. > > > > > > > > There may be an exception during the resize process, the resize may > > > > fail, or the vq can no longer be used. Either way, we must execute > > > > napi_enable(). Because napi_disable is similar to a lock, napi_enab= le > > > > must be called after calling napi_disable. > > > > > > > > Signed-off-by: Xuan Zhuo > > > > --- > > > > drivers/net/virtio_net.c | 81 +++++++++++++++++++++++++++++++++++= +++++ > > > > 1 file changed, 81 insertions(+) > > > > > > > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > > > > index b8bf00525177..ba6859f305f7 100644 > > > > --- a/drivers/net/virtio_net.c > > > > +++ b/drivers/net/virtio_net.c > > > > @@ -251,6 +251,9 @@ struct padded_vnet_hdr { > > > > char padding[4]; > > > > }; > > > > > > > > +static void virtnet_sq_free_unused_buf(struct virtqueue *vq, void = *buf); > > > > +static void virtnet_rq_free_unused_buf(struct virtqueue *vq, void = *buf); > > > > + > > > > static bool is_xdp_frame(void *ptr) > > > > { > > > > return (unsigned long)ptr & VIRTIO_XDP_FLAG; > > > > @@ -1369,6 +1372,15 @@ static void virtnet_napi_enable(struct virtq= ueue *vq, struct napi_struct *napi) > > > > { > > > > napi_enable(napi); > > > > > > > > + /* Check if vq is in reset state. The normal reset/resize proce= ss will > > > > + * be protected by napi. However, the protection of napi is onl= y enabled > > > > + * during the operation, and the protection of napi will end af= ter the > > > > + * operation is completed. If re-enable fails during the proces= s, vq > > > > + * will remain unavailable with reset state. > > > > + */ > > > > + if (vq->reset) > > > > + return; > > > > > > > > > I don't get when could we hit this condition. > > > > > > > > > > + > > > > /* If all buffers were filled by other side before we napi_enab= led, we > > > > * won't get another interrupt, so process any outstanding pack= ets now. > > > > * Call local_bh_enable after to trigger softIRQ processing. > > > > @@ -1413,6 +1425,15 @@ static void refill_work(struct work_struct *= work) > > > > struct receive_queue *rq =3D &vi->rq[i]; > > > > > > > > napi_disable(&rq->napi); > > > > + > > > > + /* Check if vq is in reset state. See more in > > > > + * virtnet_napi_enable() > > > > + */ > > > > + if (rq->vq->reset) { > > > > + virtnet_napi_enable(rq->vq, &rq->napi); > > > > + continue; > > > > + } > > > > > > > > > Can we do something similar in virtnet_close() by canceling the work? > > > > > > > > > > + > > > > still_empty =3D !try_fill_recv(vi, rq, GFP_KERNEL); > > > > virtnet_napi_enable(rq->vq, &rq->napi); > > > > > > > > @@ -1523,6 +1544,10 @@ static void virtnet_poll_cleantx(struct rece= ive_queue *rq) > > > > if (!sq->napi.weight || is_xdp_raw_buffer_queue(vi, index)) > > > > return; > > > > > > > > + /* Check if vq is in reset state. See more in virtnet_napi_enab= le() */ > > > > + if (sq->vq->reset) > > > > + return; > > > > > > > > > We've disabled TX napi, any chance we can still hit this? > > > > > > static int virtnet_poll(struct napi_struct *napi, int budget) > > { > > struct receive_queue *rq =3D > > container_of(napi, struct receive_queue, napi); > > struct virtnet_info *vi =3D rq->vq->vdev->priv; > > struct send_queue *sq; > > unsigned int received; > > unsigned int xdp_xmit =3D 0; > > > > virtnet_poll_cleantx(rq); > > ... > > } > > > > This is called by rx poll. Although it is the logic of tx, it is not dr= iven by > > tx napi, but is called in rx poll. > > Ok, but we need guarantee the memory ordering in this case. Disable RX > napi could be a solution for this. Yes, I have realized this too. I have two solutions, disable rx napi or the following. Thanks. diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 9bf1b6530b38..7764d1dcb831 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -135,6 +135,7 @@ struct send_queue { struct virtnet_sq_stats stats; struct napi_struct napi; + bool reset; }; /* Internal representation of a receive virtqueue */ @@ -1583,6 +1587,11 @@ static void virtnet_poll_cleantx(struct receive_queu= e *rq) return; if (__netif_tx_trylock(txq)) { + if (sq->reset) { + __netif_tx_unlock(txq); + return; + } + do { virtqueue_disable_cb(sq->vq); free_old_xmit_skbs(sq, true); @@ -1828,6 +1837,56 @@ static netdev_tx_t start_xmit(struct sk_buff *skb, s= truct net_device *dev) return NETDEV_TX_OK; } +static int virtnet_tx_resize(struct virtnet_info *vi, + struct send_queue *sq, u32 ring_num) +{ + struct netdev_queue *txq; + int err, qindex; + + qindex =3D sq - vi->sq; + + virtnet_napi_tx_disable(&sq->napi); + + txq =3D netdev_get_tx_queue(vi->dev, qindex); + + __netif_tx_lock_bh(txq); + netif_stop_subqueue(vi->dev, qindex); + sq->reset =3D true; + __netif_tx_unlock_bh(txq); + + err =3D virtqueue_resize(sq->vq, ring_num, virtnet_sq_free_unused_buf); + if (err) + netdev_err(vi->dev, "resize tx fail: tx queue index: %d err: %d\n", qind= ex, err); + + __netif_tx_lock_bh(txq); + sq->reset =3D false; + netif_start_subqueue(vi->dev, qindex); + __netif_tx_unlock_bh(txq); + + virtnet_napi_tx_enable(vi, sq->vq, &sq->napi); + return err; +} + 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 smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (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 2E5C3C433F5 for ; Mon, 18 Apr 2022 08:55:01 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id C051161215; Mon, 18 Apr 2022 08:55:00 +0000 (UTC) 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 uLqTGwP0bqUT; Mon, 18 Apr 2022 08:54:58 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp3.osuosl.org (Postfix) with ESMTPS id 2A9AB60FBC; Mon, 18 Apr 2022 08:54:58 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id D92C6C002F; Mon, 18 Apr 2022 08:54:57 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 54560C002C for ; Mon, 18 Apr 2022 08:54:56 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 49D8141DC7 for ; Mon, 18 Apr 2022 08:54:56 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tRdkRsSaRwPc for ; Mon, 18 Apr 2022 08:54:54 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from out30-42.freemail.mail.aliyun.com (out30-42.freemail.mail.aliyun.com [115.124.30.42]) by smtp4.osuosl.org (Postfix) with ESMTPS id DB36841DC1 for ; Mon, 18 Apr 2022 08:54:53 +0000 (UTC) X-Alimail-AntiSpam: AC=PASS; BC=-1|-1; BR=01201311R231e4; CH=green; DM=||false|; DS=||; FP=0|-1|-1|-1|0|-1|-1|-1; HT=e01e04357; MF=xuanzhuo@linux.alibaba.com; NM=1; PH=DS; RN=33; SR=0; TI=SMTPD_---0VALaedj_1650272086; Received: from localhost(mailfrom:xuanzhuo@linux.alibaba.com fp:SMTPD_---0VALaedj_1650272086) by smtp.aliyun-inc.com(127.0.0.1); Mon, 18 Apr 2022 16:54:48 +0800 Message-ID: <1650271705.1503067-1-xuanzhuo@linux.alibaba.com> Subject: Re: [PATCH v9 31/32] virtio_net: support rx/tx queue resize Date: Mon, 18 Apr 2022 16:48:25 +0800 From: Xuan Zhuo To: Jason Wang References: <20220406034346.74409-1-xuanzhuo@linux.alibaba.com> <20220406034346.74409-32-xuanzhuo@linux.alibaba.com> <122008a6-1e79-14d3-1478-59f96464afc9@redhat.com> <1650252077.7934203-1-xuanzhuo@linux.alibaba.com> In-Reply-To: Cc: Vadim Pasternak , "Michael S. Tsirkin" , linux-remoteproc@vger.kernel.org, Alexei Starovoitov , Bjorn Andersson , Alexander Gordeev , Anton Ivanov , linux-s390@vger.kernel.org, Johannes Berg , Daniel Borkmann , Richard Weinberger , Vincent Whitchurch , John Fastabend , Halil Pasic , Jakub Kicinski , virtualization , Heiko Carstens , Jesper Dangaard Brouer , Vasily Gorbik , Jeff Dike , linux-um@lists.infradead.org, Mark Gross , Hans de Goede , kvm , platform-driver-x86@vger.kernel.org, Mathieu Poirier , netdev , Cornelia Huck , Sven Schnelle , "open list:XDP \(eXpress Data Path\)" , "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" T24gTW9uLCAxOCBBcHIgMjAyMiAxNTo0OToyOSArMDgwMCwgSmFzb24gV2FuZyA8amFzb3dhbmdA cmVkaGF0LmNvbT4gd3JvdGU6Cj4gT24gTW9uLCBBcHIgMTgsIDIwMjIgYXQgMTE6MjQgQU0gWHVh biBaaHVvIDx4dWFuemh1b0BsaW51eC5hbGliYWJhLmNvbT4gd3JvdGU6Cj4gPgo+ID4gT24gV2Vk LCAxMyBBcHIgMjAyMiAxNjowMDoxOCArMDgwMCwgSmFzb24gV2FuZyA8amFzb3dhbmdAcmVkaGF0 LmNvbT4gd3JvdGU6Cj4gPiA+Cj4gPiA+IOWcqCAyMDIyLzQvNiDkuIrljYgxMTo0MywgWHVhbiBa aHVvIOWGmemBkzoKPiA+ID4gPiBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIHJlc2l6ZSBmdW5j dGlvbiBvZiB0aGUgcngsIHR4IHF1ZXVlcy4KPiA+ID4gPiBCYXNlZCBvbiB0aGlzIGZ1bmN0aW9u LCBpdCBpcyBwb3NzaWJsZSB0byBtb2RpZnkgdGhlIHJpbmcgbnVtIG9mIHRoZQo+ID4gPiA+IHF1 ZXVlLgo+ID4gPiA+Cj4gPiA+ID4gVGhlcmUgbWF5IGJlIGFuIGV4Y2VwdGlvbiBkdXJpbmcgdGhl IHJlc2l6ZSBwcm9jZXNzLCB0aGUgcmVzaXplIG1heQo+ID4gPiA+IGZhaWwsIG9yIHRoZSB2cSBj YW4gbm8gbG9uZ2VyIGJlIHVzZWQuIEVpdGhlciB3YXksIHdlIG11c3QgZXhlY3V0ZQo+ID4gPiA+ IG5hcGlfZW5hYmxlKCkuIEJlY2F1c2UgbmFwaV9kaXNhYmxlIGlzIHNpbWlsYXIgdG8gYSBsb2Nr LCBuYXBpX2VuYWJsZQo+ID4gPiA+IG11c3QgYmUgY2FsbGVkIGFmdGVyIGNhbGxpbmcgbmFwaV9k aXNhYmxlLgo+ID4gPiA+Cj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogWHVhbiBaaHVvIDx4dWFuemh1 b0BsaW51eC5hbGliYWJhLmNvbT4KPiA+ID4gPiAtLS0KPiA+ID4gPiAgIGRyaXZlcnMvbmV0L3Zp cnRpb19uZXQuYyB8IDgxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK PiA+ID4gPiAgIDEgZmlsZSBjaGFuZ2VkLCA4MSBpbnNlcnRpb25zKCspCj4gPiA+ID4KPiA+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlydGlvX25ldC5jIGIvZHJpdmVycy9uZXQvdmly dGlvX25ldC5jCj4gPiA+ID4gaW5kZXggYjhiZjAwNTI1MTc3Li5iYTY4NTlmMzA1ZjcgMTAwNjQ0 Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9uZXQvdmlydGlvX25ldC5jCj4gPiA+ID4gKysrIGIvZHJp dmVycy9uZXQvdmlydGlvX25ldC5jCj4gPiA+ID4gQEAgLTI1MSw2ICsyNTEsOSBAQCBzdHJ1Y3Qg cGFkZGVkX3ZuZXRfaGRyIHsKPiA+ID4gPiAgICAgY2hhciBwYWRkaW5nWzRdOwo+ID4gPiA+ICAg fTsKPiA+ID4gPgo+ID4gPiA+ICtzdGF0aWMgdm9pZCB2aXJ0bmV0X3NxX2ZyZWVfdW51c2VkX2J1 ZihzdHJ1Y3QgdmlydHF1ZXVlICp2cSwgdm9pZCAqYnVmKTsKPiA+ID4gPiArc3RhdGljIHZvaWQg dmlydG5ldF9ycV9mcmVlX3VudXNlZF9idWYoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIHZvaWQgKmJ1 Zik7Cj4gPiA+ID4gKwo+ID4gPiA+ICAgc3RhdGljIGJvb2wgaXNfeGRwX2ZyYW1lKHZvaWQgKnB0 cikKPiA+ID4gPiAgIHsKPiA+ID4gPiAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKXB0ciAmIFZJ UlRJT19YRFBfRkxBRzsKPiA+ID4gPiBAQCAtMTM2OSw2ICsxMzcyLDE1IEBAIHN0YXRpYyB2b2lk IHZpcnRuZXRfbmFwaV9lbmFibGUoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIHN0cnVjdCBuYXBpX3N0 cnVjdCAqbmFwaSkKPiA+ID4gPiAgIHsKPiA+ID4gPiAgICAgbmFwaV9lbmFibGUobmFwaSk7Cj4g PiA+ID4KPiA+ID4gPiArICAgLyogQ2hlY2sgaWYgdnEgaXMgaW4gcmVzZXQgc3RhdGUuIFRoZSBu b3JtYWwgcmVzZXQvcmVzaXplIHByb2Nlc3Mgd2lsbAo+ID4gPiA+ICsgICAgKiBiZSBwcm90ZWN0 ZWQgYnkgbmFwaS4gSG93ZXZlciwgdGhlIHByb3RlY3Rpb24gb2YgbmFwaSBpcyBvbmx5IGVuYWJs ZWQKPiA+ID4gPiArICAgICogZHVyaW5nIHRoZSBvcGVyYXRpb24sIGFuZCB0aGUgcHJvdGVjdGlv biBvZiBuYXBpIHdpbGwgZW5kIGFmdGVyIHRoZQo+ID4gPiA+ICsgICAgKiBvcGVyYXRpb24gaXMg Y29tcGxldGVkLiBJZiByZS1lbmFibGUgZmFpbHMgZHVyaW5nIHRoZSBwcm9jZXNzLCB2cQo+ID4g PiA+ICsgICAgKiB3aWxsIHJlbWFpbiB1bmF2YWlsYWJsZSB3aXRoIHJlc2V0IHN0YXRlLgo+ID4g PiA+ICsgICAgKi8KPiA+ID4gPiArICAgaWYgKHZxLT5yZXNldCkKPiA+ID4gPiArICAgICAgICAg ICByZXR1cm47Cj4gPiA+Cj4gPiA+Cj4gPiA+IEkgZG9uJ3QgZ2V0IHdoZW4gY291bGQgd2UgaGl0 IHRoaXMgY29uZGl0aW9uLgo+ID4gPgo+ID4gPgo+ID4gPiA+ICsKPiA+ID4gPiAgICAgLyogSWYg YWxsIGJ1ZmZlcnMgd2VyZSBmaWxsZWQgYnkgb3RoZXIgc2lkZSBiZWZvcmUgd2UgbmFwaV9lbmFi bGVkLCB3ZQo+ID4gPiA+ICAgICAgKiB3b24ndCBnZXQgYW5vdGhlciBpbnRlcnJ1cHQsIHNvIHBy b2Nlc3MgYW55IG91dHN0YW5kaW5nIHBhY2tldHMgbm93Lgo+ID4gPiA+ICAgICAgKiBDYWxsIGxv Y2FsX2JoX2VuYWJsZSBhZnRlciB0byB0cmlnZ2VyIHNvZnRJUlEgcHJvY2Vzc2luZy4KPiA+ID4g PiBAQCAtMTQxMyw2ICsxNDI1LDE1IEBAIHN0YXRpYyB2b2lkIHJlZmlsbF93b3JrKHN0cnVjdCB3 b3JrX3N0cnVjdCAqd29yaykKPiA+ID4gPiAgICAgICAgICAgICBzdHJ1Y3QgcmVjZWl2ZV9xdWV1 ZSAqcnEgPSAmdmktPnJxW2ldOwo+ID4gPiA+Cj4gPiA+ID4gICAgICAgICAgICAgbmFwaV9kaXNh YmxlKCZycS0+bmFwaSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgICAgIC8qIENoZWNrIGlm IHZxIGlzIGluIHJlc2V0IHN0YXRlLiBTZWUgbW9yZSBpbgo+ID4gPiA+ICsgICAgICAgICAgICAq IHZpcnRuZXRfbmFwaV9lbmFibGUoKQo+ID4gPiA+ICsgICAgICAgICAgICAqLwo+ID4gPiA+ICsg ICAgICAgICAgIGlmIChycS0+dnEtPnJlc2V0KSB7Cj4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICB2aXJ0bmV0X25hcGlfZW5hYmxlKHJxLT52cSwgJnJxLT5uYXBpKTsKPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gPiA+ICsgICAgICAgICAgIH0KPiA+ID4KPiA+ID4K PiA+ID4gQ2FuIHdlIGRvIHNvbWV0aGluZyBzaW1pbGFyIGluIHZpcnRuZXRfY2xvc2UoKSBieSBj YW5jZWxpbmcgdGhlIHdvcms/Cj4gPiA+Cj4gPiA+Cj4gPiA+ID4gKwo+ID4gPiA+ICAgICAgICAg ICAgIHN0aWxsX2VtcHR5ID0gIXRyeV9maWxsX3JlY3YodmksIHJxLCBHRlBfS0VSTkVMKTsKPiA+ ID4gPiAgICAgICAgICAgICB2aXJ0bmV0X25hcGlfZW5hYmxlKHJxLT52cSwgJnJxLT5uYXBpKTsK PiA+ID4gPgo+ID4gPiA+IEBAIC0xNTIzLDYgKzE1NDQsMTAgQEAgc3RhdGljIHZvaWQgdmlydG5l dF9wb2xsX2NsZWFudHgoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxKQo+ID4gPiA+ICAgICBpZiAo IXNxLT5uYXBpLndlaWdodCB8fCBpc194ZHBfcmF3X2J1ZmZlcl9xdWV1ZSh2aSwgaW5kZXgpKQo+ ID4gPiA+ICAgICAgICAgICAgIHJldHVybjsKPiA+ID4gPgo+ID4gPiA+ICsgICAvKiBDaGVjayBp ZiB2cSBpcyBpbiByZXNldCBzdGF0ZS4gU2VlIG1vcmUgaW4gdmlydG5ldF9uYXBpX2VuYWJsZSgp ICovCj4gPiA+ID4gKyAgIGlmIChzcS0+dnEtPnJlc2V0KQo+ID4gPiA+ICsgICAgICAgICAgIHJl dHVybjsKPiA+ID4KPiA+ID4KPiA+ID4gV2UndmUgZGlzYWJsZWQgVFggbmFwaSwgYW55IGNoYW5j ZSB3ZSBjYW4gc3RpbGwgaGl0IHRoaXM/Cj4gPgo+ID4KPiA+IHN0YXRpYyBpbnQgdmlydG5ldF9w b2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldCkKPiA+IHsKPiA+ICAgICAg ICAgc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxID0KPiA+ICAgICAgICAgICAgICAgICBjb250YWlu ZXJfb2YobmFwaSwgc3RydWN0IHJlY2VpdmVfcXVldWUsIG5hcGkpOwo+ID4gICAgICAgICBzdHJ1 Y3QgdmlydG5ldF9pbmZvICp2aSA9IHJxLT52cS0+dmRldi0+cHJpdjsKPiA+ICAgICAgICAgc3Ry dWN0IHNlbmRfcXVldWUgKnNxOwo+ID4gICAgICAgICB1bnNpZ25lZCBpbnQgcmVjZWl2ZWQ7Cj4g PiAgICAgICAgIHVuc2lnbmVkIGludCB4ZHBfeG1pdCA9IDA7Cj4gPgo+ID4gICAgICAgICB2aXJ0 bmV0X3BvbGxfY2xlYW50eChycSk7Cj4gPiAuLi4KPiA+IH0KPiA+Cj4gPiBUaGlzIGlzIGNhbGxl ZCBieSByeCBwb2xsLiBBbHRob3VnaCBpdCBpcyB0aGUgbG9naWMgb2YgdHgsIGl0IGlzIG5vdCBk cml2ZW4gYnkKPiA+IHR4IG5hcGksIGJ1dCBpcyBjYWxsZWQgaW4gcnggcG9sbC4KPgo+IE9rLCBi dXQgd2UgbmVlZCBndWFyYW50ZWUgdGhlIG1lbW9yeSBvcmRlcmluZyBpbiB0aGlzIGNhc2UuIERp c2FibGUgUlgKPiBuYXBpIGNvdWxkIGJlIGEgc29sdXRpb24gZm9yIHRoaXMuCgpZZXMsIEkgaGF2 ZSByZWFsaXplZCB0aGlzIHRvby4gSSBoYXZlIHR3byBzb2x1dGlvbnMsIGRpc2FibGUgcnggbmFw aSBvciB0aGUKZm9sbG93aW5nLgoKVGhhbmtzLgoKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92 aXJ0aW9fbmV0LmMgYi9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMKaW5kZXggOWJmMWI2NTMwYjM4 Li43NzY0ZDFkY2I4MzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYworKysg Yi9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMKQEAgLTEzNSw2ICsxMzUsNyBAQCBzdHJ1Y3Qgc2Vu ZF9xdWV1ZSB7CiAJc3RydWN0IHZpcnRuZXRfc3Ffc3RhdHMgc3RhdHM7CgogCXN0cnVjdCBuYXBp X3N0cnVjdCBuYXBpOworCWJvb2wgcmVzZXQ7CiB9OwoKIC8qIEludGVybmFsIHJlcHJlc2VudGF0 aW9uIG9mIGEgcmVjZWl2ZSB2aXJ0cXVldWUgKi8KQEAgLTE1ODMsNiArMTU4NywxMSBAQCBzdGF0 aWMgdm9pZCB2aXJ0bmV0X3BvbGxfY2xlYW50eChzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpCiAJ CXJldHVybjsKCiAJaWYgKF9fbmV0aWZfdHhfdHJ5bG9jayh0eHEpKSB7CisJCWlmIChzcS0+cmVz ZXQpIHsKKwkJCV9fbmV0aWZfdHhfdW5sb2NrKHR4cSk7CisJCQlyZXR1cm47CisJCX0KKwogCQlk byB7CiAJCQl2aXJ0cXVldWVfZGlzYWJsZV9jYihzcS0+dnEpOwogCQkJZnJlZV9vbGRfeG1pdF9z a2JzKHNxLCB0cnVlKTsKQEAgLTE4MjgsNiArMTgzNyw1NiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qg c3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQog CXJldHVybiBORVRERVZfVFhfT0s7CiB9Cgorc3RhdGljIGludCB2aXJ0bmV0X3R4X3Jlc2l6ZShz dHJ1Y3QgdmlydG5ldF9pbmZvICp2aSwKKwkJCSAgICAgc3RydWN0IHNlbmRfcXVldWUgKnNxLCB1 MzIgcmluZ19udW0pCit7CisJc3RydWN0IG5ldGRldl9xdWV1ZSAqdHhxOworCWludCBlcnIsIHFp bmRleDsKKworCXFpbmRleCA9IHNxIC0gdmktPnNxOworCisJdmlydG5ldF9uYXBpX3R4X2Rpc2Fi bGUoJnNxLT5uYXBpKTsKKworCXR4cSA9IG5ldGRldl9nZXRfdHhfcXVldWUodmktPmRldiwgcWlu ZGV4KTsKKworCV9fbmV0aWZfdHhfbG9ja19iaCh0eHEpOworCW5ldGlmX3N0b3Bfc3VicXVldWUo dmktPmRldiwgcWluZGV4KTsKKwlzcS0+cmVzZXQgPSB0cnVlOworCV9fbmV0aWZfdHhfdW5sb2Nr X2JoKHR4cSk7CisKKwllcnIgPSB2aXJ0cXVldWVfcmVzaXplKHNxLT52cSwgcmluZ19udW0sIHZp cnRuZXRfc3FfZnJlZV91bnVzZWRfYnVmKTsKKwlpZiAoZXJyKQorCQluZXRkZXZfZXJyKHZpLT5k ZXYsICJyZXNpemUgdHggZmFpbDogdHggcXVldWUgaW5kZXg6ICVkIGVycjogJWRcbiIsIHFpbmRl eCwgZXJyKTsKKworCV9fbmV0aWZfdHhfbG9ja19iaCh0eHEpOworCXNxLT5yZXNldCA9IGZhbHNl OworCW5ldGlmX3N0YXJ0X3N1YnF1ZXVlKHZpLT5kZXYsIHFpbmRleCk7CisJX19uZXRpZl90eF91 bmxvY2tfYmgodHhxKTsKKworCXZpcnRuZXRfbmFwaV90eF9lbmFibGUodmksIHNxLT52cSwgJnNx LT5uYXBpKTsKKwlyZXR1cm4gZXJyOworfQorCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVhbGl6 YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5k YXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out30-131.freemail.mail.aliyun.com ([115.124.30.131]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ngN9q-00G8BN-2N for linux-um@lists.infradead.org; Mon, 18 Apr 2022 08:54:56 +0000 Message-ID: <1650271705.1503067-1-xuanzhuo@linux.alibaba.com> Subject: Re: [PATCH v9 31/32] virtio_net: support rx/tx queue resize Date: Mon, 18 Apr 2022 16:48:25 +0800 From: Xuan Zhuo References: <20220406034346.74409-1-xuanzhuo@linux.alibaba.com> <20220406034346.74409-32-xuanzhuo@linux.alibaba.com> <122008a6-1e79-14d3-1478-59f96464afc9@redhat.com> <1650252077.7934203-1-xuanzhuo@linux.alibaba.com> In-Reply-To: List-Id: 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 Sender: "linux-um" Errors-To: linux-um-bounces+geert=linux-m68k.org@lists.infradead.org To: Jason Wang Cc: Jeff Dike , Richard Weinberger , Anton Ivanov , "Michael S. Tsirkin" , "David S. Miller" , Jakub Kicinski , Hans de Goede , Mark Gross , Vadim Pasternak , Bjorn Andersson , Mathieu Poirier , Cornelia Huck , Halil Pasic , Heiko Carstens , Vasily Gorbik , Christian Borntraeger , Alexander Gordeev , Sven Schnelle , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Johannes Berg , Vincent Whitchurch , linux-um@lists.infradead.org, netdev , platform-driver-x86@vger.kernel.org, linux-remoteproc@vger.kernel.org, linux-s390@vger.kernel.org, kvm , "open list:XDP (eXpress Data Path)" , virtualization T24gTW9uLCAxOCBBcHIgMjAyMiAxNTo0OToyOSArMDgwMCwgSmFzb24gV2FuZyA8amFzb3dhbmdA cmVkaGF0LmNvbT4gd3JvdGU6Cj4gT24gTW9uLCBBcHIgMTgsIDIwMjIgYXQgMTE6MjQgQU0gWHVh biBaaHVvIDx4dWFuemh1b0BsaW51eC5hbGliYWJhLmNvbT4gd3JvdGU6Cj4gPgo+ID4gT24gV2Vk LCAxMyBBcHIgMjAyMiAxNjowMDoxOCArMDgwMCwgSmFzb24gV2FuZyA8amFzb3dhbmdAcmVkaGF0 LmNvbT4gd3JvdGU6Cj4gPiA+Cj4gPiA+IOWcqCAyMDIyLzQvNiDkuIrljYgxMTo0MywgWHVhbiBa aHVvIOWGmemBkzoKPiA+ID4gPiBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIHJlc2l6ZSBmdW5j dGlvbiBvZiB0aGUgcngsIHR4IHF1ZXVlcy4KPiA+ID4gPiBCYXNlZCBvbiB0aGlzIGZ1bmN0aW9u LCBpdCBpcyBwb3NzaWJsZSB0byBtb2RpZnkgdGhlIHJpbmcgbnVtIG9mIHRoZQo+ID4gPiA+IHF1 ZXVlLgo+ID4gPiA+Cj4gPiA+ID4gVGhlcmUgbWF5IGJlIGFuIGV4Y2VwdGlvbiBkdXJpbmcgdGhl IHJlc2l6ZSBwcm9jZXNzLCB0aGUgcmVzaXplIG1heQo+ID4gPiA+IGZhaWwsIG9yIHRoZSB2cSBj YW4gbm8gbG9uZ2VyIGJlIHVzZWQuIEVpdGhlciB3YXksIHdlIG11c3QgZXhlY3V0ZQo+ID4gPiA+ IG5hcGlfZW5hYmxlKCkuIEJlY2F1c2UgbmFwaV9kaXNhYmxlIGlzIHNpbWlsYXIgdG8gYSBsb2Nr LCBuYXBpX2VuYWJsZQo+ID4gPiA+IG11c3QgYmUgY2FsbGVkIGFmdGVyIGNhbGxpbmcgbmFwaV9k aXNhYmxlLgo+ID4gPiA+Cj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogWHVhbiBaaHVvIDx4dWFuemh1 b0BsaW51eC5hbGliYWJhLmNvbT4KPiA+ID4gPiAtLS0KPiA+ID4gPiAgIGRyaXZlcnMvbmV0L3Zp cnRpb19uZXQuYyB8IDgxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK PiA+ID4gPiAgIDEgZmlsZSBjaGFuZ2VkLCA4MSBpbnNlcnRpb25zKCspCj4gPiA+ID4KPiA+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlydGlvX25ldC5jIGIvZHJpdmVycy9uZXQvdmly dGlvX25ldC5jCj4gPiA+ID4gaW5kZXggYjhiZjAwNTI1MTc3Li5iYTY4NTlmMzA1ZjcgMTAwNjQ0 Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9uZXQvdmlydGlvX25ldC5jCj4gPiA+ID4gKysrIGIvZHJp dmVycy9uZXQvdmlydGlvX25ldC5jCj4gPiA+ID4gQEAgLTI1MSw2ICsyNTEsOSBAQCBzdHJ1Y3Qg cGFkZGVkX3ZuZXRfaGRyIHsKPiA+ID4gPiAgICAgY2hhciBwYWRkaW5nWzRdOwo+ID4gPiA+ICAg fTsKPiA+ID4gPgo+ID4gPiA+ICtzdGF0aWMgdm9pZCB2aXJ0bmV0X3NxX2ZyZWVfdW51c2VkX2J1 ZihzdHJ1Y3QgdmlydHF1ZXVlICp2cSwgdm9pZCAqYnVmKTsKPiA+ID4gPiArc3RhdGljIHZvaWQg dmlydG5ldF9ycV9mcmVlX3VudXNlZF9idWYoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIHZvaWQgKmJ1 Zik7Cj4gPiA+ID4gKwo+ID4gPiA+ICAgc3RhdGljIGJvb2wgaXNfeGRwX2ZyYW1lKHZvaWQgKnB0 cikKPiA+ID4gPiAgIHsKPiA+ID4gPiAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKXB0ciAmIFZJ UlRJT19YRFBfRkxBRzsKPiA+ID4gPiBAQCAtMTM2OSw2ICsxMzcyLDE1IEBAIHN0YXRpYyB2b2lk IHZpcnRuZXRfbmFwaV9lbmFibGUoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIHN0cnVjdCBuYXBpX3N0 cnVjdCAqbmFwaSkKPiA+ID4gPiAgIHsKPiA+ID4gPiAgICAgbmFwaV9lbmFibGUobmFwaSk7Cj4g PiA+ID4KPiA+ID4gPiArICAgLyogQ2hlY2sgaWYgdnEgaXMgaW4gcmVzZXQgc3RhdGUuIFRoZSBu b3JtYWwgcmVzZXQvcmVzaXplIHByb2Nlc3Mgd2lsbAo+ID4gPiA+ICsgICAgKiBiZSBwcm90ZWN0 ZWQgYnkgbmFwaS4gSG93ZXZlciwgdGhlIHByb3RlY3Rpb24gb2YgbmFwaSBpcyBvbmx5IGVuYWJs ZWQKPiA+ID4gPiArICAgICogZHVyaW5nIHRoZSBvcGVyYXRpb24sIGFuZCB0aGUgcHJvdGVjdGlv biBvZiBuYXBpIHdpbGwgZW5kIGFmdGVyIHRoZQo+ID4gPiA+ICsgICAgKiBvcGVyYXRpb24gaXMg Y29tcGxldGVkLiBJZiByZS1lbmFibGUgZmFpbHMgZHVyaW5nIHRoZSBwcm9jZXNzLCB2cQo+ID4g PiA+ICsgICAgKiB3aWxsIHJlbWFpbiB1bmF2YWlsYWJsZSB3aXRoIHJlc2V0IHN0YXRlLgo+ID4g PiA+ICsgICAgKi8KPiA+ID4gPiArICAgaWYgKHZxLT5yZXNldCkKPiA+ID4gPiArICAgICAgICAg ICByZXR1cm47Cj4gPiA+Cj4gPiA+Cj4gPiA+IEkgZG9uJ3QgZ2V0IHdoZW4gY291bGQgd2UgaGl0 IHRoaXMgY29uZGl0aW9uLgo+ID4gPgo+ID4gPgo+ID4gPiA+ICsKPiA+ID4gPiAgICAgLyogSWYg YWxsIGJ1ZmZlcnMgd2VyZSBmaWxsZWQgYnkgb3RoZXIgc2lkZSBiZWZvcmUgd2UgbmFwaV9lbmFi bGVkLCB3ZQo+ID4gPiA+ICAgICAgKiB3b24ndCBnZXQgYW5vdGhlciBpbnRlcnJ1cHQsIHNvIHBy b2Nlc3MgYW55IG91dHN0YW5kaW5nIHBhY2tldHMgbm93Lgo+ID4gPiA+ICAgICAgKiBDYWxsIGxv Y2FsX2JoX2VuYWJsZSBhZnRlciB0byB0cmlnZ2VyIHNvZnRJUlEgcHJvY2Vzc2luZy4KPiA+ID4g PiBAQCAtMTQxMyw2ICsxNDI1LDE1IEBAIHN0YXRpYyB2b2lkIHJlZmlsbF93b3JrKHN0cnVjdCB3 b3JrX3N0cnVjdCAqd29yaykKPiA+ID4gPiAgICAgICAgICAgICBzdHJ1Y3QgcmVjZWl2ZV9xdWV1 ZSAqcnEgPSAmdmktPnJxW2ldOwo+ID4gPiA+Cj4gPiA+ID4gICAgICAgICAgICAgbmFwaV9kaXNh YmxlKCZycS0+bmFwaSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgICAgIC8qIENoZWNrIGlm IHZxIGlzIGluIHJlc2V0IHN0YXRlLiBTZWUgbW9yZSBpbgo+ID4gPiA+ICsgICAgICAgICAgICAq IHZpcnRuZXRfbmFwaV9lbmFibGUoKQo+ID4gPiA+ICsgICAgICAgICAgICAqLwo+ID4gPiA+ICsg ICAgICAgICAgIGlmIChycS0+dnEtPnJlc2V0KSB7Cj4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICB2aXJ0bmV0X25hcGlfZW5hYmxlKHJxLT52cSwgJnJxLT5uYXBpKTsKPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gPiA+ICsgICAgICAgICAgIH0KPiA+ID4KPiA+ID4K PiA+ID4gQ2FuIHdlIGRvIHNvbWV0aGluZyBzaW1pbGFyIGluIHZpcnRuZXRfY2xvc2UoKSBieSBj YW5jZWxpbmcgdGhlIHdvcms/Cj4gPiA+Cj4gPiA+Cj4gPiA+ID4gKwo+ID4gPiA+ICAgICAgICAg ICAgIHN0aWxsX2VtcHR5ID0gIXRyeV9maWxsX3JlY3YodmksIHJxLCBHRlBfS0VSTkVMKTsKPiA+ ID4gPiAgICAgICAgICAgICB2aXJ0bmV0X25hcGlfZW5hYmxlKHJxLT52cSwgJnJxLT5uYXBpKTsK PiA+ID4gPgo+ID4gPiA+IEBAIC0xNTIzLDYgKzE1NDQsMTAgQEAgc3RhdGljIHZvaWQgdmlydG5l dF9wb2xsX2NsZWFudHgoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxKQo+ID4gPiA+ICAgICBpZiAo IXNxLT5uYXBpLndlaWdodCB8fCBpc194ZHBfcmF3X2J1ZmZlcl9xdWV1ZSh2aSwgaW5kZXgpKQo+ ID4gPiA+ICAgICAgICAgICAgIHJldHVybjsKPiA+ID4gPgo+ID4gPiA+ICsgICAvKiBDaGVjayBp ZiB2cSBpcyBpbiByZXNldCBzdGF0ZS4gU2VlIG1vcmUgaW4gdmlydG5ldF9uYXBpX2VuYWJsZSgp ICovCj4gPiA+ID4gKyAgIGlmIChzcS0+dnEtPnJlc2V0KQo+ID4gPiA+ICsgICAgICAgICAgIHJl dHVybjsKPiA+ID4KPiA+ID4KPiA+ID4gV2UndmUgZGlzYWJsZWQgVFggbmFwaSwgYW55IGNoYW5j ZSB3ZSBjYW4gc3RpbGwgaGl0IHRoaXM/Cj4gPgo+ID4KPiA+IHN0YXRpYyBpbnQgdmlydG5ldF9w b2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldCkKPiA+IHsKPiA+ICAgICAg ICAgc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxID0KPiA+ICAgICAgICAgICAgICAgICBjb250YWlu ZXJfb2YobmFwaSwgc3RydWN0IHJlY2VpdmVfcXVldWUsIG5hcGkpOwo+ID4gICAgICAgICBzdHJ1 Y3QgdmlydG5ldF9pbmZvICp2aSA9IHJxLT52cS0+dmRldi0+cHJpdjsKPiA+ICAgICAgICAgc3Ry dWN0IHNlbmRfcXVldWUgKnNxOwo+ID4gICAgICAgICB1bnNpZ25lZCBpbnQgcmVjZWl2ZWQ7Cj4g PiAgICAgICAgIHVuc2lnbmVkIGludCB4ZHBfeG1pdCA9IDA7Cj4gPgo+ID4gICAgICAgICB2aXJ0 bmV0X3BvbGxfY2xlYW50eChycSk7Cj4gPiAuLi4KPiA+IH0KPiA+Cj4gPiBUaGlzIGlzIGNhbGxl ZCBieSByeCBwb2xsLiBBbHRob3VnaCBpdCBpcyB0aGUgbG9naWMgb2YgdHgsIGl0IGlzIG5vdCBk cml2ZW4gYnkKPiA+IHR4IG5hcGksIGJ1dCBpcyBjYWxsZWQgaW4gcnggcG9sbC4KPgo+IE9rLCBi dXQgd2UgbmVlZCBndWFyYW50ZWUgdGhlIG1lbW9yeSBvcmRlcmluZyBpbiB0aGlzIGNhc2UuIERp c2FibGUgUlgKPiBuYXBpIGNvdWxkIGJlIGEgc29sdXRpb24gZm9yIHRoaXMuCgpZZXMsIEkgaGF2 ZSByZWFsaXplZCB0aGlzIHRvby4gSSBoYXZlIHR3byBzb2x1dGlvbnMsIGRpc2FibGUgcnggbmFw aSBvciB0aGUKZm9sbG93aW5nLgoKVGhhbmtzLgoKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92 aXJ0aW9fbmV0LmMgYi9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMKaW5kZXggOWJmMWI2NTMwYjM4 Li43NzY0ZDFkY2I4MzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYworKysg Yi9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMKQEAgLTEzNSw2ICsxMzUsNyBAQCBzdHJ1Y3Qgc2Vu ZF9xdWV1ZSB7CiAJc3RydWN0IHZpcnRuZXRfc3Ffc3RhdHMgc3RhdHM7CgogCXN0cnVjdCBuYXBp X3N0cnVjdCBuYXBpOworCWJvb2wgcmVzZXQ7CiB9OwoKIC8qIEludGVybmFsIHJlcHJlc2VudGF0 aW9uIG9mIGEgcmVjZWl2ZSB2aXJ0cXVldWUgKi8KQEAgLTE1ODMsNiArMTU4NywxMSBAQCBzdGF0 aWMgdm9pZCB2aXJ0bmV0X3BvbGxfY2xlYW50eChzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpCiAJ CXJldHVybjsKCiAJaWYgKF9fbmV0aWZfdHhfdHJ5bG9jayh0eHEpKSB7CisJCWlmIChzcS0+cmVz ZXQpIHsKKwkJCV9fbmV0aWZfdHhfdW5sb2NrKHR4cSk7CisJCQlyZXR1cm47CisJCX0KKwogCQlk byB7CiAJCQl2aXJ0cXVldWVfZGlzYWJsZV9jYihzcS0+dnEpOwogCQkJZnJlZV9vbGRfeG1pdF9z a2JzKHNxLCB0cnVlKTsKQEAgLTE4MjgsNiArMTgzNyw1NiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qg c3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQog CXJldHVybiBORVRERVZfVFhfT0s7CiB9Cgorc3RhdGljIGludCB2aXJ0bmV0X3R4X3Jlc2l6ZShz dHJ1Y3QgdmlydG5ldF9pbmZvICp2aSwKKwkJCSAgICAgc3RydWN0IHNlbmRfcXVldWUgKnNxLCB1 MzIgcmluZ19udW0pCit7CisJc3RydWN0IG5ldGRldl9xdWV1ZSAqdHhxOworCWludCBlcnIsIHFp bmRleDsKKworCXFpbmRleCA9IHNxIC0gdmktPnNxOworCisJdmlydG5ldF9uYXBpX3R4X2Rpc2Fi bGUoJnNxLT5uYXBpKTsKKworCXR4cSA9IG5ldGRldl9nZXRfdHhfcXVldWUodmktPmRldiwgcWlu ZGV4KTsKKworCV9fbmV0aWZfdHhfbG9ja19iaCh0eHEpOworCW5ldGlmX3N0b3Bfc3VicXVldWUo dmktPmRldiwgcWluZGV4KTsKKwlzcS0+cmVzZXQgPSB0cnVlOworCV9fbmV0aWZfdHhfdW5sb2Nr X2JoKHR4cSk7CisKKwllcnIgPSB2aXJ0cXVldWVfcmVzaXplKHNxLT52cSwgcmluZ19udW0sIHZp cnRuZXRfc3FfZnJlZV91bnVzZWRfYnVmKTsKKwlpZiAoZXJyKQorCQluZXRkZXZfZXJyKHZpLT5k ZXYsICJyZXNpemUgdHggZmFpbDogdHggcXVldWUgaW5kZXg6ICVkIGVycjogJWRcbiIsIHFpbmRl eCwgZXJyKTsKKworCV9fbmV0aWZfdHhfbG9ja19iaCh0eHEpOworCXNxLT5yZXNldCA9IGZhbHNl OworCW5ldGlmX3N0YXJ0X3N1YnF1ZXVlKHZpLT5kZXYsIHFpbmRleCk7CisJX19uZXRpZl90eF91 bmxvY2tfYmgodHhxKTsKKworCXZpcnRuZXRfbmFwaV90eF9lbmFibGUodmksIHNxLT52cSwgJnNx LT5uYXBpKTsKKwlyZXR1cm4gZXJyOworfQorCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KbGludXgtdW0gbWFpbGluZyBsaXN0CmxpbnV4LXVtQGxpc3Rz LmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9saW51eC11bQo=