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 X-Spam-Level: X-Spam-Status: No, score=-10.7 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D2588C433ED for ; Wed, 7 Apr 2021 11:33:37 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 243F46113B for ; Wed, 7 Apr 2021 11:33:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 243F46113B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=NFsQhYIyZusXHAgw31PIjfQ8hLzSxGfllACKhd1Xu80=; b=osug6eluMH8wJUshquRVsXKwB 2sQqAHxaSdTdHWg7EHY8ruV7Ybg4ayfiWey/xFaKld3IBUEUHwfuqXZNSHfbTMuq6JNF+kSem7BZ4 uk3p3MA1p1AcR5DrnsSSS9fups/SXaIfz9NGNNsCmpSj3qp7x8CPQ8tgiUfzGLVi2BVCSJQ3L74Up ys62ouOAUz9dR9ljIbHZU6grqAyxg3z5jEA/9tJOIFrLwasN0AV+KKfZ4OgRgp0n4tX9Df3hhpyMj QP08wh9/oaFqd71fbL8ahdHkB0Du9SWctjjVaOgWjzKnb5S/KxfLA5KtywVT6msOC0RXd2DDfdC/E XwACCTqDA==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lU6Qm-004swl-TZ; Wed, 07 Apr 2021 11:33:09 +0000 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lU6Qg-004swC-Eo for linux-nvme@lists.infradead.org; Wed, 07 Apr 2021 11:33:05 +0000 Received: by mail-ej1-x634.google.com with SMTP id mh7so17117264ejb.12 for ; Wed, 07 Apr 2021 04:33:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=igApDUlpCeCEweoCqg22t/B3MoQOPZ9NvMZmM26l5kk=; b=o2NFHNvesDb3O8KuZFkQr+4Dnv7siCRgFNdsd/iC5NtpFRMigSBYB6M6QwVpNW5Ooa kfum0JtmQKE/rkzfU2BKmHxUcCIlrFSayIvzYmK0QTuqBamEDyjNvBdIQ4qUgDNr8M/B Cik0IgB9DOlEel24Sg/jQvamZIXqV+2QnMswfAgR45unpO5/QdNhDspaYXxjEM6ekcbA z48SEDh5VDpW35uZB4RQhcnu9GjF8JT15lhyqbpUJk2YrDmp1JEKwSkJrtaoUz9kanaj 0nhdTqFmWcP/3OWBECj1WR/KtIqQwj0hK47IfaKKumELK2N04wpC0odg4zidoIHegvCg Fhyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=igApDUlpCeCEweoCqg22t/B3MoQOPZ9NvMZmM26l5kk=; b=K2rejCZfb46nfRICapWSiG+O447/JhSoqq3aqDKac0O73IpBplJwyXHsaVQzwDxwR+ 6MFFsEkqZ6T4nUqAw+35SANG5KbRrW+vbiBWK6hI5qY1TSUyxnjrgxWJhzTZZs/XCqx8 0eKw+GIBNvUFpfUXnMlLBzgFXOmQlA4ozY/CeSa2+Re8DfxiWsnCNMYBBK2rapZPsihR Cn8XsYLNMpktwYXDCX/sxENWUKm6Zhmq89Wghl2NbNK+Vyo+3V4RbiagXIFbEBXbZcEc KoetmlBY5eFN2nny8sPsJnHuThdeuUHNzv4XedvgGrf0658JndU+iTvAG8rGz43eQ661 Usfw== X-Gm-Message-State: AOAM531U2tnVL+Nw4fyc4vBRJsTcFoqMv8W4vfBV8coA7lMIDFtwgr6T XR9SdlxpaL34P9HMe9asO1LlnrJjEYV7HGd0Vqs= X-Google-Smtp-Source: ABdhPJzc/YwNumqv2Y9xVfgysBRWlCYkcsd5UT93ZQ8MucuaZJeEd1d9j3pK91td8dANc0HUggHjMUzh+6Z+kkv+nsg= X-Received: by 2002:a17:906:f953:: with SMTP id ld19mr3083534ejb.164.1617795180009; Wed, 07 Apr 2021 04:33:00 -0700 (PDT) MIME-Version: 1.0 References: <20210219124517.79359-1-selvakuma.s1@samsung.com> <20210219124517.79359-3-selvakuma.s1@samsung.com> In-Reply-To: From: Selva Jove Date: Wed, 7 Apr 2021 17:02:48 +0530 Message-ID: Subject: Re: [RFC PATCH v5 2/4] block: add simple copy support To: Damien Le Moal Cc: SelvaKumar S , "linux-nvme@lists.infradead.org" , "kbusch@kernel.org" , "axboe@kernel.dk" , "hch@lst.de" , "sagi@grimberg.me" , "linux-block@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "dm-devel@redhat.com" , "snitzer@redhat.com" , "joshiiitr@gmail.com" , "nj.shetty@samsung.com" , "joshi.k@samsung.com" , "javier.gonz@samsung.com" , "kch@kernel.org" , "linux-fsdevel@vger.kernel.org" X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210407_123302_827703_EEC2E9E0 X-CRM114-Status: GOOD ( 43.80 ) X-BeenThere: linux-nvme@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-nvme" Errors-To: linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org SW5pdGlhbGx5IEkgc3RhcnRlZCBtb3ZpbmcgdGhlIGRtLWtjb3B5ZCBpbnRlcmZhY2UgdG8gdGhl IGJsb2NrIGxheWVyCmFzIGEgZ2VuZXJpYyBpbnRlcmZhY2UuCk9uY2UgSSBkaWcgZGVlcGVyIGlu IGRtLWtjb3B5ZCBjb2RlLCBJIGZpZ3VyZWQgdGhhdCBkbS1rY29weWQgaXMKdGlnaHRseSBjb3Vw bGVkIHdpdGggZG1faW8oKQoKVG8gbW92ZSBkbS1rY29weWQgdG8gYmxvY2sgbGF5ZXIsIGl0IHdv dWxkIGFsc28gcmVxdWlyZSBkbV9pbyBjb2RlIHRvCmJlIG1vdmVkIHRvIGJsb2NrIGxheWVyLgpJ dCB3b3VsZCBjYXVzZSBoYXZvYyBpbiBkbSBsYXllciwgYXMgaXQgaXMgdGhlIGJhY2tib25lIG9m IHRoZQpkbS1sYXllciBhbmQgbmVlZHMgY29tcGxldGUKcmV3cml0aW5nIG9mIGRtLWxheWVyLiBE byB5b3Ugc2VlIGFueSBvdGhlciB3YXkgb2YgZG9pbmcgdGhpcyB3aXRob3V0CmhhdmluZyB0byBt b3ZlIGRtX2lvIGNvZGUKb3IgdG8gaGF2ZSByZWR1bmRhbnQgY29kZSA/CgoKT24gU2F0LCBGZWIg MjAsIDIwMjEgYXQgMTA6MjkgQU0gRGFtaWVuIExlIE1vYWwgPERhbWllbi5MZU1vYWxAd2RjLmNv bT4gd3JvdGU6Cj4KPiBPbiAyMDIxLzAyLzIwIDExOjAxLCBTZWx2YUt1bWFyIFMgd3JvdGU6Cj4g PiBBZGQgbmV3IEJMS0NPUFkgaW9jdGwgdGhhdCBvZmZsb2FkcyBjb3B5aW5nIG9mIG9uZSBvciBt b3JlIHNvdXJjZXMKPiA+IHJhbmdlcyB0byBhIGRlc3RpbmF0aW9uIGluIHRoZSBkZXZpY2UuIEFj Y2VwdHMgYSAnY29weV9yYW5nZScgc3RydWN0dXJlCj4gPiB0aGF0IGNvbnRhaW5zIGRlc3RpbmF0 aW9uIChpbiBzZWN0b3JzKSwgbm8gb2Ygc291cmNlcyBhbmQgcG9pbnRlciB0byB0aGUKPiA+IGFy cmF5IG9mIHNvdXJjZSByYW5nZXMuIEVhY2ggc291cmNlIHJhbmdlIGlzIHJlcHJlc2VudGVkIGJ5 ICdyYW5nZV9lbnRyeScKPiA+IHRoYXQgY29udGFpbnMgc3RhcnQgYW5kIGxlbmd0aCBvZiBzb3Vy Y2UgcmFuZ2VzIChpbiBzZWN0b3JzKS4KPiA+Cj4gPiBJbnRyb2R1Y2UgUkVRX09QX0NPUFksIGEg bm8tbWVyZ2UgY29weSBvZmZsb2FkIG9wZXJhdGlvbi4gQ3JlYXRlCj4gPiBiaW8gd2l0aCBjb250 cm9sIGluZm9ybWF0aW9uIGFzIHBheWxvYWQgYW5kIHN1Ym1pdCB0byB0aGUgZGV2aWNlLgo+ID4g UkVRX09QX0NPUFkoMTkpIGlzIGEgd3JpdGUgb3AgYW5kIHRha2VzIHpvbmVfd3JpdGVfbG9jayB3 aGVuIHN1Ym1pdHRlZAo+ID4gdG8gem9uZWQgZGV2aWNlLgo+ID4KPiA+IElmIHRoZSBkZXZpY2Ug ZG9lc24ndCBzdXBwb3J0IGNvcHkgb3IgY29weSBvZmZsb2FkIGlzIGRpc2FibGVkLCB0aGVuCj4g PiBjb3B5IG9wZXJhdGlvbiBpcyBlbXVsYXRlZCBieSBkZWZhdWx0LiBIb3dldmVyLCB0aGUgY29w eS1lbXVsYXRpb24gaXMgYW4KPiA+IG9wdC1pbiBmZWF0dXJlLiBDYWxsZXIgY2FuIGNob29zZSBu b3QgdG8gdXNlIHRoZSBjb3B5LWVtdWxhdGlvbiBieQo+ID4gc3BlY2lmeWluZyBhIGZsYWcgJ0JM S0RFVl9DT1BZX05PRU1VTEFUSU9OJy4KPiA+Cj4gPiBDb3B5LWVtdWxhdGlvbiBpcyBpbXBsZW1l bnRlZCBieSBhbGxvY2F0aW5nIG1lbW9yeSBvZiB0b3RhbCBjb3B5IHNpemUuCj4gPiBUaGUgc291 cmNlIHJhbmdlcyBhcmUgcmVhZCBpbnRvIG1lbW9yeSBieSBjaGFpbmluZyBiaW8gZm9yIGVhY2gg c291cmNlCj4gPiByYW5nZXMgYW5kIHN1Ym1pdHRpbmcgdGhlbSBhc3luYyBhbmQgdGhlIGxhc3Qg YmlvIHdhaXRzIGZvciBjb21wbGV0aW9uLgo+ID4gQWZ0ZXIgZGF0YSBpcyByZWFkLCBpdCBpcyB3 cml0dGVuIHRvIHRoZSBkZXN0aW5hdGlvbi4KPiA+Cj4gPiBiaW9fbWFwX2tlcm4oKSBpcyB1c2Vk IHRvIGFsbG9jYXRlIGJpbyBhbmQgYWRkIHBhZ2VzIG9mIGNvcHkgYnVmZmVyIHRvCj4gPiBiaW8u IEFzIGJpby0+YmlfcHJpdmF0ZSBhbmQgYmlvLT5iaV9lbmRfaW8gYXJlIG5lZWRlZCBmb3IgY2hh aW5pbmcgdGhlCj4gPiBiaW8gYW5kIGdldHMgb3Zlci13cml0dGVuLCBpbnZhbGlkYXRlX2tlcm5l bF92bWFwX3JhbmdlKCkgZm9yIHJlYWQgaXMKPiA+IGNhbGxlZCBpbiB0aGUgY2FsbGVyLgo+ID4K PiA+IEludHJvZHVjZSBxdWV1ZSBsaW1pdHMgZm9yIHNpbXBsZSBjb3B5IGFuZCBvdGhlciBoZWxw ZXIgZnVuY3Rpb25zLgo+ID4gQWRkIGRldmljZSBsaW1pdHMgYXMgc3lzZnMgZW50cmllcy4KPiA+ ICAgICAgIC0gY29weV9vZmZsb2FkCj4gPiAgICAgICAtIG1heF9jb3B5X3NlY3RvcnMKPiA+ICAg ICAgIC0gbWF4X2NvcHlfcmFuZ2VzX3NlY3RvcnMKPiA+ICAgICAgIC0gbWF4X2NvcHlfbnJfcmFu Z2VzCj4gPgo+ID4gY29weV9vZmZsb2FkKD0gMCkgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4gVGhp cyBuZWVkcyB0byBiZSBlbmFibGVkIGlmCj4gPiBjb3B5LW9mZmxvYWQgbmVlZHMgdG8gYmUgdXNl ZC4KPiA+IG1heF9jb3B5X3NlY3RvcnMgPSAwIGluZGljYXRlcyB0aGUgZGV2aWNlIGRvZXNuJ3Qg c3VwcG9ydCBuYXRpdmUgY29weS4KPiA+Cj4gPiBOYXRpdmUgY29weSBvZmZsb2FkIGlzIG5vdCBz dXBwb3J0ZWQgZm9yIHN0YWNrZWQgZGV2aWNlcyBhbmQgaXMgZG9uZSB2aWEKPiA+IGNvcHkgZW11 bGF0aW9uLgo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6IFNlbHZhS3VtYXIgUyA8c2VsdmFrdW1hLnMx QHNhbXN1bmcuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogS2FuY2hhbiBKb3NoaSA8am9zaGkua0Bz YW1zdW5nLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IE5pdGVzaCBTaGV0dHkgPG5qLnNoZXR0eUBz YW1zdW5nLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IEphdmllciBHb256w6FsZXogPGphdmllci5n b256QHNhbXN1bmcuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogQ2hhaXRhbnlhIEt1bGthcm5pIDxr Y2hAa2VybmVsLm9yZz4KPiA+IC0tLQo+ID4gIGJsb2NrL2Jsay1jb3JlLmMgICAgICAgICAgfCAx MDIgKysrKysrKysrKysrKysrKy0tCj4gPiAgYmxvY2svYmxrLWxpYi5jICAgICAgICAgICB8IDIy MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gIGJsb2NrL2Jsay1t ZXJnZS5jICAgICAgICAgfCAgIDIgKwo+ID4gIGJsb2NrL2Jsay1zZXR0aW5ncy5jICAgICAgfCAg MTAgKysKPiA+ICBibG9jay9ibGstc3lzZnMuYyAgICAgICAgIHwgIDQ3ICsrKysrKysrCj4gPiAg YmxvY2svYmxrLXpvbmVkLmMgICAgICAgICB8ICAgMSArCj4gPiAgYmxvY2svYm91bmNlLmMgICAg ICAgICAgICB8ICAgMSArCj4gPiAgYmxvY2svaW9jdGwuYyAgICAgICAgICAgICB8ICAzMyArKysr KysKPiA+ICBpbmNsdWRlL2xpbnV4L2Jpby5oICAgICAgIHwgICAxICsKPiA+ICBpbmNsdWRlL2xp bnV4L2Jsa190eXBlcy5oIHwgIDE0ICsrKwo+ID4gIGluY2x1ZGUvbGludXgvYmxrZGV2LmggICAg fCAgMTUgKysrCj4gPiAgaW5jbHVkZS91YXBpL2xpbnV4L2ZzLmggICB8ICAxMyArKysKPiA+ICAx MiBmaWxlcyBjaGFuZ2VkLCA0NTMgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKPiA+Cj4g PiBkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWNvcmUuYyBiL2Jsb2NrL2Jsay1jb3JlLmMKPiA+IGlu ZGV4IDc2NjNhOWI5NGI4MC4uMjNlNjQ2ZTVhZTQzIDEwMDY0NAo+ID4gLS0tIGEvYmxvY2svYmxr LWNvcmUuYwo+ID4gKysrIGIvYmxvY2svYmxrLWNvcmUuYwo+ID4gQEAgLTcyMCw2ICs3MjAsMTcg QEAgc3RhdGljIG5vaW5saW5lIGludCBzaG91bGRfZmFpbF9iaW8oc3RydWN0IGJpbyAqYmlvKQo+ ID4gIH0KPiA+ICBBTExPV19FUlJPUl9JTkpFQ1RJT04oc2hvdWxkX2ZhaWxfYmlvLCBFUlJOTyk7 Cj4gPgo+ID4gK3N0YXRpYyBpbmxpbmUgaW50IGJpb19jaGVja19jb3B5X2VvZChzdHJ1Y3QgYmlv ICpiaW8sIHNlY3Rvcl90IHN0YXJ0LAo+ID4gKyAgICAgICAgICAgICBzZWN0b3JfdCBucl9zZWN0 b3JzLCBzZWN0b3JfdCBtYXhfc2VjdCkKPiA+ICt7Cj4gPiArICAgICBpZiAobnJfc2VjdG9ycyAm JiBtYXhfc2VjdCAmJgo+ID4gKyAgICAgICAgIChucl9zZWN0b3JzID4gbWF4X3NlY3QgfHwgc3Rh cnQgPiBtYXhfc2VjdCAtIG5yX3NlY3RvcnMpKSB7Cj4gPiArICAgICAgICAgICAgIGhhbmRsZV9i YWRfc2VjdG9yKGJpbywgbWF4X3NlY3QpOwo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTzsK PiA+ICsgICAgIH0KPiA+ICsgICAgIHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICAvKgo+ID4g ICAqIENoZWNrIHdoZXRoZXIgdGhpcyBiaW8gZXh0ZW5kcyBiZXlvbmQgdGhlIGVuZCBvZiB0aGUg ZGV2aWNlIG9yIHBhcnRpdGlvbi4KPiA+ICAgKiBUaGlzIG1heSB3ZWxsIGhhcHBlbiAtIHRoZSBr ZXJuZWwgY2FsbHMgYnJlYWQoKSB3aXRob3V0IGNoZWNraW5nIHRoZSBzaXplIG9mCj4gPiBAQCAt NzM4LDYgKzc0OSw3NSBAQCBzdGF0aWMgaW5saW5lIGludCBiaW9fY2hlY2tfZW9kKHN0cnVjdCBi aW8gKmJpbywgc2VjdG9yX3QgbWF4c2VjdG9yKQo+ID4gICAgICAgcmV0dXJuIDA7Cj4gPiAgfQo+ ID4KPiA+ICsvKgo+ID4gKyAqIENoZWNrIGZvciBjb3B5IGxpbWl0cyBhbmQgcmVtYXAgc291cmNl IHJhbmdlcyBpZiBuZWVkZWQuCj4gPiArICovCj4gPiArc3RhdGljIGludCBibGtfY2hlY2tfY29w eShzdHJ1Y3QgYmlvICpiaW8pCj4gPiArewo+ID4gKyAgICAgc3RydWN0IGJsa19jb3B5X3BheWxv YWQgKnBheWxvYWQgPSBiaW9fZGF0YShiaW8pOwo+ID4gKyAgICAgc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEgPSBiaW8tPmJpX2Rpc2stPnF1ZXVlOwo+ID4gKyAgICAgc2VjdG9yX3QgbWF4X3NlY3Qs IHN0YXJ0X3NlY3QsIGNvcHlfc2l6ZSA9IDA7Cj4gPiArICAgICBzZWN0b3JfdCBzcmNfbWF4X3Nl Y3QsIHNyY19zdGFydF9zZWN0Owo+ID4gKyAgICAgc3RydWN0IGJsb2NrX2RldmljZSAqYmRfcGFy dDsKPiA+ICsgICAgIGludCBpLCByZXQgPSAtRUlPOwo+ID4gKwo+ID4gKyAgICAgcmN1X3JlYWRf bG9jaygpOwo+ID4gKwo+ID4gKyAgICAgYmRfcGFydCA9IF9fZGlza19nZXRfcGFydChiaW8tPmJp X2Rpc2ssIGJpby0+YmlfcGFydG5vKTsKPiA+ICsgICAgIGlmICh1bmxpa2VseSghYmRfcGFydCkp IHsKPiA+ICsgICAgICAgICAgICAgcmN1X3JlYWRfdW5sb2NrKCk7Cj4gPiArICAgICAgICAgICAg IGdvdG8gb3V0Owo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgbWF4X3NlY3QgPSAgYmRldl9u cl9zZWN0b3JzKGJkX3BhcnQpOwo+ID4gKyAgICAgc3RhcnRfc2VjdCA9IGJkX3BhcnQtPmJkX3N0 YXJ0X3NlY3Q7Cj4gPiArCj4gPiArICAgICBzcmNfbWF4X3NlY3QgPSBiZGV2X25yX3NlY3RvcnMo cGF5bG9hZC0+c3JjX2JkZXYpOwo+ID4gKyAgICAgc3JjX3N0YXJ0X3NlY3QgPSBwYXlsb2FkLT5z cmNfYmRldi0+YmRfc3RhcnRfc2VjdDsKPiA+ICsKPiA+ICsgICAgIGlmICh1bmxpa2VseShzaG91 bGRfZmFpbF9yZXF1ZXN0KGJkX3BhcnQsIGJpby0+YmlfaXRlci5iaV9zaXplKSkpCj4gPiArICAg ICAgICAgICAgIGdvdG8gb3V0Owo+ID4gKwo+ID4gKyAgICAgaWYgKHVubGlrZWx5KGJpb19jaGVj a19ybyhiaW8sIGJkX3BhcnQpKSkKPiA+ICsgICAgICAgICAgICAgZ290byBvdXQ7Cj4KPiBUaGVy ZSBpcyBubyByY3VfdW5sb2NrKCkgaW4gdGhhdCBvdXQgbGFiZWwuIERpZCB5b3UgdGVzdCA/Cj4K PiA+ICsKPiA+ICsgICAgIHJjdV9yZWFkX3VubG9jaygpOwo+ID4gKwo+ID4gKyAgICAgLyogY2Fu bm90IGhhbmRsZSBjb3B5IGNyb3NzaW5nIG5yX3JhbmdlcyBsaW1pdCAqLwo+ID4gKyAgICAgaWYg KHBheWxvYWQtPmNvcHlfbnJfcmFuZ2VzID4gcS0+bGltaXRzLm1heF9jb3B5X25yX3JhbmdlcykK PiA+ICsgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiArCj4gPiArICAgICBmb3IgKGkgPSAwOyBp IDwgcGF5bG9hZC0+Y29weV9ucl9yYW5nZXM7IGkrKykgewo+ID4gKyAgICAgICAgICAgICByZXQg PSBiaW9fY2hlY2tfY29weV9lb2QoYmlvLCBwYXlsb2FkLT5yYW5nZVtpXS5zcmMsCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLT5yYW5nZVtpXS5sZW4sIHNyY19tYXhf c2VjdCk7Cj4gPiArICAgICAgICAgICAgIGlmICh1bmxpa2VseShyZXQpKQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4gKwo+ID4gKyAgICAgICAgICAgICAvKiBzaW5nbGUg c291cmNlIHJhbmdlIGxlbmd0aCBsaW1pdCAqLwo+ID4gKyAgICAgICAgICAgICBpZiAocGF5bG9h ZC0+cmFuZ2VbaV0ubGVuID4gcS0+bGltaXRzLm1heF9jb3B5X3JhbmdlX3NlY3RvcnMpCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4KPiByZXQgaXMgbm90IHNldC4gWW91IHdp bGwgcmV0dXJuIHN1Y2Nlc3Mgd2l0aCB0aGlzLgo+Cj4gPiArCj4gPiArICAgICAgICAgICAgIHBh eWxvYWQtPnJhbmdlW2ldLnNyYyArPSBzcmNfc3RhcnRfc2VjdDsKPiA+ICsgICAgICAgICAgICAg Y29weV9zaXplICs9IHBheWxvYWQtPnJhbmdlW2ldLmxlbjsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ ICsgICAgIC8qIGNoZWNrIGlmIGNvcHkgbGVuZ3RoIGNyb3NzZXMgZW9kICovCj4gPiArICAgICBy ZXQgPSBiaW9fY2hlY2tfY29weV9lb2QoYmlvLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weV9zaXplLCBtYXhfc2VjdCk7Cj4gPiAr ICAgICBpZiAodW5saWtlbHkocmV0KSkKPiA+ICsgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiAr Cj4gPiArICAgICAvKiBjYW5ub3QgaGFuZGxlIGNvcHkgbW9yZSB0aGFuIGNvcHkgbGltaXRzICov Cj4gPiArICAgICBpZiAoY29weV9zaXplID4gcS0+bGltaXRzLm1heF9jb3B5X3NlY3RvcnMpCj4g PiArICAgICAgICAgICAgIGdvdG8gb3V0Owo+Cj4gQWdhaW4gcmV0IGlzIG5vdCBzZXQuLi4gTm8g ZXJyb3IgcmV0dXJuID8KPgo+ID4gKwo+ID4gKyAgICAgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAr PSBzdGFydF9zZWN0Owo+ID4gKyAgICAgYmlvLT5iaV9wYXJ0bm8gPSAwOwo+ID4gKyAgICAgcmV0 ID0gMDsKPiA+ICtvdXQ6Cj4gPiArICAgICByZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ICAv Kgo+ID4gICAqIFJlbWFwIGJsb2NrIG4gb2YgcGFydGl0aW9uIHAgdG8gYmxvY2sgbitzdGFydChw KSBvZiB0aGUgZGlzay4KPiA+ICAgKi8KPiA+IEBAIC04MjcsMTQgKzkwNywxNiBAQCBzdGF0aWMg bm9pbmxpbmVfZm9yX3N0YWNrIGJvb2wgc3VibWl0X2Jpb19jaGVja3Moc3RydWN0IGJpbyAqYmlv KQo+ID4gICAgICAgaWYgKHNob3VsZF9mYWlsX2JpbyhiaW8pKQo+ID4gICAgICAgICAgICAgICBn b3RvIGVuZF9pbzsKPiA+Cj4gPiAtICAgICBpZiAoYmlvLT5iaV9wYXJ0bm8pIHsKPiA+IC0gICAg ICAgICAgICAgaWYgKHVubGlrZWx5KGJsa19wYXJ0aXRpb25fcmVtYXAoYmlvKSkpCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgZ290byBlbmRfaW87Cj4gPiAtICAgICB9IGVsc2Ugewo+ID4gLSAg ICAgICAgICAgICBpZiAodW5saWtlbHkoYmlvX2NoZWNrX3JvKGJpbywgYmlvLT5iaV9kaXNrLT5w YXJ0MCkpKQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIGdvdG8gZW5kX2lvOwo+ID4gLSAgICAg ICAgICAgICBpZiAodW5saWtlbHkoYmlvX2NoZWNrX2VvZChiaW8sIGdldF9jYXBhY2l0eShiaW8t PmJpX2Rpc2spKSkpCj4gPiAtICAgICAgICAgICAgICAgICAgICAgZ290byBlbmRfaW87Cj4gPiAr ICAgICBpZiAobGlrZWx5KCFvcF9pc19jb3B5KGJpby0+Ymlfb3BmKSkpIHsKPiA+ICsgICAgICAg ICAgICAgaWYgKGJpby0+YmlfcGFydG5vKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYg KHVubGlrZWx5KGJsa19wYXJ0aXRpb25fcmVtYXAoYmlvKSkpCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnb3RvIGVuZF9pbzsKPiA+ICsgICAgICAgICAgICAgfSBlbHNlIHsKPiA+ ICsgICAgICAgICAgICAgICAgICAgICBpZiAodW5saWtlbHkoYmlvX2NoZWNrX3JvKGJpbywgYmlv LT5iaV9kaXNrLT5wYXJ0MCkpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290 byBlbmRfaW87Cj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KGJpb19jaGVj a19lb2QoYmlvLCBnZXRfY2FwYWNpdHkoYmlvLT5iaV9kaXNrKSkpKQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ290byBlbmRfaW87Cj4gPiArICAgICAgICAgICAgIH0KPiA+ICAg ICAgIH0KPiA+Cj4gPiAgICAgICAvKgo+ID4gQEAgLTg1OCw2ICs5NDAsMTAgQEAgc3RhdGljIG5v aW5saW5lX2Zvcl9zdGFjayBib29sIHN1Ym1pdF9iaW9fY2hlY2tzKHN0cnVjdCBiaW8gKmJpbykK PiA+ICAgICAgICAgICAgICAgaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkKPiA+ICAgICAgICAg ICAgICAgICAgICAgICBnb3RvIG5vdF9zdXBwb3J0ZWQ7Cj4gPiAgICAgICAgICAgICAgIGJyZWFr Owo+ID4gKyAgICAgY2FzZSBSRVFfT1BfQ09QWToKPiA+ICsgICAgICAgICAgICAgaWYgKHVubGlr ZWx5KGJsa19jaGVja19jb3B5KGJpbykpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGdvdG8g ZW5kX2lvOwo+ID4gKyAgICAgICAgICAgICBicmVhazsKPiA+ICAgICAgIGNhc2UgUkVRX09QX1NF Q1VSRV9FUkFTRToKPiA+ICAgICAgICAgICAgICAgaWYgKCFibGtfcXVldWVfc2VjdXJlX2VyYXNl KHEpKQo+ID4gICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbm90X3N1cHBvcnRlZDsKPiA+IGRp ZmYgLS1naXQgYS9ibG9jay9ibGstbGliLmMgYi9ibG9jay9ibGstbGliLmMKPiA+IGluZGV4IDc1 MmY5YzcyMjA2Mi4uOTdiYTU4ZDhkOWExIDEwMDY0NAo+ID4gLS0tIGEvYmxvY2svYmxrLWxpYi5j Cj4gPiArKysgYi9ibG9jay9ibGstbGliLmMKPiA+IEBAIC0xNTAsNiArMTUwLDIyOCBAQCBpbnQg YmxrZGV2X2lzc3VlX2Rpc2NhcmQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc2VjdG9yX3Qg c2VjdG9yLAo+ID4gIH0KPiA+ICBFWFBPUlRfU1lNQk9MKGJsa2Rldl9pc3N1ZV9kaXNjYXJkKTsK PiA+Cj4gPiAraW50IGJsa19jb3B5X29mZmxvYWQoc3RydWN0IGJsb2NrX2RldmljZSAqZGVzdF9i ZGV2LCBzdHJ1Y3QgYmxrX2NvcHlfcGF5bG9hZCAqcGF5bG9hZCwKPiA+ICsgICAgICAgICAgICAg c2VjdG9yX3QgZGVzdCwgZ2ZwX3QgZ2ZwX21hc2spCj4KPiBTaW1wbGUgY29weSBpcyBvbmx5IG92 ZXIgdGhlIHNhbWUgZGV2aWNlLCByaWdodCA/IFNvIHRoZSBuYW1lICJkZXN0X2JkZXYiIGlzIGEK PiBsaXR0bGUgc3RyYW5nZS4KPgo+ID4gK3sKPiA+ICsgICAgIHN0cnVjdCByZXF1ZXN0X3F1ZXVl ICpxID0gYmRldl9nZXRfcXVldWUoZGVzdF9iZGV2KTsKPiA+ICsgICAgIHN0cnVjdCBiaW8gKmJp bzsKPiA+ICsgICAgIGludCByZXQsIHBheWxvYWRfc2l6ZTsKPiA+ICsKPiA+ICsgICAgIHBheWxv YWRfc2l6ZSA9IHN0cnVjdF9zaXplKHBheWxvYWQsIHJhbmdlLCBwYXlsb2FkLT5jb3B5X25yX3Jh bmdlcyk7Cj4gPiArICAgICBiaW8gPSBiaW9fbWFwX2tlcm4ocSwgcGF5bG9hZCwgcGF5bG9hZF9z aXplLCBnZnBfbWFzayk7Cj4gPiArICAgICBpZiAoSVNfRVJSKGJpbykpIHsKPiA+ICsgICAgICAg ICAgICAgcmV0ID0gUFRSX0VSUihiaW8pOwo+ID4gKyAgICAgICAgICAgICBnb3RvIGVycjsKPgo+ IFRoaXMgd2lsbCBkbyBhIGJpb19wdXQoKSBvbiBhIG5vbiBleGlzdGVudCBiaW8uLi4KPgo+ID4g KyAgICAgfQo+ID4gKwo+ID4gKyAgICAgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGRlc3Q7Cj4g PiArICAgICBiaW8tPmJpX29wZiA9IFJFUV9PUF9DT1BZIHwgUkVRX05PTUVSR0U7Cj4gPiArICAg ICBiaW9fc2V0X2RldihiaW8sIGRlc3RfYmRldik7Cj4gPiArCj4gPiArICAgICByZXQgPSBzdWJt aXRfYmlvX3dhaXQoYmlvKTsKPiA+ICtlcnI6Cj4gPiArICAgICBiaW9fcHV0KGJpbyk7Cj4gPiAr ICAgICByZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ICtpbnQgYmxrX3JlYWRfdG9fYnVmKHN0 cnVjdCBibG9ja19kZXZpY2UgKnNyY19iZGV2LCBzdHJ1Y3QgYmxrX2NvcHlfcGF5bG9hZCAqcGF5 bG9hZCwKPiA+ICsgICAgICAgICAgICAgZ2ZwX3QgZ2ZwX21hc2ssIHNlY3Rvcl90IGNvcHlfc2l6 ZSwgdm9pZCAqKmJ1Zl9wKQo+ID4gK3sKPiA+ICsgICAgIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx ID0gYmRldl9nZXRfcXVldWUoc3JjX2JkZXYpOwo+ID4gKyAgICAgc3RydWN0IGJpbyAqYmlvLCAq cGFyZW50ID0gTlVMTDsKPiA+ICsgICAgIHZvaWQgKmJ1ZiA9IE5VTEw7Cj4gPiArICAgICBpbnQg Y29weV9sZW4gPSBjb3B5X3NpemUgPDwgU0VDVE9SX1NISUZUOwo+ID4gKyAgICAgaW50IGksIG5y X3NyY3MsIHJldCwgY3VyX3NpemUsIHRfbGVuID0gMDsKPiA+ICsgICAgIGJvb2wgaXNfdm1hbGxv YzsKPiA+ICsKPiA+ICsgICAgIG5yX3NyY3MgPSBwYXlsb2FkLT5jb3B5X25yX3JhbmdlczsKPiA+ ICsKPiA+ICsgICAgIGJ1ZiA9IGt2bWFsbG9jKGNvcHlfbGVuLCBnZnBfbWFzayk7Cj4gPiArICAg ICBpZiAoIWJ1ZikKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gPiArICAgICBp c192bWFsbG9jID0gaXNfdm1hbGxvY19hZGRyKGJ1Zik7Cj4gPiArCj4gPiArICAgICBmb3IgKGkg PSAwOyBpIDwgbnJfc3JjczsgaSsrKSB7Cj4gPiArICAgICAgICAgICAgIGN1cl9zaXplID0gcGF5 bG9hZC0+cmFuZ2VbaV0ubGVuIDw8IFNFQ1RPUl9TSElGVDsKPiA+ICsKPiA+ICsgICAgICAgICAg ICAgYmlvID0gYmlvX21hcF9rZXJuKHEsIGJ1ZiArIHRfbGVuLCBjdXJfc2l6ZSwgZ2ZwX21hc2sp Owo+ID4gKyAgICAgICAgICAgICBpZiAoSVNfRVJSKGJpbykpIHsKPiA+ICsgICAgICAgICAgICAg ICAgICAgICByZXQgPSBQVFJfRVJSKGJpbyk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgZ290 byBvdXQ7Cj4gPiArICAgICAgICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgICAgICAgYmlvLT5i aV9pdGVyLmJpX3NlY3RvciA9IHBheWxvYWQtPnJhbmdlW2ldLnNyYzsKPiA+ICsgICAgICAgICAg ICAgYmlvLT5iaV9vcGYgPSBSRVFfT1BfUkVBRDsKPiA+ICsgICAgICAgICAgICAgYmlvX3NldF9k ZXYoYmlvLCBzcmNfYmRldik7Cj4gPiArICAgICAgICAgICAgIGJpby0+YmlfZW5kX2lvID0gTlVM TDsKPiA+ICsgICAgICAgICAgICAgYmlvLT5iaV9wcml2YXRlID0gTlVMTDsKPiA+ICsKPiA+ICsg ICAgICAgICAgICAgaWYgKHBhcmVudCkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGJpb19j aGFpbihwYXJlbnQsIGJpbyk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgc3VibWl0X2Jpbyhw YXJlbnQpOwo+ID4gKyAgICAgICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAgICAgIHBhcmVu dCA9IGJpbzsKPiA+ICsgICAgICAgICAgICAgdF9sZW4gKz0gY3VyX3NpemU7Cj4gPiArICAgICB9 Cj4gPiArCj4gPiArICAgICByZXQgPSBzdWJtaXRfYmlvX3dhaXQoYmlvKTsKPiA+ICsgICAgIGJp b19wdXQoYmlvKTsKPiA+ICsgICAgIGlmIChpc192bWFsbG9jKQo+ID4gKyAgICAgICAgICAgICBp bnZhbGlkYXRlX2tlcm5lbF92bWFwX3JhbmdlKGJ1ZiwgY29weV9sZW4pOwo+Cj4gQnV0IGJsa193 cml0ZV9mcm9tX2J1ZigpIHdpbGwgdXNlIHRoZSBidWZmZXIgcmlnaHQgYWZ0ZXIgdGhpcy4uIElz IHRoaXMgcmVhbGx5IE9LID8KPgoKQXMgd2UgYXJlIG92ZXItd3JpdGluZyBiaW8tPnByaXZhdGUg YWRuIGJpLT5iaV9lbmRpbyBkdXJpbmcKc3VibWl0X2Jpb193YWl0KCksIHRoZSBvcmlnaW5hbApi aW9fbWFwX2tlcm5fZW5kaW8oKSBjYW4ndCBiZSB1c2VkIHRvIGludmFsaWRhdGVfa2VybmVsX3Zt YXBfcmFuZ2UoKS4KU28gd2UgYXJlIGRvaW5nIGl0CmhlcmUgZXhwbGljaXRseS4gaW52YWxpZGF0 ZV9rZXJuZWxfdm1hcF9yYW5nZSgpIGlzIG9ubHkgbmVjZXNzYXJ5IGZvcgpkYXRhIHJlYWRzIGFu ZCB0aGUgYnVmCmlzIHNhZmUgdG8gYmUgdXNlZCBpbiBibGtfd3JpdGVfZnJvbV9idWYoKS4KCj4K PiA+ICsgICAgIGlmIChyZXQpCj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4gKwo+ID4g KyAgICAgKmJ1Zl9wID0gYnVmOwo+ID4gKyAgICAgcmV0dXJuIDA7Cj4gPiArb3V0Ogo+ID4gKyAg ICAga3ZmcmVlKGJ1Zik7Cj4gPiArICAgICByZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ICtp bnQgYmxrX3dyaXRlX2Zyb21fYnVmKHN0cnVjdCBibG9ja19kZXZpY2UgKmRlc3RfYmRldiwgdm9p ZCAqYnVmLCBzZWN0b3JfdCBkZXN0LAo+ID4gKyAgICAgICAgICAgICBzZWN0b3JfdCBjb3B5X3Np emUsIGdmcF90IGdmcF9tYXNrKQo+ID4gK3sKPiA+ICsgICAgIHN0cnVjdCByZXF1ZXN0X3F1ZXVl ICpxID0gYmRldl9nZXRfcXVldWUoZGVzdF9iZGV2KTsKPiA+ICsgICAgIHN0cnVjdCBiaW8gKmJp bzsKPiA+ICsgICAgIGludCByZXQsIGNvcHlfbGVuID0gY29weV9zaXplIDw8IFNFQ1RPUl9TSElG VDsKPiA+ICsKPiA+ICsgICAgIGJpbyA9IGJpb19tYXBfa2VybihxLCBidWYsIGNvcHlfbGVuLCBn ZnBfbWFzayk7Cj4gPiArICAgICBpZiAoSVNfRVJSKGJpbykpIHsKPiA+ICsgICAgICAgICAgICAg cmV0ID0gUFRSX0VSUihiaW8pOwo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dDsKPiA+ICsgICAg IH0KPiA+ICsgICAgIGJpb19zZXRfZGV2KGJpbywgZGVzdF9iZGV2KTsKPiA+ICsgICAgIGJpby0+ Ymlfb3BmID0gUkVRX09QX1dSSVRFOwo+ID4gKyAgICAgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9 IGRlc3Q7Cj4gPiArCj4gPiArICAgICBiaW8tPmJpX2VuZF9pbyA9IE5VTEw7Cj4gPiArICAgICBy ZXQgPSBzdWJtaXRfYmlvX3dhaXQoYmlvKTsKPiA+ICsgICAgIGJpb19wdXQoYmlvKTsKPiA+ICtv dXQ6Cj4gPiArICAgICByZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ICtpbnQgYmxrX3ByZXBh cmVfcGF5bG9hZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpzcmNfYmRldiwgaW50IG5yX3NyY3MsIHN0 cnVjdCByYW5nZV9lbnRyeSAqcmxpc3QsCj4gPiArICAgICAgICAgICAgIGdmcF90IGdmcF9tYXNr LCBzdHJ1Y3QgYmxrX2NvcHlfcGF5bG9hZCAqKnBheWxvYWRfcCwgc2VjdG9yX3QgKmNvcHlfc2l6 ZSkKPiA+ICt7Cj4gPiArCj4gPiArICAgICBzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZf Z2V0X3F1ZXVlKHNyY19iZGV2KTsKPiA+ICsgICAgIHN0cnVjdCBibGtfY29weV9wYXlsb2FkICpw YXlsb2FkOwo+ID4gKyAgICAgc2VjdG9yX3QgYnNfbWFzaywgdG90YWxfbGVuID0gMDsKPiA+ICsg ICAgIGludCBpLCByZXQsIHBheWxvYWRfc2l6ZTsKPiA+ICsKPiA+ICsgICAgIGlmICghcSkKPiA+ ICsgICAgICAgICAgICAgcmV0dXJuIC1FTlhJTzsKPiA+ICsKPiA+ICsgICAgIGlmICghbnJfc3Jj cykKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiArCj4gPiArICAgICBpZiAo YmRldl9yZWFkX29ubHkoc3JjX2JkZXYpKQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVQRVJN Owo+ID4gKwo+ID4gKyAgICAgYnNfbWFzayA9IChiZGV2X2xvZ2ljYWxfYmxvY2tfc2l6ZShzcmNf YmRldikgPj4gOSkgLSAxOwo+ID4gKwo+ID4gKyAgICAgcGF5bG9hZF9zaXplID0gc3RydWN0X3Np emUocGF5bG9hZCwgcmFuZ2UsIG5yX3NyY3MpOwo+ID4gKyAgICAgcGF5bG9hZCA9IGttYWxsb2Mo cGF5bG9hZF9zaXplLCBnZnBfbWFzayk7Cj4gPiArICAgICBpZiAoIXBheWxvYWQpCj4gPiArICAg ICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gKwo+ID4gKyAgICAgZm9yIChpID0gMDsgaSA8 IG5yX3NyY3M7IGkrKykgewo+ID4gKyAgICAgICAgICAgICBpZiAocmxpc3RbaV0uc3JjICYgYnNf bWFzayB8fCBybGlzdFtpXS5sZW4gJiBic19tYXNrKSB7Cj4gPiArICAgICAgICAgICAgICAgICAg ICAgcmV0ID0gLUVJTlZBTDsKPiA+ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKPiA+ ICsgICAgICAgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICAgICAgICBwYXlsb2FkLT5yYW5nZVtp XS5zcmMgPSBybGlzdFtpXS5zcmM7Cj4gPiArICAgICAgICAgICAgIHBheWxvYWQtPnJhbmdlW2ld LmxlbiA9IHJsaXN0W2ldLmxlbjsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgdG90YWxfbGVuICs9 IHJsaXN0W2ldLmxlbjsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIHBheWxvYWQtPmNvcHlf bnJfcmFuZ2VzID0gaTsKPiA+ICsgICAgIHBheWxvYWQtPnNyY19iZGV2ID0gc3JjX2JkZXY7Cj4g PiArICAgICAqY29weV9zaXplID0gdG90YWxfbGVuOwo+ID4gKwo+ID4gKyAgICAgKnBheWxvYWRf cCA9IHBheWxvYWQ7Cj4gPiArICAgICByZXR1cm4gMDsKPiA+ICtlcnI6Cj4gPiArICAgICBrZnJl ZShwYXlsb2FkKTsKPiA+ICsgICAgIHJldHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ID4gK2ludCBi bGtfY29weV9lbXVsYXRlKHN0cnVjdCBibG9ja19kZXZpY2UgKnNyY19iZGV2LCBzdHJ1Y3QgYmxr X2NvcHlfcGF5bG9hZCAqcGF5bG9hZCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg YmxvY2tfZGV2aWNlICpkZXN0X2JkZXYsIHNlY3Rvcl90IGRlc3QsCj4gPiArICAgICAgICAgICAg ICAgICAgICAgc2VjdG9yX3QgY29weV9zaXplLCBnZnBfdCBnZnBfbWFzaykKPiA+ICt7Cj4gPiAr ICAgICB2b2lkICpidWYgPSBOVUxMOwo+ID4gKyAgICAgaW50IHJldDsKPiA+ICsKPiA+ICsgICAg IHJldCA9IGJsa19yZWFkX3RvX2J1ZihzcmNfYmRldiwgcGF5bG9hZCwgZ2ZwX21hc2ssIGNvcHlf c2l6ZSwgJmJ1Zik7Cj4gPiArICAgICBpZiAocmV0KQo+ID4gKyAgICAgICAgICAgICBnb3RvIG91 dDsKPiA+ICsKPiA+ICsgICAgIHJldCA9IGJsa193cml0ZV9mcm9tX2J1ZihkZXN0X2JkZXYsIGJ1 ZiwgZGVzdCwgY29weV9zaXplLCBnZnBfbWFzayk7Cj4gPiArICAgICBpZiAoYnVmKQo+ID4gKyAg ICAgICAgICAgICBrdmZyZWUoYnVmKTsKPiA+ICtvdXQ6Cj4gPiArICAgICByZXR1cm4gcmV0Owo+ ID4gK30KPgo+IEkgYWxyZWFkeSBjb21tZW50ZWQgdGhhdCB0aGlzIHNob3VsZCBiZXR0ZXIgdXNl IHRoZSBkbS1rY29weWQgZGVzaWduLCB3aGljaAo+IHdvdWxkIGJlIGZhciBtb3JlIGVmZmljaWVu dCB0aGFuIHRoaXMuIFRoaXMgd2lsbCBiZSBzbG93Li4uCj4KPiBZb3VyIGZ1bmN0aW9uIGJsa2Rl dl9pc3N1ZV9jb3B5KCkgYmVsb3cgc2hvdWxkIGRlYWwgb25seSB3aXRoIGlzc3Vpbmcgc2ltcGxl Cj4gY29weSAoYW1kIGxhdGVyIHNjc2kgeGNvcHkpIGZvciBkZXZpY2VzIHRoYXQgc3VwcG9ydCBp dC4gQnJpbmcgdGhlIGRtLWtjb3B5ZAo+IGludGVyZmFjZSBpbiB0aGUgYmxvY2sgbGF5ZXIgYXMg YSBnZW5lcmljIGludGVyZmFjZSBmb3IgaGFkbGluZyBlbXVsYXRpb24uCj4gT3RoZXJ3aXNlIHlv dSBhcmUgcmVwZWF0aW5nIHdoYXQgZG0gZG9lcywgYnV0IG5vdCBhcyBlZmZpY2llbnRseS4KPgo+ ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGJsa2Rldl9pc3N1ZV9jb3B5IC0gcXVldWUgYSBjb3B5Cj4g PiArICogQHNyY19iZGV2OiAgICAgICAgc291cmNlIGJsb2NrIGRldmljZQo+ID4gKyAqIEBucl9z cmNzOiBudW1iZXIgb2Ygc291cmNlIHJhbmdlcyB0byBjb3B5Cj4gPiArICogQHJsaXN0OiAgIGFy cmF5IG9mIHNvdXJjZSByYW5nZXMgaW4gc2VjdG9yCj4gPiArICogQGRlc3RfYmRldjogICAgICAg ZGVzdGluYXRpb24gYmxvY2sgZGV2aWNlCj4gPiArICogQGRlc3Q6ICAgIGRlc3RpbmF0aW9uIGlu IHNlY3Rvcgo+ID4gKyAqIEBnZnBfbWFzazogICBtZW1vcnkgYWxsb2NhdGlvbiBmbGFncyAoZm9y IGJpb19hbGxvYykKPiA+ICsgKiBAZmxhZ3M6ICAgQkxLREVWX0NPUFlfKiBmbGFncyB0byBjb250 cm9sIGJlaGF2aW91cgo+ID4gKyAqCj4gPiArICogRGVzY3JpcHRpb246Cj4gPiArICogICBDb3B5 IGFycmF5IG9mIHNvdXJjZSByYW5nZXMgZnJvbSBzb3VyY2UgYmxvY2sgZGV2aWNlIHRvCj4gPiAr ICogICBkZXN0aW5hdGlvbiBibG9jayBkZXZjaWUuIEFsbCBzb3VyY2UgbXVzdCBiZWxvbmcgdG8g c2FtZSBiZGV2IGFuZAo+ID4gKyAqICAgbGVuZ3RoIG9mIGEgc291cmNlIHJhbmdlIGNhbm5vdCBi ZSB6ZXJvLgo+ID4gKyAqLwo+ID4gKwo+ID4gK2ludCBibGtkZXZfaXNzdWVfY29weShzdHJ1Y3Qg YmxvY2tfZGV2aWNlICpzcmNfYmRldiwgaW50IG5yX3NyY3MsCj4gPiArICAgICAgICAgICAgIHN0 cnVjdCByYW5nZV9lbnRyeSAqc3JjX3JsaXN0LCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpkZXN0X2Jk ZXYsCj4gPiArICAgICAgICAgICAgIHNlY3Rvcl90IGRlc3QsIGdmcF90IGdmcF9tYXNrLCBpbnQg ZmxhZ3MpCj4gPiArewo+ID4gKyAgICAgc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dl dF9xdWV1ZShzcmNfYmRldik7Cj4gPiArICAgICBzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqZGVzdF9x ID0gYmRldl9nZXRfcXVldWUoZGVzdF9iZGV2KTsKPiA+ICsgICAgIHN0cnVjdCBibGtfY29weV9w YXlsb2FkICpwYXlsb2FkOwo+ID4gKyAgICAgc2VjdG9yX3QgYnNfbWFzaywgY29weV9zaXplOwo+ ID4gKyAgICAgaW50IHJldDsKPiA+ICsKPiA+ICsgICAgIHJldCA9IGJsa19wcmVwYXJlX3BheWxv YWQoc3JjX2JkZXYsIG5yX3NyY3MsIHNyY19ybGlzdCwgZ2ZwX21hc2ssCj4gPiArICAgICAgICAg ICAgICAgICAgICAgJnBheWxvYWQsICZjb3B5X3NpemUpOwo+ID4gKyAgICAgaWYgKHJldCkKPiA+ ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsKPiA+ICsgICAgIGJzX21hc2sgPSAoYmRl dl9sb2dpY2FsX2Jsb2NrX3NpemUoZGVzdF9iZGV2KSA+PiA5KSAtIDE7Cj4gPiArICAgICBpZiAo ZGVzdCAmIGJzX21hc2spIHsKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiAr ICAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgaWYgKHEg PT0gZGVzdF9xICYmIHEtPmxpbWl0cy5jb3B5X29mZmxvYWQpIHsKPiA+ICsgICAgICAgICAgICAg cmV0ID0gYmxrX2NvcHlfb2ZmbG9hZChzcmNfYmRldiwgcGF5bG9hZCwgZGVzdCwgZ2ZwX21hc2sp Owo+ID4gKyAgICAgICAgICAgICBpZiAocmV0KQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGdv dG8gb3V0Owo+ID4gKyAgICAgfSBlbHNlIGlmIChmbGFncyAmIEJMS0RFVl9DT1BZX05PRU1VTEFU SU9OKSB7Cj4KPiBXaHkgPyB3aG9ldmVyIGNhbGxzIGJsa2Rldl9pc3N1ZV9jb3B5KCkgd2FudHMg YSBjb3B5IHRvIGJlIGRvbmUuIFdoeSB3b3VsZCB0aGF0Cj4gdXNlciBzYXkgIkZhaWwgb24gbWUg aWYgdGhlIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IGNvcHkiID8/PyBUaGlzIGlzIGEgd2VpcmQK PiBpbnRlcmZhY2UgaW4gbXkgb3Bpbmlvbi4KPgoKQkxLREVWX0NPUFlfTk9FTVVMQVRJT04gZmxh ZyB3YXMgaW50cm9kdWNlZCB0byBhbGxvdyBibGtkZXZfaXNzdWVfY29weSgpIGNhbGxlcnMKdG8g dXNlIHRoZWlyIG5hdGl2ZSBjb3B5aW5nIG1ldGhvZCBpbnN0ZWFkIG9mIHRoZSBlbXVsYXRlZCBj b3B5IHRoYXQgSQphZGRlZC4gVGhpcyB3YXkgd2UKZW5zdXJlIHRoYXQgZG0gdXNlcyB0aGUgaHct YXNzaXN0ZWQgY29weSBhbmQgaWYgdGhhdCBpcyBub3QgcHJlc2VudCwKaXQgZmFsbHMgYmFjayB0 byBleGlzdGluZwpjb3B5IG1ldGhvZC4KClRoZSBvdGhlciB1c2VycyB3aG8gZG9uJ3QgaGF2ZSB0 aGVpciBuYXRpdmUgZW11bGF0aW9uIGNhbiB1c2UgdGhpcwplbXVsYXRlZC1jb3B5IGltcGxlbWVu dGF0aW9uLgoKPgo+ID4gKyAgICAgICAgICAgICByZXQgPSAtRUlPOwo+ID4gKyAgICAgICAgICAg ICBnb3RvIG91dDsKPiA+ICsgICAgIH0gZWxzZQo+Cj4gTWlzc2luZyBicmFjZXMuIEJ5IHlvdSBk byBub3QgbmVlZCBhbGwgdGhlc2UgZWxzZSBhZnRlciB0aGUgZ290b3MgYW55d2F5Lgo+Cj4gPiAr ICAgICAgICAgICAgIHJldCA9IGJsa19jb3B5X2VtdWxhdGUoc3JjX2JkZXYsIHBheWxvYWQsIGRl c3RfYmRldiwgZGVzdCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfc2l6 ZSwgZ2ZwX21hc2spOwo+ID4gKwo+ID4gK291dDoKPiA+ICsgICAgIGt2ZnJlZShwYXlsb2FkKTsK PiA+ICsgICAgIHJldHVybiByZXQ7Cj4gPiArfQo+ID4gK0VYUE9SVF9TWU1CT0woYmxrZGV2X2lz c3VlX2NvcHkpOwo+ID4gKwo+ID4gIC8qKgo+ID4gICAqIF9fYmxrZGV2X2lzc3VlX3dyaXRlX3Nh bWUgLSBnZW5lcmF0ZSBudW1iZXIgb2YgYmlvcyB3aXRoIHNhbWUgcGFnZQo+ID4gICAqIEBiZGV2 OiAgICB0YXJnZXQgYmxvY2tkZXYKPiA+IGRpZmYgLS1naXQgYS9ibG9jay9ibGstbWVyZ2UuYyBi L2Jsb2NrL2Jsay1tZXJnZS5jCj4gPiBpbmRleCA4MDg3NjhmNmIxNzQuLjRlMDRmMjRlMTNjMSAx MDA2NDQKPiA+IC0tLSBhL2Jsb2NrL2Jsay1tZXJnZS5jCj4gPiArKysgYi9ibG9jay9ibGstbWVy Z2UuYwo+ID4gQEAgLTMwOSw2ICszMDksOCBAQCB2b2lkIF9fYmxrX3F1ZXVlX3NwbGl0KHN0cnVj dCBiaW8gKipiaW8sIHVuc2lnbmVkIGludCAqbnJfc2VncykKPiA+ICAgICAgIHN0cnVjdCBiaW8g KnNwbGl0ID0gTlVMTDsKPiA+Cj4gPiAgICAgICBzd2l0Y2ggKGJpb19vcCgqYmlvKSkgewo+ID4g KyAgICAgY2FzZSBSRVFfT1BfQ09QWToKPiA+ICsgICAgICAgICAgICAgICAgICAgICBicmVhazsK Pgo+IFdoeSB3b3VsZCB0aGlzIGV2ZW4gYmUgY2FsbGVkID8gQ29weSBCSU9zIGNhbm5vdCBiZSBz cGxpdCwgcmlnaHQgPwo+Cj4gPiAgICAgICBjYXNlIFJFUV9PUF9ESVNDQVJEOgo+ID4gICAgICAg Y2FzZSBSRVFfT1BfU0VDVVJFX0VSQVNFOgo+ID4gICAgICAgICAgICAgICBzcGxpdCA9IGJsa19i aW9fZGlzY2FyZF9zcGxpdChxLCAqYmlvLCAmcS0+YmlvX3NwbGl0LCBucl9zZWdzKTsKPiA+IGRp ZmYgLS1naXQgYS9ibG9jay9ibGstc2V0dGluZ3MuYyBiL2Jsb2NrL2Jsay1zZXR0aW5ncy5jCj4g PiBpbmRleCA0Mzk5MGIxZDE0OGIuLjkzYzE1YmE0NWE2OSAxMDA2NDQKPiA+IC0tLSBhL2Jsb2Nr L2Jsay1zZXR0aW5ncy5jCj4gPiArKysgYi9ibG9jay9ibGstc2V0dGluZ3MuYwo+ID4gQEAgLTYw LDYgKzYwLDEwIEBAIHZvaWQgYmxrX3NldF9kZWZhdWx0X2xpbWl0cyhzdHJ1Y3QgcXVldWVfbGlt aXRzICpsaW0pCj4gPiAgICAgICBsaW0tPmlvX29wdCA9IDA7Cj4gPiAgICAgICBsaW0tPm1pc2Fs aWduZWQgPSAwOwo+ID4gICAgICAgbGltLT56b25lZCA9IEJMS19aT05FRF9OT05FOwo+ID4gKyAg ICAgbGltLT5jb3B5X29mZmxvYWQgPSAwOwo+ID4gKyAgICAgbGltLT5tYXhfY29weV9zZWN0b3Jz ID0gMDsKPiA+ICsgICAgIGxpbS0+bWF4X2NvcHlfbnJfcmFuZ2VzID0gMDsKPiA+ICsgICAgIGxp bS0+bWF4X2NvcHlfcmFuZ2Vfc2VjdG9ycyA9IDA7Cj4gPiAgfQo+ID4gIEVYUE9SVF9TWU1CT0wo YmxrX3NldF9kZWZhdWx0X2xpbWl0cyk7Cj4gPgo+ID4gQEAgLTU2NSw2ICs1NjksMTIgQEAgaW50 IGJsa19zdGFja19saW1pdHMoc3RydWN0IHF1ZXVlX2xpbWl0cyAqdCwgc3RydWN0IHF1ZXVlX2xp bWl0cyAqYiwKPiA+ICAgICAgIGlmIChiLT5jaHVua19zZWN0b3JzKQo+ID4gICAgICAgICAgICAg ICB0LT5jaHVua19zZWN0b3JzID0gZ2NkKHQtPmNodW5rX3NlY3RvcnMsIGItPmNodW5rX3NlY3Rv cnMpOwo+ID4KPiA+ICsgICAgIC8qIHNpbXBsZSBjb3B5IG5vdCBzdXBwb3J0ZWQgaW4gc3RhY2tl ZCBkZXZpY2VzICovCj4gPiArICAgICB0LT5jb3B5X29mZmxvYWQgPSAwOwo+ID4gKyAgICAgdC0+ bWF4X2NvcHlfc2VjdG9ycyA9IDA7Cj4gPiArICAgICB0LT5tYXhfY29weV9yYW5nZV9zZWN0b3Jz ID0gMDsKPiA+ICsgICAgIHQtPm1heF9jb3B5X25yX3JhbmdlcyA9IDA7Cj4KPiBZb3UgZG8gbm90 IG5lZWQgdGhpcy4gTGltaXRzIG5vdCBleHBsaWNpdGVseSBpbml0aWFsaXplZCBhcmUgMCBhbHJl YWR5Lgo+IEJ1dCBJIGRvIG5vdCBzZWUgd2h5IHlvdSBjYW4ndCBzdXBwb3J0IGNvcHkgb24gc3Rh Y2tlZCBkZXZpY2VzLiBUaGF0IHNob3VsZCBiZQo+IGZlYXNpYmxlIHRha2luZyB0aGUgbWluKCkg Zm9yIGVhY2ggb2YgdGhlIGFib3ZlIGxpbWl0Lgo+CgpEaXNhYmxpbmcgc3RhY2tlZCBkZXZpY2Ug c3VwcG9ydCB3YXMgZmVlZGJhY2sgZnJvbSB2Mi4KCmh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5v cmcvcHJvamVjdC9saW51eC1ibG9jay9wYXRjaC8yMDIwMTIwNDA5NDY1OS4xMjczMi0yLXNlbHZh a3VtYS5zMUBzYW1zdW5nLmNvbS8KCj4KPiA+ICsKPiA+ICAgICAgIC8qIFBoeXNpY2FsIGJsb2Nr IHNpemUgYSBtdWx0aXBsZSBvZiB0aGUgbG9naWNhbCBibG9jayBzaXplPyAqLwo+ID4gICAgICAg aWYgKHQtPnBoeXNpY2FsX2Jsb2NrX3NpemUgJiAodC0+bG9naWNhbF9ibG9ja19zaXplIC0gMSkp IHsKPiA+ICAgICAgICAgICAgICAgdC0+cGh5c2ljYWxfYmxvY2tfc2l6ZSA9IHQtPmxvZ2ljYWxf YmxvY2tfc2l6ZTsKPiA+IGRpZmYgLS1naXQgYS9ibG9jay9ibGstc3lzZnMuYyBiL2Jsb2NrL2Js ay1zeXNmcy5jCj4gPiBpbmRleCBiNTEzZjE2ODNhZjAuLjYyNWE3MjU0MTI2MyAxMDA2NDQKPiA+ IC0tLSBhL2Jsb2NrL2Jsay1zeXNmcy5jCj4gPiArKysgYi9ibG9jay9ibGstc3lzZnMuYwo+ID4g QEAgLTE2Niw2ICsxNjYsNDQgQEAgc3RhdGljIHNzaXplX3QgcXVldWVfZGlzY2FyZF9ncmFudWxh cml0eV9zaG93KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBjaGFyICpwYWcKPiA+ICAgICAgIHJl dHVybiBxdWV1ZV92YXJfc2hvdyhxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSwgcGFnZSk7 Cj4gPiAgfQo+ID4KPiA+ICtzdGF0aWMgc3NpemVfdCBxdWV1ZV9jb3B5X29mZmxvYWRfc2hvdyhz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgY2hhciAqcGFnZSkKPiA+ICt7Cj4gPiArICAgICByZXR1 cm4gcXVldWVfdmFyX3Nob3cocS0+bGltaXRzLmNvcHlfb2ZmbG9hZCwgcGFnZSk7Cj4gPiArfQo+ ID4gKwo+ID4gK3N0YXRpYyBzc2l6ZV90IHF1ZXVlX2NvcHlfb2ZmbG9hZF9zdG9yZShzdHJ1Y3Qg cmVxdWVzdF9xdWV1ZSAqcSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpCj4gPiArewo+ID4gKyAgICAgdW5zaWdu ZWQgbG9uZyBjb3B5X29mZmxvYWQ7Cj4gPiArICAgICBzc2l6ZV90IHJldCA9IHF1ZXVlX3Zhcl9z dG9yZSgmY29weV9vZmZsb2FkLCBwYWdlLCBjb3VudCk7Cj4gPiArCj4gPiArICAgICBpZiAocmV0 IDwgMCkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsKPiA+ICsgICAgIGlmIChj b3B5X29mZmxvYWQgJiYgcS0+bGltaXRzLm1heF9jb3B5X3NlY3RvcnMgPT0gMCkKPiA+ICsgICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiArCj4gPiArICAgICBxLT5saW1pdHMuY29weV9v ZmZsb2FkID0gY29weV9vZmZsb2FkOwo+ID4gKyAgICAgcmV0dXJuIHJldDsKPiA+ICt9Cj4KPiBU aGlzIGlzIHdlaXJkLiBJZiB5b3Ugd2FudCB0byBhbGxvdyBhIHVzZXIgdG8gZGlzYWJsZSBjb3B5 IG9mZmxvYWQsIHRoZW4gdXNlCj4gbWF4X2NvcHlfc2VjdG9ycy4gVGhpcyBvbmUgc2hvdWxkIGJl IHJlYWQtb25seSBhbmQgb25seSBpbmRpY2F0ZSBpZiB0aGUgZGV2aWNlCj4gc3VwcG9ydHMgaXQg b3Igbm90LiBJIGFsc28gd291bGQgYWN0dWFsbHkgY2hhbmdlIHRoaXMgb25lIGludG8KPiBtYXhf Y29weV9od19zZWN0b3JzLCBpbW11dGFibGUsIGluZGljYXRpbmcgdGhlIG1heCBjb3B5IHNlY3Rv cnMgdGhhdCB0aGUgZGV2aWNlCj4gc3VwcG9ydHMsIGFuZCAwIGZvciBubyBzdXBwb3J0LiBUaGF0 IHdvdWxkIGFsbG93IGFuIGVhc3kgaW1wbGVtZW50YXRpb24gb2YKPiBtYXhfY29weV9zZWN0b3Jz IGJlaW5nIHJlZC93cml0ZSBmb3IgY29udHJvbGxpbmcgZW5hYmxlL2Rpc2FibGUuCj4KPiA+ICsK PiA+ICtzdGF0aWMgc3NpemVfdCBxdWV1ZV9tYXhfY29weV9zZWN0b3JzX3Nob3coc3RydWN0IHJl cXVlc3RfcXVldWUgKnEsIGNoYXIgKnBhZ2UpCj4gPiArewo+ID4gKyAgICAgcmV0dXJuIHF1ZXVl X3Zhcl9zaG93KHEtPmxpbWl0cy5tYXhfY29weV9zZWN0b3JzLCBwYWdlKTsKPiA+ICt9Cj4gPiAr Cj4gPiArc3RhdGljIHNzaXplX3QgcXVldWVfbWF4X2NvcHlfcmFuZ2Vfc2VjdG9yc19zaG93KHN0 cnVjdCByZXF1ZXN0X3F1ZXVlICpxLAo+ID4gKyAgICAgICAgICAgICBjaGFyICpwYWdlKQo+ID4g K3sKPiA+ICsgICAgIHJldHVybiBxdWV1ZV92YXJfc2hvdyhxLT5saW1pdHMubWF4X2NvcHlfcmFu Z2Vfc2VjdG9ycywgcGFnZSk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBzc2l6ZV90IHF1ZXVl X21heF9jb3B5X25yX3Jhbmdlc19zaG93KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLAo+ID4gKyAg ICAgICAgICAgICBjaGFyICpwYWdlKQo+ID4gK3sKPiA+ICsgICAgIHJldHVybiBxdWV1ZV92YXJf c2hvdyhxLT5saW1pdHMubWF4X2NvcHlfbnJfcmFuZ2VzLCBwYWdlKTsKPiA+ICt9Cj4gPiArCj4g PiAgc3RhdGljIHNzaXplX3QgcXVldWVfZGlzY2FyZF9tYXhfaHdfc2hvdyhzdHJ1Y3QgcmVxdWVz dF9xdWV1ZSAqcSwgY2hhciAqcGFnZSkKPiA+ICB7Cj4gPgo+ID4gQEAgLTU5MSw2ICs2MjksMTEg QEAgUVVFVUVfUk9fRU5UUlkocXVldWVfbnJfem9uZXMsICJucl96b25lcyIpOwo+ID4gIFFVRVVF X1JPX0VOVFJZKHF1ZXVlX21heF9vcGVuX3pvbmVzLCAibWF4X29wZW5fem9uZXMiKTsKPiA+ICBR VUVVRV9ST19FTlRSWShxdWV1ZV9tYXhfYWN0aXZlX3pvbmVzLCAibWF4X2FjdGl2ZV96b25lcyIp Owo+ID4KPiA+ICtRVUVVRV9SV19FTlRSWShxdWV1ZV9jb3B5X29mZmxvYWQsICJjb3B5X29mZmxv YWQiKTsKPiA+ICtRVUVVRV9ST19FTlRSWShxdWV1ZV9tYXhfY29weV9zZWN0b3JzLCAibWF4X2Nv cHlfc2VjdG9ycyIpOwo+ID4gK1FVRVVFX1JPX0VOVFJZKHF1ZXVlX21heF9jb3B5X3JhbmdlX3Nl Y3RvcnMsICJtYXhfY29weV9yYW5nZV9zZWN0b3JzIik7Cj4gPiArUVVFVUVfUk9fRU5UUlkocXVl dWVfbWF4X2NvcHlfbnJfcmFuZ2VzLCAibWF4X2NvcHlfbnJfcmFuZ2VzIik7Cj4gPiArCj4gPiAg UVVFVUVfUldfRU5UUlkocXVldWVfbm9tZXJnZXMsICJub21lcmdlcyIpOwo+ID4gIFFVRVVFX1JX X0VOVFJZKHF1ZXVlX3JxX2FmZmluaXR5LCAicnFfYWZmaW5pdHkiKTsKPiA+ICBRVUVVRV9SV19F TlRSWShxdWV1ZV9wb2xsLCAiaW9fcG9sbCIpOwo+ID4gQEAgLTYzNiw2ICs2NzksMTAgQEAgc3Rh dGljIHN0cnVjdCBhdHRyaWJ1dGUgKnF1ZXVlX2F0dHJzW10gPSB7Cj4gPiAgICAgICAmcXVldWVf ZGlzY2FyZF9tYXhfZW50cnkuYXR0ciwKPiA+ICAgICAgICZxdWV1ZV9kaXNjYXJkX21heF9od19l bnRyeS5hdHRyLAo+ID4gICAgICAgJnF1ZXVlX2Rpc2NhcmRfemVyb2VzX2RhdGFfZW50cnkuYXR0 ciwKPiA+ICsgICAgICZxdWV1ZV9jb3B5X29mZmxvYWRfZW50cnkuYXR0ciwKPiA+ICsgICAgICZx dWV1ZV9tYXhfY29weV9zZWN0b3JzX2VudHJ5LmF0dHIsCj4gPiArICAgICAmcXVldWVfbWF4X2Nv cHlfcmFuZ2Vfc2VjdG9yc19lbnRyeS5hdHRyLAo+ID4gKyAgICAgJnF1ZXVlX21heF9jb3B5X25y X3Jhbmdlc19lbnRyeS5hdHRyLAo+ID4gICAgICAgJnF1ZXVlX3dyaXRlX3NhbWVfbWF4X2VudHJ5 LmF0dHIsCj4gPiAgICAgICAmcXVldWVfd3JpdGVfemVyb2VzX21heF9lbnRyeS5hdHRyLAo+ID4g ICAgICAgJnF1ZXVlX3pvbmVfYXBwZW5kX21heF9lbnRyeS5hdHRyLAo+ID4gZGlmZiAtLWdpdCBh L2Jsb2NrL2Jsay16b25lZC5jIGIvYmxvY2svYmxrLXpvbmVkLmMKPiA+IGluZGV4IDdhNjhiNmU0 MzAwYy4uMDIwNjkxNzhkNTFlIDEwMDY0NAo+ID4gLS0tIGEvYmxvY2svYmxrLXpvbmVkLmMKPiA+ ICsrKyBiL2Jsb2NrL2Jsay16b25lZC5jCj4gPiBAQCAtNzUsNiArNzUsNyBAQCBib29sIGJsa19y ZXFfbmVlZHNfem9uZV93cml0ZV9sb2NrKHN0cnVjdCByZXF1ZXN0ICpycSkKPiA+ICAgICAgIGNh c2UgUkVRX09QX1dSSVRFX1pFUk9FUzoKPiA+ICAgICAgIGNhc2UgUkVRX09QX1dSSVRFX1NBTUU6 Cj4gPiAgICAgICBjYXNlIFJFUV9PUF9XUklURToKPiA+ICsgICAgIGNhc2UgUkVRX09QX0NPUFk6 Cj4gPiAgICAgICAgICAgICAgIHJldHVybiBibGtfcnFfem9uZV9pc19zZXEocnEpOwo+ID4gICAg ICAgZGVmYXVsdDoKPiA+ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gZGlmZiAtLWdp dCBhL2Jsb2NrL2JvdW5jZS5jIGIvYmxvY2svYm91bmNlLmMKPiA+IGluZGV4IGQzZjUxYWNkNmUz Yi4uNWUwNTJhZmU4NjkxIDEwMDY0NAo+ID4gLS0tIGEvYmxvY2svYm91bmNlLmMKPiA+ICsrKyBi L2Jsb2NrL2JvdW5jZS5jCj4gPiBAQCAtMjU0LDYgKzI1NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmlv ICpib3VuY2VfY2xvbmVfYmlvKHN0cnVjdCBiaW8gKmJpb19zcmMsIGdmcF90IGdmcF9tYXNrLAo+ ID4gICAgICAgYmlvLT5iaV9pdGVyLmJpX3NpemUgICAgPSBiaW9fc3JjLT5iaV9pdGVyLmJpX3Np emU7Cj4gPgo+ID4gICAgICAgc3dpdGNoIChiaW9fb3AoYmlvKSkgewo+ID4gKyAgICAgY2FzZSBS RVFfT1BfQ09QWToKPiA+ICAgICAgIGNhc2UgUkVRX09QX0RJU0NBUkQ6Cj4gPiAgICAgICBjYXNl IFJFUV9PUF9TRUNVUkVfRVJBU0U6Cj4gPiAgICAgICBjYXNlIFJFUV9PUF9XUklURV9aRVJPRVM6 Cj4gPiBkaWZmIC0tZ2l0IGEvYmxvY2svaW9jdGwuYyBiL2Jsb2NrL2lvY3RsLmMKPiA+IGluZGV4 IGQ2MWQ2NTIwNzhmNC4uMGU1MjE4MTY1N2E0IDEwMDY0NAo+ID4gLS0tIGEvYmxvY2svaW9jdGwu Ywo+ID4gKysrIGIvYmxvY2svaW9jdGwuYwo+ID4gQEAgLTEzMyw2ICsxMzMsMzcgQEAgc3RhdGlj IGludCBibGtfaW9jdGxfZGlzY2FyZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBmbW9kZV90 IG1vZGUsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0ZQX0tFUk5FTCwg ZmxhZ3MpOwo+ID4gIH0KPiA+Cj4gPiArc3RhdGljIGludCBibGtfaW9jdGxfY29weShzdHJ1Y3Qg YmxvY2tfZGV2aWNlICpiZGV2LCBmbW9kZV90IG1vZGUsCj4gPiArICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgYXJnLCB1bnNpZ25lZCBsb25nIGZsYWdzKQo+ID4gK3sKPiA+ICsgICAgIHN0cnVj dCBjb3B5X3JhbmdlIGNyYW5nZTsKPiA+ICsgICAgIHN0cnVjdCByYW5nZV9lbnRyeSAqcmxpc3Q7 Cj4gPiArICAgICBpbnQgcmV0Owo+ID4gKwo+ID4gKyAgICAgaWYgKCEobW9kZSAmIEZNT0RFX1dS SVRFKSkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FQkFERjsKPiA+ICsKPiA+ICsgICAgIGlm IChjb3B5X2Zyb21fdXNlcigmY3JhbmdlLCAodm9pZCBfX3VzZXIgKilhcmcsIHNpemVvZihjcmFu Z2UpKSkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Cj4gPiArCj4gPiArICAgICBy bGlzdCA9IGttYWxsb2NfYXJyYXkoY3JhbmdlLm5yX3JhbmdlLCBzaXplb2YoKnJsaXN0KSwKPiA+ ICsgICAgICAgICAgICAgICAgICAgICBHRlBfS0VSTkVMKTsKPiA+ICsgICAgIGlmICghcmxpc3Qp Cj4gPiArICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gKwo+ID4gKyAgICAgaWYgKGNv cHlfZnJvbV91c2VyKHJsaXN0LCAodm9pZCBfX3VzZXIgKiljcmFuZ2UucmFuZ2VfbGlzdCwKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZigqcmxpc3QpICogY3JhbmdlLm5y X3JhbmdlKSkgewo+ID4gKyAgICAgICAgICAgICByZXQgPSAtRUZBVUxUOwo+ID4gKyAgICAgICAg ICAgICBnb3RvIG91dDsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIHJldCA9IGJsa2Rldl9p c3N1ZV9jb3B5KGJkZXYsIGNyYW5nZS5ucl9yYW5nZSwgcmxpc3QsIGJkZXYsIGNyYW5nZS5kZXN0 LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgIEdGUF9LRVJORUwsIGZsYWdzKTsKPiA+ICtvdXQ6 Cj4gPiArICAgICBrZnJlZShybGlzdCk7Cj4gPiArICAgICByZXR1cm4gcmV0Owo+ID4gK30KPiA+ ICsKPiA+ICBzdGF0aWMgaW50IGJsa19pb2N0bF96ZXJvb3V0KHN0cnVjdCBibG9ja19kZXZpY2Ug KmJkZXYsIGZtb2RlX3QgbW9kZSwKPiA+ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhcmcp Cj4gPiAgewo+ID4gQEAgLTQ1OCw2ICs0ODksOCBAQCBzdGF0aWMgaW50IGJsa2Rldl9jb21tb25f aW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgZm1vZGVfdCBtb2RlLAo+ID4gICAgICAg Y2FzZSBCTEtTRUNESVNDQVJEOgo+ID4gICAgICAgICAgICAgICByZXR1cm4gYmxrX2lvY3RsX2Rp c2NhcmQoYmRldiwgbW9kZSwgYXJnLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QkxLREVWX0RJU0NBUkRfU0VDVVJFKTsKPiA+ICsgICAgIGNhc2UgQkxLQ09QWToKPiA+ICsgICAg ICAgICAgICAgcmV0dXJuIGJsa19pb2N0bF9jb3B5KGJkZXYsIG1vZGUsIGFyZywgMCk7Cj4gPiAg ICAgICBjYXNlIEJMS1pFUk9PVVQ6Cj4gPiAgICAgICAgICAgICAgIHJldHVybiBibGtfaW9jdGxf emVyb291dChiZGV2LCBtb2RlLCBhcmcpOwo+ID4gICAgICAgY2FzZSBCTEtSRVBPUlRaT05FOgo+ ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmlvLmggYi9pbmNsdWRlL2xpbnV4L2Jpby5o Cj4gPiBpbmRleCAxZWRkYTYxNGY3Y2UuLjE2NDMxM2JkZmIzNSAxMDA2NDQKPiA+IC0tLSBhL2lu Y2x1ZGUvbGludXgvYmlvLmgKPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvYmlvLmgKPiA+IEBAIC03 MSw2ICs3MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBiaW9faGFzX2RhdGEoc3RydWN0IGJpbyAq YmlvKQo+ID4gIHN0YXRpYyBpbmxpbmUgYm9vbCBiaW9fbm9fYWR2YW5jZV9pdGVyKGNvbnN0IHN0 cnVjdCBiaW8gKmJpbykKPiA+ICB7Cj4gPiAgICAgICByZXR1cm4gYmlvX29wKGJpbykgPT0gUkVR X09QX0RJU0NBUkQgfHwKPiA+ICsgICAgICAgICAgICBiaW9fb3AoYmlvKSA9PSBSRVFfT1BfQ09Q WSB8fAo+ID4gICAgICAgICAgICAgIGJpb19vcChiaW8pID09IFJFUV9PUF9TRUNVUkVfRVJBU0Ug fHwKPiA+ICAgICAgICAgICAgICBiaW9fb3AoYmlvKSA9PSBSRVFfT1BfV1JJVEVfU0FNRSB8fAo+ ID4gICAgICAgICAgICAgIGJpb19vcChiaW8pID09IFJFUV9PUF9XUklURV9aRVJPRVM7Cj4gPiBk aWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvYmxr X3R5cGVzLmgKPiA+IGluZGV4IDg2NmY3NDI2MWIzYi4uNWEzNWMwMmFjMGE4IDEwMDY0NAo+ID4g LS0tIGEvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaAo+ID4gKysrIGIvaW5jbHVkZS9saW51eC9i bGtfdHlwZXMuaAo+ID4gQEAgLTM4MCw2ICszODAsOCBAQCBlbnVtIHJlcV9vcGYgewo+ID4gICAg ICAgUkVRX09QX1pPTkVfUkVTRVQgICAgICAgPSAxNSwKPiA+ICAgICAgIC8qIHJlc2V0IGFsbCB0 aGUgem9uZSBwcmVzZW50IG9uIHRoZSBkZXZpY2UgKi8KPiA+ICAgICAgIFJFUV9PUF9aT05FX1JF U0VUX0FMTCAgID0gMTcsCj4gPiArICAgICAvKiBjb3B5IHJhbmdlcyB3aXRoaW4gZGV2aWNlICov Cj4gPiArICAgICBSRVFfT1BfQ09QWSAgICAgICAgICAgICA9IDE5LAo+ID4KPiA+ICAgICAgIC8q IFNDU0kgcGFzc3Rocm91Z2ggdXNpbmcgc3RydWN0IHNjc2lfcmVxdWVzdCAqLwo+ID4gICAgICAg UkVRX09QX1NDU0lfSU4gICAgICAgICAgPSAzMiwKPiA+IEBAIC01MDYsNiArNTA4LDExIEBAIHN0 YXRpYyBpbmxpbmUgYm9vbCBvcF9pc19kaXNjYXJkKHVuc2lnbmVkIGludCBvcCkKPiA+ICAgICAg IHJldHVybiAob3AgJiBSRVFfT1BfTUFTSykgPT0gUkVRX09QX0RJU0NBUkQ7Cj4gPiAgfQo+ID4K PiA+ICtzdGF0aWMgaW5saW5lIGJvb2wgb3BfaXNfY29weSh1bnNpZ25lZCBpbnQgb3ApCj4gPiAr ewo+ID4gKyAgICAgcmV0dXJuIChvcCAmIFJFUV9PUF9NQVNLKSA9PSBSRVFfT1BfQ09QWTsKPiA+ ICt9Cj4gPiArCj4gPiAgLyoKPiA+ICAgKiBDaGVjayBpZiBhIGJpbyBvciByZXF1ZXN0IG9wZXJh dGlvbiBpcyBhIHpvbmUgbWFuYWdlbWVudCBvcGVyYXRpb24sIHdpdGgKPiA+ICAgKiB0aGUgZXhj ZXB0aW9uIG9mIFJFUV9PUF9aT05FX1JFU0VUX0FMTCB3aGljaCBpcyB0cmVhdGVkIGFzIGEgc3Bl Y2lhbCBjYXNlCj4gPiBAQCAtNTY1LDQgKzU3MiwxMSBAQCBzdHJ1Y3QgYmxrX3JxX3N0YXQgewo+ ID4gICAgICAgdTY0IGJhdGNoOwo+ID4gIH07Cj4gPgo+ID4gK3N0cnVjdCBibGtfY29weV9wYXls b2FkIHsKPiA+ICsgICAgIHNlY3Rvcl90ICAgICAgICBkZXN0Owo+ID4gKyAgICAgaW50ICAgICAg ICAgICAgIGNvcHlfbnJfcmFuZ2VzOwo+ID4gKyAgICAgc3RydWN0IGJsb2NrX2RldmljZSAqc3Jj X2JkZXY7Cj4gPiArICAgICBzdHJ1Y3QgIHJhbmdlX2VudHJ5ICAgICByYW5nZVtdOwo+ID4gK307 Cj4gPiArCj4gPiAgI2VuZGlmIC8qIF9fTElOVVhfQkxLX1RZUEVTX0ggKi8KPiA+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oIGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaAo+ID4g aW5kZXggNjk5YWNlNmIyNWZmLi4yYmI0NTEzZDRiYjggMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRl L2xpbnV4L2Jsa2Rldi5oCj4gPiArKysgYi9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oCj4gPiBAQCAt MzM3LDEwICszMzcsMTQgQEAgc3RydWN0IHF1ZXVlX2xpbWl0cyB7Cj4gPiAgICAgICB1bnNpZ25l ZCBpbnQgICAgICAgICAgICBtYXhfem9uZV9hcHBlbmRfc2VjdG9yczsKPiA+ICAgICAgIHVuc2ln bmVkIGludCAgICAgICAgICAgIGRpc2NhcmRfZ3JhbnVsYXJpdHk7Cj4gPiAgICAgICB1bnNpZ25l ZCBpbnQgICAgICAgICAgICBkaXNjYXJkX2FsaWdubWVudDsKPiA+ICsgICAgIHVuc2lnbmVkIGlu dCAgICAgICAgICAgIGNvcHlfb2ZmbG9hZDsKPiA+ICsgICAgIHVuc2lnbmVkIGludCAgICAgICAg ICAgIG1heF9jb3B5X3NlY3RvcnM7Cj4gPgo+ID4gICAgICAgdW5zaWduZWQgc2hvcnQgICAgICAg ICAgbWF4X3NlZ21lbnRzOwo+ID4gICAgICAgdW5zaWduZWQgc2hvcnQgICAgICAgICAgbWF4X2lu dGVncml0eV9zZWdtZW50czsKPiA+ICAgICAgIHVuc2lnbmVkIHNob3J0ICAgICAgICAgIG1heF9k aXNjYXJkX3NlZ21lbnRzOwo+ID4gKyAgICAgdW5zaWduZWQgc2hvcnQgICAgICAgICAgbWF4X2Nv cHlfcmFuZ2Vfc2VjdG9yczsKPiA+ICsgICAgIHVuc2lnbmVkIHNob3J0ICAgICAgICAgIG1heF9j b3B5X25yX3JhbmdlczsKPiA+Cj4gPiAgICAgICB1bnNpZ25lZCBjaGFyICAgICAgICAgICBtaXNh bGlnbmVkOwo+ID4gICAgICAgdW5zaWduZWQgY2hhciAgICAgICAgICAgZGlzY2FyZF9taXNhbGln bmVkOwo+ID4gQEAgLTYyMSw2ICs2MjUsNyBAQCBzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSB7Cj4gPiAg I2RlZmluZSBRVUVVRV9GTEFHX1JRX0FMTE9DX1RJTUUgMjcgIC8qIHJlY29yZCBycS0+YWxsb2Nf dGltZV9ucyAqLwo+ID4gICNkZWZpbmUgUVVFVUVfRkxBR19IQ1RYX0FDVElWRSAgICAgICAyOCAg ICAgIC8qIGF0IGxlYXN0IG9uZSBibGstbXEgaGN0eCBpcyBhY3RpdmUgKi8KPiA+ICAjZGVmaW5l IFFVRVVFX0ZMQUdfTk9XQUlUICAgICAgIDI5ICAgLyogZGV2aWNlIHN1cHBvcnRzIE5PV0FJVCAq Lwo+ID4gKyNkZWZpbmUgUVVFVUVfRkxBR19TSU1QTEVfQ09QWSAgICAgICAzMCAgICAgIC8qIHN1 cHBvcnRzIHNpbXBsZSBjb3B5ICovCj4gPgo+ID4gICNkZWZpbmUgUVVFVUVfRkxBR19NUV9ERUZB VUxUICAgICAgICAoKDEgPDwgUVVFVUVfRkxBR19JT19TVEFUKSB8ICAgICAgICAgICAgXAo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxIDw8IFFVRVVFX0ZMQUdfU0FNRV9DT01Q KSB8ICAgICAgICAgIFwKPiA+IEBAIC02NDMsNiArNjQ4LDcgQEAgYm9vbCBibGtfcXVldWVfZmxh Z190ZXN0X2FuZF9zZXQodW5zaWduZWQgaW50IGZsYWcsIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx KTsKPiA+ICAjZGVmaW5lIGJsa19xdWV1ZV9pb19zdGF0KHEpIHRlc3RfYml0KFFVRVVFX0ZMQUdf SU9fU1RBVCwgJihxKS0+cXVldWVfZmxhZ3MpCj4gPiAgI2RlZmluZSBibGtfcXVldWVfYWRkX3Jh bmRvbShxKSAgICAgIHRlc3RfYml0KFFVRVVFX0ZMQUdfQUREX1JBTkRPTSwgJihxKS0+cXVldWVf ZmxhZ3MpCj4gPiAgI2RlZmluZSBibGtfcXVldWVfZGlzY2FyZChxKSB0ZXN0X2JpdChRVUVVRV9G TEFHX0RJU0NBUkQsICYocSktPnF1ZXVlX2ZsYWdzKQo+ID4gKyNkZWZpbmUgYmxrX3F1ZXVlX2Nv cHkocSkgICAgdGVzdF9iaXQoUVVFVUVfRkxBR19TSU1QTEVfQ09QWSwgJihxKS0+cXVldWVfZmxh Z3MpCj4gPiAgI2RlZmluZSBibGtfcXVldWVfem9uZV9yZXNldGFsbChxKSAgIFwKPiA+ICAgICAg IHRlc3RfYml0KFFVRVVFX0ZMQUdfWk9ORV9SRVNFVEFMTCwgJihxKS0+cXVldWVfZmxhZ3MpCj4g PiAgI2RlZmluZSBibGtfcXVldWVfc2VjdXJlX2VyYXNlKHEpIFwKPiA+IEBAIC0xMDY5LDYgKzEw NzUsOSBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBibGtfcXVldWVfZ2V0X21heF9zZWN0 b3JzKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLAo+ID4gICAgICAgICAgICAgICByZXR1cm4gbWlu KHEtPmxpbWl0cy5tYXhfZGlzY2FyZF9zZWN0b3JzLAo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgIFVJTlRfTUFYID4+IFNFQ1RPUl9TSElGVCk7Cj4gPgo+ID4gKyAgICAgaWYgKHVubGlrZWx5 KG9wID09IFJFUV9PUF9DT1BZKSkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHEtPmxpbWl0cy5t YXhfY29weV9zZWN0b3JzOwo+ID4gKwo+Cj4gSSB3b3VsZCBhZ3JlZWUgd2l0aCB0aGlzIGlmIGEg Y29weSBCSU8gd2FzIGFsd2F5cyBhIHNpbmdsZSByYW5nZSwgYnV0IHRoYXQgaXMKPiBub3QgdGhl IGNhc2UuIFNvIEkgYW0gbm90IHN1cmUgdGhpcyBtYWtlcyBzZW5zZSBhdCBhbGwuCj4KPiA+ICAg ICAgIGlmICh1bmxpa2VseShvcCA9PSBSRVFfT1BfV1JJVEVfU0FNRSkpCj4gPiAgICAgICAgICAg ICAgIHJldHVybiBxLT5saW1pdHMubWF4X3dyaXRlX3NhbWVfc2VjdG9yczsKPiA+Cj4gPiBAQCAt MTM0Myw2ICsxMzUyLDEyIEBAIGV4dGVybiBpbnQgX19ibGtkZXZfaXNzdWVfZGlzY2FyZChzdHJ1 Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzZWN0b3JfdCBzZWN0b3IsCj4gPiAgICAgICAgICAgICAg IHNlY3Rvcl90IG5yX3NlY3RzLCBnZnBfdCBnZnBfbWFzaywgaW50IGZsYWdzLAo+ID4gICAgICAg ICAgICAgICBzdHJ1Y3QgYmlvICoqYmlvcCk7Cj4gPgo+ID4gKyNkZWZpbmUgQkxLREVWX0NPUFlf Tk9FTVVMQVRJT04gICAgICAoMSA8PCAwKSAgICAgICAgLyogZG8gbm90IGVtdWxhdGUgaWYgY29w eSBvZmZsb2FkIG5vdCBzdXBwb3J0ZWQgKi8KPiA+ICsKPiA+ICtleHRlcm4gaW50IGJsa2Rldl9p c3N1ZV9jb3B5KHN0cnVjdCBibG9ja19kZXZpY2UgKnNyY19iZGV2LCBpbnQgbnJfc3JjcywKPiA+ ICsgICAgICAgICAgICAgc3RydWN0IHJhbmdlX2VudHJ5ICpzcmNfcmxpc3QsIHN0cnVjdCBibG9j a19kZXZpY2UgKmRlc3RfYmRldiwKPiA+ICsgICAgICAgICAgICAgc2VjdG9yX3QgZGVzdCwgZ2Zw X3QgZ2ZwX21hc2ssIGludCBmbGFncyk7Cj4KPiBObyBuZWVkIGZvciBleHRlcm4uCj4KPiA+ICsK PiA+ICAjZGVmaW5lIEJMS0RFVl9aRVJPX05PVU5NQVAgICgxIDw8IDApICAvKiBkbyBub3QgZnJl ZSBibG9ja3MgKi8KPiA+ICAjZGVmaW5lIEJMS0RFVl9aRVJPX05PRkFMTEJBQ0sgICAgICAgKDEg PDwgMSkgIC8qIGRvbid0IHdyaXRlIGV4cGxpY2l0IHplcm9lcyAqLwo+ID4KPiA+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL3VhcGkvbGludXgvZnMuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9mcy5oCj4g PiBpbmRleCBmNDRlYjBhMDRhZmQuLjVjYWRiMTc2MzE3YSAxMDA2NDQKPiA+IC0tLSBhL2luY2x1 ZGUvdWFwaS9saW51eC9mcy5oCj4gPiArKysgYi9pbmNsdWRlL3VhcGkvbGludXgvZnMuaAo+ID4g QEAgLTY0LDYgKzY0LDE4IEBAIHN0cnVjdCBmc3RyaW1fcmFuZ2Ugewo+ID4gICAgICAgX191NjQg bWlubGVuOwo+ID4gIH07Cj4gPgo+ID4gK3N0cnVjdCByYW5nZV9lbnRyeSB7Cj4gPiArICAgICBf X3U2NCBzcmM7Cj4gPiArICAgICBfX3U2NCBsZW47Cj4gPiArfTsKPiA+ICsKPiA+ICtzdHJ1Y3Qg Y29weV9yYW5nZSB7Cj4gPiArICAgICBfX3U2NCBkZXN0Owo+ID4gKyAgICAgX191NjQgbnJfcmFu Z2U7Cj4gPiArICAgICBfX3U2NCByYW5nZV9saXN0Owo+ID4gKyAgICAgX191NjQgcnN2ZDsKPiA+ ICt9Owo+ID4gKwo+ID4gIC8qIGV4dGVudC1zYW1lIChkZWR1cGUpIGlvY3RsczsgdGhlc2UgTVVT VCBtYXRjaCB0aGUgYnRyZnMgaW9jdGwgZGVmaW5pdGlvbnMgKi8KPiA+ICAjZGVmaW5lIEZJTEVf REVEVVBFX1JBTkdFX1NBTUUgICAgICAgICAgICAgICAwCj4gPiAgI2RlZmluZSBGSUxFX0RFRFVQ RV9SQU5HRV9ESUZGRVJTICAgIDEKPiA+IEBAIC0xODQsNiArMTk2LDcgQEAgc3RydWN0IGZzeGF0 dHIgewo+ID4gICNkZWZpbmUgQkxLU0VDRElTQ0FSRCBfSU8oMHgxMiwxMjUpCj4gPiAgI2RlZmlu ZSBCTEtST1RBVElPTkFMIF9JTygweDEyLDEyNikKPiA+ICAjZGVmaW5lIEJMS1pFUk9PVVQgX0lP KDB4MTIsMTI3KQo+ID4gKyNkZWZpbmUgQkxLQ09QWSBfSU9XUigweDEyLCAxMjgsIHN0cnVjdCBj b3B5X3JhbmdlKQo+ID4gIC8qCj4gPiAgICogQSBqdW1wIGhlcmU6IDEzMC0xMzEgYXJlIHJlc2Vy dmVkIGZvciB6b25lZCBibG9jayBkZXZpY2VzCj4gPiAgICogKHNlZSB1YXBpL2xpbnV4L2Jsa3pv bmVkLmgpCj4gPgo+Cj4gUGxlYXNlIHRlc3QgeW91ciBjb2RlIG1vcmUgdGhvcm91Z2hseS4gSXQg aXMgZnVsbCBvZiBwcm9ibGVtcyB0aGF0IHlvdSBzaG91bGQKPiBoYXZlIGRldGVjdGVkIHdpdGgg YmV0dGVyIHRlc3RpbmcgaW5jbHVkaW5nIFJPIGRldmljZXMsIHBhcnRpdGlvbnMgYW5kIGVycm9y Cj4gcGF0aCBjb3ZlcmFnZS4KPgo+IC0tCj4gRGFtaWVuIExlIE1vYWwKPiBXZXN0ZXJuIERpZ2l0 YWwgUmVzZWFyY2gKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkxpbnV4LW52bWUgbWFpbGluZyBsaXN0CkxpbnV4LW52bWVAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW52bWUK