From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out30-56.freemail.mail.aliyun.com ([115.124.30.56]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nfIDu-009Sfb-1j for linux-um@lists.infradead.org; Fri, 15 Apr 2022 09:26:41 +0000 Message-ID: <1650014226.0312726-1-xuanzhuo@linux.alibaba.com> Subject: Re: [PATCH v9 31/32] virtio_net: support rx/tx queue resize Date: Fri, 15 Apr 2022 17:17:06 +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> <1649838917.6726515-10-xuanzhuo@linux.alibaba.com> <1649989126.5433838-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 T24gRnJpLCAxNSBBcHIgMjAyMiAxMzo1Mzo1NCArMDgwMCwgSmFzb24gV2FuZyA8amFzb3dhbmdA cmVkaGF0LmNvbT4gd3JvdGU6Cj4gT24gRnJpLCBBcHIgMTUsIDIwMjIgYXQgMTA6MjMgQU0gWHVh biBaaHVvIDx4dWFuemh1b0BsaW51eC5hbGliYWJhLmNvbT4gd3JvdGU6Cj4gPgo+ID4gT24gVGh1 LCAxNCBBcHIgMjAyMiAxNzozMDowMiArMDgwMCwgSmFzb24gV2FuZyA8amFzb3dhbmdAcmVkaGF0 LmNvbT4gd3JvdGU6Cj4gPiA+IE9uIFdlZCwgQXByIDEzLCAyMDIyIGF0IDQ6NDcgUE0gWHVhbiBa aHVvIDx4dWFuemh1b0BsaW51eC5hbGliYWJhLmNvbT4gd3JvdGU6Cj4gPiA+ID4KPiA+ID4gPiBP biBXZWQsIDEzIEFwciAyMDIyIDE2OjAwOjE4ICswODAwLCBKYXNvbiBXYW5nIDxqYXNvd2FuZ0By ZWRoYXQuY29tPiB3cm90ZToKPiA+ID4gPiA+Cj4gPiA+ID4gPiDlnKggMjAyMi80LzYg5LiK5Y2I MTE6NDMsIFh1YW4gWmh1byDlhpnpgZM6Cj4gPiA+ID4gPiA+IFRoaXMgcGF0Y2ggaW1wbGVtZW50 cyB0aGUgcmVzaXplIGZ1bmN0aW9uIG9mIHRoZSByeCwgdHggcXVldWVzLgo+ID4gPiA+ID4gPiBC YXNlZCBvbiB0aGlzIGZ1bmN0aW9uLCBpdCBpcyBwb3NzaWJsZSB0byBtb2RpZnkgdGhlIHJpbmcg bnVtIG9mIHRoZQo+ID4gPiA+ID4gPiBxdWV1ZS4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gVGhl cmUgbWF5IGJlIGFuIGV4Y2VwdGlvbiBkdXJpbmcgdGhlIHJlc2l6ZSBwcm9jZXNzLCB0aGUgcmVz aXplIG1heQo+ID4gPiA+ID4gPiBmYWlsLCBvciB0aGUgdnEgY2FuIG5vIGxvbmdlciBiZSB1c2Vk LiBFaXRoZXIgd2F5LCB3ZSBtdXN0IGV4ZWN1dGUKPiA+ID4gPiA+ID4gbmFwaV9lbmFibGUoKS4g QmVjYXVzZSBuYXBpX2Rpc2FibGUgaXMgc2ltaWxhciB0byBhIGxvY2ssIG5hcGlfZW5hYmxlCj4g PiA+ID4gPiA+IG11c3QgYmUgY2FsbGVkIGFmdGVyIGNhbGxpbmcgbmFwaV9kaXNhYmxlLgo+ID4g PiA+ID4gPgo+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBYdWFuIFpodW8gPHh1YW56aHVvQGxp bnV4LmFsaWJhYmEuY29tPgo+ID4gPiA+ID4gPiAtLS0KPiA+ID4gPiA+ID4gICBkcml2ZXJzL25l dC92aXJ0aW9fbmV0LmMgfCA4MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4gPiA+ID4gPiA+ICAgMSBmaWxlIGNoYW5nZWQsIDgxIGluc2VydGlvbnMoKykKPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYyBi L2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYwo+ID4gPiA+ID4gPiBpbmRleCBiOGJmMDA1MjUxNzcu LmJhNjg1OWYzMDVmNyAxMDA2NDQKPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9uZXQvdmlydGlv X25ldC5jCj4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYwo+ID4gPiA+ ID4gPiBAQCAtMjUxLDYgKzI1MSw5IEBAIHN0cnVjdCBwYWRkZWRfdm5ldF9oZHIgewo+ID4gPiA+ ID4gPiAgICAgY2hhciBwYWRkaW5nWzRdOwo+ID4gPiA+ID4gPiAgIH07Cj4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+ICtzdGF0aWMgdm9pZCB2aXJ0bmV0X3NxX2ZyZWVfdW51c2VkX2J1ZihzdHJ1Y3Qg dmlydHF1ZXVlICp2cSwgdm9pZCAqYnVmKTsKPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIHZpcnRu ZXRfcnFfZnJlZV91bnVzZWRfYnVmKHN0cnVjdCB2aXJ0cXVldWUgKnZxLCB2b2lkICpidWYpOwo+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICAgc3RhdGljIGJvb2wgaXNfeGRwX2ZyYW1lKHZvaWQg KnB0cikKPiA+ID4gPiA+ID4gICB7Cj4gPiA+ID4gPiA+ICAgICByZXR1cm4gKHVuc2lnbmVkIGxv bmcpcHRyICYgVklSVElPX1hEUF9GTEFHOwo+ID4gPiA+ID4gPiBAQCAtMTM2OSw2ICsxMzcyLDE1 IEBAIHN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV9lbmFibGUoc3RydWN0IHZpcnRxdWV1ZSAqdnEs IHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSkKPiA+ID4gPiA+ID4gICB7Cj4gPiA+ID4gPiA+ICAg ICBuYXBpX2VuYWJsZShuYXBpKTsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gKyAgIC8qIENoZWNr IGlmIHZxIGlzIGluIHJlc2V0IHN0YXRlLiBUaGUgbm9ybWFsIHJlc2V0L3Jlc2l6ZSBwcm9jZXNz IHdpbGwKPiA+ID4gPiA+ID4gKyAgICAqIGJlIHByb3RlY3RlZCBieSBuYXBpLiBIb3dldmVyLCB0 aGUgcHJvdGVjdGlvbiBvZiBuYXBpIGlzIG9ubHkgZW5hYmxlZAo+ID4gPiA+ID4gPiArICAgICog ZHVyaW5nIHRoZSBvcGVyYXRpb24sIGFuZCB0aGUgcHJvdGVjdGlvbiBvZiBuYXBpIHdpbGwgZW5k IGFmdGVyIHRoZQo+ID4gPiA+ID4gPiArICAgICogb3BlcmF0aW9uIGlzIGNvbXBsZXRlZC4gSWYg cmUtZW5hYmxlIGZhaWxzIGR1cmluZyB0aGUgcHJvY2VzcywgdnEKPiA+ID4gPiA+ID4gKyAgICAq IHdpbGwgcmVtYWluIHVuYXZhaWxhYmxlIHdpdGggcmVzZXQgc3RhdGUuCj4gPiA+ID4gPiA+ICsg ICAgKi8KPiA+ID4gPiA+ID4gKyAgIGlmICh2cS0+cmVzZXQpCj4gPiA+ID4gPiA+ICsgICAgICAg ICAgIHJldHVybjsKPiA+ID4gPiA+Cj4gPiA+ID4gPgo+ID4gPiA+ID4gSSBkb24ndCBnZXQgd2hl biBjb3VsZCB3ZSBoaXQgdGhpcyBjb25kaXRpb24uCj4gPiA+ID4KPiA+ID4gPgo+ID4gPiA+IElu IHBhdGNoIDIzLCB0aGUgY29kZSB0byBpbXBsZW1lbnQgcmUtZW5hYmxlIHZxIGlzIGFzIGZvbGxv d3M6Cj4gPiA+ID4KPiA+ID4gPiArc3RhdGljIGludCB2cF9tb2Rlcm5fZW5hYmxlX3Jlc2V0X3Zx KHN0cnVjdCB2aXJ0cXVldWUgKnZxKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyAgICAgICBzdHJ1Y3Qg dmlydGlvX3BjaV9kZXZpY2UgKnZwX2RldiA9IHRvX3ZwX2RldmljZSh2cS0+dmRldik7Cj4gPiA+ ID4gKyAgICAgICBzdHJ1Y3QgdmlydGlvX3BjaV9tb2Rlcm5fZGV2aWNlICptZGV2ID0gJnZwX2Rl di0+bWRldjsKPiA+ID4gPiArICAgICAgIHN0cnVjdCB2aXJ0aW9fcGNpX3ZxX2luZm8gKmluZm87 Cj4gPiA+ID4gKyAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzLCBpbmRleDsKPiA+ID4gPiArICAg ICAgIGludCBlcnI7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgaWYgKCF2cS0+cmVzZXQpCj4g PiA+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUJVU1k7Cj4gPiA+ID4gKwo+ID4gPiA+ICsg ICAgICAgaW5kZXggPSB2cS0+aW5kZXg7Cj4gPiA+ID4gKyAgICAgICBpbmZvID0gdnBfZGV2LT52 cXNbaW5kZXhdOwo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgIC8qIGNoZWNrIHF1ZXVlIHJlc2V0 IHN0YXR1cyAqLwo+ID4gPiA+ICsgICAgICAgaWYgKHZwX21vZGVybl9nZXRfcXVldWVfcmVzZXQo bWRldiwgaW5kZXgpICE9IDEpCj4gPiA+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUJVU1k7 Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgZXJyID0gdnBfYWN0aXZlX3ZxKHZxLCBpbmZvLT5t c2l4X3ZlY3Rvcik7Cj4gPiA+ID4gKyAgICAgICBpZiAoZXJyKQo+ID4gPiA+ICsgICAgICAgICAg ICAgICByZXR1cm4gZXJyOwo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgIGlmICh2cS0+Y2FsbGJh Y2spIHsKPiA+ID4gPiArICAgICAgICAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJnZwX2Rldi0+ bG9jaywgZmxhZ3MpOwo+ID4gPiA+ICsgICAgICAgICAgICAgICBsaXN0X2FkZCgmaW5mby0+bm9k ZSwgJnZwX2Rldi0+dmlydHF1ZXVlcyk7Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIHNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJnZwX2Rldi0+bG9jaywgZmxhZ3MpOwo+ID4gPiA+ICsgICAgICAgfSBl bHNlIHsKPiA+ID4gPiArICAgICAgICAgICAgICAgSU5JVF9MSVNUX0hFQUQoJmluZm8tPm5vZGUp Owo+ID4gPiA+ICsgICAgICAgfQo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgIHZwX21vZGVybl9z ZXRfcXVldWVfZW5hYmxlKCZ2cF9kZXYtPm1kZXYsIGluZGV4LCB0cnVlKTsKPiA+ID4gPiArCj4g PiA+ID4gKyAgICAgICBpZiAodnBfZGV2LT5wZXJfdnFfdmVjdG9ycyAmJiBpbmZvLT5tc2l4X3Zl Y3RvciAhPSBWSVJUSU9fTVNJX05PX1ZFQ1RPUikKPiA+ID4gPiArICAgICAgICAgICAgICAgZW5h YmxlX2lycShwY2lfaXJxX3ZlY3Rvcih2cF9kZXYtPnBjaV9kZXYsIGluZm8tPm1zaXhfdmVjdG9y KSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgdnEtPnJlc2V0ID0gZmFsc2U7Cj4gPiA+ID4g Kwo+ID4gPiA+ICsgICAgICAgcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPgo+ID4gPiA+Cj4g PiA+ID4gVGhlcmUgYXJlIHRocmVlIHNpdHVhdGlvbnMgd2hlcmUgYW4gZXJyb3Igd2lsbCBiZSBy ZXR1cm5lZC4gVGhlc2UgYXJlIHRoZQo+ID4gPiA+IHNpdHVhdGlvbnMgSSB3YW50IHRvIGhhbmRs ZS4KPiA+ID4KPiA+ID4gUmlnaHQsIGJ1dCBpdCBsb29rcyBoYXJtbGVzcyBpZiB3ZSBqdXN0IHNj aGVkdWxlIHRoZSBOQVBJIHdpdGhvdXQgdGhlIGNoZWNrLgo+ID4KPiA+IFllcy4KPiA+Cj4gPiA+ ID4KPiA+ID4gPiBCdXQgSSdtIHJldGhpbmtpbmcgdGhlIHF1ZXN0aW9uLCBhbmQgSSBmZWVsIGxp a2UgeW91J3JlIHJpZ2h0LCBhbHRob3VnaCB0aGUKPiA+ID4gPiBoYXJkd2FyZSBzZXR1cCBtYXkg ZmFpbC4gV2UgY2FuIG5vIGxvbmdlciBzeW5jIHdpdGggdGhlIGhhcmR3YXJlLiBCdXQgdXNpbmcg aXQKPiA+ID4gPiBhcyBhIG5vcm1hbCB2cSBkb2Vzbid0IGhhdmUgYW55IHByb2JsZW1zLgo+ID4g Pgo+ID4gPiBOb3RlIHRoYXQgd2Ugc2hvdWxkIG1ha2Ugc3VyZSB0aGUgYnVnZ3kobWFsaWNvdXMp IGRldmljZSB3b24ndCBjcmFzaAo+ID4gPiB0aGUgY29kZXMgYnkgY2hhbmdpbmcgdGhlIHF1ZXVl X3Jlc2V0IHZhbHVlIGF0IGl0cyB3aWxsLgo+ID4KPiA+IEkgd2lsbCBrZWVwIGFuIGV5ZSBvbiB0 aGlzIHNpdHVhdGlvbi4KPiA+Cj4gPiA+Cj4gPiA+ID4KPiA+ID4gPiA+Cj4gPiA+ID4gPgo+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ICAgICAvKiBJZiBhbGwgYnVmZmVycyB3ZXJlIGZpbGxlZCBi eSBvdGhlciBzaWRlIGJlZm9yZSB3ZSBuYXBpX2VuYWJsZWQsIHdlCj4gPiA+ID4gPiA+ICAgICAg KiB3b24ndCBnZXQgYW5vdGhlciBpbnRlcnJ1cHQsIHNvIHByb2Nlc3MgYW55IG91dHN0YW5kaW5n IHBhY2tldHMgbm93Lgo+ID4gPiA+ID4gPiAgICAgICogQ2FsbCBsb2NhbF9iaF9lbmFibGUgYWZ0 ZXIgdG8gdHJpZ2dlciBzb2Z0SVJRIHByb2Nlc3NpbmcuCj4gPiA+ID4gPiA+IEBAIC0xNDEzLDYg KzE0MjUsMTUgQEAgc3RhdGljIHZvaWQgcmVmaWxsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3 b3JrKQo+ID4gPiA+ID4gPiAgICAgICAgICAgICBzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEgPSAm dmktPnJxW2ldOwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgICAgICAgICAgICBuYXBpX2Rpc2Fi bGUoJnJxLT5uYXBpKTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArICAgICAgICAgICAvKiBD aGVjayBpZiB2cSBpcyBpbiByZXNldCBzdGF0ZS4gU2VlIG1vcmUgaW4KPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICogdmlydG5ldF9uYXBpX2VuYWJsZSgpCj4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAqLwo+ID4gPiA+ID4gPiArICAgICAgICAgICBpZiAocnEtPnZxLT5yZXNldCkgewo+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgIHZpcnRuZXRfbmFwaV9lbmFibGUocnEtPnZxLCAmcnEt Pm5hcGkpOwo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gPiA+ ID4gPiArICAgICAgICAgICB9Cj4gPiA+ID4gPgo+ID4gPiA+ID4KPiA+ID4gPiA+IENhbiB3ZSBk byBzb21ldGhpbmcgc2ltaWxhciBpbiB2aXJ0bmV0X2Nsb3NlKCkgYnkgY2FuY2VsaW5nIHRoZSB3 b3JrPwo+ID4gPiA+Cj4gPiA+ID4gSSB0aGluayB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbmNlbCB0 aGUgd29yayBoZXJlLCBiZWNhdXNlIG5hcGlfZGlzYWJsZSB3aWxsIHdhaXQKPiA+ID4gPiBmb3Ig dGhlIG5hcGlfZW5hYmxlIG9mIHRoZSByZXNpemUuIFNvIGlmIHRoZSByZS1lbmFibGUgZmFpbGVk IHZxIGlzIHVzZWQgYXMgYSBub3JtYWwKPiA+ID4gPiB2cSwgdGhpcyBsb2dpYyBjYW4gYmUgcmVt b3ZlZC4KPiA+ID4KPiA+ID4gQWN0dWFsbHkgSSBtZWFudCB0aGUgcGFydCBvZiB2aXJ0bmV0X3J4 X3Jlc2l6ZSgpLgo+ID4gPgo+ID4gPiBJZiB3ZSBkb24ndCBzeW5jaHJvbml6ZSB3aXRoIHRoZSBy ZWZpbGwgd29yaywgaXQgbWlnaHQgZW5hYmxlIE5BUEkgdW5leHBlY3RlZGx5Pwo+ID4KPiA+IEkg ZG9uJ3QgdGhpbmsgdGhpcyBzaXR1YXRpb24gd2lsbCBiZSBlbmNvdW50ZXJlZCwgYmVjYXVzZSBu YXBpX2Rpc2FibGUgaXMKPiA+IG11dHVhbGx5IGV4Y2x1c2l2ZSwgc28gdGhlcmUgd2lsbCBiZSBu byB1bmV4cGVjdGVkIG5hcGkgZW5hYmxlLgo+ID4KPiA+IElzIHRoZXJlIHNvbWV0aGluZyBJIG1p c3VuZGVyc3Rvb2Q/Cj4KPiBTbyBpbiB2aXJ0bmV0X3J4X3Jlc2l6ZSgpIHdlIGRvOgo+Cj4gbmFw aV9kaXNhYmxlKCkKPiAuLi4KPiByZXNpemUoKQo+IC4uLgo+IG5hcGlfZW5hbGJlKCkKPgo+IEhv dyBjYW4gd2UgZ3VhcmFudGVlIHRoYXQgdGhlIHdvcmsgaXMgbm90IHJ1biBhZnRlciB0aGUgbmFw aV9kaXNhYmxlKCk/CgoKSSB0aGluayB5b3UncmUgdGFsa2luZyBhYm91dCBhIHNpdHVhdGlvbiBs aWtlIHRoaXM6Cgp2aXJ0bmV0X3J4X3Jlc2l6ZSAgICAgICAgICByZWZpbGwgd29yawotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogbmFw aV9kaXNhYmxlKCkKIC4uLiAgICAgICAgICAgICAgICAgICAgICAgbmFwaV9kaXNhYmxlKCkKIHJl c2l6ZSgpICAgICAgICAgICAgICAgICAgICAgIC4uLgogICAgICAgICAgICAgICAgICAgICAgICAg ICBuYXBpX2VuYWJsZSgpCiAuLi4KIG5hcGlfZW5hbGJlKCkKCgpCdXQgaW4gZmFjdDoKCnZpcnRu ZXRfcnhfcmVzaXplICAgICAgICAgIHJlZmlsbCB3b3JrCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBuYXBpX2Rpc2FibGUoKQogLi4u ICAgICAgICAgICAgICAgICAgICAgICBuYXBpX2Rpc2FibGUoKSA8LS0tLVswXQogcmVzaXplKCkg ICAgICAgICAgICAgICAgICAgICAgIHwKIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 CiBuYXBpX2VuYWxiZSgpICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAg ICAgICBuYXBpX2Rpc2FibGUoKSA8LS0tLSBbMV0gaGVyZSBzdWNjZXNzCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5hcGlfZW5hYmxlKCkKCkJlY2F1c2UgdmlydG5ldF9yeF9yZXNpemUoKSBo YXMgYWxyZWFkeSBleGVjdXRlZCBuYXBpX2Rpc2FibGUoKSwgbmFwaV9kaXNhbGJlKCkKb2YgWzBd IHdpbGwgd2FpdCB1bnRpbCBbMV0gdG8gY29tcGxldGUuCgpJJ20gbm90IHN1cmUgaWYgbXkgdW5k ZXJzdGFuZGluZyBpcyBjb3JyZWN0LgoKVGhhbmtzLgoKPgo+IFRoYW5rcwo+Cj4gPgo+ID4gVGhh bmtzLgo+ID4KPiA+ID4KPiA+ID4gVGhhbmtzCj4gPiA+Cj4gPiA+ID4KPiA+ID4gPgo+ID4gPiA+ ID4KPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gICAgICAgICAgICAgc3RpbGxf ZW1wdHkgPSAhdHJ5X2ZpbGxfcmVjdih2aSwgcnEsIEdGUF9LRVJORUwpOwo+ID4gPiA+ID4gPiAg ICAgICAgICAgICB2aXJ0bmV0X25hcGlfZW5hYmxlKHJxLT52cSwgJnJxLT5uYXBpKTsKPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gQEAgLTE1MjMsNiArMTU0NCwxMCBAQCBzdGF0aWMgdm9pZCB2aXJ0 bmV0X3BvbGxfY2xlYW50eChzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpCj4gPiA+ID4gPiA+ICAg ICBpZiAoIXNxLT5uYXBpLndlaWdodCB8fCBpc194ZHBfcmF3X2J1ZmZlcl9xdWV1ZSh2aSwgaW5k ZXgpKQo+ID4gPiA+ID4gPiAgICAgICAgICAgICByZXR1cm47Cj4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+ICsgICAvKiBDaGVjayBpZiB2cSBpcyBpbiByZXNldCBzdGF0ZS4gU2VlIG1vcmUgaW4gdmly dG5ldF9uYXBpX2VuYWJsZSgpICovCj4gPiA+ID4gPiA+ICsgICBpZiAoc3EtPnZxLT5yZXNldCkK PiA+ID4gPiA+ID4gKyAgICAgICAgICAgcmV0dXJuOwo+ID4gPiA+ID4KPiA+ID4gPiA+Cj4gPiA+ ID4gPiBXZSd2ZSBkaXNhYmxlZCBUWCBuYXBpLCBhbnkgY2hhbmNlIHdlIGNhbiBzdGlsbCBoaXQg dGhpcz8KPiA+ID4gPgo+ID4gPiA+IFNhbWUgYXMgYWJvdmUuCj4gPiA+ID4KPiA+ID4gPiA+Cj4g PiA+ID4gPgo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICAgICBpZiAoX19uZXRpZl90eF90cnls b2NrKHR4cSkpIHsKPiA+ID4gPiA+ID4gICAgICAgICAgICAgZG8gewo+ID4gPiA+ID4gPiAgICAg ICAgICAgICAgICAgICAgIHZpcnRxdWV1ZV9kaXNhYmxlX2NiKHNxLT52cSk7Cj4gPiA+ID4gPiA+ IEBAIC0xNzY5LDYgKzE3OTQsNjIgQEAgc3RhdGljIG5ldGRldl90eF90IHN0YXJ0X3htaXQoc3Ry dWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKPiA+ID4gPiA+ID4gICAg IHJldHVybiBORVRERVZfVFhfT0s7Cj4gPiA+ID4gPiA+ICAgfQo+ID4gPiA+ID4gPgo+ID4gPiA+ ID4gPiArc3RhdGljIGludCB2aXJ0bmV0X3J4X3Jlc2l6ZShzdHJ1Y3QgdmlydG5ldF9pbmZvICp2 aSwKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByZWNlaXZlX3F1 ZXVlICpycSwgdTMyIHJpbmdfbnVtKQo+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiArICAgaW50 IGVycjsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArICAgbmFwaV9kaXNhYmxlKCZycS0+bmFw aSk7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKyAgIGVyciA9IHZpcnRxdWV1ZV9yZXNpemUo cnEtPnZxLCByaW5nX251bSwgdmlydG5ldF9ycV9mcmVlX3VudXNlZF9idWYpOwo+ID4gPiA+ID4g PiArICAgaWYgKGVycikKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgZ290byBlcnI7Cj4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gKyAgIGlmICghdHJ5X2ZpbGxfcmVjdih2aSwgcnEsIEdGUF9LRVJO RUwpKQo+ID4gPiA+ID4gPiArICAgICAgICAgICBzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnZpLT5y ZWZpbGwsIDApOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsgICB2aXJ0bmV0X25hcGlfZW5h YmxlKHJxLT52cSwgJnJxLT5uYXBpKTsKPiA+ID4gPiA+ID4gKyAgIHJldHVybiAwOwo+ID4gPiA+ ID4gPiArCj4gPiA+ID4gPiA+ICtlcnI6Cj4gPiA+ID4gPiA+ICsgICBuZXRkZXZfZXJyKHZpLT5k ZXYsCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICJyZXNldCByeCByZXNldCB2cSBmYWlsOiBy eCBxdWV1ZSBpbmRleDogJXRkIGVycjogJWRcbiIsCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg IHJxIC0gdmktPnJxLCBlcnIpOwo+ID4gPiA+ID4gPiArICAgdmlydG5ldF9uYXBpX2VuYWJsZShy cS0+dnEsICZycS0+bmFwaSk7Cj4gPiA+ID4gPiA+ICsgICByZXR1cm4gZXJyOwo+ID4gPiA+ID4g PiArfQo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICtzdGF0aWMgaW50IHZpcnRuZXRfdHhfcmVz aXplKHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpLAo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IHNlbmRfcXVldWUgKnNxLCB1MzIgcmluZ19udW0pCj4gPiA+ID4gPiA+ ICt7Cj4gPiA+ID4gPiA+ICsgICBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICp0eHE7Cj4gPiA+ID4gPiA+ ICsgICBpbnQgZXJyLCBxaW5kZXg7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKyAgIHFpbmRl eCA9IHNxIC0gdmktPnNxOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsgICB2aXJ0bmV0X25h cGlfdHhfZGlzYWJsZSgmc3EtPm5hcGkpOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsgICB0 eHEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKHZpLT5kZXYsIHFpbmRleCk7Cj4gPiA+ID4gPiA+ICsg ICBfX25ldGlmX3R4X2xvY2tfYmgodHhxKTsKPiA+ID4gPiA+ID4gKyAgIG5ldGlmX3N0b3Bfc3Vi cXVldWUodmktPmRldiwgcWluZGV4KTsKPiA+ID4gPiA+ID4gKyAgIF9fbmV0aWZfdHhfdW5sb2Nr X2JoKHR4cSk7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKyAgIGVyciA9IHZpcnRxdWV1ZV9y ZXNpemUoc3EtPnZxLCByaW5nX251bSwgdmlydG5ldF9zcV9mcmVlX3VudXNlZF9idWYpOwo+ID4g PiA+ID4gPiArICAgaWYgKGVycikKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgZ290byBlcnI7Cj4g PiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKyAgIG5ldGlmX3N0YXJ0X3N1YnF1ZXVlKHZpLT5kZXYs IHFpbmRleCk7Cj4gPiA+ID4gPiA+ICsgICB2aXJ0bmV0X25hcGlfdHhfZW5hYmxlKHZpLCBzcS0+ dnEsICZzcS0+bmFwaSk7Cj4gPiA+ID4gPiA+ICsgICByZXR1cm4gMDsKPiA+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gPiArZXJyOgo+ID4gPiA+ID4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBJIGd1ZXNzIHdl IGNhbiBzdGlsbCBzdGFydCB0aGUgcXVldWUgaW4gdGhpcyBjYXNlPyAoU2luY2Ugd2UgZG9uJ3QK PiA+ID4gPiA+IGNoYW5nZSB0aGUgcXVldWUgaWYgcmVzaXplIGZhaWxzKS4KPiA+ID4gPgo+ID4g PiA+IFllcywgeW91IGFyZSByaWdodC4KPiA+ID4gPgo+ID4gPiA+IFRoYW5rcy4KPiA+ID4gPgo+ ID4gPiA+ID4KPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICsgICBuZXRkZXZfZXJyKHZpLT5kZXYsCj4g PiA+ID4gPiA+ICsgICAgICAgICAgICAgICJyZXNldCB0eCByZXNldCB2cSBmYWlsOiB0eCBxdWV1 ZSBpbmRleDogJXRkIGVycjogJWRcbiIsCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgIHNxIC0g dmktPnNxLCBlcnIpOwo+ID4gPiA+ID4gPiArICAgdmlydG5ldF9uYXBpX3R4X2VuYWJsZSh2aSwg c3EtPnZxLCAmc3EtPm5hcGkpOwo+ID4gPiA+ID4gPiArICAgcmV0dXJuIGVycjsKPiA+ID4gPiA+ ID4gK30KPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiAgIC8qCj4gPiA+ID4gPiA+ICAgICogU2Vu ZCBjb21tYW5kIHZpYSB0aGUgY29udHJvbCB2aXJ0cXVldWUgYW5kIGNoZWNrIHN0YXR1cy4gIENv bW1hbmRzCj4gPiA+ID4gPiA+ICAgICogc3VwcG9ydGVkIGJ5IHRoZSBoeXBlcnZpc29yLCBhcyBp bmRpY2F0ZWQgYnkgZmVhdHVyZSBiaXRzLCBzaG91bGQKPiA+ID4gPiA+Cj4gPiA+ID4KPiA+ID4K PiA+Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LXVtIG1haWxpbmcgbGlzdApsaW51eC11bUBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtdW0K