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 3C71DC7619A for ; Wed, 12 Apr 2023 12:08:10 +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:In-Reply-To:References:CC:To:From: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=SFqYd1QoWtFMBkNQgi1CKSq1ZHuOc5auE0XAK7kH3mE=; b=uIfPt7L6JF7AR8 l7ckfUL87/Qp0wcjmYAfoYugf+AKQYQycuyW7YwRCCAWaRDpvIlnz5TvQVjlWyHummlVsHrxl/INE p1o+KL9bwK4LKhXwoersmtrprmjHxkmtykoo/aCUj7aShN/8dNhT0zAyKRmBVbjYzhquGrXC0+BM1 se5OuEGuCs6diAT5yNaRgkJNe20Q4QTsq/sRDUlKThbMtnKbHUkry1UvtLS3oWYsWyMJoO7dmBZWz Qprs6KwAfKdiD8oqLXlhcgydjB3pt7Iy4q8z+4w1UIXtvzOMIsGGSNYa5qfIOD6jcj0TBWa3O5pDV /ZFIaZNV6bNkBGhgRyww==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pmZGG-00329q-2v; Wed, 12 Apr 2023 12:07:40 +0000 Received: from mx.sberdevices.ru ([45.89.227.171]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pmZGB-003295-1l; Wed, 12 Apr 2023 12:07:37 +0000 Received: from s-lin-edge02.sberdevices.ru (localhost [127.0.0.1]) by mx.sberdevices.ru (Postfix) with ESMTP id B864E5FD61; Wed, 12 Apr 2023 15:07:32 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sberdevices.ru; s=mail; t=1681301252; bh=RBlTRXDLIteQfdx/CeJXxmURxfAOJvNhit6F9MPESy4=; h=Message-ID:Date:MIME-Version:Subject:From:To:Content-Type; b=D+pg0wIZ7FXTcZB1ZGrPGPc7lo4jYYWNoCGcH1CGstZ4HPo7CcfXBijql17Nmq7jw gNMSXdqx0ysI1DaqTE9eLmMt9/u8D/gXVdrPOw34Sm9uPbS4gAhaxws5RDVsLvgYCU e9Yjbmhf1OJv6Ly/icYm5y3ljwHueJ0FPjg3hOlXmIsMOOldkU2V4PmAJOdIAVFOna JTld0d73+1HIH8ZjtXt0TdB6v1sw1euve6Jp9EGGqjxzxn+2C9preXYTaNHwIfFD8i PfOWzCjNyt+j3nYeJ6ZXFMwwzk4BNxz3GU2gx1fmmbtNCBO8+l8mOSqZYFc8m6Plju RrSSVkSRcE8Ig== Received: from S-MS-EXCH01.sberdevices.ru (S-MS-EXCH01.sberdevices.ru [172.16.1.4]) by mx.sberdevices.ru (Postfix) with ESMTP; Wed, 12 Apr 2023 15:07:31 +0300 (MSK) Message-ID: <4f552f57-c31e-985c-82be-081dff38d377@sberdevices.ru> Date: Wed, 12 Apr 2023 15:03:43 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH v1 1/5] mtd: rawnand: meson: fix NAND access for read/write Content-Language: en-US From: Arseniy Krasnov To: Liang Yang , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Yixun Lan , Jianxin Pan CC: , , , , , References: <20230412061700.1492474-1-AVKrasnov@sberdevices.ru> <20230412061700.1492474-2-AVKrasnov@sberdevices.ru> <889cf54e-584c-9bee-2106-633155897324@amlogic.com> <3f247cbe-2798-4871-82a5-5124142fdcc5@sberdevices.ru> In-Reply-To: <3f247cbe-2798-4871-82a5-5124142fdcc5@sberdevices.ru> X-Originating-IP: [172.16.1.6] X-ClientProxiedBy: S-MS-EXCH02.sberdevices.ru (172.16.1.5) To S-MS-EXCH01.sberdevices.ru (172.16.1.4) X-KSMG-Rule-ID: 4 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiPhishing: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 1.1.2.30, bases: 2023/04/12 04:12:00 #21090163 X-KSMG-AntiVirus-Status: Clean, skipped X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230412_050735_950281_3CE6CEDC X-CRM114-Status: GOOD ( 23.92 ) 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 CgpPbiAxMi4wNC4yMDIzIDEzOjI0LCBBcnNlbml5IEtyYXNub3Ygd3JvdGU6Cj4gCj4gCj4gT24g MTIuMDQuMjAyMyAxMjozNywgTGlhbmcgWWFuZyB3cm90ZToKPj4gSGkgQXJzZW5peSwKPj4KPj4g VGhhbmtzIGZvciBwb2ludGluZyBvdXQgdGhpcyBwcm9ibGVtLiBhbHNvIGNvbW1lbnQgaW5saW5l Lgo+Pgo+PiBPbiAyMDIzLzQvMTIgMTQ6MTYsIEFyc2VuaXkgS3Jhc25vdiB3cm90ZToKPj4+IFsg RVhURVJOQUwgRU1BSUwgXQo+Pj4KPj4+IFRoaXMgZml4ZXMgcmVhZC93cml0ZSBmdW5jdGlvbmFs aXR5LiBOZXcgY29tbWFuZCBzZXF1ZW5jZXMgd2VyZSBwb3J0ZWQKPj4+IGZyb20gb2xkIHZlbmRv cidzIGRyaXZlci4gV2l0aG91dCB0aGlzIHBhdGNoIGRyaXZlciB3b3JrcyB1bnN0YWJsZS4gVGhp cwo+Pj4gY2hhbmdlIGlzIHRlc3RlZCB3aXRoICduYW5kZHVtcCcvJ25hbmR3cml0ZScgdXRpbGl0 aWVzIGFuZCBtb3VudGluZwo+Pj4gSkZGUzIgZmlsZXN5c3RlbSBvbiBBWEcgZmFtaWx5IChBMTEz WCBTb0MpLgo+Pj4KPj4+IEZpeGVzOiA4ZmFlODU2YzUzNTAgKCJtdGQ6IHJhd25hbmQ6IG1lc29u OiBhZGQgc3VwcG9ydCBmb3IgQW1sb2dpYyBOQU5EIGZsYXNoIGNvbnRyb2xsZXIiKQo+Pj4gU2ln bmVkLW9mZi1ieTogQXJzZW5peSBLcmFzbm92IDxBVktyYXNub3ZAc2JlcmRldmljZXMucnU+Cj4+ PiAtLS0KPj4+IMKgIGRyaXZlcnMvbXRkL25hbmQvcmF3L21lc29uX25hbmQuYyB8IDExNiArKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0KPj4+IMKgIDEgZmlsZSBjaGFuZ2VkLCAxMDEgaW5z ZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bXRkL25hbmQvcmF3L21lc29uX25hbmQuYyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L21lc29uX25h bmQuYwo+Pj4gaW5kZXggMDc0ZTE0MjI1YzA2Li4yNTZjMzdjNzY1MjYgMTAwNjQ0Cj4+PiAtLS0g YS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9tZXNvbl9uYW5kLmMKPj4+ICsrKyBiL2RyaXZlcnMvbXRk L25hbmQvcmF3L21lc29uX25hbmQuYwo+Pj4gQEAgLTI2LDYgKzI2LDcgQEAKPj4+IMKgICNkZWZp bmUgTkZDX0NNRF9JRExFwqDCoMKgwqDCoMKgwqAgKDB4YyA8PCAxNCkKPj4+IMKgICNkZWZpbmUg TkZDX0NNRF9DTEXCoMKgwqDCoMKgwqDCoCAoMHg1IDw8IDE0KQo+Pj4gwqAgI2RlZmluZSBORkNf Q01EX0FMRcKgwqDCoMKgwqDCoMKgICgweDYgPDwgMTQpCj4+PiArI2RlZmluZSBORkNfQ01EX0RS RMKgwqDCoMKgwqDCoMKgICgweDggPDwgMTQpCj4+PiDCoCAjZGVmaW5lIE5GQ19DTURfQURMwqDC oMKgwqDCoMKgwqAgKCgwIDw8IDE2KSB8ICgzIDw8IDIwKSkKPj4+IMKgICNkZWZpbmUgTkZDX0NN RF9BREjCoMKgwqDCoMKgwqDCoCAoKDEgPDwgMTYpIHwgKDMgPDwgMjApKQo+Pj4gwqAgI2RlZmlu ZSBORkNfQ01EX0FJTMKgwqDCoMKgwqDCoMKgICgoMiA8PCAxNikgfCAoMyA8PCAyMCkpCj4+PiBA QCAtODQsNiArODUsNyBAQAo+Pj4gwqAgwqAgI2RlZmluZSBETUFfQlVTWV9USU1FT1VUwqDCoMKg IDB4MTAwMDAwCj4+PiDCoCAjZGVmaW5lIENNRF9GSUZPX0VNUFRZX1RJTUVPVVTCoMKgwqAgMTAw MAo+Pj4gKyNkZWZpbmUgREVWSUNFX1JFQURZX1RJTUVPVVTCoMKgwqAgMTAwMAo+Pj4gwqAgwqAg I2RlZmluZSBNQVhfQ0VfTlVNwqDCoMKgwqDCoMKgwqAgMgo+Pj4gwqAgQEAgLTI1NSw4ICsyNTcs MjYgQEAgc3RhdGljIHZvaWQgbWVzb25fbmZjX3NlbGVjdF9jaGlwKHN0cnVjdCBuYW5kX2NoaXAg Km5hbmQsIGludCBjaGlwKQo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiDCoCB9Cj4+PiDCoCArc3RhdGlj IGludCBtZXNvbl9uZmNfd2FpdF9jbWRfZmluaXNoKHN0cnVjdCBtZXNvbl9uZmMgKm5mYywKPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCB0 aW1lb3V0X21zKQo+Pj4gK3sKPj4+ICvCoMKgwqAgdTMyIGNtZF9zaXplID0gMDsKPj4+ICvCoMKg wqAgaW50IHJldDsKPj4+ICsKPj4+ICvCoMKgwqAgLyogd2FpdCBjbWQgZmlmbyBpcyBlbXB0eSAq Lwo+Pj4gK8KgwqDCoCByZXQgPSByZWFkbF9yZWxheGVkX3BvbGxfdGltZW91dChuZmMtPnJlZ19i YXNlICsgTkZDX1JFR19DTUQsIGNtZF9zaXplLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgIU5GQ19DTURfR0VUX1NJWkUoY21kX3NpemUpLAo+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMTAsIHRpbWVvdXRfbXMgKiAxMDAw KTsKPj4+ICvCoMKgwqAgaWYgKHJldCkKPj4+ICvCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKG5mYy0+ ZGV2LCAid2FpdCBmb3IgZW1wdHkgQ01EIEZJRk8gdGltZWQgb3V0XG4iKTsKPj4+ICsKPj4+ICvC oMKgwqAgcmV0dXJuIHJldDsKPj4+ICt9Cj4+PiArCj4+PiDCoCBzdGF0aWMgdm9pZCBtZXNvbl9u ZmNfY21kX2lkbGUoc3RydWN0IG1lc29uX25mYyAqbmZjLCB1MzIgdGltZSkKPj4+IMKgIHsKPj4+ ICvCoMKgwqAgbWVzb25fbmZjX3dhaXRfY21kX2ZpbmlzaChuZmMsIDApOwo+Pj4gKwo+Pj4gwqDC oMKgwqDCoCB3cml0ZWwobmZjLT5wYXJhbS5jaGlwX3NlbGVjdCB8IE5GQ19DTURfSURMRSB8ICh0 aW1lICYgMHgzZmYpLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5mYy0+cmVnX2Jhc2Ug KyBORkNfUkVHX0NNRCk7Cj4+PiDCoCB9Cj4+PiBAQCAtMzA4LDIzICszMjgsOSBAQCBzdGF0aWMg dm9pZCBtZXNvbl9uZmNfZHJhaW5fY21kKHN0cnVjdCBtZXNvbl9uZmMgKm5mYykKPj4+IMKgwqDC oMKgwqDCoCAqLwo+Pj4gwqDCoMKgwqDCoCBtZXNvbl9uZmNfY21kX2lkbGUobmZjLCAwKTsKPj4+ IMKgwqDCoMKgwqAgbWVzb25fbmZjX2NtZF9pZGxlKG5mYywgMCk7Cj4+PiArwqDCoMKgIG1lc29u X25mY193YWl0X2NtZF9maW5pc2gobmZjLCAxMDAwKTsKPj4+IMKgIH0KPj4+IMKgIC1zdGF0aWMg aW50IG1lc29uX25mY193YWl0X2NtZF9maW5pc2goc3RydWN0IG1lc29uX25mYyAqbmZjLAo+Pj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IHRp bWVvdXRfbXMpCj4+PiAtewo+Pj4gLcKgwqDCoCB1MzIgY21kX3NpemUgPSAwOwo+Pj4gLcKgwqDC oCBpbnQgcmV0Owo+Pj4gLQo+Pj4gLcKgwqDCoCAvKiB3YWl0IGNtZCBmaWZvIGlzIGVtcHR5ICov Cj4+PiAtwqDCoMKgIHJldCA9IHJlYWRsX3JlbGF4ZWRfcG9sbF90aW1lb3V0KG5mYy0+cmVnX2Jh c2UgKyBORkNfUkVHX0NNRCwgY21kX3NpemUsCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAhTkZDX0NNRF9HRVRfU0laRShjbWRfc2l6ZSksCj4+PiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxMCwgdGltZW91dF9tcyAqIDEwMDAp Owo+Pj4gLcKgwqDCoCBpZiAocmV0KQo+Pj4gLcKgwqDCoMKgwqDCoMKgIGRldl9lcnIobmZjLT5k ZXYsICJ3YWl0IGZvciBlbXB0eSBDTUQgRklGTyB0aW1lIG91dFxuIik7Cj4+PiAtCj4+PiAtwqDC oMKgIHJldHVybiByZXQ7Cj4+PiAtfQo+Pj4gwqAgwqAgc3RhdGljIGludCBtZXNvbl9uZmNfd2Fp dF9kbWFfZmluaXNoKHN0cnVjdCBtZXNvbl9uZmMgKm5mYykKPj4+IMKgIHsKPj4+IEBAIC02MzEs NiArNjM3LDQ4IEBAIHN0YXRpYyBpbnQgbWVzb25fbmZjX3J3X2NtZF9wcmVwYXJlX2FuZF9leGVj dXRlKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4+PiDCoMKgwqDCoMKgIHJldHVybiAwOwo+Pj4g wqAgfQo+Pj4gwqAgK3N0YXRpYyB1aW50OF90IG1lc29uX25mY19yZWFkX2J5dGUoc3RydWN0IG5h bmRfY2hpcCAqbmFuZCkKPj4+ICt7Cj4+PiArwqDCoMKgIHN0cnVjdCBtZXNvbl9uZmMgKm5mYyA9 IG5hbmRfZ2V0X2NvbnRyb2xsZXJfZGF0YShuYW5kKTsKPj4+ICsKPj4+ICvCoMKgwqAgd3JpdGVs KE5GQ19DTURfRFJELCBuZmMtPnJlZ19iYXNlICsgTkZDX1JFR19DTUQpOwo+Pj4gK8KgwqDCoCBt ZXNvbl9uZmNfY21kX2lkbGUobmZjLCBuZmMtPnRpbWluZy50d2IpOwo+Pj4gK8KgwqDCoCBtZXNv bl9uZmNfZHJhaW5fY21kKG5mYyk7Cj4+PiArCj4+PiArwqDCoMKgIHJldHVybiByZWFkbChuZmMt PnJlZ19iYXNlICsgTkZDX1JFR19CVUYpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IG1l c29uX25mY193YWl0X2Rldl9yZWFkeShzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kKQo+Pj4gK3sKPj4+ ICvCoMKgwqAgc3RydWN0IG1lc29uX25mYyAqbmZjID0gbmFuZF9nZXRfY29udHJvbGxlcl9kYXRh KG5hbmQpOwo+Pj4gK8KgwqDCoCB1MzIgY3MgPSBuZmMtPnBhcmFtLmNoaXBfc2VsZWN0Owo+Pj4g K8KgwqDCoCB1bnNpZ25lZCBsb25nIGNudCA9IDA7Cj4+PiArCj4+PiArwqDCoMKgIG1lc29uX25m Y19kcmFpbl9jbWQobmZjKTsKPj4+ICsKPj4+ICvCoMKgwqAgd3JpdGVsKGNzIHwgTkZDX0NNRF9D TEUgfCBOQU5EX0NNRF9TVEFUVVMsIG5mYy0+cmVnX2Jhc2UgKyBORkNfUkVHX0NNRCk7Cj4+PiAr Cj4+PiArwqDCoMKgIC8qIDEwIG1zLiAqLwo+Pj4gK8KgwqDCoCB3aGlsZSAoY250IDwgREVWSUNF X1JFQURZX1RJTUVPVVQpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoCB1aW50OF90IHN0YXR1czsKPj4+ ICsKPj4+ICvCoMKgwqDCoMKgwqDCoCBzdGF0dXMgPSBtZXNvbl9uZmNfcmVhZF9ieXRlKG5hbmQp Owo+Pj4gKwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChzdGF0dXMgJiBOQU5EX1NUQVRVU19SRUFE WSkKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+Pj4gKwo+Pj4gK8KgwqDCoMKg wqDCoMKgIHVzbGVlcF9yYW5nZSgxMCwgMTEpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGNudCsrOwo+ Pj4gK8KgwqDCoCB9Cj4+PiArCj4+PiArwqDCoMKgIGlmIChjbnQgPT0gREVWSUNFX1JFQURZX1RJ TUVPVVQpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKG5mYy0+ZGV2LCAiZGV2aWNlIHJl YWR5IHRpbWVvdXRcbiIpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRVRJTUVET1VUOwo+ Pj4gK8KgwqDCoCB9Cj4+PiArCj4+PiArwqDCoMKgIHJldHVybiAwOwo+Pj4gK30KPj4+ICsKPj4+ IMKgIHN0YXRpYyBpbnQgbWVzb25fbmZjX3dyaXRlX3BhZ2Vfc3ViKHN0cnVjdCBuYW5kX2NoaXAg Km5hbmQsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50 IHBhZ2UsIGludCByYXcpCj4+PiDCoCB7Cj4+PiBAQCAtNjQzLDYgKzY5MSwxMCBAQCBzdGF0aWMg aW50IG1lc29uX25mY193cml0ZV9wYWdlX3N1YihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+Pj4g wqDCoMKgwqDCoCB1MzIgY21kOwo+Pj4gwqDCoMKgwqDCoCBpbnQgcmV0Owo+Pj4gwqAgK8KgwqDC oCByZXQgPSBtZXNvbl9uZmNfd2FpdF9kZXZfcmVhZHkobmFuZCk7Cj4+PiArwqDCoMKgIGlmIChy ZXQpCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+ICsKPj4+IMKgwqDCoMKgwqAg bWVzb25fbmZjX3NlbGVjdF9jaGlwKG5hbmQsIG5hbmQtPmN1cl9jcyk7Cj4+PiDCoCDCoMKgwqDC oMKgIGRhdGFfbGVuID3CoCBtdGQtPndyaXRlc2l6ZSArIG10ZC0+b29ic2l6ZTsKPj4+IEBAIC02 NjcsMTIgKzcxOSwyMCBAQCBzdGF0aWMgaW50IG1lc29uX25mY193cml0ZV9wYWdlX3N1YihzdHJ1 Y3QgbmFuZF9jaGlwICpuYW5kLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgTkZDX0NNRF9TQ1JBTUJMRVJfRElTQUJMRSk7Cj4+PiDCoMKgwqDCoMKgIH0K Pj4+IMKgICvCoMKgwqAgcmV0ID0gbWVzb25fbmZjX3dhaXRfZG1hX2ZpbmlzaChuZmMpOwo+Pj4g K8KgwqDCoCBpZiAocmV0KQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+PiArCj4+ PiDCoMKgwqDCoMKgIGNtZCA9IG5mYy0+cGFyYW0uY2hpcF9zZWxlY3QgfCBORkNfQ01EX0NMRSB8 IE5BTkRfQ01EX1BBR0VQUk9HOwo+Pj4gwqDCoMKgwqDCoCB3cml0ZWwoY21kLCBuZmMtPnJlZ19i YXNlICsgTkZDX1JFR19DTUQpOwo+Pj4gwqDCoMKgwqDCoCBtZXNvbl9uZmNfcXVldWVfcmIobmZj LCBQU0VDX1RPX01TRUMoc2RyLT50UFJPR19tYXgpKTsKPj4+IMKgIMKgwqDCoMKgwqAgbWVzb25f bmZjX2RtYV9idWZmZXJfcmVsZWFzZShuYW5kLCBkYXRhX2xlbiwgaW5mb19sZW4sIERNQV9UT19E RVZJQ0UpOwo+Pj4gwqAgK8KgwqDCoCByZXQgPSBtZXNvbl9uZmNfd2FpdF9kZXZfcmVhZHkobmFu ZCk7Cj4+PiArwqDCoMKgIGlmIChyZXQpCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsK Pj4+ICsKPj4+IMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+IMKgIH0KPj4+IMKgIEBAIC03MjAs NiArNzgwLDIxIEBAIHN0YXRpYyB2b2lkIG1lc29uX25mY19jaGVja19lY2NfcGFnZXNfdmFsaWQo c3RydWN0IG1lc29uX25mYyAqbmZjLAo+Pj4gwqDCoMKgwqDCoCB9IHdoaWxlICghcmV0KTsKPj4+ IMKgIH0KPj4+IMKgICtzdGF0aWMgaW5saW5lIGludCBtZXNvbl9uZmNfc2VuZF9yZWFkKHN0cnVj dCBuYW5kX2NoaXAgKm5hbmQpCj4+PiArewo+Pj4gK8KgwqDCoCBzdHJ1Y3QgbWVzb25fbmZjICpu ZmMgPSBuYW5kX2dldF9jb250cm9sbGVyX2RhdGEobmFuZCk7Cj4+PiArwqDCoMKgIHUzMiBjcyA9 IG5mYy0+cGFyYW0uY2hpcF9zZWxlY3Q7Cj4+PiArwqDCoMKgIGludCByZXQ7Cj4+PiArCj4+PiAr wqDCoMKgIHJldCA9IG1lc29uX25mY193YWl0X2Rldl9yZWFkeShuYW5kKTsKPj4+ICvCoMKgwqAg aWYgKHJldCkKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+Pj4gKwo+Pj4gK8KgwqDC oCB3cml0ZWwoY3MgfCBORkNfQ01EX0NMRSB8IE5BTkRfQ01EX1JFQUQwLCBuZmMtPnJlZ19iYXNl ICsgTkZDX1JFR19DTUQpOwo+Pj4gKwo+Pj4gK8KgwqDCoCByZXR1cm4gMDsKPj4+ICt9Cj4+PiAr Cj4+Cj4+IGl0IGFscmVhZHkgY2FsbHMgbWVzb25fbmZjX3F1ZXVlX3JiKCkgaW4gbWVzb25fbmZj X3J3X2NtZF9wcmVwYXJlX2FuZF9leGVjdXRlKCkuIENvdWxkIHlvdSBpbXBsZW1lbnRzIHRoaXMg aW4gbWVzb25fbmZjX3F1ZXVlX3JiKCk/IGFuZCB3ZSBjYW4gdXNlIHRoZSBpcnEgbWV0aG9kLgo+ PiBhbHNvIHdpdGhvdXQgUmVhZHkvQnVzeSBwaW4sIHRoZSBtZXNvbl9uZmNfcXVldWVfcmIoKSBz aG91bGQgY2hhbmdlIGxpa2UgYmVsb3c6Cj4+IMKgwqDCoMKgLi4uLi4uCj4+IMKgwqDCoMKgI2Rl ZmluZSBORkNfQ01EX1JCX0lOVMKgwqDCoCAoKDB4YiA8PCAxMCkgfCBCSVQoMTgpKQoKU29ycnks IEkgY2FuIHNlZSB0aGlzIGRlZmluZSBhcyAoYW5kIGl0IGlzIHVzZWQgaW4gdGhlIGRyaXZlcik6 CiNkZWZpbmUgTkZDX0NNRF9SQl9JTlQgICAgICAgICAgQklUKDE0KSAKCmluIGRyaXZlcnMvbXRk L25hbmQvcmF3L21lc29uX25hbmQuYwoKV2hpY2ggb25lIGlzIGNvcnJlY3QgPwoKVGhhbmtzLCBB cnNlbml5Cgo+Pgo+PiDCoMKgwqDCoG1lc29uX25mY19jbWRfaWRsZShuZmMsIDApOwo+PiDCoMKg wqDCoGNtZCA9IG5mYy0+cGFyYW0uY2hpcF9zZWxlY3QgfCBORkNfQ01EX0NMRSB8IE5BTkRfQ01E X1NUQVRVUzsKPj4gwqDCoMKgwqB3cml0ZWwoY21kLCBuZmMtPnJlZ19iYXNlICsgTkZDX1JFR19D TUQpOwo+PiDCoMKgwqDCoG1lc29uX25mY19jbWRfaWRsZShuZmMsIDUpOwo+PiDCoMKgwqDCoGNt ZCA9IE5GQ19DTURfUkIgfCBORkNfQ01EX1JCX0lOVCB8IG5mYy0+dGltaW5nLnRiZXJzX21heDsK Pj4gwqDCoMKgwqB3cml0ZWwoY21kLCBuZmMtPnJlZ19iYXNlICsgTkZDX1JFR19DTUQpOwo+Pgo+ PiDCoMKgwqDCoHJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmbmZjLT5jb21wbGV0 aW9uLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbXNlY3Nf dG9famlmZmllcyh0aW1lb3V0X21zKSk7Cj4+IMKgwqDCoMKgaWYgKHJldCA9PSAwKQo+PiDCoMKg wqDCoMKgwqDCoCByZXQgPSAtMTsKPj4KPj4gwqDCoMKgwqB3cml0ZWwoY3MgfCBORkNfQ01EX0NM RSB8IE5BTkRfQ01EX1JFQUQwLCBuZmMtPnJlZ19iYXNlICsgTkZDX1JFR19DTUQpOwo+PiDCoMKg wqDCoC4uLi4uLgo+Pgo+IAo+IMKgwqDCoMKgCj4gVGhhbmtzIGZvciByZXBseSEgSSdsbCB0cnkg dGhpcyBjb2RlISBPbmUgbW9yZSBxdWVzdGlvbiBhYm91dCBPT0IgcHJvY2Vzc2luZyBpbiB0aGlz Cj4gZHJpdmVyIChhcyBZb3UgYXJlIGF1dGhvciBvZiBpdCk6Cj4gCj4gICAgT09CIHNpemUgaXMg NjQgYnl0ZXMsIGJ1dCBmb3IgZXhhbXBsZSBpZiBJIGhhdmUgMUsgRUNDLCAyIGJ5dGVzIHVzZXIg Ynl0ZXMgYW5kIDE0Cj4gICAgYnl0ZXMgZm9yIEVDQyBjb2RlIGZvciBlYWNoIDFLLiBJbiB0aGlz IGNhc2UgSSBoYXZlIGFjY2VzcyB0byBvbmx5IDMyIGJ5dGVzIG9mIE9PQjoKPiAgICAyIHggKDIg dXNlciBieXRlcyArIDE0IEVDQyBieXRlcykuIENvcnJlY3QgbWUgaWYgaSdtIHdyb25nLCBidXQg cmVzdCBvZiBPT0IgKG5leHQKPiAgICAzMiBieXRlcykgYmVjb21lIHVuYXZhaWxhYmxlIChpbiBi b3RoIHJhdyBhbmQgRUNDIG1vZGVzKSA/Cj4gCj4gVGhhbmtzLCBBcnNlbml5Cj4gCj4+PiDCoCBz dGF0aWMgaW50IG1lc29uX25mY19yZWFkX3BhZ2Vfc3ViKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQs Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBwYWdlLCBp bnQgcmF3KQo+Pj4gwqAgewo+Pj4gQEAgLTczNCwxMCArODA5LDE4IEBAIHN0YXRpYyBpbnQgbWVz b25fbmZjX3JlYWRfcGFnZV9zdWIoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwKPj4+IMKgwqDCoMKg wqAgZGF0YV9sZW4gPcKgIG10ZC0+d3JpdGVzaXplICsgbXRkLT5vb2JzaXplOwo+Pj4gwqDCoMKg wqDCoCBpbmZvX2xlbiA9IG5hbmQtPmVjYy5zdGVwcyAqIFBFUl9JTkZPX0JZVEU7Cj4+PiDCoCAr wqDCoMKgIHJldCA9IG1lc29uX25mY193YWl0X2Rldl9yZWFkeShuYW5kKTsKPj4+ICvCoMKgwqAg aWYgKHJldCkKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+Pj4gKwo+Pj4gwqDCoMKg wqDCoCByZXQgPSBtZXNvbl9uZmNfcndfY21kX3ByZXBhcmVfYW5kX2V4ZWN1dGUobmFuZCwgcGFn ZSwgRElSUkVBRCk7Cj4+PiDCoMKgwqDCoMKgIGlmIChyZXQpCj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIHJldDsKPj4+IMKgICvCoMKgwqAgcmV0ID0gbWVzb25fbmZjX3NlbmRfcmVhZChu YW5kKTsKPj4+ICvCoMKgwqAgaWYgKHJldCkKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0 Owo+Pj4gKwo+Pj4gwqDCoMKgwqDCoCByZXQgPSBtZXNvbl9uZmNfZG1hX2J1ZmZlcl9zZXR1cChu YW5kLCBtZXNvbl9jaGlwLT5kYXRhX2J1ZiwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGRhdGFfbGVuLCBtZXNvbl9jaGlwLT5pbmZvX2J1ZiwKPj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGluZm9fbGVuLCBETUFf RlJPTV9ERVZJQ0UpOwo+Pj4gQEAgLTc1NCw2ICs4MzcsOSBAQCBzdGF0aWMgaW50IG1lc29uX25m Y19yZWFkX3BhZ2Vfc3ViKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4+PiDCoMKgwqDCoMKgIH0K Pj4+IMKgIMKgwqDCoMKgwqAgcmV0ID0gbWVzb25fbmZjX3dhaXRfZG1hX2ZpbmlzaChuZmMpOwo+ Pj4gK8KgwqDCoCBpZiAocmV0KQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+PiAr Cj4+PiDCoMKgwqDCoMKgIG1lc29uX25mY19jaGVja19lY2NfcGFnZXNfdmFsaWQobmZjLCBuYW5k LCByYXcpOwo+Pj4gwqAgwqDCoMKgwqDCoCBtZXNvbl9uZmNfZG1hX2J1ZmZlcl9yZWxlYXNlKG5h bmQsIGRhdGFfbGVuLCBpbmZvX2xlbiwgRE1BX0ZST01fREVWSUNFKTsKPj4KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eCBNVEQgZGlz Y3Vzc2lvbiBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1tdGQvCg==