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=-8.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 40CD4C433E0 for ; Wed, 20 Jan 2021 19:46:28 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 937A12343B for ; Wed, 20 Jan 2021 19:46:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 937A12343B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=lunn.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=/vTUqPcayqHToic0WP6/gFdgKhUhiZJjBxiHKBFCceA=; b=jSdcAwaRrz4/cjYAf/E8/LqPl UrFR6xQ4XqITABsIudCbGEU0Yse2wv07qYuNHWnJAxkVC4ny5gUN+o+Py+EG1dAi3UaIU0XVD4sSp 9ds29QxA/YLX1oE4pYhlAOV4++CI9uckk00J5jYqSHEGwpnEFQ+ahFt6lrWQRf6N4uSkoReYT9b3A qlmqd/MpLKWXd0XAy5Mzij5MxGCdoNNeRiQ+eCkY8cGZl3FVrwd2RqUVRtGYz0lItdNkG/6sAW2WZ 7dmImuFlWHAaQE2+A7cN0x1sHA/NGHeUV8DjMtChyk1VqMFn2zj89Q+HDr8pBWZ6bX4FDIHrCvtcX E8Kn0M0BQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1l2JPG-00088t-4T; Wed, 20 Jan 2021 19:44:42 +0000 Received: from vps0.lunn.ch ([185.16.172.187]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1l2JP0-000839-Gn for linux-arm-kernel@lists.infradead.org; Wed, 20 Jan 2021 19:44:36 +0000 Received: from andrew by vps0.lunn.ch with local (Exim 4.94) (envelope-from ) id 1l2JOq-001hHn-Nj; Wed, 20 Jan 2021 20:44:16 +0100 Date: Wed, 20 Jan 2021 20:44:16 +0100 From: Andrew Lunn To: Lukasz Stelmach Subject: Re: [PATCH v10 3/3] net: ax88796c: ASIX AX88796C SPI Ethernet Adapter Driver Message-ID: References: <20210115172722.516468bb@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210120_144426_824400_F934DA7B X-CRM114-Status: GOOD ( 33.36 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org, =?utf-8?Q?Bart=C5=82omiej_=C5=BBolnierkiewicz?= , jim.cromie@gmail.com, netdev@vger.kernel.org, Russell King , Rob Herring , linux-kernel@vger.kernel.org, Kukjin Kim , Krzysztof Kozlowski , Jakub Kicinski , Marek Szyprowski , "David S. Miller" , linux-arm-kernel@lists.infradead.org, Heiner Kallweit Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gV2VkLCBKYW4gMjAsIDIwMjEgYXQgMDg6MzA6MTRQTSArMDEwMCwgTHVrYXN6IFN0ZWxtYWNo IHdyb3RlOgo+IEl0IHdhcyA8MjAyMS0wMS0xNSBwacSFIDE3OjI3Piwgd2hlbiBKYWt1YiBLaWNp bnNraSB3cm90ZToKPiA+IE9uIFdlZCwgMTMgSmFuIDIwMjEgMTk6NDA6MjggKzAxMDAgxYF1a2Fz eiBTdGVsbWFjaCB3cm90ZToKPiA+PiBBU0lYIEFYODg3OTZbMV0gaXMgYSB2ZXJzYXRpbGUgZXRo ZXJuZXQgYWRhcHRlciBjaGlwLCB0aGF0IGNhbiBiZQo+ID4+IGNvbm5lY3RlZCB0byBhIENQVSB3 aXRoIGEgOC8xNi1iaXQgYnVzIG9yIHdpdGggYW4gU1BJLiBUaGlzIGRyaXZlcgo+ID4+IHN1cHBv cnRzIFNQSSBjb25uZWN0aW9uLgo+ID4+IAo+ID4+IFRoZSBkcml2ZXIgaGFzIGJlZW4gcG9ydGVk IGZyb20gdGhlIHZlbmRvciBrZXJuZWwgZm9yIEFSVElLNVsyXQo+ID4+IGJvYXJkcy4gU2V2ZXJh bCBjaGFuZ2VzIHdlcmUgbWFkZSB0byBhZGFwdCBpdCB0byB0aGUgY3VycmVudCBrZXJuZWwKPiA+ PiB3aGljaCBpbmNsdWRlOgo+ID4+IAo+ID4+ICsgdXBkYXRlZCBEVCBjb25maWd1cmF0aW9uLAo+ ID4+ICsgY2xvY2sgY29uZmlndXJhdGlvbiBtb3ZlZCB0byBEVCwKPiA+PiArIG5ldyB0aW1lciwg ZXRodG9vbCBhbmQgZ3BpbyBBUElzLAo+ID4+ICsgZGV2XyogaW5zdGVhZCBvZiBwcl8qIGFuZCBj dXN0b20gcHJpbnRrKCkgd3JhcHBlcnMsCj4gPj4gKyByZW1vdmVkIGF3a3dhcmQgdmVuZG9yIHBv d2VyIG1hbmFnZW10bi4KPiA+PiArIGludHJvZHVjZWQgZXRodG9vbCB0dW5hYmxlIHRvIGNvbnRy b2wgU1BJIGNvbXByZXNzaW9uCj4gPj4gCj4gCj4gWy4uLl0KPiAKPiA+PiAKPiA+PiBUaGUgb3Ro ZXIgYXg4ODc5NiBkcml2ZXIgaXMgZm9yIE5FMjAwMCBjb21wYXRpYmxlIEFYODg3OTZMIGNoaXAu IFRoZXNlCj4gPj4gY2hpcHMgYXJlIG5vdCBjb21wYXRpYmxlLiBIZW5jZSwgdHdvIHNlcGFyYXRl IGRyaXZlcnMgYXJlIHJlcXVpcmVkLgo+ID4+IAo+ID4+IFNpZ25lZC1vZmYtYnk6IMWBdWthc3og U3RlbG1hY2ggPGwuc3RlbG1hY2hAc2Ftc3VuZy5jb20+Cj4gPj4gUmV2aWV3ZWQtYnk6IEFuZHJl dyBMdW5uIDxhbmRyZXdAbHVubi5jaD4KPiA+Cj4gPj4gK3N0YXRpYyB1MzIgYXg4ODc5NmNfZ2V0 X3ByaXZfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCj4gPj4gK3sKPiA+PiArCXN0cnVj dCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsID0gdG9fYXg4ODc5NmNfZGV2aWNlKG5kZXYpOwo+ ID4+ICsKPiA+PiArICAgICAgICByZXR1cm4gYXhfbG9jYWwtPnByaXZfZmxhZ3M7Cj4gPgo+ID4g c3RyYXkgaW5kZW50Cj4gPgo+ID4+ICt9Cj4gCj4gRG9uZS4KPiAKPiA+PiArI2RlZmluZSBNQVgo eCx5KSAoKHgpID4gKHkpID8gKHgpIDogKHkpKQo+ID4KPiA+IFBsZWFzZSB1c2UgdGhlIHN0YW5k YXJkIGxpbnV4IG1heCAvIG1heF90IG1hY3Jvcy4KPiAKPiBEb25lLgo+IAo+ID4+ICtzdGF0aWMg c3RydWN0IHNrX2J1ZmYgKgo+ID4+ICtheDg4Nzk2Y190eF9maXh1cChzdHJ1Y3QgbmV0X2Rldmlj ZSAqbmRldiwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqcSkKPiA+PiArewo+ID4+ICsJc3RydWN0IGF4 ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19kZXZpY2UobmRldik7Cj4gPj4g Kwl1OCBzcGlfbGVuID0gYXhfbG9jYWwtPmF4X3NwaS5jb21wID8gMSA6IDQ7Cj4gPj4gKwlzdHJ1 Y3Qgc2tfYnVmZiAqc2tiOwo+ID4+ICsJc3RydWN0IHR4X3BrdF9pbmZvICppbmZvOwo+ID4+ICsJ c3RydWN0IHNrYl9kYXRhICplbnRyeTsKPiA+PiArCXUxNiBwa3RfbGVuOwo+ID4+ICsJdTggcGFk bGVuLCBzZXFfbnVtOwo+ID4+ICsJdTggbmVlZF9wYWdlczsKPiA+PiArCWludCBoZWFkcm9vbTsK PiA+PiArCWludCB0YWlscm9vbTsKPiA+PiArCj4gPj4gKwlpZiAoc2tiX3F1ZXVlX2VtcHR5KHEp KQo+ID4+ICsJCXJldHVybiBOVUxMOwo+ID4+ICsKPiA+PiArCXNrYiA9IHNrYl9wZWVrKHEpOwo+ ID4+ICsJcGt0X2xlbiA9IHNrYi0+bGVuOwo+ID4+ICsJbmVlZF9wYWdlcyA9IChwa3RfbGVuICsg VFhfT1ZFUkhFQUQgKyAxMjcpID4+IDc7Cj4gPj4gKwlpZiAoYXg4ODc5NmNfY2hlY2tfZnJlZV9w YWdlcyhheF9sb2NhbCwgbmVlZF9wYWdlcykgIT0gMCkKPiA+PiArCQlyZXR1cm4gTlVMTDsKPiA+ PiArCj4gPj4gKwloZWFkcm9vbSA9IHNrYl9oZWFkcm9vbShza2IpOwo+ID4+ICsJdGFpbHJvb20g PSBza2JfdGFpbHJvb20oc2tiKTsKPiA+PiArCXBhZGxlbiA9IHJvdW5kX3VwKHBrdF9sZW4sIDQp IC0gcGt0X2xlbjsKPiA+PiArCXNlcV9udW0gPSArK2F4X2xvY2FsLT5zZXFfbnVtICYgMHgxRjsK PiA+PiArCj4gPj4gKwlpbmZvID0gKHN0cnVjdCB0eF9wa3RfaW5mbyAqKXNrYi0+Y2I7Cj4gPj4g KwlpbmZvLT5wa3RfbGVuID0gcGt0X2xlbjsKPiA+PiArCj4gPj4gKwlpZiAoc2tiX2Nsb25lZChz a2IpIHx8Cj4gPj4gKwkgICAgKGhlYWRyb29tIDwgKFRYX09WRVJIRUFEICsgc3BpX2xlbikpIHx8 Cj4gPj4gKwkgICAgKHRhaWxyb29tIDwgKHBhZGxlbiArIFRYX0VPUF9TSVpFKSkpIHsKPiA+PiAr CQlzaXplX3QgaCA9IE1BWCgoVFhfT1ZFUkhFQUQgKyBzcGlfbGVuKSAtIGhlYWRyb29tLDApOwo+ ID4+ICsJCXNpemVfdCB0ID0gTUFYKChwYWRsZW4gKyBUWF9FT1BfU0laRSkgLSB0YWlscm9vbSww KTsKPiA+PiArCj4gPj4gKwkJaWYgKHBza2JfZXhwYW5kX2hlYWQoc2tiLCBoLCB0LCBHRlBfS0VS TkVMKSkKPiA+PiArCQkJcmV0dXJuIE5VTEw7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJaW5mby0+ c2VxX251bSA9IHNlcV9udW07Cj4gPj4gKwlheDg4Nzk2Y19wcm9jX3R4X2hkcihpbmZvLCBza2It PmlwX3N1bW1lZCk7Cj4gPj4gKwo+ID4+ICsJLyogU09QIGFuZCBTRUcgaGVhZGVyICovCj4gPj4g KwltZW1jcHkoc2tiX3B1c2goc2tiLCBUWF9PVkVSSEVBRCksICZpbmZvLT5zb3AsIFRYX09WRVJI RUFEKTsKPiA+Cj4gPiB3aHkgdXNlIHNrYi0+Y2IgdG8gc3RvcmUgaW5mbz8gd2h5IG5vdCBkZWNs YXJlIGl0IG9uIHRoZSBzdGFjaz8KPiA+Cj4gCj4gRG9uZS4KPiAKPiA+PiArCS8qIFdyaXRlIFNQ SSBUWFEgaGVhZGVyICovCj4gPj4gKwltZW1jcHkoc2tiX3B1c2goc2tiLCBzcGlfbGVuKSwgYXg4 ODc5NmNfdHhfY21kX2J1Ziwgc3BpX2xlbik7Cj4gPj4gKwo+ID4+ICsJLyogTWFrZSAzMi1iaXQg YWxpZ25tZW50ICovCj4gPj4gKwlza2JfcHV0KHNrYiwgcGFkbGVuKTsKPiA+PiArCj4gPj4gKwkv KiBFT1AgaGVhZGVyICovCj4gPj4gKwltZW1jcHkoc2tiX3B1dChza2IsIFRYX0VPUF9TSVpFKSwg JmluZm8tPmVvcCwgVFhfRU9QX1NJWkUpOwo+ID4+ICsKPiA+PiArCXNrYl91bmxpbmsoc2tiLCBx KTsKPiA+PiArCj4gPj4gKwllbnRyeSA9IChzdHJ1Y3Qgc2tiX2RhdGEgKilza2ItPmNiOwo+ID4+ ICsJbWVtc2V0KGVudHJ5LCAwLCBzaXplb2YoKmVudHJ5KSk7Cj4gPj4gKwllbnRyeS0+bGVuID0g cGt0X2xlbjsKPiA+PiArCj4gPj4gKwlpZiAobmV0aWZfbXNnX3BrdGRhdGEoYXhfbG9jYWwpKSB7 Cj4gPj4gKwkJY2hhciBwZnhbSUZOQU1TSVogKyA3XTsKPiA+PiArCj4gPj4gKwkJc25wcmludGYo cGZ4LCBzaXplb2YocGZ4KSwgIiVzOiAgICAgIiwgbmRldi0+bmFtZSk7Cj4gPj4gKwo+ID4+ICsJ CW5ldGRldl9pbmZvKG5kZXYsICJUWCBwYWNrZXQgbGVuICVkLCB0b3RhbCBsZW4gJWQsIHNlcSAl ZFxuIiwKPiA+PiArCQkJICAgIHBrdF9sZW4sIHNrYi0+bGVuLCBzZXFfbnVtKTsKPiA+PiArCj4g Pj4gKwkJbmV0ZGV2X2luZm8obmRldiwgIiAgU1BJIEhlYWRlcjpcbiIpOwo+ID4+ICsJCXByaW50 X2hleF9kdW1wKEtFUk5fSU5GTywgcGZ4LCBEVU1QX1BSRUZJWF9PRkZTRVQsIDE2LCAxLAo+ID4+ ICsJCQkgICAgICAgc2tiLT5kYXRhLCA0LCAwKTsKPiA+PiArCj4gPj4gKwkJbmV0ZGV2X2luZm8o bmRldiwgIiAgVFggU09QOlxuIik7Cj4gPj4gKwkJcHJpbnRfaGV4X2R1bXAoS0VSTl9JTkZPLCBw ZngsIERVTVBfUFJFRklYX09GRlNFVCwgMTYsIDEsCj4gPj4gKwkJCSAgICAgICBza2ItPmRhdGEg KyA0LCBUWF9PVkVSSEVBRCwgMCk7Cj4gPj4gKwo+ID4+ICsJCW5ldGRldl9pbmZvKG5kZXYsICIg IFRYIHBhY2tldDpcbiIpOwo+ID4+ICsJCXByaW50X2hleF9kdW1wKEtFUk5fSU5GTywgcGZ4LCBE VU1QX1BSRUZJWF9PRkZTRVQsIDE2LCAxLAo+ID4+ICsJCQkgICAgICAgc2tiLT5kYXRhICsgNCAr IFRYX09WRVJIRUFELAo+ID4+ICsJCQkgICAgICAgc2tiLT5sZW4gLSBUWF9FT1BfU0laRSAtIDQg LSBUWF9PVkVSSEVBRCwgMCk7Cj4gPj4gKwo+ID4+ICsJCW5ldGRldl9pbmZvKG5kZXYsICIgIFRY IEVPUDpcbiIpOwo+ID4+ICsJCXByaW50X2hleF9kdW1wKEtFUk5fSU5GTywgcGZ4LCBEVU1QX1BS RUZJWF9PRkZTRVQsIDE2LCAxLAo+ID4+ICsJCQkgICAgICAgc2tiLT5kYXRhICsgc2tiLT5sZW4g LSA0LCA0LCAwKTsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwlyZXR1cm4gc2tiOwo+ID4+ICt9Cj4g Pj4gKwo+ID4+ICtzdGF0aWMgaW50IGF4ODg3OTZjX2hhcmRfeG1pdChzdHJ1Y3QgYXg4ODc5NmNf ZGV2aWNlICpheF9sb2NhbCkKPiA+PiArewo+ID4+ICsJc3RydWN0IHNrX2J1ZmYgKnR4X3NrYjsK PiA+PiArCXN0cnVjdCBza2JfZGF0YSAqZW50cnk7Cj4gPj4gKwo+ID4+ICsJV0FSTl9PTighbXV0 ZXhfaXNfbG9ja2VkKCZheF9sb2NhbC0+c3BpX2xvY2spKTsKPiA+PiArCj4gPj4gKwl0eF9za2Ig PSBheDg4Nzk2Y190eF9maXh1cChheF9sb2NhbC0+bmRldiwgJmF4X2xvY2FsLT50eF93YWl0X3Ep Owo+ID4+ICsKPiA+PiArCWlmICghdHhfc2tiKQo+ID4+ICsJCXJldHVybiAwOwo+ID4KPiA+IHR4 X2Ryb3BwZWQrKyA/Cj4gPgo+IAo+IERvbmUuCj4gCj4gPj4gKwllbnRyeSA9IChzdHJ1Y3Qgc2ti X2RhdGEgKil0eF9za2ItPmNiOwo+ID4+ICsKPiA+PiArCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhf c3BpLAo+ID4+ICsJCSAoVFNOUl9UWEJfU1RBUlQgfCBUU05SX1BLVF9DTlQoMSkpLCBQMF9UU05S KTsKPiA+PiArCj4gPj4gKwlheHNwaV93cml0ZV90eHEoJmF4X2xvY2FsLT5heF9zcGksIHR4X3Nr Yi0+ZGF0YSwgdHhfc2tiLT5sZW4pOwo+ID4+ICsKPiA+PiArCWlmICgoKEFYX1JFQUQoJmF4X2xv Y2FsLT5heF9zcGksIFAwX1RTTlIpICYgVFhOUl9UWEJfSURMRSkgPT0gMCkgfHwKPiA+PiArCSAg ICAoKElTUl9UWEVSUiAmIEFYX1JFQUQoJmF4X2xvY2FsLT5heF9zcGksIFAwX0lTUikpICE9IDAp KSB7Cj4gPj4gKwkJLyogQWNrIHR4IGVycm9yIGludCAqLwo+ID4+ICsJCUFYX1dSSVRFKCZheF9s b2NhbC0+YXhfc3BpLCBJU1JfVFhFUlIsIFAwX0lTUik7Cj4gPj4gKwo+ID4+ICsJCWF4X2xvY2Fs LT5zdGF0cy50eF9kcm9wcGVkKys7Cj4gPj4gKwo+ID4+ICsJCW5ldGlmX2VycihheF9sb2NhbCwg dHhfZXJyLCBheF9sb2NhbC0+bmRldiwKPiA+PiArCQkJICAiVFggRklGTyBlcnJvciwgcmUtaW5p dGlhbGl6ZSB0aGUgVFggYnJpZGdlXG4iKTsKPiA+Cj4gPiByYXRlIGxpbWl0Cj4gPgo+IAo+IERv bmUuCj4gCj4gPj4gKwkJLyogUmVpbml0aWFsIHR4IGJyaWRnZSAqLwo+ID4+ICsJCUFYX1dSSVRF KCZheF9sb2NhbC0+YXhfc3BpLCBUWE5SX1RYQl9SRUlOSVQgfAo+ID4+ICsJCQlBWF9SRUFEKCZh eF9sb2NhbC0+YXhfc3BpLCBQMF9UU05SKSwgUDBfVFNOUik7Cj4gPj4gKwkJYXhfbG9jYWwtPnNl cV9udW0gPSAwOwo+ID4+ICsJfSBlbHNlIHsKPiA+PiArCQlheF9sb2NhbC0+c3RhdHMudHhfcGFj a2V0cysrOwo+ID4+ICsJCWF4X2xvY2FsLT5zdGF0cy50eF9ieXRlcyArPSBlbnRyeS0+bGVuOwo+ ID4+ICsJfQo+ID4+ICsKPiA+PiArCWVudHJ5LT5zdGF0ZSA9IHR4X2RvbmU7Cj4gPj4gKwlkZXZf a2ZyZWVfc2tiKHR4X3NrYik7Cj4gPgo+ID4gZGV2X2NvbnN1bWVfc2tiKCkgaXMgYmV0dGVyIGlu IGNhc2VzIHRoZSB4bWlzc2lvbiB3YXMgY29ycmVjdC4KPiA+IGtmcmVlX3NrYigpIHNob3dzIHVw IGluIHBhY2tldCBkcm9wIG1vbml0b3IuCj4gPgo+IAo+IFRoaXMgb25lIGlzIE9LIGFzIGl0IGlz IGJlY2F1c2UKPiAKPiAxLiBkZXZfa2ZyZWVfc2tiKCkgaXMgY29uc3VtZV9za2IoKQo+IAo+ICAg ICBpbmNsdWRlL2xpbnV4L3NrYnVmZi5oOiNkZWZpbmUgZGV2X2tmcmVlX3NrYihhKSBjb25zdW1l X3NrYihhKQo+IAo+IDIuIGRldl9jb25zdW1lX3NrYigpIGRvZXMgbm90IGV4aXN0LiBUaGVyZSBh cmUgZGV2X2NvbnN1bWVfc2tiX2lycSgpIGFuZAo+IGRldl9jb25zdW1lX3NrYl9hbnkoKS4gVGhl IGZvcm1lciBjYW4gYmUgdXNlZCBpbiBJUlFzLCB0aGUgbGF0dGVyCj4gYW55d2hlciBhbmQgZGUg ZmFjdG8gY2FsbHMgdGhlIGZvcm1lciBpZiBpbiBJUlEuIElmIG5vdCwgaXQgY2FsbHMKPiBkZXZf a2ZyZWVfc2tiKCkgKHNlZSBhYm92ZSkKPiAKPiAzLiBMYXN0IGJ1dCBub3QgbGVhc3QuIGtmcmVl X3NrYigpIGFuZCBjb25zdW1lX3NrYigpIGJlY29tZSB0aGUgc2FtZQo+IHdpdGhvdXQgQ09ORklH X1RSQUNFUE9JTlRTIChjb21taXQgYmU3NjlkYjJmOTU4KS4KPiAKPiA+PiArCj4gPj4gKwlyZXR1 cm4gMTsKPiA+PiArfQo+ID4KPiA+PiArc3RhdGljIHZvaWQKPiA+PiArYXg4ODc5NmNfc2tiX3Jl dHVybihzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNr YiwKPiA+PiArCQkgICAgc3RydWN0IHJ4X2hlYWRlciAqcnhoZHIpCj4gPj4gK3sKPiA+PiArCXN0 cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gYXhfbG9jYWwtPm5kZXY7Cj4gPj4gKwlpbnQgc3RhdHVz Owo+ID4+ICsKPiA+PiArCWRvIHsKPiA+PiArCQlpZiAoIShuZGV2LT5mZWF0dXJlcyAmIE5FVElG X0ZfUlhDU1VNKSkKPiA+PiArCQkJYnJlYWs7Cj4gPj4gKwo+ID4+ICsJCS8qIGNoZWNrc3VtIGVy cm9yIGJpdCBpcyBzZXQgKi8KPiA+PiArCQlpZiAoKHJ4aGRyLT5mbGFncyAmIFJYX0hEUjNfTDNf RVJSKSB8fAo+ID4+ICsJCSAgICAocnhoZHItPmZsYWdzICYgUlhfSERSM19MNF9FUlIpKQo+ID4+ ICsJCQlicmVhazsKPiA+PiArCj4gPj4gKwkJLyogT3RoZXIgdHlwZXMgbWF5IGJlIGluZGljYXRl ZCBieSBtb3JlIHRoYW4gb25lIGJpdC4gKi8KPiA+PiArCQlpZiAoKHJ4aGRyLT5mbGFncyAmIFJY X0hEUjNfTDRfVFlQRV9UQ1ApIHx8Cj4gPj4gKwkJICAgIChyeGhkci0+ZmxhZ3MgJiBSWF9IRFIz X0w0X1RZUEVfVURQKSkKPiA+PiArCQkJc2tiLT5pcF9zdW1tZWQgPSBDSEVDS1NVTV9VTk5FQ0VT U0FSWTsKPiA+PiArCX0gd2hpbGUgKDApOwo+ID4+ICsKPiA+PiArCWF4X2xvY2FsLT5zdGF0cy5y eF9wYWNrZXRzKys7Cj4gPj4gKwlheF9sb2NhbC0+c3RhdHMucnhfYnl0ZXMgKz0gc2tiLT5sZW47 Cj4gPj4gKwlza2ItPmRldiA9IG5kZXY7Cj4gPj4gKwo+ID4+ICsJc2tiLT5wcm90b2NvbCA9IGV0 aF90eXBlX3RyYW5zKHNrYiwgYXhfbG9jYWwtPm5kZXYpOwo+ID4+ICsKPiA+PiArCW5ldGlmX2lu Zm8oYXhfbG9jYWwsIHJ4X3N0YXR1cywgbmRldiwgIjwgcngsIGxlbiAlenUsIHR5cGUgMHgleFxu IiwKPiA+PiArCQkgICBza2ItPmxlbiArIHNpemVvZihzdHJ1Y3QgZXRoaGRyKSwgc2tiLT5wcm90 b2NvbCk7Cj4gPj4gKwo+ID4+ICsJc3RhdHVzID0gbmV0aWZfcnhfbmkoc2tiKTsKPiA+PiArCWlm IChzdGF0dXMgIT0gTkVUX1JYX1NVQ0NFU1MpCj4gPj4gKwkJbmV0aWZfaW5mbyhheF9sb2NhbCwg cnhfZXJyLCBuZGV2LAo+ID4+ICsJCQkgICAibmV0aWZfcnggc3RhdHVzICVkXG4iLCBzdGF0dXMp Owo+ID4KPiA+IHJhdGUgbGltaXQKPiA+Cj4gCj4gRG9uZS4KPiAKPiA+PiArfQo+ID4+ICsKPiA+ PiArc3RhdGljIHZvaWQKPiA+PiArYXg4ODc5NmNfcnhfZml4dXAoc3RydWN0IGF4ODg3OTZjX2Rl dmljZSAqYXhfbG9jYWwsIHN0cnVjdCBza19idWZmICpyeF9za2IpCj4gPj4gK3sKPiA+PiArCXN0 cnVjdCByeF9oZWFkZXIgKnJ4aGRyID0gKHN0cnVjdCByeF9oZWFkZXIgKilyeF9za2ItPmRhdGE7 Cj4gPj4gKwlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IGF4X2xvY2FsLT5uZGV2Owo+ID4+ICsJ dTE2IGxlbjsKPiA+PiArCj4gPj4gKwliZTE2X3RvX2NwdXMoJnJ4aGRyLT5mbGFnc19sZW4pOwo+ ID4+ICsJYmUxNl90b19jcHVzKCZyeGhkci0+c2VxX2xlbmJhcik7Cj4gPj4gKwliZTE2X3RvX2Nw dXMoJnJ4aGRyLT5mbGFncyk7Cj4gPj4gKwo+ID4+ICsJaWYgKCgocnhoZHItPmZsYWdzX2xlbikg JiBSWF9IRFIxX1BLVF9MRU4pICE9Cj4gPj4gKwkJCSAofihyeGhkci0+c2VxX2xlbmJhcikgJiAw eDdGRikpIHsKPiA+Cj4gPiBMb3RzIG9mIHVubmVjZXNzYXJ5IHBhcmVudGhlc2lzLgo+ID4KPiAK PiBEb25lLgo+IAo+ID4+ICsJCW5ldGlmX2VycihheF9sb2NhbCwgcnhfZXJyLCBuZGV2LCAiSGVh ZGVyIGVycm9yXG4iKTsKPiA+PiArCj4gPj4gKwkJYXhfbG9jYWwtPnN0YXRzLnJ4X2ZyYW1lX2Vy cm9ycysrOwo+ID4+ICsJCWtmcmVlX3NrYihyeF9za2IpOwo+ID4+ICsJCXJldHVybjsKPiA+PiAr CX0KPiA+PiArCj4gPj4gKwlpZiAoKHJ4aGRyLT5mbGFnc19sZW4gJiBSWF9IRFIxX01JSV9FUlIp IHx8Cj4gPj4gKwkgICAgKHJ4aGRyLT5mbGFnc19sZW4gJiBSWF9IRFIxX0NSQ19FUlIpKSB7Cj4g Pj4gKwkJbmV0aWZfZXJyKGF4X2xvY2FsLCByeF9lcnIsIG5kZXYsICJDUkMgb3IgTUlJIGVycm9y XG4iKTsKPiA+PiArCj4gPj4gKwkJYXhfbG9jYWwtPnN0YXRzLnJ4X2NyY19lcnJvcnMrKzsKPiA+ PiArCQlrZnJlZV9za2Iocnhfc2tiKTsKPiA+PiArCQlyZXR1cm47Cj4gPj4gKwl9Cj4gPj4gKwo+ ID4+ICsJbGVuID0gcnhoZHItPmZsYWdzX2xlbiAmIFJYX0hEUjFfUEtUX0xFTjsKPiA+PiArCWlm IChuZXRpZl9tc2dfcGt0ZGF0YShheF9sb2NhbCkpIHsKPiA+PiArCQljaGFyIHBmeFtJRk5BTVNJ WiArIDddOwo+ID4+ICsKPiA+PiArCQlzbnByaW50ZihwZngsIHNpemVvZihwZngpLCAiJXM6ICAg ICAiLCBuZGV2LT5uYW1lKTsKPiA+PiArCQluZXRkZXZfaW5mbyhuZGV2LCAiUlggZGF0YSwgdG90 YWwgbGVuICVkLCBwYWNrZXQgbGVuICVkXG4iLAo+ID4+ICsJCQkgICAgcnhfc2tiLT5sZW4sIGxl bik7Cj4gPj4gKwo+ID4+ICsJCW5ldGRldl9pbmZvKG5kZXYsICIgIER1bXAgUlggcGFja2V0IGhl YWRlcjoiKTsKPiA+PiArCQlwcmludF9oZXhfZHVtcChLRVJOX0lORk8sIHBmeCwgRFVNUF9QUkVG SVhfT0ZGU0VULCAxNiwgMSwKPiA+PiArCQkJICAgICAgIHJ4X3NrYi0+ZGF0YSwgc2l6ZW9mKCpy eGhkciksIDApOwo+ID4+ICsKPiA+PiArCQluZXRkZXZfaW5mbyhuZGV2LCAiICBEdW1wIFJYIHBh Y2tldDoiKTsKPiA+PiArCQlwcmludF9oZXhfZHVtcChLRVJOX0lORk8sIHBmeCwgRFVNUF9QUkVG SVhfT0ZGU0VULCAxNiwgMSwKPiA+PiArCQkJICAgICAgIHJ4X3NrYi0+ZGF0YSArIHNpemVvZigq cnhoZHIpLCBsZW4sIDApOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCXNrYl9wdWxsKHJ4X3NrYiwg c2l6ZW9mKCpyeGhkcikpOwo+ID4+ICsJcHNrYl90cmltKHJ4X3NrYiwgbGVuKTsKPiA+PiArCj4g Pj4gKwlheDg4Nzk2Y19za2JfcmV0dXJuKGF4X2xvY2FsLCByeF9za2IsIHJ4aGRyKTsKPiA+PiAr fQo+ID4+ICsKPiA+PiArc3RhdGljIGludCBheDg4Nzk2Y19yZWNlaXZlKHN0cnVjdCBuZXRfZGV2 aWNlICpuZGV2KQo+ID4+ICt7Cj4gPj4gKwlzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2Nh bCA9IHRvX2F4ODg3OTZjX2RldmljZShuZGV2KTsKPiA+PiArCXN0cnVjdCBza2JfZGF0YSAqZW50 cnk7Cj4gPj4gKwl1MTYgd19jb3VudCwgcGt0X2xlbjsKPiA+PiArCXN0cnVjdCBza19idWZmICpz a2I7Cj4gPj4gKwl1OCBwa3RfY250Owo+ID4+ICsKPiA+PiArCVdBUk5fT04oIW11dGV4X2lzX2xv Y2tlZCgmYXhfbG9jYWwtPnNwaV9sb2NrKSk7Cj4gPj4gKwo+ID4+ICsJLyogY2hlY2sgcnggcGFj a2V0IGFuZCB0b3RhbCB3b3JkIGNvdW50ICovCj4gPj4gKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4 X3NwaSwgQVhfUkVBRCgmYXhfbG9jYWwtPmF4X3NwaSwgUDBfUlRXQ1IpCj4gPj4gKwkJICB8IFJU V0NSX1JYX0xBVENILCBQMF9SVFdDUik7Cj4gPj4gKwo+ID4+ICsJcGt0X2NudCA9IEFYX1JFQUQo JmF4X2xvY2FsLT5heF9zcGksIFAwX1JYQkNSMikgJiBSWEJDUjJfUEtUX01BU0s7Cj4gPj4gKwlp ZiAoIXBrdF9jbnQpCj4gPj4gKwkJcmV0dXJuIDA7Cj4gPj4gKwo+ID4+ICsJcGt0X2xlbiA9IEFY X1JFQUQoJmF4X2xvY2FsLT5heF9zcGksIFAwX1JDUEhSKSAmIDB4N0ZGOwo+ID4+ICsKPiA+PiAr CXdfY291bnQgPSAoKHBrdF9sZW4gKyA2ICsgMykgJiAweEZGRkMpID4+IDE7Cj4gPgo+ID4gd19j b3VudCA9IHJvdW5kX3VwKHBrdF9sZW4gKyA2LCA0KSA+PiAxOwo+ID4KPiAKPiBEb25lLgo+IAo+ ID4+ICsJc2tiID0gbmV0ZGV2X2FsbG9jX3NrYihuZGV2LCAod19jb3VudCAqIDIpKTsKPiA+Cj4g PiBwYXJlbnRoZXNpcyB1bm5lY2Vzc2FyeQo+ID4KPiAKPiBEb25lLgo+IAo+ID4+ICsJaWYgKCFz a2IpIHsKPiA+PiArCQlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgUlhCQ1IxX1JYQl9ESVND QVJELCBQMF9SWEJDUjEpOwo+ID4KPiA+IEluY3JlbWVudCByeF9kcm9wcGVkIGNvdW50ZXIgaGVy ZT8KPiA+Cj4gCj4gRG9uZS4KPiAKPiA+PiArCQlyZXR1cm4gMDsKPiA+PiArCX0KPiA+PiArCWVu dHJ5ID0gKHN0cnVjdCBza2JfZGF0YSAqKXNrYi0+Y2I7Cj4gPj4gKwo+ID4+ICsJQVhfV1JJVEUo JmF4X2xvY2FsLT5heF9zcGksIFJYQkNSMV9SWEJfU1RBUlQgfCB3X2NvdW50LCBQMF9SWEJDUjEp Owo+ID4+ICsKPiA+PiArCWF4c3BpX3JlYWRfcnhxKCZheF9sb2NhbC0+YXhfc3BpLAo+ID4+ICsJ CSAgICAgICBza2JfcHV0KHNrYiwgd19jb3VudCAqIDIpLCBza2ItPmxlbik7Cj4gPj4gKwo+ID4+ ICsJLyogQ2hlY2sgaWYgcnggYnJpZGdlIGlzIGlkbGUgKi8KPiA+PiArCWlmICgoQVhfUkVBRCgm YXhfbG9jYWwtPmF4X3NwaSwgUDBfUlhCQ1IyKSAmIFJYQkNSMl9SWEJfSURMRSkgPT0gMCkgewo+ ID4+ICsJCW5ldGlmX2VycihheF9sb2NhbCwgcnhfZXJyLCBuZGV2LAo+ID4+ICsJCQkgICJSeCBC cmlkZ2UgaXMgbm90IGlkbGVcbiIpOwo+ID4KPiA+IHJhdGUgbGltaXQ/Cj4gPgo+IAo+IE9rLgo+ IAo+ID4+ICsJCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBSWEJDUjJfUlhCX1JFSU5JVCwg UDBfUlhCQ1IyKTsKPiA+PiArCj4gPj4gKwkJZW50cnktPnN0YXRlID0gcnhfZXJyOwo+ID4+ICsJ fSBlbHNlIHsKPiA+PiArCQllbnRyeS0+c3RhdGUgPSByeF9kb25lOwo+ID4+ICsJfQo+ID4+ICsK PiA+PiArCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBJU1JfUlhQS1QsIFAwX0lTUik7Cj4g Pj4gKwo+ID4+ICsJYXg4ODc5NmNfcnhfZml4dXAoYXhfbG9jYWwsIHNrYik7Cj4gPj4gKwo+ID4+ ICsJcmV0dXJuIDE7Cj4gPj4gK30KPiA+PiArCj4gPj4gK3N0YXRpYyBpbnQgYXg4ODc5NmNfcHJv Y2Vzc19pc3Ioc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwpCj4gPj4gK3sKPiA+PiAr CXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gYXhfbG9jYWwtPm5kZXY7Cj4gPj4gKwl1OCBkb25l ID0gMDsKPiA+Cj4gPiBUaGUgbG9naWMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdmFyaWFibGUgaXMg ImlzIHRoZXJlIG1vcmUgdG8gZG8iIHJhdGhlcgo+ID4gdGhhbiAiZG9uZSIsIG5vPwo+ID4KPiAK PiBheDg4Nzk2Y19yZWNlaXZlKCkgcmV0dXJucyAxLCBpZiB0aGVyZSBtYXkgYmUgc29tZXRoaW5n IG1vcmUgdG8gZG8uIFNvCj4geWVzLCBsZXQncyByZW5hbWUgaXQgdG8gdG9kby4KPiAKPiA+PiAr CXUxNiBpc3I7Cj4gPj4gKwo+ID4+ICsJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZheF9sb2Nh bC0+c3BpX2xvY2spKTsKPiA+PiArCj4gPj4gKwlpc3IgPSBBWF9SRUFEKCZheF9sb2NhbC0+YXhf c3BpLCBQMF9JU1IpOwo+ID4+ICsJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIGlzciwgUDBf SVNSKTsKPiA+PiArCj4gPj4gKwluZXRpZl9kYmcoYXhfbG9jYWwsIGludHIsIG5kZXYsICIgIElT UiAweCUwNHhcbiIsIGlzcik7Cj4gPj4gKwo+ID4+ICsJaWYgKGlzciAmIElTUl9UWEVSUikgewo+ ID4+ICsJCW5ldGlmX2RiZyhheF9sb2NhbCwgaW50ciwgbmRldiwgIiAgVFhFUlIgaW50ZXJydXB0 XG4iKTsKPiA+PiArCQlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgVFhOUl9UWEJfUkVJTklU LCBQMF9UU05SKTsKPiA+PiArCQlheF9sb2NhbC0+c2VxX251bSA9IDB4MWY7Cj4gPj4gKwl9Cj4g Pj4gKwo+ID4+ICsJaWYgKGlzciAmIElTUl9UWFBBR0VTKSB7Cj4gPj4gKwkJbmV0aWZfZGJnKGF4 X2xvY2FsLCBpbnRyLCBuZGV2LCAiICBUWFBBR0VTIGludGVycnVwdFxuIik7Cj4gPj4gKwkJc2V0 X2JpdChFVkVOVF9UWCwgJmF4X2xvY2FsLT5mbGFncyk7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJ aWYgKGlzciAmIElTUl9MSU5LKSB7Cj4gPj4gKwkJbmV0aWZfZGJnKGF4X2xvY2FsLCBpbnRyLCBu ZGV2LCAiICBMaW5rIGNoYW5nZSBpbnRlcnJ1cHRcbiIpOwo+ID4+ICsJCXBoeV9tYWNfaW50ZXJy dXB0KGF4X2xvY2FsLT5uZGV2LT5waHlkZXYpOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCWlmIChp c3IgJiBJU1JfUlhQS1QpIHsKPiA+PiArCQluZXRpZl9kYmcoYXhfbG9jYWwsIGludHIsIG5kZXYs ICIgIFJYIGludGVycnVwdFxuIik7Cj4gPj4gKwkJZG9uZSA9IGF4ODg3OTZjX3JlY2VpdmUoYXhf bG9jYWwtPm5kZXYpOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCXJldHVybiBkb25lOwo+ID4+ICt9 Cj4gPgo+ID4+ICtzdGF0aWMgdm9pZCBheDg4Nzk2Y193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAq d29yaykKPiA+PiArewo+ID4+ICsJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPQo+ ID4+ICsJCQljb250YWluZXJfb2Yod29yaywgc3RydWN0IGF4ODg3OTZjX2RldmljZSwgYXhfd29y ayk7Cj4gPj4gKwo+ID4+ICsJbXV0ZXhfbG9jaygmYXhfbG9jYWwtPnNwaV9sb2NrKTsKPiA+PiAr Cj4gPj4gKwlpZiAodGVzdF9iaXQoRVZFTlRfU0VUX01VTFRJLCAmYXhfbG9jYWwtPmZsYWdzKSkg ewo+ID4+ICsJCWF4ODg3OTZjX3NldF9od19tdWx0aWNhc3QoYXhfbG9jYWwtPm5kZXYpOwo+ID4+ ICsJCWNsZWFyX2JpdChFVkVOVF9TRVRfTVVMVEksICZheF9sb2NhbC0+ZmxhZ3MpOwo+ID4+ICsJ fQo+ID4+ICsKPiA+PiArCWlmICh0ZXN0X2JpdChFVkVOVF9JTlRSLCAmYXhfbG9jYWwtPmZsYWdz KSkgewo+ID4+ICsJCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBJTVJfTUFTS0FMTCwgUDBf SU1SKTsKPiA+PiArCj4gPj4gKwkJd2hpbGUgKDEpIHsKPiA+PiArCQkJaWYgKCFheDg4Nzk2Y19w cm9jZXNzX2lzcihheF9sb2NhbCkpCj4gPj4gKwkJCQlicmVhazsKPiA+Cj4gPiB3aGlsZSAoYXg4 ODc5NmNfcHJvY2Vzc19pc3IoYXhfbG9jYWwpKQo+ID4gCS8qIG5vdGhpbmcgKi87Cj4gPiA/Cj4g Pgo+IAo+IE9rLgo+IAo+ID4+ICsJCX0KPiA+PiArCj4gPj4gKwkJY2xlYXJfYml0KEVWRU5UX0lO VFIsICZheF9sb2NhbC0+ZmxhZ3MpOwo+ID4+ICsKPiA+PiArCQlBWF9XUklURSgmYXhfbG9jYWwt PmF4X3NwaSwgSU1SX0RFRkFVTFQsIFAwX0lNUik7Cj4gPj4gKwo+ID4+ICsJCWVuYWJsZV9pcnEo YXhfbG9jYWwtPm5kZXYtPmlycSk7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJaWYgKHRlc3RfYml0 KEVWRU5UX1RYLCAmYXhfbG9jYWwtPmZsYWdzKSkgewo+ID4+ICsJCXdoaWxlIChza2JfcXVldWVf bGVuKCZheF9sb2NhbC0+dHhfd2FpdF9xKSkgewo+ID4+ICsJCQlpZiAoIWF4ODg3OTZjX2hhcmRf eG1pdChheF9sb2NhbCkpCj4gPj4gKwkJCQlicmVhazsKPiA+PiArCQl9Cj4gPj4gKwo+ID4+ICsJ CWNsZWFyX2JpdChFVkVOVF9UWCwgJmF4X2xvY2FsLT5mbGFncyk7Cj4gPj4gKwo+ID4+ICsJCWlm IChuZXRpZl9xdWV1ZV9zdG9wcGVkKGF4X2xvY2FsLT5uZGV2KSAmJgo+ID4+ICsJCSAgICAoc2ti X3F1ZXVlX2xlbigmYXhfbG9jYWwtPnR4X3dhaXRfcSkgPCBUWF9RVUVVRV9MT1dfV0FURVIpKQo+ ID4+ICsJCQluZXRpZl93YWtlX3F1ZXVlKGF4X2xvY2FsLT5uZGV2KTsKPiA+PiArCX0KPiA+PiAr Cj4gPj4gKwltdXRleF91bmxvY2soJmF4X2xvY2FsLT5zcGlfbG9jayk7Cj4gPj4gK30KPiA+Cj4g Pj4gK3N0YXRpYyB2b2lkIGF4ODg3OTZjX3NldF9jc3VtcyhzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNl ICpheF9sb2NhbCkKPiA+PiArewo+ID4+ICsJc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBheF9s b2NhbC0+bmRldjsKPiA+PiArCj4gPj4gKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmF4X2xv Y2FsLT5zcGlfbG9jaykpOwo+ID4KPiA+IGxvY2tkZXBfYXNzZXJ0X2hlbGQoKSBpbiBhbGwgdGhv c2UgY2FzZXMKPiA+Cj4gCj4gRG9uZS4KPiAKPiA+PiArc3RhdGljIHZvaWQgYXg4ODc5NmNfZnJl ZV9za2JfcXVldWUoc3RydWN0IHNrX2J1ZmZfaGVhZCAqcSkKPiA+PiArewo+ID4+ICsJc3RydWN0 IHNrX2J1ZmYgKnNrYjsKPiA+PiArCj4gPj4gKwl3aGlsZSAocS0+cWxlbikgewo+ID4+ICsJCXNr YiA9IHNrYl9kZXF1ZXVlKHEpOwo+ID4+ICsJCWtmcmVlX3NrYihza2IpOwo+ID4+ICsJfQo+ID4K PiA+IF9fc2tiX3F1ZXVlX3B1cmdlKCkKPiA+Cj4gCj4gRG9uZS4KPiAKPiA+PiArfQo+ID4+ICsK PiA+PiArc3RhdGljIGludAo+ID4+ICtheDg4Nzk2Y19jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAq bmRldikKPiA+PiArewo+ID4+ICsJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0 b19heDg4Nzk2Y19kZXZpY2UobmRldik7Cj4gPj4gKwo+ID4+ICsJbmV0aWZfc3RvcF9xdWV1ZShu ZGV2KTsKPiA+PiArCXBoeV9zdG9wKG5kZXYtPnBoeWRldik7Cj4gPj4gKwo+ID4+ICsJbXV0ZXhf bG9jaygmYXhfbG9jYWwtPnNwaV9sb2NrKTsKPiA+PiArCj4gPj4gKwkvKiBEaXNhYmxlIE1BQyBp bnRlcnJ1cHRzICovCj4gPj4gKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgSU1SX01BU0tB TEwsIFAwX0lNUik7Cj4gPj4gKwlheDg4Nzk2Y19mcmVlX3NrYl9xdWV1ZSgmYXhfbG9jYWwtPnR4 X3dhaXRfcSk7Cj4gPj4gKwlheDg4Nzk2Y19zb2Z0X3Jlc2V0KGF4X2xvY2FsKTsKPiA+PiArCj4g Pj4gKwltdXRleF91bmxvY2soJmF4X2xvY2FsLT5zcGlfbG9jayk7Cj4gPj4gKwo+ID4+ICsJZnJl ZV9pcnEobmRldi0+aXJxLCBuZGV2KTsKPiA+PiArCj4gPj4gKwlyZXR1cm4gMDsKPiA+PiArfQo+ ID4KPiA+PiArc3RydWN0IGF4ODg3OTZjX2RldmljZSB7Cj4gPj4gKwlzdHJ1Y3Qgc3BpX2Rldmlj ZQkqc3BpOwo+ID4+ICsJc3RydWN0IG5ldF9kZXZpY2UJKm5kZXY7Cj4gPj4gKwlzdHJ1Y3QgbmV0 X2RldmljZV9zdGF0cwlzdGF0czsKPiA+Cj4gPiBZb3UgbmVlZCB0byB1c2UgNjQgYml0IHN0YXRz LCBsaWtlIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NC4KPiA+IE9uIGEgMzJiaXQgc3lzdGVtIGF0 IDEwME1icHMgdWxvbmcgY2FuIHdyYXAgaW4gbWludXRlcy4KPiA+Cj4gCj4gTGV0IG1lIHNlZS4g QXQgZmlyc3QgZ2xhbmNlCj4gCj4gZ2l0IGdyZXAgLWwgbmRvX2dldF9zdGF0c1xcXD4gZHJpdmVy cy9uZXQvZXRoZXJuZXQvICB8IHhhcmdzIGdyZXAgLWxpIFNQRUVEXzEwMFxcXD4KPiAKPiBxdWl0 ZSBhIG51bWJlciBvZiBGYXN0IEV0aGVybmV0IGRyaXZlcnMgdXNlIG5ldF9kZXZpY2Vfc3RhdHMu IExldCBtZQo+IGNhbGN1bGF0ZS4KPiAKPiAtIGJ5dGVzCj4gICAxMDBNYnBzIGlzIH4xME1pQi9z Cj4gICBzZW5kaW5nIDRHaUIgYXQgMTBNaUIvcyB0YWtlcyAyNyBtaW51dGVzCj4gCj4gLSBwYWNr ZXRzCj4gICBtaW5pbXVtIGZyYW1lIHNpemUgaXMgODQgYnl0ZXMgKDg0MCBiaXRzIG9uIHRoZSB3 aXJlKSBvbiAxMDBNYnBzIG1lYW5zCj4gICAxMTkwNDggcHBzIGF0IHRoaXMgc3BlZWQgaXQgdGFr c2UgMTAgaG91cnMgdG8gdHJhbnNtaXQgMl4zMiBwYWNrZXRzCj4gCj4gQW55d2F5LCBJIHN3aXRj aGVkIHRvIHJ0bmxfbGlua19zdGF0czY0LiBUZWxsIG1lLCBpcyBpdCBPSyB0byBqdXN0Cj4gbWVt Y3B5KCkgaW4gLm5kb19nZXRfc3RhdHM2ND8KCllvdSBzaG91bGQgdXNlcyB0aGUgaGVscGVycyBp biBpbmNsdWRlL2xpbnV4L3U2NF9zdGF0c19zeW5jLmggdG8gbWFrZQpzdXJlIHRoZSBzeW5jaHJv bml6YXRpb24gYmV0d2VlbiByZWFkZXJzIGFuZCB3cml0ZXJzIGlzIGNvcnJlY3QuIEEKbWVtY3B5 KCkgd2l0aGluIHRob3NlIHByaW1pdGl2ZXMgc2hvdWxkIGJlIE8uSy4KCgkgQW5kcmV3CgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2Vy bmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVs Cg==