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 smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (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 1D3D8C7618D for ; Tue, 4 Apr 2023 08:04:11 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 8E696408F0; Tue, 4 Apr 2023 08:04:10 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 8E696408F0 Authentication-Results: smtp4.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=WWtA2Gwa 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 7ESb4-21Sy4g; Tue, 4 Apr 2023 08:04:08 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp4.osuosl.org (Postfix) with ESMTPS id E695541621; Tue, 4 Apr 2023 08:04:07 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org E695541621 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id B5CD5C0036; Tue, 4 Apr 2023 08:04:07 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 72924C002F for ; Tue, 4 Apr 2023 08:04:06 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 2EA784160F for ; Tue, 4 Apr 2023 08:04:06 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 2EA784160F 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 uUNgJJ2KVj9a for ; Tue, 4 Apr 2023 08:04:04 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 4D147408F0 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp4.osuosl.org (Postfix) with ESMTPS id 4D147408F0 for ; Tue, 4 Apr 2023 08:04:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680595443; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MPEp01wRALcjzqKGMM6f8qQjlWcnPNDhBizefV4L8zM=; b=WWtA2Gwagjma32ggpMMVjfw+W23WplwaxHfxOeiSytoxg65vmkHyBb+qN6xow8FD/Cb+2o hhFKXc9ptBf3dDNThsJfcF5duOg/eQBd4sXUUvf9D4gmewQXhVKsan15mRj6zvwIjmYB1I Lf9GTXw1JRnBhb2ouhbkb+i3YHOu6u4= Received: from mail-oi1-f198.google.com (mail-oi1-f198.google.com [209.85.167.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-645-D5OydHVLNFmmy2qGE6JqTA-1; Tue, 04 Apr 2023 04:04:02 -0400 X-MC-Unique: D5OydHVLNFmmy2qGE6JqTA-1 Received: by mail-oi1-f198.google.com with SMTP id f18-20020a05680814d200b003877ce3bfb4so7916460oiw.3 for ; Tue, 04 Apr 2023 01:04:02 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680595441; x=1683187441; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MPEp01wRALcjzqKGMM6f8qQjlWcnPNDhBizefV4L8zM=; b=smpl9vt5MYYnONi9JWv5Iub8b0k0GRee7+6vB6scRjDI2i0xTcXLm/w0KVVlaMb7Sh tF19Y3pjh0Ksa+2wlpOLTkpSn+ryTz4rKDKMgdIHEE/t3DkkR0uRZ6j8mqgOzgT2oFUB Ae4oRWdbRk1XpoGLqMN77v7sIDG3oAmqUfsJxy9jrw8Ci6zwU20yeMWsrRgjHKqDuJ76 AvfhYQQEyQ1TcCw1OF0efymi0Zqq38Wx6X2ufq1W9bjui5+bv2o+3THLa+8Sxs9+PE4p HKCDjPZ3DT1wokMeYkGyyIa3dsNgXQoIC+4j2cSiiqRElCTaFNCvCJFC3RaMBob9vyQc YwlA== X-Gm-Message-State: AAQBX9fXGqqgYSPZHmfzAuEoDXkDA+XCQUg5+Ts7aUx1bZYjT1bg/45w EO5J/FxQP+oUpw2IvS3cr2R04sFOhi4m1BaTm5jLEiTieFJlLUqRAWUfqz85C2KcKsb4lKRPzq1 n7uiJ0U0MzOy1uLmFI4CLo3Zt8Z2JPc8b8w5pAO8bL/BEtM+W9QLIZ02ZqQ== X-Received: by 2002:a05:6808:1807:b0:383:fad3:d19 with SMTP id bh7-20020a056808180700b00383fad30d19mr755694oib.9.1680595441415; Tue, 04 Apr 2023 01:04:01 -0700 (PDT) X-Google-Smtp-Source: AKy350Yw1T7Kwg636ceFBA5xpVEQ8xJKU0Y0JWg2GVhL1tAByzOAIwnaE8EQvt5A4Js9f6CKgCyQvYVKRVD6FdZrhJY= X-Received: by 2002:a05:6808:1807:b0:383:fad3:d19 with SMTP id bh7-20020a056808180700b00383fad30d19mr755691oib.9.1680595441113; Tue, 04 Apr 2023 01:04:01 -0700 (PDT) MIME-Version: 1.0 References: <20230328120412.110114-1-xuanzhuo@linux.alibaba.com> <20230328120412.110114-4-xuanzhuo@linux.alibaba.com> <1680495148.1559556-3-xuanzhuo@linux.alibaba.com> <1680588670.6153247-1-xuanzhuo@linux.alibaba.com> <1680590673.0168557-1-xuanzhuo@linux.alibaba.com> <1680592019.471209-2-xuanzhuo@linux.alibaba.com> In-Reply-To: <1680592019.471209-2-xuanzhuo@linux.alibaba.com> From: Jason Wang Date: Tue, 4 Apr 2023 16:03:49 +0800 Message-ID: Subject: Re: [PATCH net-next 3/8] virtio_net: introduce virtnet_xdp_handler() to seprate the logic of run xdp To: Xuan Zhuo X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" T24gVHVlLCBBcHIgNCwgMjAyMyBhdCAzOjEy4oCvUE0gWHVhbiBaaHVvIDx4dWFuemh1b0BsaW51 eC5hbGliYWJhLmNvbT4gd3JvdGU6Cj4KPiBPbiBUdWUsIDQgQXByIDIwMjMgMTU6MDE6MzYgKzA4 MDAsIEphc29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5jb20+IHdyb3RlOgo+ID4gT24gVHVlLCBB cHIgNCwgMjAyMyBhdCAyOjU14oCvUE0gWHVhbiBaaHVvIDx4dWFuemh1b0BsaW51eC5hbGliYWJh LmNvbT4gd3JvdGU6Cj4gPiA+Cj4gPiA+IE9uIFR1ZSwgNCBBcHIgMjAyMyAxNDozNTowNSArMDgw MCwgSmFzb24gV2FuZyA8amFzb3dhbmdAcmVkaGF0LmNvbT4gd3JvdGU6Cj4gPiA+ID4gT24gVHVl LCBBcHIgNCwgMjAyMyBhdCAyOjIy4oCvUE0gWHVhbiBaaHVvIDx4dWFuemh1b0BsaW51eC5hbGli YWJhLmNvbT4gd3JvdGU6Cj4gPiA+ID4gPgo+ID4gPiA+ID4gT24gVHVlLCA0IEFwciAyMDIzIDEz OjA0OjAyICswODAwLCBKYXNvbiBXYW5nIDxqYXNvd2FuZ0ByZWRoYXQuY29tPiB3cm90ZToKPiA+ ID4gPiA+ID4gT24gTW9uLCBBcHIgMywgMjAyMyBhdCAxMjoxN+KAr1BNIFh1YW4gWmh1byA8eHVh bnpodW9AbGludXguYWxpYmFiYS5jb20+IHdyb3RlOgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ID4gT24gTW9uLCAzIEFwciAyMDIzIDEwOjQzOjAzICswODAwLCBKYXNvbiBXYW5nIDxqYXNvd2Fu Z0ByZWRoYXQuY29tPiB3cm90ZToKPiA+ID4gPiA+ID4gPiA+IE9uIFR1ZSwgTWFyIDI4LCAyMDIz IGF0IDg6MDTigK9QTSBYdWFuIFpodW8gPHh1YW56aHVvQGxpbnV4LmFsaWJhYmEuY29tPiB3cm90 ZToKPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gQXQgcHJlc2VudCwgd2UgaGF2 ZSB0d28gc2ltaWxhciBsb2dpYyB0byBwZXJmb3JtIHRoZSBYRFAgcHJvZy4KPiA+ID4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gVGhlcmVmb3JlLCB0aGlzIFBBVENIIHNlcGFyYXRlcyB0 aGUgY29kZSBvZiBleGVjdXRpbmcgWERQLCB3aGljaCBpcwo+ID4gPiA+ID4gPiA+ID4gPiBjb25k dWNpdmUgdG8gbGF0ZXIgbWFpbnRlbmFuY2UuCj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFh1YW4gWmh1byA8eHVhbnpodW9AbGludXguYWxpYmFiYS5j b20+Cj4gPiA+ID4gPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gPiA+ID4gPiAgZHJpdmVycy9uZXQv dmlydGlvX25ldC5jIHwgMTQyICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LQo+ID4gPiA+ID4gPiA+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDc1IGluc2VydGlvbnMoKyksIDY3 IGRlbGV0aW9ucygtKQo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvdmlydGlvX25ldC5jIGIvZHJpdmVycy9uZXQvdmlydGlvX25ldC5j Cj4gPiA+ID4gPiA+ID4gPiA+IGluZGV4IGJiNDI2OTU4Y2RkNC4uNzJiOWQ2ZWU0MDI0IDEwMDY0 NAo+ID4gPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMKPiA+ID4g PiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9uZXQvdmlydGlvX25ldC5jCj4gPiA+ID4gPiA+ID4g PiA+IEBAIC0zMDEsNiArMzAxLDE1IEBAIHN0cnVjdCBwYWRkZWRfdm5ldF9oZHIgewo+ID4gPiA+ ID4gPiA+ID4gPiAgICAgICAgIGNoYXIgcGFkZGluZ1sxMl07Cj4gPiA+ID4gPiA+ID4gPiA+ICB9 Owo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiArZW51bSB7Cj4gPiA+ID4gPiA+ ID4gPiA+ICsgICAgICAgLyogeGRwIHBhc3MgKi8KPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBW SVJUTkVUX1hEUF9SRVNfUEFTUywKPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAvKiBkcm9wIHBh Y2tldC4gdGhlIGNhbGxlciBuZWVkcyB0byByZWxlYXNlIHRoZSBwYWdlLiAqLwo+ID4gPiA+ID4g PiA+ID4gPiArICAgICAgIFZJUlRORVRfWERQX1JFU19EUk9QLAo+ID4gPiA+ID4gPiA+ID4gPiAr ICAgICAgIC8qIHBhY2tldCBpcyBjb25zdW1lZCBieSB4ZHAuIHRoZSBjYWxsZXIgbmVlZHMgdG8g ZG8gbm90aGluZy4gKi8KPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBWSVJUTkVUX1hEUF9SRVNf Q09OU1VNRUQsCj4gPiA+ID4gPiA+ID4gPiA+ICt9Owo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gPiA+IEknZCBwcmVmZXIgdGhpcyB0byBiZSBkb25lIG9uIHRvcCB1bmxlc3MgaXQgaXMgYSBt dXN0LiBCdXQgSSBkb24ndCBzZWUKPiA+ID4gPiA+ID4gPiA+IGFueSBhZHZhbnRhZ2Ugb2YgaW50 cm9kdWNpbmcgdGhpcywgaXQncyBwYXJ0aWFsIG1hcHBpbmcgb2YgWERQIGFjdGlvbgo+ID4gPiA+ ID4gPiA+ID4gYW5kIGl0IG5lZWRzIHRvIGJlIGV4dGVuZGVkIHdoZW4gWERQIGFjdGlvbiBpcyBl eHRlbmRlZC4gKEFuZCB3ZSd2ZQo+ID4gPiA+ID4gPiA+ID4gYWxyZWFkeSBoYWQ6IFZJUlRJT19Y RFBfUkVESVIgYW5kIFZJUlRJT19YRFBfVFggLi4uKQo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ID4gTm8sIHRoZXNlIGFyZSB0aGUgdGhyZWUgc3RhdGVzIG9mIGJ1ZmZlciBhZnRlciBYRFAgcHJv Y2Vzc2luZy4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ICogUEFTUzogZ290byBtYWtlIHNr Ygo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBYRFBfUEFTUyBnb2VzIGZvciB0aGlzLgo+ID4gPiA+ ID4gPgo+ID4gPiA+ID4gPiA+ICogRFJPUDogd2Ugc2hvdWxkIHJlbGVhc2UgYnVmZmVyCj4gPiA+ ID4gPiA+Cj4gPiA+ID4gPiA+IFhEUF9EUk9QIGFuZCBlcnJvciBjb25kaXRpb25zIGdvIHdpdGgg dGhpcy4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiAqIENVTlNVTUVEOiB4ZHAgcHJvZyB1c2Vk IHRoZSBidWZmZXIsIHdlIGRvIG5vdGhpbmcKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gWERQX1RY L1hEUF9SRURJUkVDVElPTiBnb2VzIGZvciB0aGlzLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBT byB0IHZpcnRuZXRfeGRwX2hhbmRsZXIoKSBqdXN0IG1hcHMgWERQIEFDVElPTiBwbHVzIHRoZSBl cnJvcgo+ID4gPiA+ID4gPiBjb25kaXRpb25zIHRvIHRoZSBhYm92ZSB0aHJlZSBzdGF0ZXMuCj4g PiA+ID4gPiA+Cj4gPiA+ID4gPiA+IFdlIGNhbiBzaW1wbHkgbWFwIGVycm9yIHRvIFhEUF9EUk9Q IGxpa2U6Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICAgICAgICBjYXNlIFhEUF9UWDoKPiA+ID4g PiA+ID4gICAgICAgICAgICAgICBzdGF0cy0+eGRwX3R4Kys7Cj4gPiA+ID4gPiA+ICAgICAgICAg ICAgICAgIHhkcGYgPSB4ZHBfY29udmVydF9idWZmX3RvX2ZyYW1lKHhkcCk7Cj4gPiA+ID4gPiA+ ICAgICAgICAgICAgICAgIGlmICh1bmxpa2VseSgheGRwZikpCj4gPiA+ID4gPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIFhEUF9EUk9QOwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBB IGdvb2Qgc2lkZSBlZmZlY3QgaXMgdG8gYXZvaWQgdGhlIHhkcF94bWl0IHBvaW50ZXIgdG8gYmUg cGFzc2VkIHRvCj4gPiA+ID4gPiA+IHRoZSBmdW5jdGlvbi4KPiA+ID4gPiA+Cj4gPiA+ID4gPgo+ ID4gPiA+ID4gU28sIEkgZ3Vlc3MgeW91IG1lYW4gdGhpczoKPiA+ID4gPiA+Cj4gPiA+ID4gPiAg ICAgICAgIHN3aXRjaCAoYWN0KSB7Cj4gPiA+ID4gPiAgICAgICAgIGNhc2UgWERQX1BBU1M6Cj4g PiA+ID4gPiAgICAgICAgICAgICAgICAgLyogaGFuZGxlIHBhc3MgKi8KPiA+ID4gPiA+ICAgICAg ICAgICAgICAgICByZXR1cm4gc2tiOwo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgICAgICAgY2FzZSBY RFBfVFg6Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgKnhkcF94bWl0IHw9IFZJUlRJT19YRFBf VFg7Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgZ290byB4bWl0Owo+ID4gPiA+ID4KPiA+ID4g PiA+ICAgICAgICAgY2FzZSBYRFBfUkVESVJFQ1Q6Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAg KnhkcF94bWl0IHw9IFZJUlRJT19YRFBfUkVESVI7Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAg Z290byB4bWl0Owo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgICAgICAgY2FzZSBYRFBfRFJPUDoKPiA+ ID4gPiA+ICAgICAgICAgZGVmYXVsdDoKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICBnb3RvIGVy cl94ZHA7Cj4gPiA+ID4gPiAgICAgICAgIH0KPiA+ID4gPiA+Cj4gPiA+ID4gPiBJIGhhdmUgdG8g c2F5IHRoZXJlIGlzIG5vIHByb2JsZW0gZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgY29kZSBpbXBs ZW1lbnRhdGlvbi4KPiA+ID4gPgo+ID4gPiA+IE5vdGUgdGhhdCB0aGlzIGlzIHRoZSBjdXJyZW50 IGxvZ2ljIHdoZXJlIGl0IGlzIGRldGVybWluZWQgaW4KPiA+ID4gPiByZWNlaXZlX3NtYWxsKCkg YW5kIHJlY2VpdmVfbWVyZ2VhYmxlKCkuCj4gPiA+Cj4gPiA+IFllcywgYnV0IHRoZSBwdXJwb3Nl IG9mIHRoaXMgcGF0Y2hlcyBpcyB0byBzaW1wbGlmeSB0aGUgY2FsbC4KPiA+Cj4gPiBZb3UgbWVh biBzaW1wbGlmeSB0aGUgcmVjZWl2ZV9zbWFsbCgpL21lcmdlYWJsZSgpPwo+Cj4gWUVTLgo+Cj4K PiA+Cj4gPiA+Cj4gPiA+ID4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBCdXQgaWYgdGhlIGEgbmV3IEFD VElPTiBsaWtpbmcgWERQX1RYLFhEUF9SRURJUkVDVCBpcyBhZGRlZCBpbiB0aGUgZnV0dXJlLCB0 aGVuCj4gPiA+ID4gPiB3ZSBtdXN0IG1vZGlmeSBhbGwgdGhlIGNhbGxlcnMuCj4gPiA+ID4KPiA+ ID4gPiBUaGlzIGlzIGZpbmUgc2luY2Ugd2Ugb25seSB1c2UgYSBzaW5nbGUgdHlwZSBmb3IgWERQ IGFjdGlvbi4KPiA+ID4KPiA+ID4gYSBzaW5nbGUgdHlwZT8KPiA+Cj4gPiBJbnN0ZWFkIG9mIChw YXJ0aWFsKSBkdXBsaWNhdGluZyBYRFAgYWN0aW9ucyBpbiB0aGUgbmV3IGVudW1zLgo+Cj4KPiBJ IHRoaW5rIGl0J3MgcmVhbGx5IG1pc3VuZGVyc3RhbmQgaGVyZS4gU28geW91ciB0aG91Z2h0IGlz IHRoZXNlPwo+Cj4gICAgVklSVE5FVF9YRFBfUkVTX1BBU1MsCj4gICAgVklSVE5FVF9YRFBfUkVT X1RYX1JFRElSRUNULAo+ICAgIFZJUlRORVRfWERQX1JFU19EUk9QLAoKTm8sIEkgbWVhbnQgdGhl IGVudW0geW91IGludHJvZHVjZWQuCgo+Cj4KPgo+ID4KPiA+ID4KPiA+ID4gPgo+ID4gPiA+ID4g VGhpcyBpcyB0aGUgYmVuZWZpdCBvZiB1c2luZyBDVU5TVU1FRC4KPiA+ID4gPgo+ID4gPiA+IEl0 J3MgdmVyeSBoYXJkIHRvIHNheSwgZS5nIGlmIHdlIHdhbnQgdG8gc3VwcG9ydCBjbG9uaW5nIGlu IHRoZSBmdXR1cmUuCj4gPiA+Cj4gPiA+IGNsb25pbmc/IFlvdSBtZWFuIGNsb25lIG9uZSBuZXcg YnVmZmVyLgo+ID4gPgo+ID4gPiBJdCBpcyB0cnVlIHRoYXQgbm8gbWF0dGVyIHdoYXQgcmVhbGl6 YXRpb24sIHRoZSBsb2dpYyBtdXN0IGJlIG1vZGlmaWVkLgo+ID4KPiA+IFllcy4KPiA+Cj4gPiA+ Cj4gPiA+ID4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBJIHRoaW5rIGl0IGlzIGEgZ29vZCBhZHZhbnRh Z2UgdG8gcHV0IHhkcF94bWl0IGluIHZpcnRuZXRfeGRwX2hhbmRsZXIoKSwKPiA+ID4gPiA+IHdo aWNoIG1ha2VzIHRoZSBjYWxsZXIgbm90IGNhcmUgdG9vIG11Y2ggYWJvdXQgdGhlc2UgZGV0YWls cy4KPiA+ID4gPgo+ID4gPiA+IFRoaXMgcGFydCBJIGRvbid0IHVuZGVyc3RhbmQsIGhhdmluZyB4 ZHBfeG1pdCBtZWFucyB0aGUgY2FsbGVyIG5lZWQgdG8KPiA+ID4gPiBrbm93IHdoZXRoZXIgaXQg aXMgeG1pdGVkIG9yIHJlZGlyZWN0ZWQuIFRoZSBwb2ludCBvZiB0aGUgZW51bSBpcyB0bwo+ID4g PiA+IGhpZGUgdGhlIFhEUCBhY3Rpb25zLCBidXQgaXQncyBjb25mbGljdCB3aXRoIHdoYXQgeGRw X3htaXQgd2hvIHdhbnQgdG8KPiA+ID4gPiBleHBvc2UgKHBhcnQgb2YpIHRoZSBYRFAgYWN0aW9u cy4KPiA+ID4KPiA+ID4gSSBtZWFuLCBubyBtYXR0ZXIgd2hhdCB2aXJ0bmV0X3hkcF9oYW5kbGVy ICgpIHJldHVybnM/IFhEUF9BQ1RJT04gb3Igc29tZSBvbmUgSQo+ID4gPiBkZWZpbmVkLCBJIHdh bnQgdG8gaGlkZSB0aGUgbW9kaWZpY2F0aW9uIG9mIHhkcF94bWl0IHRvIHZpcnRuZXRfeGRwX2hh bmRsZXIoKS4KPiA+ID4KPiA+ID4gRXZlbiBpZiB2aXJ0bmV0X3hkcF9oYW5kbGVyKCkgcmV0dXJu cyBYRFBfVFgsIHdlIGNhbiBhbHNvIGNvbXBsZXRlIHRoZQo+ID4gPiBtb2RpZmljYXRpb24gb2Yg WERQX1hNSVQgd2l0aGluIFZpcnRuZXRfeGRwX2hhbmRsZXIoKS4KPiA+ID4KPiA+ID4KPiA+ID4g Pgo+ID4gPiA+ID4gSWYgeW91IHRha2UgaW50bwo+ID4gPiA+ID4gYWNjb3VudCB0aGUgcHJvYmxl bSBvZiBpbmNyZWFzaW5nIHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycywgSSBhZHZpc2UgdG8gcHV0 IGl0Cj4gPiA+ID4gPiBpbiBycS4KPiA+ID4gPgo+ID4gPiA+IEkgZG9uJ3QgaGF2ZSBzdHJvbmcg b3BpbmlvbiB0byBpbnRyb2R1Y2UgdGhlIGVudW0sCj4gPiA+Cj4gPiA+IE9LLCBJIHdpbGwgZHJv cCB0aGVzZSBuZXcgZW51bXMuCj4gPgo+ID4gSnVzdCB0byBtYWtlIHN1cmUgd2UgYXJlIGF0IHRo ZSBzYW1lIHBhZ2UuIEkgbWVhbiwgaWYgdGhlcmUgaXMgbm8KPiA+IG9iamVjdGlvbiBmcm9tIG90 aGVycywgSSdtIG9rIHRvIGhhdmUgYW4gZW51bSwgYnV0IHdlIG5lZWQgdG8gdXNlIGEKPiA+IHNl cGFyYXRlIHBhdGNoIHRvIGRvIHRoYXQuCj4KPiBEbyB5b3UgcmVmZXIgdG8gaW50cm9kdWNlIGVu dW1zIGFsb25lIHdpdGhvdXQgdmlydG5ldF94ZHBfaGFuZGxlcigpPwoKSSBtZWFudCwgaGF2aW5n IHR3byBwYXRjaGVzCgoxKSBzcGxpdCBvdXQgdmlydG5ldF94ZHBfaGFuZGxlcigpIHdpdGhvdXQg aW50cm9kdWNpbmcgYW55IG5ldyBlbnVtcwoyKSBpbnRyb2R1Y2UgdGhlIG5ldyBlbnVtIHRvIHNp bXBsaWZ5IHRoZSBjb2RlcwoKVGhhbmtzCgo+Cj4gPgo+ID4gPgo+ID4gPiA+IHdoYXQgSSB3YW50 IHRvIHNheQo+ID4gPiA+IGlzLCB1c2UgYSBzZXBhcmF0ZWQgcGF0Y2ggdG8gZG8gdGhhdC4KPiA+ ID4KPiA+ID4gRG9lcyB0aGlzIHBhcnQgcmVmZXIgdG8gcHV0dGluZyB4ZHBfeG1pdCBpbiBycT8K PiA+Cj4gPiBJIG1lYW4gaXQncyBiZXR0ZXIgdG8gYmUgZG9uZSBzZXBhcmF0ZWx5LiBCdXQgSSBk b24ndCBzZWUgdGhlCj4gPiBhZHZhbnRhZ2Ugb2YgdGhpcyBvdGhlciB0aGFuIHJlZHVjaW5nIHRo ZSBwYXJhbWV0ZXJzLgo+Cj4gSSB0aGluayBzbyBhbHNvLgo+Cj4gVGhhbmtzLgo+Cj4KPiA+Cj4g PiBUaGFua3MKPiA+Cj4gPiA+Cj4gPiA+IFRoYW5rcy4KPiA+ID4KPiA+ID4KPiA+ID4gPgo+ID4g PiA+IFRoYW5rcwo+ID4gPiA+Cj4gPiA+ID4gPgo+ID4gPiA+ID4gVGhhbmtzLgo+ID4gPiA+ID4K PiA+ID4gPiA+Cj4gPiA+ID4gPgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ID4gVGhlIGxhdHRlciB0d28gYXJlIG5vdCBwYXJ0aWN1bGFybHkgcmVsYXRlZCB0byBYRFAgQUNU SU9OLiBBbmQgaXQgZG9lcyBub3QgbmVlZAo+ID4gPiA+ID4gPiA+IHRvIGV4dGVuZCB3aGVuIFhE UCBhY3Rpb24gaXMgZXh0ZW5kZWQuIEF0IGxlYXN0IEkgaGF2ZSBub3QgdGhvdWdodCBvZiB0aGlz Cj4gPiA+ID4gPiA+ID4gc2l0dWF0aW9uLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBXaGF0J3Mg dGhlIGFkdmFudGFnZXMgb2Ygc3VjaCBpbmRpcmVjdGlvbiBjb21wYXJlZCB0byB1c2luZyBYRFAg YWN0aW9uIGRpcmVjdGx5Pwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBUaGFua3MKPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiA+ICBzdGF0aWMgdm9pZCB2aXJ0bmV0X3JxX2ZyZWVf dW51c2VkX2J1ZihzdHJ1Y3QgdmlydHF1ZXVlICp2cSwgdm9pZCAqYnVmKTsKPiA+ID4gPiA+ID4g PiA+ID4gIHN0YXRpYyB2b2lkIHZpcnRuZXRfc3FfZnJlZV91bnVzZWRfYnVmKHN0cnVjdCB2aXJ0 cXVldWUgKnZxLCB2b2lkICpidWYpOwo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4g PiBAQCAtNzg5LDYgKzc5OCw1OSBAQCBzdGF0aWMgaW50IHZpcnRuZXRfeGRwX3htaXQoc3RydWN0 IG5ldF9kZXZpY2UgKmRldiwKPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICByZXR1cm4gcmV0Owo+ ID4gPiA+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiAr c3RhdGljIGludCB2aXJ0bmV0X3hkcF9oYW5kbGVyKHN0cnVjdCBicGZfcHJvZyAqeGRwX3Byb2cs IHN0cnVjdCB4ZHBfYnVmZiAqeGRwLAo+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKPiA+ID4gPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqeGRwX3htaXQsCj4g PiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgdmly dG5ldF9ycV9zdGF0cyAqc3RhdHMpCj4gPiA+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4g PiA+ICsgICAgICAgc3RydWN0IHhkcF9mcmFtZSAqeGRwZjsKPiA+ID4gPiA+ID4gPiA+ID4gKyAg ICAgICBpbnQgZXJyOwo+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgIHUzMiBhY3Q7Cj4gPiA+ID4g PiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBhY3QgPSBicGZfcHJvZ19ydW5f eGRwKHhkcF9wcm9nLCB4ZHApOwo+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgIHN0YXRzLT54ZHBf cGFja2V0cysrOwo+ID4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAg c3dpdGNoIChhY3QpIHsKPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBjYXNlIFhEUF9QQVNTOgo+ ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgcmV0dXJuIFZJUlRORVRfWERQX1JFU19Q QVNTOwo+ID4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgY2FzZSBY RFBfVFg6Cj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBzdGF0cy0+eGRwX3R4Kys7 Cj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICB4ZHBmID0geGRwX2NvbnZlcnRfYnVm Zl90b19mcmFtZSh4ZHApOwo+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgaWYgKHVu bGlrZWx5KCF4ZHBmKSkKPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIFZJUlRORVRfWERQX1JFU19EUk9QOwo+ID4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4g PiA+ID4gPiA+ICsgICAgICAgICAgICAgICBlcnIgPSB2aXJ0bmV0X3hkcF94bWl0KGRldiwgMSwg JnhkcGYsIDApOwo+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5 KCFlcnIpKSB7Cj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHhkcF9y ZXR1cm5fZnJhbWVfcnhfbmFwaSh4ZHBmKTsKPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgIH0gZWxzZSBpZiAodW5saWtlbHkoZXJyIDwgMCkpIHsKPiA+ID4gPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgdHJhY2VfeGRwX2V4Y2VwdGlvbihkZXYsIHhkcF9wcm9nLCBh Y3QpOwo+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVklS VE5FVF9YRFBfUkVTX0RST1A7Cj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICB9Cj4g PiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICp4ZHBf eG1pdCB8PSBWSVJUSU9fWERQX1RYOwo+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg cmV0dXJuIFZJUlRORVRfWERQX1JFU19DT05TVU1FRDsKPiA+ID4gPiA+ID4gPiA+ID4gKwo+ID4g PiA+ID4gPiA+ID4gPiArICAgICAgIGNhc2UgWERQX1JFRElSRUNUOgo+ID4gPiA+ID4gPiA+ID4g PiArICAgICAgICAgICAgICAgc3RhdHMtPnhkcF9yZWRpcmVjdHMrKzsKPiA+ID4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgIGVyciA9IHhkcF9kb19yZWRpcmVjdChkZXYsIHhkcCwgeGRwX3By b2cpOwo+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgaWYgKGVycikKPiA+ID4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZJUlRORVRfWERQX1JFU19E Uk9QOwo+ID4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAqeGRwX3htaXQgfD0gVklSVElPX1hEUF9SRURJUjsKPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgIHJldHVybiBWSVJUTkVUX1hEUF9SRVNfQ09OU1VNRUQ7Cj4gPiA+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBkZWZhdWx0Ogo+ID4gPiA+ID4gPiA+ID4g PiArICAgICAgICAgICAgICAgYnBmX3dhcm5faW52YWxpZF94ZHBfYWN0aW9uKGRldiwgeGRwX3By b2csIGFjdCk7Cj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBmYWxsdGhyb3VnaDsK PiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBjYXNlIFhEUF9BQk9SVEVEOgo+ID4gPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgdHJhY2VfeGRwX2V4Y2VwdGlvbihkZXYsIHhkcF9wcm9nLCBh Y3QpOwo+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgZmFsbHRocm91Z2g7Cj4gPiA+ ID4gPiA+ID4gPiA+ICsgICAgICAgY2FzZSBYRFBfRFJPUDoKPiA+ID4gPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgIHJldHVybiBWSVJUTkVUX1hEUF9SRVNfRFJPUDsKPiA+ID4gPiA+ID4gPiA+ ID4gKyAgICAgICB9Cj4gPiA+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ID4gPiA+ID4gIHN0YXRpYyB1bnNpZ25lZCBpbnQgdmlydG5ldF9nZXRfaGVhZHJvb20o c3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpCj4gPiA+ID4gPiA+ID4gPiA+ICB7Cj4gPiA+ID4gPiA+ ID4gPiA+ICAgICAgICAgcmV0dXJuIHZpLT54ZHBfZW5hYmxlZCA/IFZJUlRJT19YRFBfSEVBRFJP T00gOiAwOwo+ID4gPiA+ID4gPiA+ID4gPiBAQCAtODc2LDcgKzkzOCw2IEBAIHN0YXRpYyBzdHJ1 Y3Qgc2tfYnVmZiAqcmVjZWl2ZV9zbWFsbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAo+ID4gPiA+ ID4gPiA+ID4gPiAgICAgICAgIHN0cnVjdCBwYWdlICpwYWdlID0gdmlydF90b19oZWFkX3BhZ2Uo YnVmKTsKPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICB1bnNpZ25lZCBpbnQgZGVsdGEgPSAwOwo+ ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgIHN0cnVjdCBwYWdlICp4ZHBfcGFnZTsKPiA+ID4gPiA+ ID4gPiA+ID4gLSAgICAgICBpbnQgZXJyOwo+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgIHVuc2ln bmVkIGludCBtZXRhc2l6ZSA9IDA7Cj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ ICAgICAgICAgbGVuIC09IHZpLT5oZHJfbGVuOwo+ID4gPiA+ID4gPiA+ID4gPiBAQCAtODk4LDcg Kzk1OSw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcmVjZWl2ZV9zbWFsbChzdHJ1Y3QgbmV0 X2RldmljZSAqZGV2LAo+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgIHhkcF9wcm9nID0gcmN1X2Rl cmVmZXJlbmNlKHJxLT54ZHBfcHJvZyk7Cj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgaWYgKHhk cF9wcm9nKSB7Cj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmlydGlv X25ldF9oZHJfbXJnX3J4YnVmICpoZHIgPSBidWYgKyBoZWFkZXJfb2Zmc2V0Owo+ID4gPiA+ID4g PiA+ID4gPiAtICAgICAgICAgICAgICAgc3RydWN0IHhkcF9mcmFtZSAqeGRwZjsKPiA+ID4gPiA+ ID4gPiA+ID4gICAgICAgICAgICAgICAgIHN0cnVjdCB4ZHBfYnVmZiB4ZHA7Cj4gPiA+ID4gPiA+ ID4gPiA+ICAgICAgICAgICAgICAgICB2b2lkICpvcmlnX2RhdGE7Cj4gPiA+ID4gPiA+ID4gPiA+ ICAgICAgICAgICAgICAgICB1MzIgYWN0Owo+ID4gPiA+ID4gPiA+ID4gPiBAQCAtOTMxLDQ2ICs5 OTEsMjIgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpyZWNlaXZlX3NtYWxsKHN0cnVjdCBuZXRf ZGV2aWNlICpkZXYsCj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICB4ZHBfcHJlcGFy ZV9idWZmKCZ4ZHAsIGJ1ZiArIFZJUlRORVRfUlhfUEFEICsgdmktPmhkcl9sZW4sCj4gPiA+ID4g PiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhkcF9oZWFkcm9vbSwg bGVuLCB0cnVlKTsKPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgIG9yaWdfZGF0YSA9 IHhkcC5kYXRhOwo+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgYWN0ID0gYnBmX3By b2dfcnVuX3hkcCh4ZHBfcHJvZywgJnhkcCk7Cj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAg ICAgICBzdGF0cy0+eGRwX3BhY2tldHMrKzsKPiA+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgYWN0ID0gdmlydG5ldF94ZHBfaGFuZGxlcih4ZHBfcHJv ZywgJnhkcCwgZGV2LCB4ZHBfeG1pdCwgc3RhdHMpOwo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgc3dpdGNoIChhY3QpIHsKPiA+ID4gPiA+ID4gPiA+ ID4gLSAgICAgICAgICAgICAgIGNhc2UgWERQX1BBU1M6Cj4gPiA+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICBjYXNlIFZJUlRORVRfWERQX1JFU19QQVNTOgo+ID4gPiA+ID4gPiA+ID4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAvKiBSZWNhbGN1bGF0ZSBsZW5ndGggaW4gY2FzZSBicGYg cHJvZ3JhbSBjaGFuZ2VkIGl0ICovCj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgIGRlbHRhID0gb3JpZ19kYXRhIC0geGRwLmRhdGE7Cj4gPiA+ID4gPiA+ID4gPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHhkcC5kYXRhX2VuZCAtIHhkcC5kYXRhOwo+ID4g PiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhc2l6ZSA9IHhkcC5kYXRh IC0geGRwLmRhdGFfbWV0YTsKPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7Cj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICBjYXNlIFhEUF9UWDoK PiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgc3RhdHMtPnhkcF90eCsr Owo+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICB4ZHBmID0geGRwX2Nv bnZlcnRfYnVmZl90b19mcmFtZSgmeGRwKTsKPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgaWYgKHVubGlrZWx5KCF4ZHBmKSkKPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycl94ZHA7Cj4gPiA+ID4gPiA+ID4gPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgIGVyciA9IHZpcnRuZXRfeGRwX3htaXQoZGV2LCAxLCAm eGRwZiwgMCk7Cj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGlmICh1 bmxpa2VseSghZXJyKSkgewo+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHhkcF9yZXR1cm5fZnJhbWVfcnhfbmFwaSh4ZHBmKTsKPiA+ID4gPiA+ID4gPiA+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1bmxpa2VseShlcnIgPCAwKSkg ewo+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNl X3hkcF9leGNlcHRpb24odmktPmRldiwgeGRwX3Byb2csIGFjdCk7Cj4gPiA+ID4gPiA+ID4gPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJfeGRwOwo+ID4gPiA+ID4g PiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICB9Cj4gPiA+ID4gPiA+ID4gPiA+IC0gICAg ICAgICAgICAgICAgICAgICAgICp4ZHBfeG1pdCB8PSBWSVJUSU9fWERQX1RYOwo+ID4gPiA+ID4g PiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICByY3VfcmVhZF91bmxvY2soKTsKPiA+ID4g PiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZ290byB4ZHBfeG1pdDsKPiA+ID4g PiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAgIGNhc2UgWERQX1JFRElSRUNUOgo+ID4gPiA+ID4g PiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICBzdGF0cy0+eGRwX3JlZGlyZWN0cysrOwo+ ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSB4ZHBfZG9fcmVk aXJlY3QoZGV2LCAmeGRwLCB4ZHBfcHJvZyk7Cj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgIGlmIChlcnIpCj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ290byBlcnJfeGRwOwo+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAqeGRwX3htaXQgfD0gVklSVElPX1hEUF9SRURJUjsKPiA+ID4gPiA+ID4g PiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgY2FzZSBWSVJUTkVUX1hE UF9SRVNfQ09OU1VNRUQ6Cj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAg IHJjdV9yZWFkX3VubG9jaygpOwo+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAg ICAgICBnb3RvIHhkcF94bWl0Owo+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgZGVm YXVsdDoKPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgYnBmX3dhcm5f aW52YWxpZF94ZHBfYWN0aW9uKHZpLT5kZXYsIHhkcF9wcm9nLCBhY3QpOwo+ID4gPiA+ID4gPiA+ ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICBmYWxsdGhyb3VnaDsKPiA+ID4gPiA+ID4gPiA+ ID4gLSAgICAgICAgICAgICAgIGNhc2UgWERQX0FCT1JURUQ6Cj4gPiA+ID4gPiA+ID4gPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgIHRyYWNlX3hkcF9leGNlcHRpb24odmktPmRldiwgeGRwX3By b2csIGFjdCk7Cj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGdvdG8g ZXJyX3hkcDsKPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAgIGNhc2UgWERQX0RST1A6 Cj4gPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIGNh c2UgVklSVE5FVF9YRFBfUkVTX0RST1A6Cj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgIGdvdG8gZXJyX3hkcDsKPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAg IH0KPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICB9Cj4gPiA+ID4gPiA+ID4gPiA+IEBAIC0xMjc3 LDcgKzEzMTMsNiBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJlY2VpdmVfbWVyZ2VhYmxlKHN0 cnVjdCBuZXRfZGV2aWNlICpkZXYsCj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgaWYgKHhkcF9w cm9nKSB7Cj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgeGRw X2ZyYWdzX3RydWVzeiA9IDA7Cj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICBzdHJ1 Y3Qgc2tiX3NoYXJlZF9pbmZvICpzaGluZm87Cj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAg ICAgICBzdHJ1Y3QgeGRwX2ZyYW1lICp4ZHBmOwo+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAg ICAgICAgc3RydWN0IHBhZ2UgKnhkcF9wYWdlOwo+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAg ICAgICAgc3RydWN0IHhkcF9idWZmIHhkcDsKPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAg ICAgIHZvaWQgKmRhdGE7Cj4gPiA+ID4gPiA+ID4gPiA+IEBAIC0xMjk0LDQ5ICsxMzI5LDIyIEBA IHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcmVjZWl2ZV9tZXJnZWFibGUoc3RydWN0IG5ldF9kZXZp Y2UgKmRldiwKPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgIGlmICh1bmxpa2VseShl cnIpKQo+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycl94 ZHBfZnJhZ3M7Cj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAg ICAgICBhY3QgPSBicGZfcHJvZ19ydW5feGRwKHhkcF9wcm9nLCAmeGRwKTsKPiA+ID4gPiA+ID4g PiA+ID4gLSAgICAgICAgICAgICAgIHN0YXRzLT54ZHBfcGFja2V0cysrOwo+ID4gPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgYWN0ID0gdmlydG5ldF94ZHBfaGFuZGxlcih4ZHBfcHJvZywg JnhkcCwgZGV2LCB4ZHBfeG1pdCwgc3RhdHMpOwo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4g PiA+ID4gPiAgICAgICAgICAgICAgICAgc3dpdGNoIChhY3QpIHsKPiA+ID4gPiA+ID4gPiA+ID4g LSAgICAgICAgICAgICAgIGNhc2UgWERQX1BBU1M6Cj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICBjYXNlIFZJUlRORVRfWERQX1JFU19QQVNTOgo+ID4gPiA+ID4gPiA+ID4gPiAgICAg ICAgICAgICAgICAgICAgICAgICBoZWFkX3NrYiA9IGJ1aWxkX3NrYl9mcm9tX3hkcF9idWZmKGRl diwgdmksICZ4ZHAsIHhkcF9mcmFnc190cnVlc3opOwo+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAg ICAgICAgICAgICAgICAgICBpZiAodW5saWtlbHkoIWhlYWRfc2tiKSkKPiA+ID4gPiA+ID4gPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycl94ZHBfZnJhZ3M7Cj4g PiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAg IHJjdV9yZWFkX3VubG9jaygpOwo+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gaGVhZF9za2I7Cj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICBj YXNlIFhEUF9UWDoKPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgc3Rh dHMtPnhkcF90eCsrOwo+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICB4 ZHBmID0geGRwX2NvbnZlcnRfYnVmZl90b19mcmFtZSgmeGRwKTsKPiA+ID4gPiA+ID4gPiA+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KCF4ZHBmKSkgewo+ID4gPiA+ID4g PiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldGRldl9kYmcoZGV2LCAi Y29udmVydCBidWZmIHRvIGZyYW1lIGZhaWxlZCBmb3IgeGRwXG4iKTsKPiA+ID4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4gPiBOaXQ6IFRoaXMgZGVidWcgaXMgbG9zdCBhZnRlciB0aGUgY29udmVy c2lvbi4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IFdpbGwgZml4Lgo+ID4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4gVGhhbmtzLgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPgo+ID4g PiA+ID4gPiA+ID4gVGhhbmtzCj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX3hkcF9mcmFnczsKPiA+ID4gPiA+ ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4gPiA+ID4gPiA+ID4gPiAtICAg ICAgICAgICAgICAgICAgICAgICBlcnIgPSB2aXJ0bmV0X3hkcF94bWl0KGRldiwgMSwgJnhkcGYs IDApOwo+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5saWtl bHkoIWVycikpIHsKPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB4ZHBfcmV0dXJuX2ZyYW1lX3J4X25hcGkoeGRwZik7Cj4gPiA+ID4gPiA+ID4gPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodW5saWtlbHkoZXJyIDwgMCkpIHsKPiA+ ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZV94ZHBf ZXhjZXB0aW9uKHZpLT5kZXYsIHhkcF9wcm9nLCBhY3QpOwo+ID4gPiA+ID4gPiA+ID4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX3hkcF9mcmFnczsKPiA+ID4gPiA+ ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4gPiA+ID4gPiA+ID4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAqeGRwX3htaXQgfD0gVklSVElPX1hEUF9UWDsKPiA+ID4gPiA+ ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgcmN1X3JlYWRfdW5sb2NrKCk7Cj4gPiA+ ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGdvdG8geGRwX3htaXQ7Cj4gPiA+ ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICBjYXNlIFhEUF9SRURJUkVDVDoKPiA+ID4gPiA+ ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgc3RhdHMtPnhkcF9yZWRpcmVjdHMrKzsK PiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZXJyID0geGRwX2RvX3Jl ZGlyZWN0KGRldiwgJnhkcCwgeGRwX3Byb2cpOwo+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAg ICAgICAgICAgICAgICBpZiAoZXJyKQo+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdvdG8gZXJyX3hkcF9mcmFnczsKPiA+ID4gPiA+ID4gPiA+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgKnhkcF94bWl0IHw9IFZJUlRJT19YRFBfUkVESVI7Cj4gPiA+ ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIGNhc2UgVklS VE5FVF9YRFBfUkVTX0NPTlNVTUVEOgo+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAg ICAgICAgICByY3VfcmVhZF91bmxvY2soKTsKPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgZ290byB4ZHBfeG1pdDsKPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAg ICAgIGRlZmF1bHQ6Cj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGJw Zl93YXJuX2ludmFsaWRfeGRwX2FjdGlvbih2aS0+ZGV2LCB4ZHBfcHJvZywgYWN0KTsKPiA+ID4g PiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZmFsbHRocm91Z2g7Cj4gPiA+ID4g PiA+ID4gPiA+IC0gICAgICAgICAgICAgICBjYXNlIFhEUF9BQk9SVEVEOgo+ID4gPiA+ID4gPiA+ ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICB0cmFjZV94ZHBfZXhjZXB0aW9uKHZpLT5kZXYs IHhkcF9wcm9nLCBhY3QpOwo+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAg ICBmYWxsdGhyb3VnaDsKPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAgIGNhc2UgWERQ X0RST1A6Cj4gPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgIGNhc2UgVklSVE5FVF9YRFBfUkVTX0RST1A6Cj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgIGdvdG8gZXJyX3hkcF9mcmFnczsKPiA+ID4gPiA+ID4gPiA+ID4gICAg ICAgICAgICAgICAgIH0KPiA+ID4gPiA+ID4gPiA+ID4gIGVycl94ZHBfZnJhZ3M6Cj4gPiA+ID4g PiA+ID4gPiA+IC0tCj4gPiA+ID4gPiA+ID4gPiA+IDIuMzIuMC4zLmcwMTE5NWNmOWYKPiA+ID4g PiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4KPiA+ ID4gPiA+Cj4gPiA+ID4KPiA+ID4KPiA+Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcgbGlzdApWaXJ0dWFsaXph dGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRh dGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg==