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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B409EC433F5 for ; Tue, 9 Nov 2021 12:19:16 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 653D560524 for ; Tue, 9 Nov 2021 12:19:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 653D560524 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc: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=YRCrS2vndB/tLxq1HIzGnZfrBPk4GOAh3dyQtmS7AiQ=; b=vSVk5lWDWtgTWt Kjp0a/H3tW4I6o2YzyqzPT1Rn7n2tdOhLrX4sZgoce9TkJrbeVAB0je5pWtJ6Zfza88exdcgjd41m LrjYGLp9nl3cBiXqfxawMQaBImkZ2GYHEEATsN1X8KezuMCqpJgGXO53GbvZppe2tj/Hai4tgEZRD vib/fisdXfjZr0xbm57Qn4KKcilUSwltrcyMYIIrMG92TPgH+jYhYfDZhyNFnKUL/hUi11B/ZDslo Vs1gnb+dpZEObbDD0Vr/msTkpL+Dt1pSxZtiKc0+HWIwNNaMc3LP5seHymBG6A/G0HKpobMw/Lcpg 2ClEBwmAUPw4GE2LLruw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mkQ5K-001z8u-QL; Tue, 09 Nov 2021 12:18:42 +0000 Received: from relay5-d.mail.gandi.net ([217.70.183.197]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mkQ5D-001z5W-TA; Tue, 09 Nov 2021 12:18:39 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by relay5-d.mail.gandi.net (Postfix) with ESMTPSA id 0FA861C0002; Tue, 9 Nov 2021 12:18:30 +0000 (UTC) Date: Tue, 9 Nov 2021 13:18:29 +0100 From: Miquel Raynal To: Xiangsheng Hou Cc: , , , , , , , , , , , , Subject: Re: [RFC,v3 2/5] mtd: ecc: realize Mediatek HW ECC driver Message-ID: <20211109131829.30a82ea4@xps13> In-Reply-To: <20211022024021.14665-3-xiangsheng.hou@mediatek.com> References: <20211022024021.14665-1-xiangsheng.hou@mediatek.com> <20211022024021.14665-3-xiangsheng.hou@mediatek.com> Organization: Bootlin X-Mailer: Claws Mail 3.17.7 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211109_041836_259914_1B32D3C6 X-CRM114-Status: GOOD ( 34.48 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org SGkgWGlhbmdzaGVuZywKCnhpYW5nc2hlbmcuaG91QG1lZGlhdGVrLmNvbSB3cm90ZSBvbiBGcmks IDIyIE9jdCAyMDIxIDEwOjQwOjE4ICswODAwOgoKPiBUaGUgdjMgZHJpdmVyIHJlYWxpemUgTWVk aWF0ZWsgSFcgRUNDIGVuZ2luZSB3aXRoIHBpcGVsaW5lZAo+IGNhc2UuCgp2MyBkcml2ZXI/IEkg Z3Vlc3MgeW91IGFyZSB0YWxraW5nIGFib3V0IHRoZSBoYXJkd2FyZT8KCkkgZG9uJ3QgdGhpbmsg J3JlYWxpemUnIG1ha2VzIG11Y2ggc2Vuc2UgaGVyZS4gUGVyaGFwcyB0aGUgdGl0bGUgY291bGQK YmU6CiJtdGQ6IGVjYzogbXRrOiBDb252ZXJ0IHRvIHRoZSBFQ0MgaW5mcmFzdHJ1Y3R1cmUKCj4g Cj4gU2lnbmVkLW9mZi1ieTogWGlhbmdzaGVuZyBIb3UgPHhpYW5nc2hlbmcuaG91QG1lZGlhdGVr LmNvbT4KPiAtLS0KPiAgZHJpdmVycy9tdGQvbmFuZC9jb3JlLmMgICAgIHwgIDEwICstCj4gIGRy aXZlcnMvbXRkL25hbmQvZWNjLmMgICAgICB8ICA4OCArKysrKysrCj4gIGRyaXZlcnMvbXRkL25h bmQvbXRrX2VjYy5jICB8IDQ4OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK PiAgaW5jbHVkZS9saW51eC9tdGQvbXRrX2VjYy5oIHwgIDM4ICsrKwo+ICBpbmNsdWRlL2xpbnV4 L210ZC9uYW5kLmggICAgfCAgMTEgKwo+ICA1IGZpbGVzIGNoYW5nZWQsIDYzMiBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL2Nv cmUuYyBiL2RyaXZlcnMvbXRkL25hbmQvY29yZS5jCj4gaW5kZXggNWUxM2EwM2QyYjMyLi5iMjI4 YjRkMTNiN2EgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9jb3JlLmMKPiArKysgYi9k cml2ZXJzL210ZC9uYW5kL2NvcmUuYwo+IEBAIC0yMzIsNyArMjMyLDkgQEAgc3RhdGljIGludCBu YW5kZGV2X2dldF9lY2NfZW5naW5lKHN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCkKPiAgCQluYW5k LT5lY2MuZW5naW5lID0gbmFuZF9lY2NfZ2V0X29uX2RpZV9od19lbmdpbmUobmFuZCk7Cj4gIAkJ YnJlYWs7Cj4gIAljYXNlIE5BTkRfRUNDX0VOR0lORV9UWVBFX09OX0hPU1Q6Cj4gLQkJcHJfZXJy KCJPbi1ob3N0IGhhcmR3YXJlIEVDQyBlbmdpbmVzIG5vdCBzdXBwb3J0ZWQgeWV0XG4iKTsKPiAr CQluYW5kLT5lY2MuZW5naW5lID0gbmFuZF9lY2NfZ2V0X29uX2hvc3RfaHdfZW5naW5lKG5hbmQp Owo+ICsJCWlmIChQVFJfRVJSKG5hbmQtPmVjYy5lbmdpbmUpID09IC1FUFJPQkVfREVGRVIpCj4g KwkJCXJldHVybiAtRVBST0JFX0RFRkVSOwoKUGxlYXNlIGJhc2UgeW91ciBzZXJpZXMgb24gdG9w IG9mIG15IHByZXZpb3VzIHdvcmsgKGV2ZW4gaWYgbm90IDEwMCUKc3RhYmxlIHlldCkgdG8gYXZv aWQgbGVha2luZyBjb3JlIGNoYW5nZXMgaGVyZS4gVGhleSBhbHJlYWR5IGV4aXN0LCBubwpuZWVk IHRvIGR1cGxpY2F0ZSB0aGVtLgoKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gIAkJcHJfZXJy KCJNaXNzaW5nIEVDQyBlbmdpbmUgdHlwZVxuIik7Cj4gQEAgLTI1Miw3ICsyNTQsNyBAQCBzdGF0 aWMgaW50IG5hbmRkZXZfcHV0X2VjY19lbmdpbmUoc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kKQo+ ICB7Cj4gIAlzd2l0Y2ggKG5hbmQtPmVjYy5jdHguY29uZi5lbmdpbmVfdHlwZSkgewo+ICAJY2Fz ZSBOQU5EX0VDQ19FTkdJTkVfVFlQRV9PTl9IT1NUOgo+IC0JCXByX2VycigiT24taG9zdCBoYXJk d2FyZSBFQ0MgZW5naW5lcyBub3Qgc3VwcG9ydGVkIHlldFxuIik7Cj4gKwkJbmFuZF9lY2NfcHV0 X29uX2hvc3RfaHdfZW5naW5lKG5hbmQpOwo+ICAJCWJyZWFrOwo+ICAJY2FzZSBOQU5EX0VDQ19F TkdJTkVfVFlQRV9OT05FOgo+ICAJY2FzZSBOQU5EX0VDQ19FTkdJTkVfVFlQRV9TT0ZUOgo+IEBA IC0yOTcsNyArMjk5LDkgQEAgaW50IG5hbmRkZXZfZWNjX2VuZ2luZV9pbml0KHN0cnVjdCBuYW5k X2RldmljZSAqbmFuZCkKPiAgCS8qIExvb2sgZm9yIHRoZSBFQ0MgZW5naW5lIHRvIHVzZSAqLwo+ ICAJcmV0ID0gbmFuZGRldl9nZXRfZWNjX2VuZ2luZShuYW5kKTsKPiAgCWlmIChyZXQpIHsKPiAt CQlwcl9lcnIoIk5vIEVDQyBlbmdpbmUgZm91bmRcbiIpOwo+ICsJCWlmIChyZXQgIT0gLUVQUk9C RV9ERUZFUikKPiArCQkJcHJfZXJyKCJObyBFQ0MgZW5naW5lIGZvdW5kXG4iKTsKPiArCj4gIAkJ cmV0dXJuIHJldDsKPiAgCX0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvZWNj LmMgYi9kcml2ZXJzL210ZC9uYW5kL2VjYy5jCj4gaW5kZXggNmM0M2RmZGEwMWQ0Li41NWQ2OTQ2 ZGE5YzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9lY2MuYwo+ICsrKyBiL2RyaXZl cnMvbXRkL25hbmQvZWNjLmMKPiBAQCAtOTYsNyArOTYsMTIgQEAKPiAgI2luY2x1ZGUgPGxpbnV4 L21vZHVsZS5oPgo+ICAjaW5jbHVkZSA8bGludXgvbXRkL25hbmQuaD4KPiAgI2luY2x1ZGUgPGxp bnV4L3NsYWIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9v Zl9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+Cj4gIAo+ICtzdGF0 aWMgTElTVF9IRUFEKG9uX2hvc3RfaHdfZW5naW5lcyk7Cj4gK3N0YXRpYyBERUZJTkVfTVVURVgo b25faG9zdF9od19lbmdpbmVzX211dGV4KTsKPiAgLyoqCj4gICAqIG5hbmRfZWNjX2luaXRfY3R4 IC0gSW5pdCB0aGUgRUNDIGVuZ2luZSBjb250ZXh0Cj4gICAqIEBuYW5kOiB0aGUgTkFORCBkZXZp Y2UKPiBAQCAtNjExLDYgKzYxNiw4OSBAQCBzdHJ1Y3QgbmFuZF9lY2NfZW5naW5lICpuYW5kX2Vj Y19nZXRfb25fZGllX2h3X2VuZ2luZShzdHJ1Y3QgbmFuZF9kZXZpY2UgKm5hbmQpCj4gIH0KPiAg RVhQT1JUX1NZTUJPTChuYW5kX2VjY19nZXRfb25fZGllX2h3X2VuZ2luZSk7Cj4gIAo+ICtpbnQg bmFuZF9lY2NfcmVnaXN0ZXJfb25faG9zdF9od19lbmdpbmUoc3RydWN0IG5hbmRfZWNjX2VuZ2lu ZSAqZW5naW5lKQo+ICt7Cj4gKwlzdHJ1Y3QgbmFuZF9lY2NfZW5naW5lICppdGVtOwo+ICsKPiAr CWlmICghZW5naW5lKQo+ICsJCXJldHVybiAtRU5PVFNVUFA7Cj4gKwo+ICsJLyogUHJldmVudCBt dWx0aXBsZSByZWdpc3RlcmF0aW9ucyBvZiBvbmUgZW5naW5lICovCj4gKwlsaXN0X2Zvcl9lYWNo X2VudHJ5KGl0ZW0sICZvbl9ob3N0X2h3X2VuZ2luZXMsIG5vZGUpCj4gKwkJaWYgKGl0ZW0gPT0g ZW5naW5lKQo+ICsJCQlyZXR1cm4gMDsKPiArCj4gKwltdXRleF9sb2NrKCZvbl9ob3N0X2h3X2Vu Z2luZXNfbXV0ZXgpOwo+ICsJbGlzdF9hZGRfdGFpbCgmZW5naW5lLT5ub2RlLCAmb25faG9zdF9o d19lbmdpbmVzKTsKPiArCW11dGV4X3VubG9jaygmb25faG9zdF9od19lbmdpbmVzX211dGV4KTsK PiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKG5hbmRfZWNjX3JlZ2lzdGVy X29uX2hvc3RfaHdfZW5naW5lKTsKPiArCj4gK2ludCBuYW5kX2VjY191bnJlZ2lzdGVyX29uX2hv c3RfaHdfZW5naW5lKHN0cnVjdCBuYW5kX2VjY19lbmdpbmUgKmVuZ2luZSkKPiArewo+ICsJaWYg KCFlbmdpbmUpCj4gKwkJcmV0dXJuIC1FTk9UU1VQUDsKPiArCj4gKwltdXRleF9sb2NrKCZvbl9o b3N0X2h3X2VuZ2luZXNfbXV0ZXgpOwo+ICsJbGlzdF9kZWwoJmVuZ2luZS0+bm9kZSk7Cj4gKwlt dXRleF91bmxvY2soJm9uX2hvc3RfaHdfZW5naW5lc19tdXRleCk7Cj4gKwo+ICsJcmV0dXJuIDA7 Cj4gK30KPiArRVhQT1JUX1NZTUJPTChuYW5kX2VjY191bnJlZ2lzdGVyX29uX2hvc3RfaHdfZW5n aW5lKTsKPiArCj4gK3N0cnVjdCBuYW5kX2VjY19lbmdpbmUgKm5hbmRfZWNjX21hdGNoX29uX2hv c3RfaHdfZW5naW5lKHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IG5hbmRfZWNj X2VuZ2luZSAqaXRlbTsKPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0ZW0sICZvbl9ob3N0 X2h3X2VuZ2luZXMsIG5vZGUpCj4gKwkJaWYgKGl0ZW0tPmRldiA9PSBkZXYpCj4gKwkJCXJldHVy biBpdGVtOwo+ICsKPiArCXJldHVybiBOVUxMOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0wobmFuZF9l Y2NfbWF0Y2hfb25faG9zdF9od19lbmdpbmUpOwo+ICsKPiArc3RydWN0IG5hbmRfZWNjX2VuZ2lu ZSAqbmFuZF9lY2NfZ2V0X29uX2hvc3RfaHdfZW5naW5lKHN0cnVjdCBuYW5kX2RldmljZSAqbmFu ZCkKPiArewo+ICsJc3RydWN0IG5hbmRfZWNjX2VuZ2luZSAqZW5naW5lID0gTlVMTDsKPiArCXN0 cnVjdCBkZXZpY2UgKmRldiA9ICZuYW5kLT5tdGQuZGV2Owo+ICsJc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldjsKPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7Cj4gKwo+ICsJaWYgKGxpc3Rf ZW1wdHkoJm9uX2hvc3RfaHdfZW5naW5lcykpCj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwo+ICsJLyog Q2hlY2sgZm9yIGFuIGV4cGxpY2l0IG5hbmQtZWNjLWVuZ2luZSBwcm9wZXJ0eSAqLwo+ICsJbnAg PSBvZl9wYXJzZV9waGFuZGxlKGRldi0+b2Zfbm9kZSwgIm5hbmQtZWNjLWVuZ2luZSIsIDApOwo+ ICsJaWYgKG5wKSB7Cj4gKwkJcGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUobnApOwo+ICsJ CWlmICghcGRldikKPiArCQkJcmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7Cj4gKwo+ICsJ CWVuZ2luZSA9IG5hbmRfZWNjX21hdGNoX29uX2hvc3RfaHdfZW5naW5lKCZwZGV2LT5kZXYpOwo+ ICsJCXBsYXRmb3JtX2RldmljZV9wdXQocGRldik7Cj4gKwkJb2Zfbm9kZV9wdXQobnApOwo+ICsK PiArCQlpZiAoIWVuZ2luZSkKPiArCQkJcmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7Cj4g Kwl9Cj4gKwo+ICsJaWYgKGVuZ2luZSkKPiArCQlnZXRfZGV2aWNlKGVuZ2luZS0+ZGV2KTsKPiAr Cj4gKwlyZXR1cm4gZW5naW5lOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0wobmFuZF9lY2NfZ2V0X29u X2hvc3RfaHdfZW5naW5lKTsKPiArCj4gK3ZvaWQgbmFuZF9lY2NfcHV0X29uX2hvc3RfaHdfZW5n aW5lKHN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCkKPiArewo+ICsJcHV0X2RldmljZShuYW5kLT5l Y2MuZW5naW5lLT5kZXYpOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0wobmFuZF9lY2NfcHV0X29uX2hv c3RfaHdfZW5naW5lKTsKPiArCj4gIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKPiAgTU9EVUxFX0FV VEhPUigiTWlxdWVsIFJheW5hbCA8bWlxdWVsLnJheW5hbEBib290bGluLmNvbT4iKTsKPiAgTU9E VUxFX0RFU0NSSVBUSU9OKCJHZW5lcmljIEVDQyBlbmdpbmUiKTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9tdGQvbmFuZC9tdGtfZWNjLmMgYi9kcml2ZXJzL210ZC9uYW5kL210a19lY2MuYwo+IGlu ZGV4IGNlMGY4YjQ5MWU1ZC4uZTBjOTcxZDZhNDQzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbXRk L25hbmQvbXRrX2VjYy5jCj4gKysrIGIvZHJpdmVycy9tdGQvbmFuZC9tdGtfZWNjLmMKPiBAQCAt MTYsNiArMTYsNyBAQAo+ICAjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4KPiAgI2luY2x1 ZGUgPGxpbnV4L211dGV4Lmg+Cj4gIAo+ICsjaW5jbHVkZSA8bGludXgvbXRkL25hbmQuaD4KPiAg I2luY2x1ZGUgPGxpbnV4L210ZC9tdGtfZWNjLmg+Cj4gIAo+ICAjZGVmaW5lIEVDQ19JRExFX01B U0sJCUJJVCgwKQo+IEBAIC00MSw2ICs0Miw5IEBACj4gICNkZWZpbmUgRUNDX0lETEVfUkVHKG9w KQkoKG9wKSA9PSBFQ0NfRU5DT0RFID8gRUNDX0VOQ0lETEUgOiBFQ0NfREVDSURMRSkKPiAgI2Rl ZmluZSBFQ0NfQ1RMX1JFRyhvcCkJCSgob3ApID09IEVDQ19FTkNPREUgPyBFQ0NfRU5DQ09OIDog RUNDX0RFQ0NPTikKPiAgCj4gKyNkZWZpbmUgRUNDX0ZETV9NQVhfU0laRSA4Cj4gKyNkZWZpbmUg RUNDX0ZETV9NSU5fU0laRSAxCj4gKwo+ICBzdHJ1Y3QgbXRrX2VjY19jYXBzIHsKPiAgCXUzMiBl cnJfbWFzazsKPiAgCWNvbnN0IHU4ICplY2Nfc3RyZW5ndGg7Cj4gQEAgLTc5LDYgKzgzLDEwIEBA IHN0YXRpYyBjb25zdCB1OCBlY2Nfc3RyZW5ndGhfbXQ3NjIyW10gPSB7Cj4gIAk0LCA2LCA4LCAx MCwgMTIsIDE0LCAxNgo+ICB9Owo+ICAKPiArc3RhdGljIGNvbnN0IHU4IGVjY19zdHJlbmd0aF9t dDc5ODZbXSA9IHsKPiArCTQsIDYsIDgsIDEwLCAxMiwgMTQsIDE2LCAxOCwgMjAsIDIyLCAyNAo+ ICt9Owo+ICsKPiAgZW51bSBtdGtfZWNjX3JlZ3Mgewo+ICAJRUNDX0VOQ1BBUjAwLAo+ICAJRUND X0VOQ0lSUV9FTiwKPiBAQCAtMTE1LDYgKzEyMywxNSBAQCBzdGF0aWMgaW50IG10NzYyMl9lY2Nf cmVnc1tdID0gewo+ICAJW0VDQ19ERUNJUlFfU1RBXSA9ICAgICAgMHgxNDQsCj4gIH07Cj4gIAo+ ICtzdGF0aWMgaW50IG10Nzk4Nl9lY2NfcmVnc1tdID0gewo+ICsJW0VDQ19FTkNQQVIwMF0gPSAg ICAgICAgMHgzMDAsCj4gKwlbRUNDX0VOQ0lSUV9FTl0gPSAgICAgICAweDgwLAo+ICsJW0VDQ19F TkNJUlFfU1RBXSA9ICAgICAgMHg4NCwKPiArCVtFQ0NfREVDRE9ORV0gPSAgICAgICAgIDB4MTI0 LAo+ICsJW0VDQ19ERUNJUlFfRU5dID0gICAgICAgMHgyMDAsCj4gKwlbRUNDX0RFQ0lSUV9TVEFd ID0gICAgICAweDIwNCwKPiArfTsKPiArCj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBtdGtfZWNjX3dh aXRfaWRsZShzdHJ1Y3QgbXRrX2VjYyAqZWNjLAo+ICAJCQkJICAgICBlbnVtIG10a19lY2Nfb3Bl cmF0aW9uIG9wKQo+ICB7Cj4gQEAgLTQ0Nyw2ICs0NjQsNDY0IEBAIHVuc2lnbmVkIGludCBtdGtf ZWNjX2dldF9wYXJpdHlfYml0cyhzdHJ1Y3QgbXRrX2VjYyAqZWNjKQo+ICB9Cj4gIEVYUE9SVF9T WU1CT0wobXRrX2VjY19nZXRfcGFyaXR5X2JpdHMpOwo+ICAKPiArc3RhdGljIGlubGluZSBpbnQg ZGF0YV9vZmYoc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kLCBpbnQgaSkKClBsZWFzZSBhbHdheXMg cHJlZml4IGFsbCB5b3VyIGhlbHBlcnMgd2l0aCBtdGtfZWNjXwoKPiArewo+ICsJaW50IGVjY3Np emUgPSBuYW5kLT5lY2MuY3R4LmNvbmYuc3RlcF9zaXplOwo+ICsKPiArCXJldHVybiBpICogZWNj c2l6ZTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgZmRtX29mZihzdHJ1Y3QgbmFuZF9k ZXZpY2UgKm5hbmQsIGludCBpKQoKV2hhdCBpcyBmZG0/Cgo+ICt7Cj4gKwlzdHJ1Y3QgbXRrX2Vj Y19lbmdpbmUgKmVuZyA9IG5hbmQtPmVjYy5jdHgucHJpdjsKPiArCWludCBwb2k7Cj4gKwo+ICsJ aWYgKGkgPCBlbmctPmJhZF9tYXJrLnNlYykKCnNlYyBkb2VzIG5vdCBtZWFuIGFueXRoaW5nIHRv IG1lCgo+ICsJCXBvaSA9IChpICsgMSkgKiBlbmctPmZkbV9zaXplOwo+ICsJZWxzZSBpZiAoaSA9 PSBlbmctPmJhZF9tYXJrLnNlYykKPiArCQlwb2kgPSAwOwo+ICsJZWxzZQo+ICsJCXBvaSA9IGkg KiBlbmctPmZkbV9zaXplOwo+ICsKPiArCXJldHVybiBwb2k7Cj4gK30KPiArCj4gK3N0YXRpYyBp bmxpbmUgaW50IG10a19lY2NfZGF0YV9sZW4oc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kKQo+ICt7 Cj4gKwlzdHJ1Y3QgbXRrX2VjY19lbmdpbmUgKmVuZyA9IG5hbmQtPmVjYy5jdHgucHJpdjsKPiAr CWludCBlY2NzaXplID0gbmFuZC0+ZWNjLmN0eC5jb25mLnN0ZXBfc2l6ZTsKPiArCWludCBlY2Ni eXRlcyA9IGVuZy0+b29iX2VjYzsKPiArCj4gKwlyZXR1cm4gZWNjc2l6ZSArIGVuZy0+ZmRtX3Np emUgKyBlY2NieXRlczsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB1OCAqbXRrX2VjY19zZWNf cHRyKHN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCwgIGludCBpKQo+ICt7Cj4gKwlzdHJ1Y3QgbXRr X2VjY19lbmdpbmUgKmVuZyA9IG5hbmQtPmVjYy5jdHgucHJpdjsKPiArCj4gKwlyZXR1cm4gZW5n LT5wYWdlX2J1ZiArIGkgKiBtdGtfZWNjX2RhdGFfbGVuKG5hbmQpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW5saW5lIHU4ICptdGtfZWNjX2ZkbV9wdHIoc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kLCBp bnQgaSkKPiArewo+ICsJc3RydWN0IG10a19lY2NfZW5naW5lICplbmcgPSBuYW5kLT5lY2MuY3R4 LnByaXY7Cj4gKwlpbnQgZWNjc2l6ZSA9IG5hbmQtPmVjYy5jdHguY29uZi5zdGVwX3NpemU7Cj4g Kwo+ICsJcmV0dXJuIGVuZy0+cGFnZV9idWYgKyBpICogbXRrX2VjY19kYXRhX2xlbihuYW5kKSAr IGVjY3NpemU7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG10a19lY2Nfbm9fYmFkX21hcmtfc3dh cChzdHJ1Y3QgbmFuZF9kZXZpY2UgKmEsIHU4ICpiLAo+ICsJCQkJCQkJdTggKmMpCj4gK3sKPiAr CS8qIG5vcCAqLwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtdGtfZWNjX2JhZF9tYXJrX3N3YXAo c3RydWN0IG5hbmRfZGV2aWNlICpuYW5kLCB1OCAqZGF0YWJ1ZiwKPiArCQkJCQkJCXU4ICpvb2Ji dWYpCj4gK3sKPiArCXN0cnVjdCBtdGtfZWNjX2VuZ2luZSAqZW5nID0gbmFuZC0+ZWNjLmN0eC5w cml2Owo+ICsJaW50IHN0ZXBfc2l6ZSA9IG5hbmQtPmVjYy5jdHguY29uZi5zdGVwX3NpemU7Cj4g Kwl1MzIgYmFkX3BvcyA9IGVuZy0+YmFkX21hcmsucG9zOwo+ICsKPiArCWJhZF9wb3MgKz0gZW5n LT5iYWRfbWFyay5zZWMgKiBzdGVwX3NpemU7Cj4gKwo+ICsJc3dhcChvb2JidWZbMF0sIGRhdGFi dWZbYmFkX3Bvc10pOwoKcGxlYXNlIGNoYW5nZSAiYmFkIiBvciAiYmFkIG1hcmsiIGJ5ICJiYm0i IHdoaWNoIGlzIHRoZSBuYW1lIHVzZWQKZXZlcnl3aGVyZSBlbHNlIGluIHRoaXMgc3Vic3lzdGVt LgoKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRrX2VjY19zZXRfYmFkX21hcmtfY3RsKHN0cnVj dCBtdGtfZWNjX2JhZF9tYXJrX2N0bCAqYm1fY3RsLAo+ICsJCQkJICAgICBzdHJ1Y3QgbXRkX2lu Zm8gKm10ZCkKPiArewo+ICsJc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kID0gbXRkX3RvX25hbmRk ZXYobXRkKTsKPiArCj4gKwlpZiAobXRkLT53cml0ZXNpemUgPT0gNTEyKSB7Cj4gKwkJYm1fY3Rs LT5ibV9zd2FwID0gbXRrX2VjY19ub19iYWRfbWFya19zd2FwOwo+ICsJfSBlbHNlIHsKPiArCQli bV9jdGwtPmJtX3N3YXAgPSBtdGtfZWNjX2JhZF9tYXJrX3N3YXA7Cj4gKwkJYm1fY3RsLT5zZWMg PSBtdGQtPndyaXRlc2l6ZSAvIG10a19lY2NfZGF0YV9sZW4obmFuZCk7Cj4gKwkJYm1fY3RsLT5w b3MgPSBtdGQtPndyaXRlc2l6ZSAlIG10a19lY2NfZGF0YV9sZW4obmFuZCk7CgpzZWM/IHBvcz8g d2hhdCBkb2VzIHRoaXMgbWVhbj8KCj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXRrX2Vj Y19vb2JsYXlvdXRfZnJlZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IHNlY3Rpb24sCj4gKwkJ CQkgIHN0cnVjdCBtdGRfb29iX3JlZ2lvbiAqb29iX3JlZ2lvbikKPiArewo+ICsJc3RydWN0IG5h bmRfZGV2aWNlICpuYW5kID0gbXRkX3RvX25hbmRkZXYobXRkKTsKPiArCXN0cnVjdCBtdGtfZWNj X2VuZ2luZSAqZW5nID0gbmFuZC0+ZWNjLmN0eC5wcml2Owo+ICsJc3RydWN0IG5hbmRfZWNjX3By b3BzICpjb25mID0gJm5hbmQtPmVjYy5jdHguY29uZjsKPiArCXUzMiBlY2NzdGVwcywgYmJtX2J5 dGVzID0gMDsKPiArCj4gKwllY2NzdGVwcyA9IG10ZC0+d3JpdGVzaXplIC8gY29uZi0+c3RlcF9z aXplOwo+ICsKPiArCWlmIChzZWN0aW9uID49IGVjY3N0ZXBzKQo+ICsJCXJldHVybiAtRVJBTkdF Owo+ICsKPiArCS8qIHJlc2VydmUgMSBieXRlIGZvciBiYWQgbWFyayBvbmx5IGZvciBzZWN0aW9u IDAgKi8KPiArCWlmIChzZWN0aW9uID09IDApCj4gKwkJYmJtX2J5dGVzID0gMTsKPiArCj4gKwlv b2JfcmVnaW9uLT5sZW5ndGggPSBlbmctPmZkbV9zaXplIC0gYmJtX2J5dGVzOwo+ICsJb29iX3Jl Z2lvbi0+b2Zmc2V0ID0gc2VjdGlvbiAqIGVuZy0+ZmRtX3NpemUgKyBiYm1fYnl0ZXM7Cj4gKwo+ ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXRrX2VjY19vb2JsYXlvdXRfZWNj KHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgc2VjdGlvbiwKPiArCQkJCSBzdHJ1Y3QgbXRkX29v Yl9yZWdpb24gKm9vYl9yZWdpb24pCj4gK3sKPiArCXN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCA9 IG10ZF90b19uYW5kZGV2KG10ZCk7Cj4gKwlzdHJ1Y3QgbXRrX2VjY19lbmdpbmUgKmVuZyA9IG5h bmQtPmVjYy5jdHgucHJpdjsKPiArCj4gKwlpZiAoc2VjdGlvbikKPiArCQlyZXR1cm4gLUVSQU5H RTsKPiArCj4gKwlvb2JfcmVnaW9uLT5vZmZzZXQgPSBlbmctPmZkbV9zaXplICogZW5nLT5uc3Rl cHM7Cj4gKwlvb2JfcmVnaW9uLT5sZW5ndGggPSBtdGQtPm9vYnNpemUgLSBvb2JfcmVnaW9uLT5v ZmZzZXQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg bXRkX29vYmxheW91dF9vcHMgbXRrX2VjY19vb2JsYXlvdXRfb3BzID0gewo+ICsJLmZyZWUgPSBt dGtfZWNjX29vYmxheW91dF9mcmVlLAo+ICsJLmVjYyA9IG10a19lY2Nfb29ibGF5b3V0X2VjYywK PiArfTsKPiArCj4gK2NvbnN0IHN0cnVjdCBtdGRfb29ibGF5b3V0X29wcyAqbXRrX2VjY19nZXRf b29ibGF5b3V0KHZvaWQpCj4gK3sKPiArCXJldHVybiAmbXRrX2VjY19vb2JsYXlvdXRfb3BzOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRldmljZSAqbXRrX2VjY19nZXRfZW5naW5lX2Rldihz dHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmVjY3Bk ZXY7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOwo+ICsKPiArCS8qCj4gKwkgKiBUaGUgZGV2 aWNlIG5vZGUgaXMgb25seSB0aGUgaG9zdCBjb250cm9sbGVyLAo+ICsJICogbm90IHRoZSBhY3R1 YWwgRUNDIGVuZ2luZSB3aGVuIHBpcGVsaW5lZCBjYXNlLgo+ICsJICovCj4gKwlucCA9IG9mX3Bh cnNlX3BoYW5kbGUoZGV2LT5vZl9ub2RlLCAibmFuZC1lY2MtZW5naW5lIiwgMCk7Cj4gKwlpZiAo IW5wKQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiArCWVjY3BkZXYgPSBvZl9maW5kX2RldmljZV9i eV9ub2RlKG5wKTsKPiArCWlmICghZWNjcGRldikgewo+ICsJCW9mX25vZGVfcHV0KG5wKTsKPiAr CQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCj4gKwlwbGF0Zm9ybV9kZXZpY2VfcHV0KGVjY3BkZXYp Owo+ICsJb2Zfbm9kZV9wdXQobnApOwo+ICsKPiArCXJldHVybiAmZWNjcGRldi0+ZGV2Owo+ICt9 Cj4gKwo+ICsvKgo+ICsgKiBtdGtfZWNjX2RhdGFfZm9ybWF0KCkgLSBDb3ZlcnQgZGF0YSBiZXR3 ZWVuIGVjYyBmb3JtYXQgYW5kIGRhdGEvb29iIGJ1ZgoKQ29udmVydAoKPiArICoKPiArICogTWVk aWF0ZWsgSFcgRUNDIGVuZ2luZSBvcmdhbml6ZSBkYXRhL29vYiBmcmVlL29vYiBlY2MgYnkgc2Vj dG9yLAo+ICsgKiB0aGUgZGF0YSBmb3JtYXQgZm9yIG9uZSBwYWdlIGFzIGJlbGxvdzoKPiArICog fHwgICAgICAgICAgc2VjdG9yIDAgICAgICAgICB8fCAgICAgICAgICBzZWN0b3IgMSAgICAgICAg IHx8IC4uLgo+ICsgKiB8fCBkYXRhIHwgICBmZG0gICAgfCBvb2IgZWNjIHx8IGRhdGEgfHwgICBm ZG0gICB8IG9vYiBlY2MgfHwgLi4uCj4gKyAqCj4gKyAqIFRlcmVmb3JlLCBpdGBzIG5lY2Vzc2Fy eSB0byBjb3ZlcnQgZGF0YSB3aGVuIHJlYWQvd3JpdGUgaW4gTVREX09QU19SQVcuCgppdCBpcyAu Li4gY29udmVydCAuLi4gcmVhZGluZy93cml0aW5nIGluIHJhdyBtb2RlLgoKPiArICogVGhlc2Ug ZGF0YSBpbmNsdWRlIGJhZCBtYXJrLCBzZWN0b3IgZGF0YSwgZmRtIGRhdGEgYW5kIG9vYiBlY2Mu Cj4gKyAqLwo+ICtzdGF0aWMgdm9pZCBtdGtfZWNjX2RhdGFfZm9ybWF0KHN0cnVjdCBuYW5kX2Rl dmljZSAqbmFuZCwKPiArCQkJdTggKmRhdGFidWYsIHU4ICpvb2JidWYsIGJvb2wgd3JpdGUpCj4g K3sKPiArCXN0cnVjdCBtdGtfZWNjX2VuZ2luZSAqZW5nID0gbmFuZC0+ZWNjLmN0eC5wcml2Owo+ ICsJaW50IHN0ZXBfc2l6ZSA9IG5hbmQtPmVjYy5jdHguY29uZi5zdGVwX3NpemU7Cj4gKwlpbnQg aTsKPiArCj4gKwlpZiAod3JpdGUpIHsKPiArCQlmb3IgKGkgPSAwOyBpIDwgZW5nLT5uc3RlcHM7 IGkrKykgewo+ICsJCQlpZiAoaSA9PSBlbmctPmJhZF9tYXJrLnNlYykKPiArCQkJCWVuZy0+YmFk X21hcmsuYm1fc3dhcChuYW5kLAo+ICsJCQkJCQlkYXRhYnVmLCBvb2JidWYpOwo+ICsJCQltZW1j cHkobXRrX2VjY19zZWNfcHRyKG5hbmQsIGkpLAo+ICsJCQkJICAgZGF0YWJ1ZiArIGRhdGFfb2Zm KG5hbmQsIGkpLCBzdGVwX3NpemUpOwo+ICsKPiArCQkJbWVtY3B5KG10a19lY2NfZmRtX3B0cihu YW5kLCBpKSwKPiArCQkJCSAgIG9vYmJ1ZiArIGZkbV9vZmYobmFuZCwgaSksCj4gKwkJCQkgICBl bmctPmZkbV9zaXplKTsKPiArCj4gKwkJCW1lbWNweShtdGtfZWNjX2ZkbV9wdHIobmFuZCwgaSkg KyBlbmctPmZkbV9zaXplLAo+ICsJCQkJICAgb29iYnVmICsgZW5nLT5mZG1fc2l6ZSAqIGVuZy0+ bnN0ZXBzICsKPiArCQkJCSAgIGkgKiBlbmctPm9vYl9lY2MsCj4gKwkJCQkgICBlbmctPm9vYl9l Y2MpOwo+ICsKPiArCQkJLyogc3dhcCBiYWNrIHdoZW4gd3JpdGUgKi8KPiArCQkJaWYgKGkgPT0g ZW5nLT5iYWRfbWFyay5zZWMpCj4gKwkJCQllbmctPmJhZF9tYXJrLmJtX3N3YXAobmFuZCwKPiAr CQkJCQkJZGF0YWJ1Ziwgb29iYnVmKTsKPiArCQl9Cj4gKwl9IGVsc2Ugewo+ICsJCWZvciAoaSA9 IDA7IGkgPCBlbmctPm5zdGVwczsgaSsrKSB7Cj4gKwkJCW1lbWNweShkYXRhYnVmICsgZGF0YV9v ZmYobmFuZCwgaSksCj4gKwkJCQkgICBtdGtfZWNjX3NlY19wdHIobmFuZCwgaSksIHN0ZXBfc2l6 ZSk7Cj4gKwo+ICsJCQltZW1jcHkob29iYnVmICsgZmRtX29mZihuYW5kLCBpKSwKPiArCQkJCSAg IG10a19lY2Nfc2VjX3B0cihuYW5kLCBpKSArIHN0ZXBfc2l6ZSwKPiArCQkJCSAgIGVuZy0+ZmRt X3NpemUpOwo+ICsKPiArCQkJbWVtY3B5KG9vYmJ1ZiArIGVuZy0+ZmRtX3NpemUgKiBlbmctPm5z dGVwcyArCj4gKwkJCQkgICBpICogZW5nLT5vb2JfZWNjLAo+ICsJCQkJICAgbXRrX2VjY19zZWNf cHRyKG5hbmQsIGkpICsgc3RlcF9zaXplCj4gKwkJCQkgICArIGVuZy0+ZmRtX3NpemUsCj4gKwkJ CQkgICBlbmctPm9vYl9lY2MpOwo+ICsKPiArCQkJaWYgKGkgPT0gZW5nLT5iYWRfbWFyay5zZWMp Cj4gKwkJCQllbmctPmJhZF9tYXJrLmJtX3N3YXAobmFuZCwKPiArCQkJCQkJZGF0YWJ1Ziwgb29i YnVmKTsKPiArCQl9Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG10a19lY2NfZmRtX3No aWZ0KHN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCwKPiArCQkJCXU4ICpkc3RfYnVmLCB1OCAqc3Jj X2J1ZikKPiArewo+ICsJc3RydWN0IG10a19lY2NfZW5naW5lICplbmcgPSBuYW5kLT5lY2MuY3R4 LnByaXY7Cj4gKwl1OCAqcG9pOwo+ICsJaW50IGk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGVu Zy0+bnN0ZXBzOyBpKyspIHsKPiArCQlpZiAoaSA8IGVuZy0+YmFkX21hcmsuc2VjKQo+ICsJCQlw b2kgPSBzcmNfYnVmICsgKGkgKyAxKSAqIGVuZy0+ZmRtX3NpemU7Cj4gKwkJZWxzZSBpZiAoaSA9 PSBlbmctPmJhZF9tYXJrLnNlYykKPiArCQkJcG9pID0gc3JjX2J1ZjsKPiArCQllbHNlCj4gKwkJ CXBvaSA9IHNyY19idWYgKyBpICogZW5nLT5mZG1fc2l6ZTsKPiArCj4gKwkJbWVtY3B5KGRzdF9i dWYgKyBpICogZW5nLT5mZG1fc2l6ZSwgcG9pLCBlbmctPmZkbV9zaXplKTsKPiArCX0KPiArfQo+ ICsKPiAraW50IG10a19lY2NfcHJlcGFyZV9pb19yZXFfcGlwZWxpbmVkKHN0cnVjdCBuYW5kX2Rl dmljZSAqbmFuZCwKPiArCQkJCQkgIHN0cnVjdCBuYW5kX3BhZ2VfaW9fcmVxICpyZXEpCj4gK3sK PiArCXN0cnVjdCBtdGtfZWNjX2VuZ2luZSAqZW5nID0gbmFuZC0+ZWNjLmN0eC5wcml2Owo+ICsJ c3RydWN0IG10ZF9pbmZvICptdGQgPSBuYW5kZGV2X3RvX210ZChuYW5kKTsKPiArCXU4ICpidWYg PSBlbmctPnBhZ2VfYnVmOwo+ICsKPiArCW5hbmRfZWNjX3R3ZWFrX3JlcSgmZW5nLT5yZXFfY3R4 LCByZXEpOwo+ICsKPiArCWlmIChyZXEtPm1vZGUgPT0gTVREX09QU19SQVcpIHsKPiArCQlpZiAo cmVxLT50eXBlID09IE5BTkRfUEFHRV9XUklURSkgewo+ICsJCQkvKiBjaGFuZ2UgZGF0YS9vb2Ig YnVmIHRvIE1USyBIVyBFQ0MgZGF0YSBmb3JtYXQgKi8KPiArCQkJbXRrX2VjY19kYXRhX2Zvcm1h dChuYW5kLCByZXEtPmRhdGFidWYuaW4sCj4gKwkJCQkJcmVxLT5vb2JidWYuaW4sIHRydWUpOwo+ ICsJCQlyZXEtPmRhdGFidWYub3V0ID0gYnVmOwo+ICsJCQlyZXEtPm9vYmJ1Zi5vdXQgPSBidWYg KyBuYW5kLT5tZW1vcmcucGFnZXNpemU7Cj4gKwkJfQo+ICsJfSBlbHNlIHsKPiArCQllbmctPmVj Y19jZmcub3AgPSBFQ0NfREVDT0RFOwo+ICsJCWlmIChyZXEtPnR5cGUgPT0gTkFORF9QQUdFX1dS SVRFKSB7Cj4gKwkJCW1lbXNldChlbmctPm9vYl9idWYsIDB4ZmYsIG5hbmQtPm1lbW9yZy5vb2Jz aXplKTsKPiArCQkJbXRkX29vYmxheW91dF9zZXRfZGF0YWJ5dGVzKG10ZCwgcmVxLT5vb2JidWYu b3V0LAo+ICsJCQkJCQkJZW5nLT5vb2JfYnVmLAo+ICsJCQkJCQkJcmVxLT5vb2JvZmZzLAo+ICsJ CQkJCQkJbXRkLT5vb2JhdmFpbCk7Cj4gKwkJCWVuZy0+YmFkX21hcmsuYm1fc3dhcChuYW5kLAo+ ICsJCQkJCQlyZXEtPmRhdGFidWYuaW4sIGVuZy0+b29iX2J1Zik7Cj4gKwkJCW10a19lY2NfZmRt X3NoaWZ0KG5hbmQsIHJlcS0+b29iYnVmLmluLAo+ICsJCQkJCQllbmctPm9vYl9idWYpOwo+ICsK PiArCQkJZW5nLT5lY2NfY2ZnLm9wID0gRUNDX0VOQ09ERTsKPiArCQl9Cj4gKwo+ICsJCWVuZy0+ ZWNjX2NmZy5tb2RlID0gRUNDX05GSV9NT0RFOwo+ICsJCWVuZy0+ZWNjX2NmZy5zZWN0b3JzID0g ZW5nLT5uc3RlcHM7Cj4gKwkJcmV0dXJuIG10a19lY2NfZW5hYmxlKGVuZy0+ZWNjLCAmZW5nLT5l Y2NfY2ZnKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IG10a19lY2Nf ZmluaXNoX2lvX3JlcV9waXBlbGluZWQoc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kLAo+ICsJCQkJ CSAgc3RydWN0IG5hbmRfcGFnZV9pb19yZXEgKnJlcSkKPiArewo+ICsJc3RydWN0IG10a19lY2Nf ZW5naW5lICplbmcgPSBuYW5kLT5lY2MuY3R4LnByaXY7Cj4gKwlzdHJ1Y3QgbXRkX2luZm8gKm10 ZCA9IG5hbmRkZXZfdG9fbXRkKG5hbmQpOwo+ICsJc3RydWN0IG10a19lY2Nfc3RhdHMgc3RhdHM7 Cj4gKwl1OCAqYnVmID0gZW5nLT5wYWdlX2J1ZjsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKHJl cS0+dHlwZSA9PSBOQU5EX1BBR0VfV1JJVEUpIHsKPiArCQlpZiAocmVxLT5tb2RlICE9IE1URF9P UFNfUkFXKSB7Cj4gKwkJCW10a19lY2NfZGlzYWJsZShlbmctPmVjYyk7Cj4gKwkJCW10a19lY2Nf ZmRtX3NoaWZ0KG5hbmQsIGVuZy0+b29iX2J1ZiwKPiArCQkJCQlyZXEtPm9vYmJ1Zi5pbik7Cj4g KwkJCWVuZy0+YmFkX21hcmsuYm1fc3dhcChuYW5kLAo+ICsJCQkJCXJlcS0+ZGF0YWJ1Zi5pbiwg ZW5nLT5vb2JfYnVmKTsKPiArCQl9Cj4gKwkJbmFuZF9lY2NfcmVzdG9yZV9yZXEoJmVuZy0+cmVx X2N0eCwgcmVxKTsKPiArCj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJaWYgKHJlcS0+bW9k ZSA9PSBNVERfT1BTX1JBVykgewo+ICsJCW1lbWNweShidWYsIHJlcS0+ZGF0YWJ1Zi5pbiwKPiAr CQkJICAgbmFuZC0+bWVtb3JnLnBhZ2VzaXplKTsKPiArCQltZW1jcHkoYnVmICsgbmFuZC0+bWVt b3JnLnBhZ2VzaXplLAo+ICsJCQkgICByZXEtPm9vYmJ1Zi5pbiwgbmFuZC0+bWVtb3JnLm9vYnNp emUpOwo+ICsKPiArCQkvKiBjaGFuZ2UgTVRLIEhXIEVDQyBkYXRhIGZvcm1hdCB0byBkYXRhL29v YiBidWYgKi8KPiArCQltdGtfZWNjX2RhdGFfZm9ybWF0KG5hbmQsIHJlcS0+ZGF0YWJ1Zi5pbiwK PiArCQkJCXJlcS0+b29iYnVmLmluLCBmYWxzZSk7Cj4gKwkJbmFuZF9lY2NfcmVzdG9yZV9yZXEo JmVuZy0+cmVxX2N0eCwgcmVxKTsKPiArCj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJcmV0 ID0gbXRrX2VjY193YWl0X2RvbmUoZW5nLT5lY2MsIEVDQ19ERUNPREUpOwo+ICsJaWYgKHJldCkK PiArCQlyZXR1cm4gLUVUSU1FRE9VVDsKCiBZb3Ugc2hvdWxkIGdvIHRvIGFuIGVycm9yIHBhdGgg YW5kIGRpc2FibGUgdGhlIGVuZ2luZS4KCj4gKwo+ICsJaWYgKGVuZy0+cmVhZF9lbXB0eSkgewo+ ICsJCW1lbXNldChyZXEtPmRhdGFidWYuaW4sIDB4ZmYsIG5hbmQtPm1lbW9yZy5wYWdlc2l6ZSk7 Cj4gKwkJbWVtc2V0KHJlcS0+b29iYnVmLmluLCAweGZmLCBuYW5kLT5tZW1vcmcub29ic2l6ZSk7 Cj4gKwo+ICsJCXJldCA9IDA7Cj4gKwl9IGVsc2Ugewo+ICsJCW10a19lY2NfZ2V0X3N0YXRzKGVu Zy0+ZWNjLCAmc3RhdHMsIGVuZy0+bnN0ZXBzKTsKPiArCQltdGQtPmVjY19zdGF0cy5jb3JyZWN0 ZWQgKz0gc3RhdHMuY29ycmVjdGVkOwo+ICsJCW10ZC0+ZWNjX3N0YXRzLmZhaWxlZCArPSBzdGF0 cy5mYWlsZWQ7Cj4gKwo+ICsJCS8qCj4gKwkJICogUmV0dXJuIC1FQkFETVNHIHdoZW4gZXhpdCB1 bmNvcnJlY3QgZWNjIGVycm9yLgo+ICsJCSAqIE90aGVyd2lzZSwgcmV0dXJuIHRoZSBiaXRmbGlw cy4KPiArCQkgKi8KPiArCQlpZiAoc3RhdHMuZmFpbGVkKQo+ICsJCQlyZXQgPSAtRUJBRE1TRzsK PiArCQllbHNlCj4gKwkJCXJldCA9IHN0YXRzLmJpdGZsaXBzOwo+ICsKPiArCQltdGtfZWNjX2Zk bV9zaGlmdChuYW5kLCBlbmctPm9vYl9idWYsIHJlcS0+b29iYnVmLmluKTsKPiArCQllbmctPmJh ZF9tYXJrLmJtX3N3YXAobmFuZCwKPiArCQkJCQlyZXEtPmRhdGFidWYuaW4sIGVuZy0+b29iX2J1 Zik7Cj4gKwkJbXRkX29vYmxheW91dF9nZXRfZGF0YWJ5dGVzKG10ZCwgcmVxLT5vb2JidWYuaW4s Cj4gKwkJCWVuZy0+b29iX2J1ZiwKPiArCQkJMCwgbXRkLT5vb2JhdmFpbCk7CgpBbGlnbm1lbnQg bG9va3Mgd3JvbmcgKHBsZWFzZSBjaGVjayB0aGUgZW50aXJlIGRyaXZlcikuCgo+ICsJfQo+ICsK PiArCW10a19lY2NfZGlzYWJsZShlbmctPmVjYyk7Cj4gKwluYW5kX2VjY19yZXN0b3JlX3JlcSgm ZW5nLT5yZXFfY3R4LCByZXEpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK2ludCBt dGtfZWNjX2luaXRfY3R4X3BpcGVsaW5lZChzdHJ1Y3QgbmFuZF9kZXZpY2UgKm5hbmQpCj4gK3sK PiArCXN0cnVjdCBuYW5kX2VjY19wcm9wcyAqY29uZiA9ICZuYW5kLT5lY2MuY3R4LmNvbmY7Cj4g KwlzdHJ1Y3QgbXRrX2VjY19lbmdpbmUgKmVuZyA9IG5hbmQtPmVjYy5jdHgucHJpdjsKPiArCXN0 cnVjdCBtdGRfaW5mbyAqbXRkID0gbmFuZGRldl90b19tdGQobmFuZCk7Cj4gKwlzdHJ1Y3QgZGV2 aWNlICpkZXY7Cj4gKwlpbnQgZnJlZSwgcmV0Owo+ICsKPiArCS8qCj4gKwkgKiBJbiB0aGUgY2Fz ZSBvZiBhIHBpcGVsaW5lZCBlbmdpbmUsIHRoZSBkZXZpY2UgcmVnaXN0ZXJpbmcgdGhlIEVDQwo+ ICsJICogZW5naW5lIGlzIG5vdCB0aGUgYWN0dWFsIEVDQyBlbmdpbmUgZGV2aWNlIGJ1dCB0aGUg aG9zdCBjb250cm9sbGVyLgo+ICsJICovCj4gKwlkZXYgPSBtdGtfZWNjX2dldF9lbmdpbmVfZGV2 KG5hbmQtPmVjYy5lbmdpbmUtPmRldik7Cj4gKwlpZiAoIWRldikgewo+ICsJCXJldCA9IC1FSU5W QUw7Cj4gKwkJZ290byBmcmVlX2VuZ2luZTsKPiArCX0KPiArCj4gKwllbmctPmVjYyA9IGRldl9n ZXRfZHJ2ZGF0YShkZXYpOwo+ICsKPiArCS8qIGNhbGN1bGF0ZSBvb2IgZnJlZSBieXRlcyBleGNl cHQgZWNjIHBhcml0eSBkYXRhICovCgpQbGVhc2UgdXNlIHVwcGVyIGNhc2UgZm9yIGFjcm9ueW1z OiBPT0IsIEVDQywgTkFORCwgTVRELCBldGMKCj4gKwlmcmVlID0gKGNvbmYtPnN0cmVuZ3RoICog bXRrX2VjY19nZXRfcGFyaXR5X2JpdHMoZW5nLT5lY2MpCj4gKwkJKyA3KSA+PiAzOwo+ICsJZnJl ZSA9IGVuZy0+b29iX3Blcl9zZWN0b3IgLSBmcmVlOwo+ICsKPiArCS8qCj4gKwkgKiBlbmhhbmNl IGVjYyBzdHJlbmd0aCBpZiBvb2IgbGVmdCBpcyBiaWdnZXIgdGhhbiBtYXggRkRNIHNpemUKPiAr CSAqIG9yIHJlZHVjZSBlY2Mgc3RyZW5ndGggaWYgb29iIHNpemUgaXMgbm90IGVub3VnaCBmb3Ig ZWNjCj4gKwkgKiBwYXJpdHkgZGF0YS4KPiArCSAqLwo+ICsJaWYgKGZyZWUgPiBFQ0NfRkRNX01B WF9TSVpFKQo+ICsJCWVuZy0+b29iX2VjYyA9IGVuZy0+b29iX3Blcl9zZWN0b3IgLSBFQ0NfRkRN X01BWF9TSVpFOwo+ICsJZWxzZSBpZiAoZnJlZSA8IDApCj4gKwkJZW5nLT5vb2JfZWNjID0gZW5n LT5vb2JfcGVyX3NlY3RvciAtIEVDQ19GRE1fTUlOX1NJWkU7Cj4gKwo+ICsJLyogY2FsY3VsYXRl IGFuZCBhZGp1c3QgZWNjIHN0cmVudGggYmFzZWQgb24gb29iIGVjYyBieXRlcyAqLwo+ICsJY29u Zi0+c3RyZW5ndGggPSAoZW5nLT5vb2JfZWNjIDw8IDMpIC8KPiArCQkJCSBtdGtfZWNjX2dldF9w YXJpdHlfYml0cyhlbmctPmVjYyk7Cj4gKwltdGtfZWNjX2FkanVzdF9zdHJlbmd0aChlbmctPmVj YywgJmNvbmYtPnN0cmVuZ3RoKTsKPiArCj4gKwllbmctPm9vYl9lY2MgPSBESVZfUk9VTkRfVVAo Y29uZi0+c3RyZW5ndGggKgo+ICsJCQkJIG10a19lY2NfZ2V0X3Bhcml0eV9iaXRzKGVuZy0+ZWNj KSwgOCk7Cj4gKwo+ICsJZW5nLT5mZG1fc2l6ZSA9IGVuZy0+b29iX3Blcl9zZWN0b3IgLSBlbmct Pm9vYl9lY2M7Cj4gKwlpZiAoZW5nLT5mZG1fc2l6ZSA+IEVDQ19GRE1fTUFYX1NJWkUpCj4gKwkJ ZW5nLT5mZG1fc2l6ZSA9IEVDQ19GRE1fTUFYX1NJWkU7Cj4gKwo+ICsJZW5nLT5mZG1fZWNjX3Np emUgPSBFQ0NfRkRNX01JTl9TSVpFOwo+ICsKPiArCWVuZy0+b29iX2VjYyA9IGVuZy0+b29iX3Bl cl9zZWN0b3IgLSBlbmctPmZkbV9zaXplOwo+ICsKPiArCWlmICghbXRkLT5vb2JsYXlvdXQpCj4g KwkJbXRkX3NldF9vb2JsYXlvdXQobXRkLCBtdGtfZWNjX2dldF9vb2JsYXlvdXQoKSk7Cj4gKwo+ ICsJcmV0ID0gbmFuZF9lY2NfaW5pdF9yZXFfdHdlYWtpbmcoJmVuZy0+cmVxX2N0eCwgbmFuZCk7 Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZnJlZV9lbmdpbmU7Cj4gKwo+ICsJZW5nLT5vb2JfYnVm ID0ga3phbGxvYyhtdGQtPm9vYnNpemUsIEdGUF9LRVJORUwpOwo+ICsJZW5nLT5wYWdlX2J1ZiA9 Cj4gKwkJa3phbGxvYyhtdGQtPndyaXRlc2l6ZSArIG10ZC0+b29ic2l6ZSwgR0ZQX0tFUk5FTCk7 Cj4gKwlpZiAoIWVuZy0+b29iX2J1ZiB8fCAhZW5nLT5wYWdlX2J1Zikgewo+ICsJCXJldCA9IC1F Tk9NRU07Cj4gKwkJZ290byBmcmVlX2J1ZnM7Cj4gKwl9Cj4gKwo+ICsJbXRrX2VjY19zZXRfYmFk X21hcmtfY3RsKCZlbmctPmJhZF9tYXJrLCBtdGQpOwo+ICsJZW5nLT5lY2NfY2ZnLnN0cmVuZ3Ro ID0gY29uZi0+c3RyZW5ndGg7Cj4gKwllbmctPmVjY19jZmcubGVuID0gY29uZi0+c3RlcF9zaXpl ICsgZW5nLT5mZG1fZWNjX3NpemU7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtmcmVlX2J1ZnM6 Cj4gKwluYW5kX2VjY19jbGVhbnVwX3JlcV90d2Vha2luZygmZW5nLT5yZXFfY3R4KTsKPiArCWtm cmVlKGVuZy0+b29iX2J1Zik7Cj4gKwlrZnJlZShlbmctPnBhZ2VfYnVmKTsKPiArZnJlZV9lbmdp bmU6Cj4gKwlrZnJlZShlbmcpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3ZvaWQg bXRrX2VjY19jbGVhbnVwX2N0eF9waXBlbGluZWQoc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kKQo+ ICt7Cj4gKwlzdHJ1Y3QgbXRrX2VjY19lbmdpbmUgKmVuZyA9IG5hbmQtPmVjYy5jdHgucHJpdjsK PiArCj4gKwlpZiAoZW5nKSB7Cj4gKwkJbmFuZF9lY2NfY2xlYW51cF9yZXFfdHdlYWtpbmcoJmVu Zy0+cmVxX2N0eCk7Cj4gKwkJa2ZyZWUoZW5nLT5lY2MpOwo+ICsJCWtmcmVlKGVuZy0+b29iX2J1 Zik7Cj4gKwkJa2ZyZWUoZW5nLT5wYWdlX2J1Zik7Cj4gKwkJa2ZyZWUoZW5nKTsKPiArCX0KPiAr fQo+ICsKPiArLyoKPiArICogVGhlIG9uLWhvc3QgbXRrIEhXIEVDQyBlbmdpbmUgd29yayBhdCBw aXBlbGluZWQgc2l0dWF0aW9uLAo+ICsgKiB3aWxsIGJlIHJlZ2lzdGVyZWQgYnkgdGhlIGRyaXZl cnMgdGhhdCB3cmFwIGl0Lgo+ICsgKi8KPiArc3RhdGljIHN0cnVjdCBuYW5kX2VjY19lbmdpbmVf b3BzIG10a19lY2NfZW5naW5lX3BpcGVsaW5lZF9vcHMgPSB7Cj4gKwkuaW5pdF9jdHggPSBtdGtf ZWNjX2luaXRfY3R4X3BpcGVsaW5lZCwKPiArCS5jbGVhbnVwX2N0eCA9IG10a19lY2NfY2xlYW51 cF9jdHhfcGlwZWxpbmVkLAo+ICsJLnByZXBhcmVfaW9fcmVxID0gbXRrX2VjY19wcmVwYXJlX2lv X3JlcV9waXBlbGluZWQsCj4gKwkuZmluaXNoX2lvX3JlcSA9IG10a19lY2NfZmluaXNoX2lvX3Jl cV9waXBlbGluZWQsCj4gK307Cj4gKwo+ICtzdHJ1Y3QgbmFuZF9lY2NfZW5naW5lX29wcyAqbXRr X2VjY19nZXRfcGlwZWxpbmVkX29wcyh2b2lkKQo+ICt7Cj4gKwlyZXR1cm4gJm10a19lY2NfZW5n aW5lX3BpcGVsaW5lZF9vcHM7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChtdGtfZWNjX2dldF9waXBl bGluZWRfb3BzKTsKPiArCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2VjY19jYXBzIG10a19l Y2NfY2Fwc19tdDI3MDEgPSB7Cj4gIAkuZXJyX21hc2sgPSAweDNmLAo+ICAJLmVjY19zdHJlbmd0 aCA9IGVjY19zdHJlbmd0aF9tdDI3MDEsCj4gQEAgLTQ3Nyw2ICs5NTIsMTYgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBtdGtfZWNjX2NhcHMgbXRrX2VjY19jYXBzX210NzYyMiA9IHsKPiAgCS5wZ19p cnFfc2VsID0gMCwKPiAgfTsKPiAgCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2VjY19jYXBz IG10a19lY2NfY2Fwc19tdDc5ODYgPSB7Cj4gKwkuZXJyX21hc2sgPSAweDFmLAo+ICsJLmVjY19z dHJlbmd0aCA9IGVjY19zdHJlbmd0aF9tdDc5ODYsCj4gKwkuZWNjX3JlZ3MgPSBtdDc5ODZfZWNj X3JlZ3MsCj4gKwkubnVtX2VjY19zdHJlbmd0aCA9IDExLAo+ICsJLmVjY19tb2RlX3NoaWZ0ID0g NSwKPiArCS5wYXJpdHlfYml0cyA9IDE0LAo+ICsJLnBnX2lycV9zZWwgPSAxLAo+ICt9Owo+ICsK PiAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2VjY19kdF9tYXRjaFtdID0g ewo+ICAJewo+ICAJCS5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10MjcwMS1lY2MiLAo+IEBAIC00 ODcsNiArOTcyLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2VjY19k dF9tYXRjaFtdID0gewo+ICAJfSwgewo+ICAJCS5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10NzYy Mi1lY2MiLAo+ICAJCS5kYXRhID0gJm10a19lY2NfY2Fwc19tdDc2MjIsCj4gKwl9LCB7Cj4gKwkJ LmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ3OTg2LWVjYyIsCj4gKwkJLmRhdGEgPSAmbXRrX2Vj Y19jYXBzX210Nzk4NiwKCkhlcmUgeW91IGRvIHNvbWV0aGluZyB1bnJlbGF0ZWQsIHBsZWFzZSBz cGxpdC4KCj4gIAl9LAo+ICAJe30sCj4gIH07Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv bXRkL210a19lY2MuaCBiL2luY2x1ZGUvbGludXgvbXRkL210a19lY2MuaAo+IGluZGV4IDBlNDhj MzZlNmNhMC4uYTI4NjE4M2QxNmM0IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbGludXgvbXRkL210 a19lY2MuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvbXRkL210a19lY2MuaAo+IEBAIC0zMyw2ICsz MywzMSBAQCBzdHJ1Y3QgbXRrX2VjY19jb25maWcgewo+ICAJdTMyIGxlbjsKPiAgfTsKPiAgCj4g K3N0cnVjdCBtdGtfZWNjX2JhZF9tYXJrX2N0bCB7Cj4gKwl2b2lkICgqYm1fc3dhcCkoc3RydWN0 IG5hbmRfZGV2aWNlICosIHU4ICpkYXRhYnVmLCB1OCogb29iYnVmKTsKPiArCXUzMiBzZWM7Cj4g Kwl1MzIgcG9zOwo+ICt9Owo+ICsKPiArc3RydWN0IG10a19lY2NfZW5naW5lIHsKPiArCXN0cnVj dCBuYW5kX2VjY19yZXFfdHdlYWtfY3R4IHJlcV9jdHg7Cj4gKwo+ICsJdTMyIG9vYl9wZXJfc2Vj dG9yOwo+ICsJdTMyIG9vYl9lY2M7Cj4gKwl1MzIgZmRtX3NpemU7Cj4gKwl1MzIgZmRtX2VjY19z aXplOwo+ICsKPiArCWJvb2wgcmVhZF9lbXB0eTsKPiArCXUzMiBuc3RlcHM7Cj4gKwo+ICsJdTgg KnBhZ2VfYnVmOwo+ICsJdTggKm9vYl9idWY7Cj4gKwo+ICsJc3RydWN0IG10a19lY2MgKmVjYzsK PiArCXN0cnVjdCBtdGtfZWNjX2NvbmZpZyBlY2NfY2ZnOwo+ICsJc3RydWN0IG10a19lY2NfYmFk X21hcmtfY3RsIGJhZF9tYXJrOwo+ICt9Owo+ICsKPiAgaW50IG10a19lY2NfZW5jb2RlKHN0cnVj dCBtdGtfZWNjICosIHN0cnVjdCBtdGtfZWNjX2NvbmZpZyAqLCB1OCAqLCB1MzIpOwo+ICB2b2lk IG10a19lY2NfZ2V0X3N0YXRzKHN0cnVjdCBtdGtfZWNjICosIHN0cnVjdCBtdGtfZWNjX3N0YXRz ICosIGludCk7Cj4gIGludCBtdGtfZWNjX3dhaXRfZG9uZShzdHJ1Y3QgbXRrX2VjYyAqLCBlbnVt IG10a19lY2Nfb3BlcmF0aW9uKTsKPiBAQCAtNDQsNCArNjksMTcgQEAgdW5zaWduZWQgaW50IG10 a19lY2NfZ2V0X3Bhcml0eV9iaXRzKHN0cnVjdCBtdGtfZWNjICplY2MpOwo+ICBzdHJ1Y3QgbXRr X2VjYyAqb2ZfbXRrX2VjY19nZXQoc3RydWN0IGRldmljZV9ub2RlICopOwo+ICB2b2lkIG10a19l Y2NfcmVsZWFzZShzdHJ1Y3QgbXRrX2VjYyAqKTsKPiAgCj4gKyNpZiBJU19FTkFCTEVEKENPTkZJ R19NVERfTkFORF9FQ0NfTVRLKQo+ICsKPiArc3RydWN0IG5hbmRfZWNjX2VuZ2luZV9vcHMgKm10 a19lY2NfZ2V0X3BpcGVsaW5lZF9vcHModm9pZCk7Cj4gKwo+ICsjZWxzZSAvKiAhQ09ORklHX01U RF9OQU5EX0VDQ19NVEsgKi8KPiArCj4gK3N0cnVjdCBuYW5kX2VjY19lbmdpbmVfb3BzICptdGtf ZWNjX2dldF9waXBlbGluZWRfb3BzKHZvaWQpCj4gK3sKPiArCXJldHVybiBOVUxMOwo+ICt9Cj4g Kwo+ICsjZW5kaWYgLyogQ09ORklHX01URF9OQU5EX0VDQ19NVEsgKi8KPiArCj4gICNlbmRpZgo+ IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L210ZC9uYW5kLmggYi9pbmNsdWRlL2xpbnV4L210 ZC9uYW5kLmgKPiBpbmRleCAzMmZjN2VkZjY1YjMuLjVmZmQzZTM1OTUxNSAxMDA2NDQKPiAtLS0g YS9pbmNsdWRlL2xpbnV4L210ZC9uYW5kLmgKPiArKysgYi9pbmNsdWRlL2xpbnV4L210ZC9uYW5k LmgKPiBAQCAtMjY1LDEwICsyNjUsMTYgQEAgc3RydWN0IG5hbmRfZWNjX2VuZ2luZV9vcHMgewo+ ICAKPiAgLyoqCj4gICAqIHN0cnVjdCBuYW5kX2VjY19lbmdpbmUgLSBFQ0MgZW5naW5lIGFic3Ry YWN0aW9uIGZvciBOQU5EIGRldmljZXMKPiArICogQGRldjogSG9zdCBkZXZpY2UKPiArICogQG5v ZGU6IFByaXZhdGUgZmllbGQgZm9yIHJlZ2lzdHJhdGlvbiB0aW1lCj4gICAqIEBvcHM6IEVDQyBl bmdpbmUgb3BlcmF0aW9ucwo+ICsgKiBAcHJpdjogUHJpdmF0ZSBkYXRhCj4gICAqLwo+ICBzdHJ1 Y3QgbmFuZF9lY2NfZW5naW5lIHsKPiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiArCXN0cnVjdCBs aXN0X2hlYWQgbm9kZTsKPiAgCXN0cnVjdCBuYW5kX2VjY19lbmdpbmVfb3BzICpvcHM7Cj4gKwl2 b2lkICpwcml2Owo+ICB9Owo+ICAKPiAgdm9pZCBvZl9nZXRfbmFuZF9lY2NfdXNlcl9jb25maWco c3RydWN0IG5hbmRfZGV2aWNlICpuYW5kKTsKPiBAQCAtMjc5LDggKzI4NSwxMyBAQCBpbnQgbmFu ZF9lY2NfcHJlcGFyZV9pb19yZXEoc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kLAo+ICBpbnQgbmFu ZF9lY2NfZmluaXNoX2lvX3JlcShzdHJ1Y3QgbmFuZF9kZXZpY2UgKm5hbmQsCj4gIAkJCSAgIHN0 cnVjdCBuYW5kX3BhZ2VfaW9fcmVxICpyZXEpOwo+ICBib29sIG5hbmRfZWNjX2lzX3N0cm9uZ19l bm91Z2goc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kKTsKPiAraW50IG5hbmRfZWNjX3JlZ2lzdGVy X29uX2hvc3RfaHdfZW5naW5lKHN0cnVjdCBuYW5kX2VjY19lbmdpbmUgKmVuZ2luZSk7Cj4gK2lu dCBuYW5kX2VjY191bnJlZ2lzdGVyX29uX2hvc3RfaHdfZW5naW5lKHN0cnVjdCBuYW5kX2VjY19l bmdpbmUgKmVuZ2luZSk7Cj4gIHN0cnVjdCBuYW5kX2VjY19lbmdpbmUgKm5hbmRfZWNjX2dldF9z d19lbmdpbmUoc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kKTsKPiAgc3RydWN0IG5hbmRfZWNjX2Vu Z2luZSAqbmFuZF9lY2NfZ2V0X29uX2RpZV9od19lbmdpbmUoc3RydWN0IG5hbmRfZGV2aWNlICpu YW5kKTsKPiArc3RydWN0IG5hbmRfZWNjX2VuZ2luZSAqbmFuZF9lY2NfZ2V0X29uX2hvc3RfaHdf ZW5naW5lKHN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCk7Cj4gK3N0cnVjdCBuYW5kX2VjY19lbmdp bmUgKm5hbmRfZWNjX21hdGNoX29uX2hvc3RfaHdfZW5naW5lKHN0cnVjdCBkZXZpY2UgKmRldik7 Cj4gK3ZvaWQgbmFuZF9lY2NfcHV0X29uX2hvc3RfaHdfZW5naW5lKHN0cnVjdCBuYW5kX2Rldmlj ZSAqbmFuZCk7Cj4gIAo+ICAjaWYgSVNfRU5BQkxFRChDT05GSUdfTVREX05BTkRfRUNDX1NXX0hB TU1JTkcpCj4gIHN0cnVjdCBuYW5kX2VjY19lbmdpbmUgKm5hbmRfZWNjX3N3X2hhbW1pbmdfZ2V0 X2VuZ2luZSh2b2lkKTsKCgpUaGFua3MsCk1pcXXDqGwKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eCBNVEQgZGlzY3Vzc2lvbiBtYWls aW5nIGxpc3QKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1tdGQvCg==