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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id E702EC433F5 for ; Thu, 9 Dec 2021 10:32:58 +0000 (UTC) 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=EZksq7HZf9Wc9UHHHDxSXpUIzgOmvDwOO2uWxC0oD6Q=; b=UGi3+rv4zgyiu3 fbz7zgw89Fw/k79Go/ezbN7xfIjRyqIV8Cm4OEPv/BnD0quwEzJgj2YlAxd+CLRpxMb8+DLn0sxHS IwJ6KujgfODh9kJVEUlnl6AFH+2xWrJCoTb6TnYmgQkYFJD99mfBCT2EuVY2QqYvEEg+vSQ0LxvKc zftlE/iwxT1fv5ZzetgigHBjx3m3ipoHQRAMCA/FwOWYKesF7hy+p0zl1s406x21eDdyL2FtttITr Zczfr2cgp7cx9Tsbdff3k0dDYgmJlLYVjgXkcca02bEEbKYszqFOrzjYQF71yzT+37wqOf5qK9YBq ixqApQd8V4MT22vyp7PQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mvGir-00Fd7Y-Uc; Thu, 09 Dec 2021 10:32:22 +0000 Received: from relay12.mail.gandi.net ([217.70.178.232]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mvGim-00Fd60-73; Thu, 09 Dec 2021 10:32:19 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by relay12.mail.gandi.net (Postfix) with ESMTPSA id 7946620000C; Thu, 9 Dec 2021 10:32:11 +0000 (UTC) Date: Thu, 9 Dec 2021 11:32:09 +0100 From: Miquel Raynal To: Xiangsheng Hou Cc: , , , , , , , , , , , , Subject: Re: [RFC,v4,2/5] mtd: nand: ecc: mtk: Convert to the ECC infrastructure Message-ID: <20211209113209.71fe8ea7@xps13> In-Reply-To: <20211130083202.14228-3-xiangsheng.hou@mediatek.com> References: <20211130083202.14228-1-xiangsheng.hou@mediatek.com> <20211130083202.14228-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-20211209_023216_585904_5FAE5EE7 X-CRM114-Status: GOOD ( 30.01 ) 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 SGkgWGlhbmdzaGVuZywKCnhpYW5nc2hlbmcuaG91QG1lZGlhdGVrLmNvbSB3cm90ZSBvbiBUdWUs IDMwIE5vdiAyMDIxIDE2OjMxOjU5ICswODAwOgoKPiBDb252ZXJ0IHRoZSBNZWRpYXRlayBIVyBF Q0MgZW5naW5lIHRvIHRoZSBFQ0MgaW5mcmFzdHJ1Y3R1cmUgd2l0aAo+IHBpcGVsaW5lZCBjYXNl Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IFhpYW5nc2hlbmcgSG91IDx4aWFuZ3NoZW5nLmhvdUBtZWRp YXRlay5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvbXRkL25hbmQvZWNjLW10ay5jICAgICAgIHwgNjE0 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgaW5jbHVkZS9saW51eC9tdGQvbmFu ZC1lY2MtbXRrLmggfCAgNjggKysrKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDY4MiBpbnNlcnRpb25z KCspCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvZWNjLW10ay5jIGIvZHJpdmVy cy9tdGQvbmFuZC9lY2MtbXRrLmMKPiBpbmRleCAzMWQ3Yzc3ZDVjNTkuLmM0NDQ5OWIzZDBhNSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL210ZC9uYW5kL2VjYy1tdGsuYwo+ICsrKyBiL2RyaXZlcnMv bXRkL25hbmQvZWNjLW10ay5jCj4gQEAgLTE2LDYgKzE2LDcgQEAKPiAgI2luY2x1ZGUgPGxpbnV4 L29mX3BsYXRmb3JtLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgo+ICAKPiArI2luY2x1 ZGUgPGxpbnV4L210ZC9uYW5kLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZC1lY2MtbXRr Lmg+Cj4gIAo+ICAjZGVmaW5lIEVDQ19JRExFX01BU0sJCUJJVCgwKQo+IEBAIC00MSwxMSArNDIs MTcgQEAKPiAgI2RlZmluZSBFQ0NfSURMRV9SRUcob3ApCSgob3ApID09IEVDQ19FTkNPREUgPyBF Q0NfRU5DSURMRSA6IEVDQ19ERUNJRExFKQo+ICAjZGVmaW5lIEVDQ19DVExfUkVHKG9wKQkJKChv cCkgPT0gRUNDX0VOQ09ERSA/IEVDQ19FTkNDT04gOiBFQ0NfREVDQ09OKQo+ICAKPiArI2RlZmlu ZSBPT0JfRlJFRV9NQVhfU0laRSA4Cj4gKyNkZWZpbmUgT09CX0ZSRUVfTUlOX1NJWkUgMQo+ICsK PiAgc3RydWN0IG10a19lY2NfY2FwcyB7Cj4gIAl1MzIgZXJyX21hc2s7Cj4gIAljb25zdCB1OCAq ZWNjX3N0cmVuZ3RoOwo+ICAJY29uc3QgdTMyICplY2NfcmVnczsKPiAgCXU4IG51bV9lY2Nfc3Ry ZW5ndGg7Cj4gKwljb25zdCB1OCAqc3BhcmVfc2l6ZTsKPiArCXU4IG51bV9zcGFyZV9zaXplOwo+ ICsJdTMyIG1heF9zZWN0aW9uX3NpemU7Cj4gIAl1OCBlY2NfbW9kZV9zaGlmdDsKPiAgCXUzMiBw YXJpdHlfYml0czsKPiAgCWludCBwZ19pcnFfc2VsOwo+IEBAIC03OSw2ICs4NiwxMiBAQCBzdGF0 aWMgY29uc3QgdTggZWNjX3N0cmVuZ3RoX210NzYyMltdID0gewo+ICAJNCwgNiwgOCwgMTAsIDEy LCAxNCwgMTYKPiAgfTsKPiAgCj4gKy8qIHNwYXJlIHNpemUgZm9yIGVhY2ggc2VjdGlvbiB0aGF0 IGVhY2ggSVAgc3VwcG9ydHMgKi8KPiArc3RhdGljIGNvbnN0IHU4IHNwYXJlX3NpemVfbXQ3NjIy W10gPSB7Cj4gKwkxNiwgMjYsIDI3LCAyOCwgMzIsIDM2LCA0MCwgNDQsIDQ4LCA0OSwgNTAsIDUx LAo+ICsJNTIsIDYyLCA2MSwgNjMsIDY0LCA2NywgNzQKPiArfTsKPiArCj4gIGVudW0gbXRrX2Vj Y19yZWdzIHsKPiAgCUVDQ19FTkNQQVIwMCwKPiAgCUVDQ19FTkNJUlFfRU4sCj4gQEAgLTQ0Nyw2 ICs0NjAsNjA0IEBAIHVuc2lnbmVkIGludCBtdGtfZWNjX2dldF9wYXJpdHlfYml0cyhzdHJ1Y3Qg bXRrX2VjYyAqZWNjKQo+ICB9Cj4gIEVYUE9SVF9TWU1CT0wobXRrX2VjY19nZXRfcGFyaXR5X2Jp dHMpOwo+ICAKPiArc3RhdGljIGlubGluZSBpbnQgbXRrX2VjY19kYXRhX29mZihzdHJ1Y3QgbmFu ZF9kZXZpY2UgKm5hbmQsIGludCBpKQo+ICt7Cj4gKwlpbnQgZWNjc2l6ZSA9IG5hbmQtPmVjYy5j dHguY29uZi5zdGVwX3NpemU7Cj4gKwo+ICsJcmV0dXJuIGkgKiBlY2NzaXplOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW5saW5lIGludCBtdGtfZWNjX29vYl9mcmVlX3Bvc2l0aW9uKHN0cnVjdCBuYW5k X2RldmljZSAqbmFuZCwgaW50IGkpCj4gK3sKPiArCXN0cnVjdCBtdGtfZWNjX2VuZ2luZSAqZW5n ID0gbmFuZF90b19lY2NfY3R4KG5hbmQpOwo+ICsJaW50IHBvc2l0aW9uOwo+ICsKPiArCWlmIChp IDwgZW5nLT5iYm1fY3RsLnNlY3Rpb24pCj4gKwkJcG9zaXRpb24gPSAoaSArIDEpICogZW5nLT5v b2JfZnJlZTsKPiArCWVsc2UgaWYgKGkgPT0gZW5nLT5iYm1fY3RsLnNlY3Rpb24pCj4gKwkJcG9z aXRpb24gPSAwOwo+ICsJZWxzZQo+ICsJCXBvc2l0aW9uID0gaSAqIGVuZy0+b29iX2ZyZWU7Cj4g Kwo+ICsJcmV0dXJuIHBvc2l0aW9uOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGludCBtdGtf ZWNjX2RhdGFfbGVuKHN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCkKPiArewo+ICsJc3RydWN0IG10 a19lY2NfZW5naW5lICplbmcgPSBuYW5kX3RvX2VjY19jdHgobmFuZCk7Cj4gKwlpbnQgZWNjc2l6 ZSA9IG5hbmQtPmVjYy5jdHguY29uZi5zdGVwX3NpemU7Cj4gKwlpbnQgZWNjYnl0ZXMgPSBlbmct Pm9vYl9lY2M7Cj4gKwo+ICsJcmV0dXJuIGVjY3NpemUgKyBlbmctPm9vYl9mcmVlICsgZWNjYnl0 ZXM7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdTggKm10a19lY2Nfc2VjdGlvbl9wdHIoc3Ry dWN0IG5hbmRfZGV2aWNlICpuYW5kLCAgaW50IGkpCj4gK3sKPiArCXN0cnVjdCBtdGtfZWNjX2Vu Z2luZSAqZW5nID0gbmFuZF90b19lY2NfY3R4KG5hbmQpOwo+ICsKPiArCXJldHVybiBlbmctPmJv dW5jZV9wYWdlX2J1ZiArIGkgKiBtdGtfZWNjX2RhdGFfbGVuKG5hbmQpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW5saW5lIHU4ICptdGtfZWNjX29vYl9mcmVlX3B0cihzdHJ1Y3QgbmFuZF9kZXZpY2Ug Km5hbmQsIGludCBpKQo+ICt7Cj4gKwlzdHJ1Y3QgbXRrX2VjY19lbmdpbmUgKmVuZyA9IG5hbmRf dG9fZWNjX2N0eChuYW5kKTsKPiArCWludCBlY2NzaXplID0gbmFuZC0+ZWNjLmN0eC5jb25mLnN0 ZXBfc2l6ZTsKPiArCj4gKwlyZXR1cm4gZW5nLT5ib3VuY2VfcGFnZV9idWYgKyBpICogbXRrX2Vj Y19kYXRhX2xlbihuYW5kKSArIGVjY3NpemU7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG10a19l Y2Nfbm9fYmJtX3N3YXAoc3RydWN0IG5hbmRfZGV2aWNlICphLCB1OCAqYiwgdTggKmMpCj4gK3sK PiArCS8qIG5vcCAqLwoKSXMgdGhpcyByZWFsbHkgdXNlZnVsPwoKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgbXRrX2VjY19iYm1fc3dhcChzdHJ1Y3QgbmFuZF9kZXZpY2UgKm5hbmQsIHU4ICpkYXRh YnVmLCB1OCAqb29iYnVmKQo+ICt7Cj4gKwlzdHJ1Y3QgbXRrX2VjY19lbmdpbmUgKmVuZyA9IG5h bmRfdG9fZWNjX2N0eChuYW5kKTsKPiArCWludCBzdGVwX3NpemUgPSBuYW5kLT5lY2MuY3R4LmNv bmYuc3RlcF9zaXplOwo+ICsJdTMyIGJibV9wb3MgPSBlbmctPmJibV9jdGwucG9zaXRpb247Cj4g Kwo+ICsJYmJtX3BvcyArPSBlbmctPmJibV9jdGwuc2VjdGlvbiAqIHN0ZXBfc2l6ZTsKPiArCj4g Kwlzd2FwKG9vYmJ1ZlswXSwgZGF0YWJ1ZltiYm1fcG9zXSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2 b2lkIG10a19lY2Nfc2V0X2JibV9jdGwoc3RydWN0IG10a19lY2NfYmJtX2N0bCAqYmJtX2N0bCwK PiArCQkJCXN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCkKPiArewo+ICsJaWYgKG5hbmRkZXZfcGFn ZV9zaXplKG5hbmQpID09IDUxMikgewo+ICsJCWJibV9jdGwtPmJibV9zd2FwID0gbXRrX2VjY19u b19iYm1fc3dhcDsKPiArCX0gZWxzZSB7Cj4gKwkJYmJtX2N0bC0+YmJtX3N3YXAgPSBtdGtfZWNj X2JibV9zd2FwOwo+ICsJCWJibV9jdGwtPnNlY3Rpb24gPSBuYW5kZGV2X3BhZ2Vfc2l6ZShuYW5k KSAvCj4gKwkJCQkgICBtdGtfZWNjX2RhdGFfbGVuKG5hbmQpOwo+ICsJCWJibV9jdGwtPnBvc2l0 aW9uID0gbmFuZGRldl9wYWdlX3NpemUobmFuZCkgJQo+ICsJCQkJICAgIG10a19lY2NfZGF0YV9s ZW4obmFuZCk7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXRrX2VjY19vb2JsYXlvdXRf ZnJlZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IHNlY3Rpb24sCj4gKwkJCQkgIHN0cnVjdCBt dGRfb29iX3JlZ2lvbiAqb29iX3JlZ2lvbikKPiArewo+ICsJc3RydWN0IG5hbmRfZGV2aWNlICpu YW5kID0gbXRkX3RvX25hbmRkZXYobXRkKTsKPiArCXN0cnVjdCBtdGtfZWNjX2VuZ2luZSAqZW5n ID0gbmFuZF90b19lY2NfY3R4KG5hbmQpOwo+ICsJc3RydWN0IG5hbmRfZWNjX3Byb3BzICpjb25m ID0gJm5hbmQtPmVjYy5jdHguY29uZjsKPiArCXUzMiBlY2NzdGVwcywgYmJtX2J5dGVzID0gMDsK PiArCj4gKwllY2NzdGVwcyA9IG10ZC0+d3JpdGVzaXplIC8gY29uZi0+c3RlcF9zaXplOwo+ICsK PiArCWlmIChzZWN0aW9uID49IGVjY3N0ZXBzKQo+ICsJCXJldHVybiAtRVJBTkdFOwo+ICsKPiAr CS8qIFJlc2VydmUgMSBieXRlIGZvciBCQk0gb25seSBmb3Igc2VjdGlvbiAwICovCj4gKwlpZiAo c2VjdGlvbiA9PSAwKQo+ICsJCWJibV9ieXRlcyA9IDE7Cj4gKwo+ICsJb29iX3JlZ2lvbi0+bGVu Z3RoID0gZW5nLT5vb2JfZnJlZSAtIGJibV9ieXRlczsKPiArCW9vYl9yZWdpb24tPm9mZnNldCA9 IHNlY3Rpb24gKiBlbmctPm9vYl9mcmVlICsgYmJtX2J5dGVzOwo+ICsKPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG10a19lY2Nfb29ibGF5b3V0X2VjYyhzdHJ1Y3QgbXRkX2lu Zm8gKm10ZCwgaW50IHNlY3Rpb24sCj4gKwkJCQkgc3RydWN0IG10ZF9vb2JfcmVnaW9uICpvb2Jf cmVnaW9uKQo+ICt7Cj4gKwlzdHJ1Y3QgbmFuZF9kZXZpY2UgKm5hbmQgPSBtdGRfdG9fbmFuZGRl dihtdGQpOwo+ICsJc3RydWN0IG10a19lY2NfZW5naW5lICplbmcgPSBuYW5kX3RvX2VjY19jdHgo bmFuZCk7Cj4gKwo+ICsJaWYgKHNlY3Rpb24pCj4gKwkJcmV0dXJuIC1FUkFOR0U7Cj4gKwo+ICsJ b29iX3JlZ2lvbi0+b2Zmc2V0ID0gZW5nLT5vb2JfZnJlZSAqIGVuZy0+bnN0ZXBzOwo+ICsJb29i X3JlZ2lvbi0+bGVuZ3RoID0gbXRkLT5vb2JzaXplIC0gb29iX3JlZ2lvbi0+b2Zmc2V0Owo+ICsK PiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG10ZF9vb2JsYXlv dXRfb3BzIG10a19lY2Nfb29ibGF5b3V0X29wcyA9IHsKPiArCS5mcmVlID0gbXRrX2VjY19vb2Js YXlvdXRfZnJlZSwKPiArCS5lY2MgPSBtdGtfZWNjX29vYmxheW91dF9lY2MsCj4gK307Cj4gKwo+ ICtjb25zdCBzdHJ1Y3QgbXRkX29vYmxheW91dF9vcHMgKm10a19lY2NfZ2V0X29vYmxheW91dCh2 b2lkKQo+ICt7Cj4gKwlyZXR1cm4gJm10a19lY2Nfb29ibGF5b3V0X29wczsKPiArfQo+ICsKPiAr c3RhdGljIHN0cnVjdCBkZXZpY2UgKm10a19lY2NfZ2V0X2VuZ2luZV9kZXYoc3RydWN0IGRldmlj ZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICplY2NwZGV2Owo+ICsJc3Ry dWN0IGRldmljZV9ub2RlICpucDsKPiArCj4gKwkvKgo+ICsJICogVGhlIGRldmljZSBub2RlIGlz IG9ubHkgdGhlIGhvc3QgY29udHJvbGxlciwKPiArCSAqIG5vdCB0aGUgYWN0dWFsIEVDQyBlbmdp bmUgd2hlbiBwaXBlbGluZWQgY2FzZS4KPiArCSAqLwo+ICsJbnAgPSBvZl9wYXJzZV9waGFuZGxl KGRldi0+b2Zfbm9kZSwgIm5hbmQtZWNjLWVuZ2luZSIsIDApOwo+ICsJaWYgKCFucCkKPiArCQly ZXR1cm4gTlVMTDsKPiArCj4gKwllY2NwZGV2ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZShucCk7 Cj4gKwlpZiAoIWVjY3BkZXYpIHsKPiArCQlvZl9ub2RlX3B1dChucCk7Cj4gKwkJcmV0dXJuIE5V TEw7Cj4gKwl9Cj4gKwo+ICsJcGxhdGZvcm1fZGV2aWNlX3B1dChlY2NwZGV2KTsKPiArCW9mX25v ZGVfcHV0KG5wKTsKPiArCj4gKwlyZXR1cm4gJmVjY3BkZXYtPmRldjsKPiArfQoKQXMgdGhpcyB3 aWxsIGJlIHRoZSBleGFjdCBzYW1lIGZ1bmN0aW9uIGZvciBhbGwgdGhlIHBpcGVsaW5lZCBlbmdp bmVzLApJIGFtIHRlbXB0ZWQgdG8gcHV0IHRoaXMgaW4gdGhlIGNvcmUuIEknbGwgc29vbiBzZW5k IGEgaXRlcmF0aW9uLCBzdGF5CnR1bmVkLgoKPiArLyoKPiArICogbXRrX2VjY19kYXRhX2Zvcm1h dCgpIC0gQ29udmVydCB0by9mcm9tIE1USyBFQ0Mgb24tZmxhc2ggZGF0YSBmb3JtYXQKPiArICoK PiArICogTVRLIEVDQyBlbmdpbmUgb3JnYW5pemUgcGFnZSBkYXRhIGJ5IHNlY3Rpb24sIHRoZSBv bi1mbGFzaCBmb3JtYXQgYXMgYmVsbG93Ogo+ICsgKiB8fCAgICAgICAgICBzZWN0aW9uIDAgICAg ICAgICB8fCAgICAgICAgICBzZWN0aW9uIDEgICAgICAgICAgfHwgLi4uCj4gKyAqIHx8IGRhdGEg fCBPT0IgZnJlZSB8IE9PQiBFQ0MgfHwgZGF0YSB8fCBPT0IgZnJlZSB8IE9PQiBFQ0MgfHwgLi4u Cj4gKyAqCj4gKyAqIFRlcmVmb3JlLCBpdGBzIG5lY2Vzc2FyeSB0byBjb252ZXJ0IGRhdGEgd2hl biByZWFkaW5nL3dyaXRpbmcgaW4gcmF3IG1vZGUuCj4gKyAqLwo+ICtzdGF0aWMgdm9pZCBtdGtf ZWNjX2RhdGFfZm9ybWF0KHN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCwKCm10a19lY2NfcmVvcmdh bml6ZV9kYXRhX2xheW91dCgpPwoKPiArCQkJCXN0cnVjdCBuYW5kX3BhZ2VfaW9fcmVxICpyZXEp Cj4gK3sKPiArCXN0cnVjdCBtdGtfZWNjX2VuZ2luZSAqZW5nID0gbmFuZF90b19lY2NfY3R4KG5h bmQpOwo+ICsJaW50IHN0ZXBfc2l6ZSA9IG5hbmQtPmVjYy5jdHguY29uZi5zdGVwX3NpemU7Cj4g Kwl2b2lkICpkYXRhYnVmLCAqb29iYnVmOwo+ICsJaW50IGk7Cj4gKwo+ICsJaWYgKHJlcS0+dHlw ZSA9PSBOQU5EX1BBR0VfV1JJVEUpIHsKPiArCQlkYXRhYnVmID0gKHZvaWQgKilyZXEtPmRhdGFi dWYub3V0Owo+ICsJCW9vYmJ1ZiA9ICh2b2lkICopcmVxLT5vb2JidWYub3V0Owo+ICsKPiArCQkv Kgo+ICsJCSAqIENvbnZlcnQgdGhlIHNvdXJjZSBkYXRhYnVmIGFuZCBvb2JidWYgdG8gTVRLIEVD Qwo+ICsJCSAqIG9uLWZsYXNoIGRhdGEgZm9ybWF0Lgo+ICsJCSAqLwo+ICsJCWZvciAoaSA9IDA7 IGkgPCBlbmctPm5zdGVwczsgaSsrKSB7Cj4gKwkJCWlmIChpID09IGVuZy0+YmJtX2N0bC5zZWN0 aW9uKQo+ICsJCQkJZW5nLT5iYm1fY3RsLmJibV9zd2FwKG5hbmQsCj4gKwkJCQkJCSAgICAgIGRh dGFidWYsIG9vYmJ1Zik7CgpEbyB5b3UgcmVhbGx5IG5lZWQgdGhpcyBzd2FwPyBJc24ndCB0aGUg b3ZlcmFsbCBtb3ZlIGVub3VnaCB0byBwdXQgdGhlCkJCTSBhdCB0aGUgcmlnaHQgcGxhY2U/Cgo+ ICsJCQltZW1jcHkobXRrX2VjY19zZWN0aW9uX3B0cihuYW5kLCBpKSwKPiArCQkJICAgICAgIGRh dGFidWYgKyBtdGtfZWNjX2RhdGFfb2ZmKG5hbmQsIGkpLAo+ICsJCQkgICAgICAgc3RlcF9zaXpl KTsKPiArCj4gKwkJCW1lbWNweShtdGtfZWNjX29vYl9mcmVlX3B0cihuYW5kLCBpKSwKPiArCQkJ ICAgICAgIG9vYmJ1ZiArIG10a19lY2Nfb29iX2ZyZWVfcG9zaXRpb24obmFuZCwgaSksCj4gKwkJ CSAgICAgICBlbmctPm9vYl9mcmVlKTsKPiArCj4gKwkJCW1lbWNweShtdGtfZWNjX29vYl9mcmVl X3B0cihuYW5kLCBpKSArIGVuZy0+b29iX2ZyZWUsCj4gKwkJCSAgICAgICBvb2JidWYgKyBlbmct Pm9vYl9mcmVlICogZW5nLT5uc3RlcHMgKwo+ICsJCQkgICAgICAgaSAqIGVuZy0+b29iX2VjYywK PiArCQkJICAgICAgIGVuZy0+b29iX2VjYyk7Cj4gKwkJfQo+ICsKPiArCQlyZXEtPmRhdGFidWYu b3V0ID0gZW5nLT5ib3VuY2VfcGFnZV9idWY7Cj4gKwkJcmVxLT5vb2JidWYub3V0ID0gZW5nLT5i b3VuY2Vfb29iX2J1ZjsKPiArCX0gZWxzZSB7Cj4gKwkJZGF0YWJ1ZiA9IHJlcS0+ZGF0YWJ1Zi5p bjsKPiArCQlvb2JidWYgPSByZXEtPm9vYmJ1Zi5pbjsKPiArCj4gKwkJLyoKPiArCQkgKiBDb252 ZXJ0IHRoZSBvbi1mbGFzaCBNVEsgRUNDIGRhdGEgZm9ybWF0IHRvCj4gKwkJICogZGVzdGluYXRp b24gZGF0YWJ1ZiBhbmQgb29iYnVmLgo+ICsJCSAqLwo+ICsJCW1lbWNweShlbmctPmJvdW5jZV9w YWdlX2J1ZiwgZGF0YWJ1ZiwKPiArCQkgICAgICAgbmFuZGRldl9wYWdlX3NpemUobmFuZCkpOwo+ ICsJCW1lbWNweShlbmctPmJvdW5jZV9vb2JfYnVmLCBvb2JidWYsCj4gKwkJICAgICAgIG5hbmRk ZXZfcGVyX3BhZ2Vfb29ic2l6ZShuYW5kKSk7Cj4gKwo+ICsJCWZvciAoaSA9IDA7IGkgPCBlbmct Pm5zdGVwczsgaSsrKSB7Cj4gKwkJCW1lbWNweShkYXRhYnVmICsgbXRrX2VjY19kYXRhX29mZihu YW5kLCBpKSwKPiArCQkJICAgICAgIG10a19lY2Nfc2VjdGlvbl9wdHIobmFuZCwgaSksIHN0ZXBf c2l6ZSk7Cj4gKwo+ICsJCQltZW1jcHkob29iYnVmICsgbXRrX2VjY19vb2JfZnJlZV9wb3NpdGlv bihuYW5kLCBpKSwKPiArCQkJICAgICAgIG10a19lY2Nfc2VjdGlvbl9wdHIobmFuZCwgaSkgKyBz dGVwX3NpemUsCj4gKwkJCSAgICAgICBlbmctPm9vYl9mcmVlKTsKPiArCj4gKwkJCW1lbWNweShv b2JidWYgKyBlbmctPm9vYl9mcmVlICogZW5nLT5uc3RlcHMgKwo+ICsJCQkgICAgICAgaSAqIGVu Zy0+b29iX2VjYywKPiArCQkJICAgICAgIG10a19lY2Nfc2VjdGlvbl9wdHIobmFuZCwgaSkgKyBz dGVwX3NpemUKPiArCQkJICAgICAgICsgZW5nLT5vb2JfZnJlZSwKPiArCQkJICAgICAgIGVuZy0+ b29iX2VjYyk7Cj4gKwo+ICsJCQlpZiAoaSA9PSBlbmctPmJibV9jdGwuc2VjdGlvbikKPiArCQkJ CWVuZy0+YmJtX2N0bC5iYm1fc3dhcChuYW5kLAo+ICsJCQkJCQkgICAgICBkYXRhYnVmLCBvb2Ji dWYpOwo+ICsJCX0KPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRrX2VjY19vb2JfZnJl ZV9zaGlmdChzdHJ1Y3QgbmFuZF9kZXZpY2UgKm5hbmQsCj4gKwkJCQkgICB1OCAqZHN0X2J1Ziwg dTggKnNyY19idWYsIGJvb2wgd3JpdGUpCj4gK3sKPiArCXN0cnVjdCBtdGtfZWNjX2VuZ2luZSAq ZW5nID0gbmFuZF90b19lY2NfY3R4KG5hbmQpOwo+ICsJdTMyIHBvc2l0aW9uOwo+ICsJaW50IGk7 Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGVuZy0+bnN0ZXBzOyBpKyspIHsKPiArCQlpZiAoaSA8 IGVuZy0+YmJtX2N0bC5zZWN0aW9uKQo+ICsJCQlwb3NpdGlvbiA9IChpICsgMSkgKiBlbmctPm9v Yl9mcmVlOwo+ICsJCWVsc2UgaWYgKGkgPT0gZW5nLT5iYm1fY3RsLnNlY3Rpb24pCj4gKwkJCXBv c2l0aW9uID0gMDsKPiArCQllbHNlCj4gKwkJCXBvc2l0aW9uID0gaSAqIGVuZy0+b29iX2ZyZWU7 Cj4gKwo+ICsJCWlmICh3cml0ZSkKPiArCQkJbWVtY3B5KGRzdF9idWYgKyBpICogZW5nLT5vb2Jf ZnJlZSwgc3JjX2J1ZiArIHBvc2l0aW9uLAo+ICsJCQkgICAgICAgZW5nLT5vb2JfZnJlZSk7Cj4g KwkJZWxzZQo+ICsJCQltZW1jcHkoZHN0X2J1ZiArIHBvc2l0aW9uLCBzcmNfYnVmICsgaSAqIGVu Zy0+b29iX2ZyZWUsCj4gKwkJCSAgICAgICBlbmctPm9vYl9mcmVlKTsKPiArCX0KPiArfQo+ICsK PiArc3RhdGljIHZvaWQgbXRrX2VjY19zZXRfc2VjdGlvbl9zaXplX2FuZF9zdHJlbmd0aChzdHJ1 Y3QgbmFuZF9kZXZpY2UgKm5hbmQpCj4gK3sKPiArCXN0cnVjdCBuYW5kX2VjY19wcm9wcyAqcmVx cyA9ICZuYW5kLT5lY2MucmVxdWlyZW1lbnRzOwo+ICsJc3RydWN0IG5hbmRfZWNjX3Byb3BzICp1 c2VyID0gJm5hbmQtPmVjYy51c2VyX2NvbmY7Cj4gKwlzdHJ1Y3QgbmFuZF9lY2NfcHJvcHMgKmNv bmYgPSAmbmFuZC0+ZWNjLmN0eC5jb25mOwo+ICsJc3RydWN0IG10a19lY2NfZW5naW5lICplbmcg PSBuYW5kX3RvX2VjY19jdHgobmFuZCk7Cj4gKwo+ICsJLyogQ29uZmlndXJlIHRoZSBjb3JyZWN0 aW9uIGRlcGVuZGluZyBvbiB0aGUgTkFORCBkZXZpY2UgdG9wb2xvZ3kgKi8KPiArCWlmICh1c2Vy LT5zdGVwX3NpemUgJiYgdXNlci0+c3RyZW5ndGgpIHsKPiArCQljb25mLT5zdGVwX3NpemUgPSB1 c2VyLT5zdGVwX3NpemU7Cj4gKwkJY29uZi0+c3RyZW5ndGggPSB1c2VyLT5zdHJlbmd0aDsKPiAr CX0gZWxzZSBpZiAocmVxcy0+c3RlcF9zaXplICYmIHJlcXMtPnN0cmVuZ3RoKSB7Cj4gKwkJY29u Zi0+c3RlcF9zaXplID0gcmVxcy0+c3RlcF9zaXplOwo+ICsJCWNvbmYtPnN0cmVuZ3RoID0gcmVx cy0+c3RyZW5ndGg7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIEFsaWduIEVDQyBzdHJlbmd0aCBh bmQgRUNDIHNpemUuCj4gKwkgKiBUaGUgTVRLIEhXIEVDQyBlbmdpbmUgb25seSBzdXBwb3J0IDUx MiBhbmQgMTAyNCBFQ0Mgc2l6ZS4KPiArCSAqLwo+ICsJaWYgKGNvbmYtPnN0ZXBfc2l6ZSA8IDEw MjQpIHsKCkkgcHJlZmVyIHN0cm9uZ2VyIGNoZWNrcyB0aGFuICc8Jy4KCj4gKwkJaWYgKG5hbmRk ZXZfcGFnZV9zaXplKG5hbmQpID4gNTEyICYmCj4gKwkJICAgIGVuZy0+ZWNjLT5jYXBzLT5tYXhf c2VjdGlvbl9zaXplID4gNTEyKSB7Cj4gKwkJCWNvbmYtPnN0ZXBfc2l6ZSA9IDEwMjQ7Cj4gKwkJ CWNvbmYtPnN0cmVuZ3RoIDw8PSAxOwoKdGhlIG9wZXJhdGlvbiAiPDw9IDEiIGlzIG1vcmUgcmVh ZGFibGUgYXMgIiogMiIgSU1ITy4KClNhbWUgYmVsb3cgaW4gYm90aCBkaXJlY3Rpb25zLgoKPiAr CQl9IGVsc2Ugewo+ICsJCQljb25mLT5zdGVwX3NpemUgPSA1MTI7Cj4gKwkJfQo+ICsJfSBlbHNl IHsKPiArCQljb25mLT5zdGVwX3NpemUgPSAxMDI0Owo+ICsJfQo+ICsKPiArCWVuZy0+c2VjdGlv bl9zaXplID0gY29uZi0+c3RlcF9zaXplOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG10a19lY2Nf c2V0X3NwYXJlX3Blcl9zZWN0aW9uKHN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCkKPiArewo+ICsJ c3RydWN0IG5hbmRfZWNjX3Byb3BzICpjb25mID0gJm5hbmQtPmVjYy5jdHguY29uZjsKPiArCXN0 cnVjdCBtdGtfZWNjX2VuZ2luZSAqZW5nID0gbmFuZF90b19lY2NfY3R4KG5hbmQpOwo+ICsJY29u c3QgdTggKnNwYXJlID0gZW5nLT5lY2MtPmNhcHMtPnNwYXJlX3NpemU7Cj4gKwl1MzIgaSwgY2xv c2VzdF9zcGFyZSA9IDA7Cj4gKwo+ICsJZW5nLT5uc3RlcHMgPSBuYW5kZGV2X3BhZ2Vfc2l6ZShu YW5kKSAvIGNvbmYtPnN0ZXBfc2l6ZTsKPiArCWVuZy0+b29iX3Blcl9zZWN0aW9uID0gbmFuZGRl dl9wZXJfcGFnZV9vb2JzaXplKG5hbmQpIC8gZW5nLT5uc3RlcHM7Cj4gKwo+ICsJaWYgKGNvbmYt PnN0ZXBfc2l6ZSA9PSAxMDI0KQo+ICsJCWVuZy0+b29iX3Blcl9zZWN0aW9uID4+PSAxOwo+ICsK PiArCWlmIChlbmctPm9vYl9wZXJfc2VjdGlvbiA8IHNwYXJlWzBdKSB7Cj4gKwkJZGV2X2Vycihl bmctPmVjYy0+ZGV2LCAiT09CIHNpemUgcGVyIHNlY3Rpb24gdG9vIHNtYWxsICVkXG4iLAo+ICsJ CQllbmctPm9vYl9wZXJfc2VjdGlvbik7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ ICsJZm9yIChpID0gMDsgaSA8IGVuZy0+ZWNjLT5jYXBzLT5udW1fc3BhcmVfc2l6ZTsgaSsrKSB7 Cj4gKwkJaWYgKGVuZy0+b29iX3Blcl9zZWN0aW9uID49IHNwYXJlW2ldICYmCj4gKwkJICAgIHNw YXJlW2ldID49IHNwYXJlW2Nsb3Nlc3Rfc3BhcmVdKSB7Cj4gKwkJCWNsb3Nlc3Rfc3BhcmUgPSBp Owo+ICsJCQlpZiAoZW5nLT5vb2JfcGVyX3NlY3Rpb24gPT0gc3BhcmVbaV0pCj4gKwkJCQlicmVh azsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJZW5nLT5vb2JfcGVyX3NlY3Rpb24gPSBzcGFyZVtjbG9z ZXN0X3NwYXJlXTsKPiArCWVuZy0+b29iX3Blcl9zZWN0aW9uX2lkeCA9IGNsb3Nlc3Rfc3BhcmU7 Cj4gKwo+ICsJaWYgKGNvbmYtPnN0ZXBfc2l6ZSA9PSAxMDI0KQo+ICsJCWVuZy0+b29iX3Blcl9z ZWN0aW9uIDw8PSAxOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQgbXRrX2VjY19w cmVwYXJlX2lvX3JlcV9waXBlbGluZWQoc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kLAo+ICsJCQkJ ICAgICBzdHJ1Y3QgbmFuZF9wYWdlX2lvX3JlcSAqcmVxKQo+ICt7Cj4gKwlzdHJ1Y3QgbXRrX2Vj Y19lbmdpbmUgKmVuZyA9IG5hbmRfdG9fZWNjX2N0eChuYW5kKTsKPiArCXN0cnVjdCBtdGRfaW5m byAqbXRkID0gbmFuZGRldl90b19tdGQobmFuZCk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCW5hbmRf ZWNjX3R3ZWFrX3JlcSgmZW5nLT5yZXFfY3R4LCByZXEpOwo+ICsKPiArCS8qIFN0b3JlIHRoZSBz b3VyY2UgYnVmZmVyIGRhdGEgdG8gYXZvaWQgbW9kaWZ5IHNvdXJjZSBkYXRhICovCj4gKwlpZiAo cmVxLT50eXBlID09IE5BTkRfUEFHRV9XUklURSkgewo+ICsJCWlmIChyZXEtPmRhdGFsZW4pCj4g KwkJCW1lbWNweShlbmctPnNyY19wYWdlX2J1ZiArIHJlcS0+ZGF0YW9mZnMsCj4gKwkJCSAgICAg ICByZXEtPmRhdGFidWYub3V0LAo+ICsJCQkgICAgICAgcmVxLT5kYXRhbGVuKTsKPiArCj4gKwkJ aWYgKHJlcS0+b29ibGVuKQo+ICsJCQltZW1jcHkoZW5nLT5zcmNfb29iX2J1ZiArIHJlcS0+b29i b2ZmcywKPiArCQkJICAgICAgIHJlcS0+b29iYnVmLm91dCwKPiArCQkJICAgICAgIHJlcS0+b29i bGVuKTsKPiArCX0KPiArCj4gKwlpZiAocmVxLT5tb2RlID09IE1URF9PUFNfUkFXKSB7Cj4gKwkJ aWYgKHJlcS0+dHlwZSA9PSBOQU5EX1BBR0VfV1JJVEUpCj4gKwkJCW10a19lY2NfZGF0YV9mb3Jt YXQobmFuZCwgcmVxKTsKPiArCj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJZW5nLT5lY2Nf Y2ZnLm1vZGUgPSBFQ0NfTkZJX01PREU7Cj4gKwllbmctPmVjY19jZmcuc2VjdG9ycyA9IGVuZy0+ bnN0ZXBzOwo+ICsJZW5nLT5lY2NfY2ZnLm9wID0gRUNDX0RFQ09ERTsKPiArCj4gKwlpZiAocmVx LT50eXBlID09IE5BTkRfUEFHRV9SRUFEKQo+ICsJCXJldHVybiBtdGtfZWNjX2VuYWJsZShlbmct PmVjYywgJmVuZy0+ZWNjX2NmZyk7Cj4gKwo+ICsJbWVtc2V0KGVuZy0+Ym91bmNlX29vYl9idWYs IDB4ZmYsIG5hbmRkZXZfcGVyX3BhZ2Vfb29ic2l6ZShuYW5kKSk7Cj4gKwlpZiAocmVxLT5vb2Js ZW4pIHsKPiArCQlpZiAocmVxLT5tb2RlID09IE1URF9PUFNfQVVUT19PT0IpIHsKPiArCQkJcmV0 ID0gbXRkX29vYmxheW91dF9zZXRfZGF0YWJ5dGVzKG10ZCwKPiArCQkJCQkJCSAgcmVxLT5vb2Ji dWYub3V0LAo+ICsJCQkJCQkJICBlbmctPmJvdW5jZV9vb2JfYnVmLAo+ICsJCQkJCQkJICByZXEt Pm9vYm9mZnMsCj4gKwkJCQkJCQkgIG10ZC0+b29iYXZhaWwpOwo+ICsJCQlpZiAocmV0KQo+ICsJ CQkJcmV0dXJuIHJldDsKPiArCQl9IGVsc2Ugewo+ICsJCQltZW1jcHkoZW5nLT5ib3VuY2Vfb29i X2J1ZiArIHJlcS0+b29ib2ZmcywKPiArCQkJICAgICAgIHJlcS0+b29iYnVmLm91dCwKPiArCQkJ ICAgICAgIHJlcS0+b29ibGVuKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJZW5nLT5iYm1fY3RsLmJi bV9zd2FwKG5hbmQsICh2b2lkICopcmVxLT5kYXRhYnVmLm91dCwKPiArCQkJICAgICAgZW5nLT5i b3VuY2Vfb29iX2J1Zik7Cj4gKwltdGtfZWNjX29vYl9mcmVlX3NoaWZ0KG5hbmQsICh2b2lkICop cmVxLT5vb2JidWYub3V0LAo+ICsJCQkgICAgICAgZW5nLT5ib3VuY2Vfb29iX2J1ZiwgdHJ1ZSk7 Cj4gKwo+ICsJZW5nLT5lY2NfY2ZnLm9wID0gRUNDX0VOQ09ERTsKPiArCj4gKwlyZXR1cm4gbXRr X2VjY19lbmFibGUoZW5nLT5lY2MsICZlbmctPmVjY19jZmcpOwo+ICt9Cj4gKwo+ICtpbnQgbXRr X2VjY19maW5pc2hfaW9fcmVxX3BpcGVsaW5lZChzdHJ1Y3QgbmFuZF9kZXZpY2UgKm5hbmQsCj4g KwkJCQkgICAgc3RydWN0IG5hbmRfcGFnZV9pb19yZXEgKnJlcSkKPiArewo+ICsJc3RydWN0IG10 a19lY2NfZW5naW5lICplbmcgPSBuYW5kX3RvX2VjY19jdHgobmFuZCk7Cj4gKwlzdHJ1Y3QgbXRk X2luZm8gKm10ZCA9IG5hbmRkZXZfdG9fbXRkKG5hbmQpOwo+ICsJc3RydWN0IG10a19lY2Nfc3Rh dHMgc3RhdHM7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmIChyZXEtPnR5cGUgPT0gTkFORF9QQUdF X1dSSVRFKSB7Cj4gKwkJLyogUmVzdG9yZSB0aGUgc291cmNlIGJ1ZmZlciBkYXRhICovCj4gKwkJ aWYgKHJlcS0+ZGF0YWxlbikKPiArCQkJbWVtY3B5KCh2b2lkICopcmVxLT5kYXRhYnVmLm91dCwK PiArCQkJICAgICAgIGVuZy0+c3JjX3BhZ2VfYnVmICsgcmVxLT5kYXRhb2ZmcywKPiArCQkJICAg ICAgIHJlcS0+ZGF0YWxlbik7Cj4gKwo+ICsJCWlmIChyZXEtPm9vYmxlbikKPiArCQkJbWVtY3B5 KCh2b2lkICopcmVxLT5vb2JidWYub3V0LAo+ICsJCQkgICAgICAgZW5nLT5zcmNfb29iX2J1ZiAr IHJlcS0+b29ib2ZmcywKPiArCQkJICAgICAgIHJlcS0+b29ibGVuKTsKPiArCj4gKwkJaWYgKHJl cS0+bW9kZSAhPSBNVERfT1BTX1JBVykKPiArCQkJbXRrX2VjY19kaXNhYmxlKGVuZy0+ZWNjKTsK PiArCj4gKwkJbmFuZF9lY2NfcmVzdG9yZV9yZXEoJmVuZy0+cmVxX2N0eCwgcmVxKTsKPiArCj4g KwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJaWYgKHJlcS0+bW9kZSA9PSBNVERfT1BTX1JBVykg ewo+ICsJCW10a19lY2NfZGF0YV9mb3JtYXQobmFuZCwgcmVxKTsKPiArCQluYW5kX2VjY19yZXN0 b3JlX3JlcSgmZW5nLT5yZXFfY3R4LCByZXEpOwo+ICsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiAr Cj4gKwlyZXQgPSBtdGtfZWNjX3dhaXRfZG9uZShlbmctPmVjYywgRUNDX0RFQ09ERSk7Cj4gKwlp ZiAocmV0KSB7Cj4gKwkJcmV0ID0gLUVUSU1FRE9VVDsKPiArCQlnb3RvIG91dDsKPiArCX0KPiAr Cj4gKwlpZiAoZW5nLT5yZWFkX2VtcHR5KSB7Cj4gKwkJbWVtc2V0KHJlcS0+ZGF0YWJ1Zi5pbiwg MHhmZiwgbmFuZGRldl9wYWdlX3NpemUobmFuZCkpOwo+ICsJCW1lbXNldChyZXEtPm9vYmJ1Zi5p biwgMHhmZiwgbmFuZGRldl9wZXJfcGFnZV9vb2JzaXplKG5hbmQpKTsKPiArCQlyZXQgPSAwOwo+ ICsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwltdGtfZWNjX2dldF9zdGF0cyhlbmctPmVj YywgJnN0YXRzLCBlbmctPm5zdGVwcyk7Cj4gKwltdGQtPmVjY19zdGF0cy5jb3JyZWN0ZWQgKz0g c3RhdHMuY29ycmVjdGVkOwo+ICsJbXRkLT5lY2Nfc3RhdHMuZmFpbGVkICs9IHN0YXRzLmZhaWxl ZDsKPiArCj4gKwkvKgo+ICsJICogUmV0dXJuIC1FQkFETVNHIHdoZW4gZXhpdCB1bmNvcnJlY3Qg RUNDIGVycm9yLgo+ICsJICogT3RoZXJ3aXNlLCByZXR1cm4gdGhlIGJpdGZsaXBzLgo+ICsJICov Cj4gKwlpZiAoc3RhdHMuZmFpbGVkKQo+ICsJCXJldCA9IC1FQkFETVNHOwo+ICsJZWxzZQo+ICsJ CXJldCA9IHN0YXRzLmJpdGZsaXBzOwo+ICsKPiArCW1lbXNldChlbmctPmJvdW5jZV9vb2JfYnVm LCAweGZmLCBuYW5kZGV2X3Blcl9wYWdlX29vYnNpemUobmFuZCkpOwo+ICsJbXRrX2VjY19vb2Jf ZnJlZV9zaGlmdChuYW5kLCBlbmctPmJvdW5jZV9vb2JfYnVmLCByZXEtPm9vYmJ1Zi5pbiwgZmFs c2UpOwo+ICsJZW5nLT5iYm1fY3RsLmJibV9zd2FwKG5hbmQsIHJlcS0+ZGF0YWJ1Zi5pbiwgZW5n LT5ib3VuY2Vfb29iX2J1Zik7Cj4gKwo+ICsJaWYgKHJlcS0+b29ibGVuKSB7Cj4gKwkJaWYgKHJl cS0+bW9kZSA9PSBNVERfT1BTX0FVVE9fT09CKQo+ICsJCQlyZXQgPSBtdGRfb29ibGF5b3V0X2dl dF9kYXRhYnl0ZXMobXRkLAo+ICsJCQkJCQkJICByZXEtPm9vYmJ1Zi5pbiwKPiArCQkJCQkJCSAg ZW5nLT5ib3VuY2Vfb29iX2J1ZiwKPiArCQkJCQkJCSAgcmVxLT5vb2JvZmZzLAo+ICsJCQkJCQkJ ICBtdGQtPm9vYmF2YWlsKTsKPiArCQllbHNlCj4gKwkJCW1lbWNweShyZXEtPm9vYmJ1Zi5pbiwK PiArCQkJICAgICAgIGVuZy0+Ym91bmNlX29vYl9idWYgKyByZXEtPm9vYm9mZnMsCj4gKwkJCSAg ICAgICByZXEtPm9vYmxlbik7Cj4gKwl9Cj4gKwo+ICtvdXQ6Cj4gKwltdGtfZWNjX2Rpc2FibGUo ZW5nLT5lY2MpOwo+ICsJbmFuZF9lY2NfcmVzdG9yZV9yZXEoJmVuZy0+cmVxX2N0eCwgcmVxKTsK PiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtpbnQgbXRrX2VjY19pbml0X2N0eF9waXBl bGluZWQoc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kKQo+ICt7Cj4gKwlzdHJ1Y3QgbmFuZF9lY2Nf cHJvcHMgKmNvbmYgPSAmbmFuZC0+ZWNjLmN0eC5jb25mOwo+ICsJc3RydWN0IG10ZF9pbmZvICpt dGQgPSBuYW5kZGV2X3RvX210ZChuYW5kKTsKPiArCXN0cnVjdCBtdGtfZWNjX2VuZ2luZSAqZW5n Owo+ICsJc3RydWN0IGRldmljZSAqZGV2Owo+ICsJaW50IGZyZWUsIHJldDsKPiArCj4gKwkvKgo+ ICsJICogSW4gdGhlIGNhc2Ugb2YgYSBwaXBlbGluZWQgZW5naW5lLCB0aGUgZGV2aWNlIHJlZ2lz dGVyaW5nIHRoZSBFQ0MKPiArCSAqIGVuZ2luZSBpcyBub3QgdGhlIGFjdHVhbCBFQ0MgZW5naW5l IGRldmljZSBidXQgdGhlIGhvc3QgY29udHJvbGxlci4KPiArCSAqLwo+ICsJZGV2ID0gbXRrX2Vj Y19nZXRfZW5naW5lX2RldihuYW5kLT5lY2MuZW5naW5lLT5kZXYpOwo+ICsJaWYgKCFkZXYpCj4g KwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJZW5nID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9m KCplbmcpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghZW5nKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ ICsKPiArCW5hbmQtPmVjYy5jdHgucHJpdiA9IGVuZzsKPiArCW5hbmQtPmVjYy5lbmdpbmUtPnBy aXYgPSBlbmc7Cj4gKwo+ICsJZW5nLT5lY2MgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiArCj4g KwltdGtfZWNjX3NldF9zZWN0aW9uX3NpemVfYW5kX3N0cmVuZ3RoKG5hbmQpOwo+ICsKPiArCXJl dCA9IG10a19lY2Nfc2V0X3NwYXJlX3Blcl9zZWN0aW9uKG5hbmQpOwo+ICsJaWYgKHJldCkKPiAr CQlyZXR1cm4gcmV0Owo+ICsKPiArCWNsa19wcmVwYXJlX2VuYWJsZShlbmctPmVjYy0+Y2xrKTsK PiArCW10a19lY2NfaHdfaW5pdChlbmctPmVjYyk7Cj4gKwo+ICsJLyogQ2FsY3VsYXRlIE9PQiBm cmVlIGJ5dGVzIGV4Y2VwdCBFQ0MgcGFyaXR5IGRhdGEgKi8KPiArCWZyZWUgPSAoY29uZi0+c3Ry ZW5ndGggKiBtdGtfZWNjX2dldF9wYXJpdHlfYml0cyhlbmctPmVjYykKPiArCSAgICAgICArIDcp ID4+IDM7Cj4gKwlmcmVlID0gZW5nLT5vb2JfcGVyX3NlY3Rpb24gLSBmcmVlOwo+ICsKPiArCS8q Cj4gKwkgKiBFbmhhbmNlIEVDQyBzdHJlbmd0aCBpZiBPT0IgbGVmdCBpcyBiaWdnZXIgdGhhbiBt YXggRkRNIHNpemUKPiArCSAqIG9yIHJlZHVjZSBFQ0Mgc3RyZW5ndGggaWYgT09CIHNpemUgaXMg bm90IGVub3VnaCBmb3IgRUNDCj4gKwkgKiBwYXJpdHkgZGF0YS4KPiArCSAqLwo+ICsJaWYgKGZy ZWUgPiBPT0JfRlJFRV9NQVhfU0laRSkKPiArCQllbmctPm9vYl9lY2MgPSBlbmctPm9vYl9wZXJf c2VjdGlvbiAtIE9PQl9GUkVFX01BWF9TSVpFOwo+ICsJZWxzZSBpZiAoZnJlZSA8IDApCj4gKwkJ ZW5nLT5vb2JfZWNjID0gZW5nLT5vb2JfcGVyX3NlY3Rpb24gLSBPT0JfRlJFRV9NSU5fU0laRTsK PiArCj4gKwkvKiBDYWxjdWxhdGUgYW5kIGFkanVzdCBFQ0Mgc3RyZW50aCBiYXNlZCBvbiBPT0Ig RUNDIGJ5dGVzICovCj4gKwljb25mLT5zdHJlbmd0aCA9IChlbmctPm9vYl9lY2MgPDwgMykgLwo+ ICsJCQkgbXRrX2VjY19nZXRfcGFyaXR5X2JpdHMoZW5nLT5lY2MpOwo+ICsJbXRrX2VjY19hZGp1 c3Rfc3RyZW5ndGgoZW5nLT5lY2MsICZjb25mLT5zdHJlbmd0aCk7Cj4gKwo+ICsJZW5nLT5vb2Jf ZWNjID0gRElWX1JPVU5EX1VQKGNvbmYtPnN0cmVuZ3RoICoKPiArCQkgICAgICAgbXRrX2VjY19n ZXRfcGFyaXR5X2JpdHMoZW5nLT5lY2MpLCA4KTsKPiArCj4gKwllbmctPm9vYl9mcmVlID0gZW5n LT5vb2JfcGVyX3NlY3Rpb24gLSBlbmctPm9vYl9lY2M7Cj4gKwlpZiAoZW5nLT5vb2JfZnJlZSA+ IE9PQl9GUkVFX01BWF9TSVpFKQo+ICsJCWVuZy0+b29iX2ZyZWUgPSBPT0JfRlJFRV9NQVhfU0la RTsKPiArCj4gKwllbmctPm9vYl9mcmVlX3Byb3RlY3RlZCA9IE9PQl9GUkVFX01JTl9TSVpFOwo+ ICsKPiArCWVuZy0+b29iX2VjYyA9IGVuZy0+b29iX3Blcl9zZWN0aW9uIC0gZW5nLT5vb2JfZnJl ZTsKPiArCj4gKwlpZiAoIW10ZC0+b29ibGF5b3V0KQo+ICsJCW10ZF9zZXRfb29ibGF5b3V0KG10 ZCwgbXRrX2VjY19nZXRfb29ibGF5b3V0KCkpOwo+ICsKPiArCXJldCA9IG5hbmRfZWNjX2luaXRf cmVxX3R3ZWFraW5nKCZlbmctPnJlcV9jdHgsIG5hbmQpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1 cm4gcmV0Owo+ICsKPiArCWVuZy0+c3JjX3BhZ2VfYnVmID0ga21hbGxvYyhuYW5kZGV2X3BhZ2Vf c2l6ZShuYW5kKSArCj4gKwkJCSAgICBuYW5kZGV2X3Blcl9wYWdlX29vYnNpemUobmFuZCksIEdG UF9LRVJORUwpOwo+ICsJZW5nLT5ib3VuY2VfcGFnZV9idWYgPSBrbWFsbG9jKG5hbmRkZXZfcGFn ZV9zaXplKG5hbmQpICsKPiArCQkJICAgICAgIG5hbmRkZXZfcGVyX3BhZ2Vfb29ic2l6ZShuYW5k KSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWVuZy0+c3JjX3BhZ2VfYnVmIHx8ICFlbmctPmJvdW5j ZV9wYWdlX2J1Zikgewo+ICsJCXJldCA9IC1FTk9NRU07Cj4gKwkJZ290byBjbGVhbnVwX3JlcV90 d2VhazsKPiArCX0KPiArCj4gKwllbmctPnNyY19vb2JfYnVmID0gZW5nLT5zcmNfcGFnZV9idWYg KyBuYW5kZGV2X3BhZ2Vfc2l6ZShuYW5kKTsKPiArCWVuZy0+Ym91bmNlX29vYl9idWYgPSBlbmct PmJvdW5jZV9wYWdlX2J1ZiArIG5hbmRkZXZfcGFnZV9zaXplKG5hbmQpOwo+ICsKPiArCW10a19l Y2Nfc2V0X2JibV9jdGwoJmVuZy0+YmJtX2N0bCwgbmFuZCk7Cj4gKwllbmctPmVjY19jZmcuc3Ry ZW5ndGggPSBjb25mLT5zdHJlbmd0aDsKPiArCWVuZy0+ZWNjX2NmZy5sZW4gPSBjb25mLT5zdGVw X3NpemUgKyBlbmctPm9vYl9mcmVlX3Byb3RlY3RlZDsKPiArCW10ZC0+Yml0ZmxpcF90aHJlc2hv bGQgPSBjb25mLT5zdHJlbmd0aDsKPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK2NsZWFudXBfcmVx X3R3ZWFrOgo+ICsJbmFuZF9lY2NfY2xlYW51cF9yZXFfdHdlYWtpbmcoJmVuZy0+cmVxX2N0eCk7 Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArdm9pZCBtdGtfZWNjX2NsZWFudXBfY3R4 X3BpcGVsaW5lZChzdHJ1Y3QgbmFuZF9kZXZpY2UgKm5hbmQpCj4gK3sKPiArCXN0cnVjdCBtdGtf ZWNjX2VuZ2luZSAqZW5nID0gbmFuZF90b19lY2NfY3R4KG5hbmQpOwo+ICsKPiArCWlmIChlbmcp IHsKPiArCQluYW5kX2VjY19jbGVhbnVwX3JlcV90d2Vha2luZygmZW5nLT5yZXFfY3R4KTsKPiAr CQlrZnJlZShlbmctPnNyY19wYWdlX2J1Zik7Cj4gKwkJa2ZyZWUoZW5nLT5ib3VuY2VfcGFnZV9i dWYpOwo+ICsJfQo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBUaGUgTVRLIEVDQyBlbmdpbmUgd29yayBh dCBwaXBlbGluZWQgc2l0dWF0aW9uLAo+ICsgKiB3aWxsIGJlIHJlZ2lzdGVyZWQgYnkgdGhlIGRy aXZlcnMgdGhhdCB3cmFwIGl0Lgo+ICsgKi8KPiArc3RhdGljIHN0cnVjdCBuYW5kX2VjY19lbmdp bmVfb3BzIG10a19lY2NfZW5naW5lX3BpcGVsaW5lZF9vcHMgPSB7Cj4gKwkuaW5pdF9jdHggPSBt dGtfZWNjX2luaXRfY3R4X3BpcGVsaW5lZCwKPiArCS5jbGVhbnVwX2N0eCA9IG10a19lY2NfY2xl YW51cF9jdHhfcGlwZWxpbmVkLAo+ICsJLnByZXBhcmVfaW9fcmVxID0gbXRrX2VjY19wcmVwYXJl X2lvX3JlcV9waXBlbGluZWQsCj4gKwkuZmluaXNoX2lvX3JlcSA9IG10a19lY2NfZmluaXNoX2lv X3JlcV9waXBlbGluZWQsCj4gK307Cj4gKwo+ICtzdHJ1Y3QgbmFuZF9lY2NfZW5naW5lX29wcyAq bXRrX2VjY19nZXRfcGlwZWxpbmVkX29wcyh2b2lkKQo+ICt7Cj4gKwlyZXR1cm4gJm10a19lY2Nf ZW5naW5lX3BpcGVsaW5lZF9vcHM7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChtdGtfZWNjX2dldF9w aXBlbGluZWRfb3BzKTsKPiArCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2VjY19jYXBzIG10 a19lY2NfY2Fwc19tdDI3MDEgPSB7Cj4gIAkuZXJyX21hc2sgPSAweDNmLAo+ICAJLmVjY19zdHJl bmd0aCA9IGVjY19zdHJlbmd0aF9tdDI3MDEsCj4gQEAgLTQ3Miw2ICsxMDgzLDkgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBtdGtfZWNjX2NhcHMgbXRrX2VjY19jYXBzX210NzYyMiA9IHsKPiAgCS5l Y2Nfc3RyZW5ndGggPSBlY2Nfc3RyZW5ndGhfbXQ3NjIyLAo+ICAJLmVjY19yZWdzID0gbXQ3NjIy X2VjY19yZWdzLAo+ICAJLm51bV9lY2Nfc3RyZW5ndGggPSA3LAo+ICsJLnNwYXJlX3NpemUgPSBz cGFyZV9zaXplX210NzYyMiwKPiArCS5udW1fc3BhcmVfc2l6ZSA9IDE5LAo+ICsJLm1heF9zZWN0 aW9uX3NpemUgPSAxMDI0LAo+ICAJLmVjY19tb2RlX3NoaWZ0ID0gNCwKPiAgCS5wYXJpdHlfYml0 cyA9IDEzLAo+ICAJLnBnX2lycV9zZWwgPSAwLAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4 L210ZC9uYW5kLWVjYy1tdGsuaCBiL2luY2x1ZGUvbGludXgvbXRkL25hbmQtZWNjLW10ay5oCj4g aW5kZXggMGU0OGMzNmU2Y2EwLi42ZDU1MDAzMmNiZDkgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9s aW51eC9tdGQvbmFuZC1lY2MtbXRrLmgKPiArKysgYi9pbmNsdWRlL2xpbnV4L210ZC9uYW5kLWVj Yy1tdGsuaAo+IEBAIC0zMyw2ICszMyw2MSBAQCBzdHJ1Y3QgbXRrX2VjY19jb25maWcgewo+ICAJ dTMyIGxlbjsKPiAgfTsKPiAgCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgbXRrX2VjY19iYm1fY3RsIC0g SW5mb3JtYXRpb24gcmVsYXRpdmUgdG8gdGhlIEJCTSBzd2FwCj4gKyAqIEBiYm1fc3dhcDogQkJN IHN3YXAgZnVuY3Rpb24KPiArICogQHNlY3Rpb246IFNlY3Rpb24gbnVtYmVyIGluIGRhdGEgYXJl YSBmb3Igc3dhcAo+ICsgKiBAcG9zaXRpb246IFBvc2l0aW9uIGluIEBzZWN0aW9uIGZvciBzd2Fw IHdpdGggQkJNCj4gKyAqLwo+ICtzdHJ1Y3QgbXRrX2VjY19iYm1fY3RsIHsKPiArCXZvaWQgKCpi Ym1fc3dhcCkoc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kLCB1OCAqZGF0YWJ1ZiwgdTggKm9vYmJ1 Zik7Cj4gKwl1MzIgc2VjdGlvbjsKPiArCXUzMiBwb3NpdGlvbjsKPiArfTsKPiArCj4gKy8qKgo+ ICsgKiBzdHJ1Y3QgbXRrX2VjY19lbmdpbmUgLSBJbmZvcm1hdGlvbiByZWxhdGl2ZSB0byB0aGUg RUNDCj4gKyAqIEByZXFfY3R4OiBTYXZlIHJlcXVlc3QgY29udGV4dCBhbmQgdHdlYWsgdGhlIG9y aWdpbmFsIHJlcXVlc3QgdG8gZml0IHRoZQo+ICsgKiAgICAgICAgICAgZW5naW5lIG5lZWRzCj4g KyAqIEBvb2JfcGVyX3NlY3Rpb246IE9PQiBzaXplIGZvciBlYWNoIHNlY3Rpb24gdG8gc3RvcmUg T09CIGZyZWUvRUNDIGJ5dGVzCj4gKyAqIEBvb2JfcGVyX3NlY3Rpb25faWR4OiBUaGUgaW5kZXgg Zm9yIEBvb2JfcGVyX3NlY3Rpb24gaW4gc3BhcmUgc2l6ZSBhcnJheQo+ICsgKiBAb29iX2VjYzog T09CIHNpemUgZm9yIGVhY2ggc2VjdGlvbiB0byBzdG9yZSB0aGUgRUNDIHBhcml0eQo+ICsgKiBA b29iX2ZyZWU6IE9PQiBzaXplIGZvciBlYWNoIHNlY3Rpb24gdG8gc3RvcmUgdGhlIE9PQiBmcmVl IGJ5dGVzCj4gKyAqIEBvb2JfZnJlZV9wcm90ZWN0ZWQ6IE9PQiBmcmVlIGJ5dGVzIHdpbGwgYmUg cHJvdGVjdGVkIGJ5IHRoZSBFQ0MgZW5naW5lCj4gKyAqIEBzZWN0aW9uX3NpemU6IFRoZSBzaXpl IG9mIGVhY2ggc2VjdGlvbgo+ICsgKiBAcmVhZF9lbXB0eTogSW5kaWNhdGUgd2hldGhlciBlbXB0 eSBwYWdlIGZvciBvbmUgcmVhZCBvcGVyYXRpb24KPiArICogQG5zdGVwczogVGhlIG51bWJlciBv ZiB0aGUgc2VjdGlvbnMKPiArICogQHNyY19wYWdlX2J1ZjogQnVmZmVyIHVzZWQgdG8gc3RvcmUg c291cmNlIGRhdGEgYnVmZmVyIHdoZW4gd3JpdGUKPiArICogQHNyY19vb2JfYnVmOiBCdWZmZXIg dXNlZCB0byBzdG9yZSBzb3VyY2UgT09CIGJ1ZmZlciB3aGVuIHdyaXRlCj4gKyAqIEBib3VuY2Vf cGFnZV9idWY6IERhdGEgYm91bmNlIGJ1ZmZlcgo+ICsgKiBAYm91bmNlX29vYl9idWY6IE9PQiBi b3VuY2UgYnVmZmVyCj4gKyAqIEBlY2M6IFRoZSBFQ0MgZW5naW5lIHByaXZhdGUgZGF0YSBzdHJ1 Y3R1cmUKPiArICogQGVjY19jZmc6IFRoZSBjb25maWd1cmF0aW9uIG9mIGVhY2ggRUNDIG9wZXJh dGlvbgo+ICsgKiBAYmJtX2N0bDogSW5mb3JtYXRpb24gcmVsYXRpdmUgdG8gdGhlIEJCTSBzd2Fw Cj4gKyAqLwo+ICtzdHJ1Y3QgbXRrX2VjY19lbmdpbmUgewo+ICsJc3RydWN0IG5hbmRfZWNjX3Jl cV90d2Vha19jdHggcmVxX2N0eDsKPiArCj4gKwl1MzIgb29iX3Blcl9zZWN0aW9uOwo+ICsJdTMy IG9vYl9wZXJfc2VjdGlvbl9pZHg7Cj4gKwl1MzIgb29iX2VjYzsKPiArCXUzMiBvb2JfZnJlZTsK PiArCXUzMiBvb2JfZnJlZV9wcm90ZWN0ZWQ7Cj4gKwl1MzIgc2VjdGlvbl9zaXplOwo+ICsKPiAr CWJvb2wgcmVhZF9lbXB0eTsKPiArCXUzMiBuc3RlcHM7Cj4gKwo+ICsJdTggKnNyY19wYWdlX2J1 ZjsKPiArCXU4ICpzcmNfb29iX2J1ZjsKPiArCXU4ICpib3VuY2VfcGFnZV9idWY7Cj4gKwl1OCAq Ym91bmNlX29vYl9idWY7Cj4gKwo+ICsJc3RydWN0IG10a19lY2MgKmVjYzsKPiArCXN0cnVjdCBt dGtfZWNjX2NvbmZpZyBlY2NfY2ZnOwo+ICsJc3RydWN0IG10a19lY2NfYmJtX2N0bCBiYm1fY3Rs Owo+ICt9OwoKVGhpcyBhbmQgYWJvdmUgc2hvdWxkIG5vdCBiZSBleHBvcnRlZCBhbmQgYmUgbG9j YXRlZCBpbiB0aGUgZHJpdmVyLgoKPiArCj4gIGludCBtdGtfZWNjX2VuY29kZShzdHJ1Y3QgbXRr X2VjYyAqLCBzdHJ1Y3QgbXRrX2VjY19jb25maWcgKiwgdTggKiwgdTMyKTsKPiAgdm9pZCBtdGtf ZWNjX2dldF9zdGF0cyhzdHJ1Y3QgbXRrX2VjYyAqLCBzdHJ1Y3QgbXRrX2VjY19zdGF0cyAqLCBp bnQpOwo+ICBpbnQgbXRrX2VjY193YWl0X2RvbmUoc3RydWN0IG10a19lY2MgKiwgZW51bSBtdGtf ZWNjX29wZXJhdGlvbik7Cj4gQEAgLTQ0LDQgKzk5LDE3IEBAIHVuc2lnbmVkIGludCBtdGtfZWNj X2dldF9wYXJpdHlfYml0cyhzdHJ1Y3QgbXRrX2VjYyAqZWNjKTsKPiAgc3RydWN0IG10a19lY2Mg Km9mX210a19lY2NfZ2V0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqKTsKPiAgdm9pZCBtdGtfZWNjX3Jl bGVhc2Uoc3RydWN0IG10a19lY2MgKik7Cj4gIAo+ICsjaWYgSVNfRU5BQkxFRChDT05GSUdfTVRE X05BTkRfRUNDX01USykKPiArCj4gK3N0cnVjdCBuYW5kX2VjY19lbmdpbmVfb3BzICptdGtfZWNj X2dldF9waXBlbGluZWRfb3BzKHZvaWQpOwo+ICsKPiArI2Vsc2UgLyogIUNPTkZJR19NVERfTkFO RF9FQ0NfTVRLICovCj4gKwo+ICtzdHJ1Y3QgbmFuZF9lY2NfZW5naW5lX29wcyAqbXRrX2VjY19n ZXRfcGlwZWxpbmVkX29wcyh2b2lkKQo+ICt7Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiAr I2VuZGlmIC8qIENPTkZJR19NVERfTkFORF9FQ0NfTVRLICovCj4gKwo+ICAjZW5kaWYKCgpUaGFu a3MsCk1pcXXDqGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpMaW51eCBNVEQgZGlzY3Vzc2lvbiBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tdGQvCg==