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 EBEDBC77B6E for ; Wed, 12 Apr 2023 10:29:06 +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:From:References:CC:To: 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=JyOpBI+j4UV2w91AO/RA7LjEnBBQHFK6opYH3HrbsHI=; b=zCmnv/WcVnft54 D4hBAPEl3dSmKmZrK8GQFgcHdSeNMD3qxUsU5wExAbiHv2+WvZRNZ1llF0ll3/b00b7dgG9wnw07e OMAZmHfYaf4BgS0bl7QjXX1drWh+gDXy888uy9x8mDOOshr3mARgVV1L51FEi0LFfw2WX+fJz+eJ/ D8Y2+1ITLX0UA7Ol6DjC9wU1xclnA9hmPAmNzW8GzLhldp0t7A4HyOVETnACeRwcPRdzJANkItfKR mGY2NAanQzOEyn2kF6HeXhIqJ6aHeUIwY5vGB1kibvptoFcXOrwgZqpw/W1qojr/i654EdcDn5WbS XGOLoJboNZ35JEQcYHyw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pmXiB-002eyH-2Y; Wed, 12 Apr 2023 10:28:23 +0000 Received: from mx.sberdevices.ru ([45.89.227.171]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pmXi6-002etz-1B; Wed, 12 Apr 2023 10:28:20 +0000 Received: from s-lin-edge02.sberdevices.ru (localhost [127.0.0.1]) by mx.sberdevices.ru (Postfix) with ESMTP id D5C245FD61; Wed, 12 Apr 2023 13:28:08 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sberdevices.ru; s=mail; t=1681295288; bh=qt4HRvdCnitTaJ93EJ9VVF6F946/1bWKjVxqhjWWbXc=; h=Message-ID:Date:MIME-Version:Subject:To:From:Content-Type; b=lwLLhqYZh5gqKXPtNe3VS7pr67SBSpFJoyg+Wsz5y2zE6oW2nrwQTeBrQQdADQryW /q1ky2P0pLor4RZt9t2nxPqqA0Bw58w1rInl13sucza0LXsPl2aQsCGhgaMv3QsF9C uC3oBBokzP38F0SGY/w0VndJrIoXsRsaUwjr4E9wFeuBSbhfdbB0Slf8dTxTuqD5mC /YRsu+xXnfXYWQm2bwPJnVX4tVUx8vhoTV3Sac6clpjvL0qZk2794N+LMnoQ+/ZVw3 oUe/f7g3SJtHR8Gjq/uBlAsxRRWRqTrlZGEpoSVwrwn3ZmnV7petjizP9D9TrUqdG5 B6z3wY7Bd/pDQ== 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 13:28:08 +0300 (MSK) Message-ID: <3f247cbe-2798-4871-82a5-5124142fdcc5@sberdevices.ru> Date: Wed, 12 Apr 2023 13:24:20 +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 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> From: Arseniy Krasnov In-Reply-To: <889cf54e-584c-9bee-2106-633155897324@amlogic.com> X-Originating-IP: [172.16.1.6] X-ClientProxiedBy: S-MS-EXCH01.sberdevices.ru (172.16.1.4) 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_032818_756586_9685CEF2 X-CRM114-Status: GOOD ( 24.14 ) 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 CgpPbiAxMi4wNC4yMDIzIDEyOjM3LCBMaWFuZyBZYW5nIHdyb3RlOgo+IEhpIEFyc2VuaXksCj4g Cj4gVGhhbmtzIGZvciBwb2ludGluZyBvdXQgdGhpcyBwcm9ibGVtLiBhbHNvIGNvbW1lbnQgaW5s aW5lLgo+IAo+IE9uIDIwMjMvNC8xMiAxNDoxNiwgQXJzZW5peSBLcmFzbm92IHdyb3RlOgo+PiBb IEVYVEVSTkFMIEVNQUlMIF0KPj4KPj4gVGhpcyBmaXhlcyByZWFkL3dyaXRlIGZ1bmN0aW9uYWxp dHkuIE5ldyBjb21tYW5kIHNlcXVlbmNlcyB3ZXJlIHBvcnRlZAo+PiBmcm9tIG9sZCB2ZW5kb3In cyBkcml2ZXIuIFdpdGhvdXQgdGhpcyBwYXRjaCBkcml2ZXIgd29ya3MgdW5zdGFibGUuIFRoaXMK Pj4gY2hhbmdlIGlzIHRlc3RlZCB3aXRoICduYW5kZHVtcCcvJ25hbmR3cml0ZScgdXRpbGl0aWVz IGFuZCBtb3VudGluZwo+PiBKRkZTMiBmaWxlc3lzdGVtIG9uIEFYRyBmYW1pbHkgKEExMTNYIFNv QykuCj4+Cj4+IEZpeGVzOiA4ZmFlODU2YzUzNTAgKCJtdGQ6IHJhd25hbmQ6IG1lc29uOiBhZGQg c3VwcG9ydCBmb3IgQW1sb2dpYyBOQU5EIGZsYXNoIGNvbnRyb2xsZXIiKQo+PiBTaWduZWQtb2Zm LWJ5OiBBcnNlbml5IEtyYXNub3YgPEFWS3Jhc25vdkBzYmVyZGV2aWNlcy5ydT4KPj4gLS0tCj4+ IMKgIGRyaXZlcnMvbXRkL25hbmQvcmF3L21lc29uX25hbmQuYyB8IDExNiArKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0KPj4gwqAgMSBmaWxlIGNoYW5nZWQsIDEwMSBpbnNlcnRpb25zKCsp LCAxNSBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvcmF3 L21lc29uX25hbmQuYyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L21lc29uX25hbmQuYwo+PiBpbmRl eCAwNzRlMTQyMjVjMDYuLjI1NmMzN2M3NjUyNiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9tdGQv bmFuZC9yYXcvbWVzb25fbmFuZC5jCj4+ICsrKyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L21lc29u X25hbmQuYwo+PiBAQCAtMjYsNiArMjYsNyBAQAo+PiDCoCAjZGVmaW5lIE5GQ19DTURfSURMRcKg wqDCoMKgwqDCoMKgICgweGMgPDwgMTQpCj4+IMKgICNkZWZpbmUgTkZDX0NNRF9DTEXCoMKgwqDC oMKgwqDCoCAoMHg1IDw8IDE0KQo+PiDCoCAjZGVmaW5lIE5GQ19DTURfQUxFwqDCoMKgwqDCoMKg wqAgKDB4NiA8PCAxNCkKPj4gKyNkZWZpbmUgTkZDX0NNRF9EUkTCoMKgwqDCoMKgwqDCoCAoMHg4 IDw8IDE0KQo+PiDCoCAjZGVmaW5lIE5GQ19DTURfQURMwqDCoMKgwqDCoMKgwqAgKCgwIDw8IDE2 KSB8ICgzIDw8IDIwKSkKPj4gwqAgI2RlZmluZSBORkNfQ01EX0FESMKgwqDCoMKgwqDCoMKgICgo MSA8PCAxNikgfCAoMyA8PCAyMCkpCj4+IMKgICNkZWZpbmUgTkZDX0NNRF9BSUzCoMKgwqDCoMKg wqDCoCAoKDIgPDwgMTYpIHwgKDMgPDwgMjApKQo+PiBAQCAtODQsNiArODUsNyBAQAo+PiDCoCDC oCAjZGVmaW5lIERNQV9CVVNZX1RJTUVPVVTCoMKgwqAgMHgxMDAwMDAKPj4gwqAgI2RlZmluZSBD TURfRklGT19FTVBUWV9USU1FT1VUwqDCoMKgIDEwMDAKPj4gKyNkZWZpbmUgREVWSUNFX1JFQURZ X1RJTUVPVVTCoMKgwqAgMTAwMAo+PiDCoCDCoCAjZGVmaW5lIE1BWF9DRV9OVU3CoMKgwqDCoMKg wqDCoCAyCj4+IMKgIEBAIC0yNTUsOCArMjU3LDI2IEBAIHN0YXRpYyB2b2lkIG1lc29uX25mY19z ZWxlY3RfY2hpcChzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCBpbnQgY2hpcCkKPj4gwqDCoMKgwqDC oCB9Cj4+IMKgIH0KPj4gwqAgK3N0YXRpYyBpbnQgbWVzb25fbmZjX3dhaXRfY21kX2ZpbmlzaChz dHJ1Y3QgbWVzb25fbmZjICpuZmMsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHVuc2lnbmVkIGludCB0aW1lb3V0X21zKQo+PiArewo+PiArwqDCoMKgIHUzMiBj bWRfc2l6ZSA9IDA7Cj4+ICvCoMKgwqAgaW50IHJldDsKPj4gKwo+PiArwqDCoMKgIC8qIHdhaXQg Y21kIGZpZm8gaXMgZW1wdHkgKi8KPj4gK8KgwqDCoCByZXQgPSByZWFkbF9yZWxheGVkX3BvbGxf dGltZW91dChuZmMtPnJlZ19iYXNlICsgTkZDX1JFR19DTUQsIGNtZF9zaXplLAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAhTkZDX0NNRF9HRVRfU0laRShjbWRf c2l6ZSksCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDEwLCB0 aW1lb3V0X21zICogMTAwMCk7Cj4+ICvCoMKgwqAgaWYgKHJldCkKPj4gK8KgwqDCoMKgwqDCoMKg IGRldl9lcnIobmZjLT5kZXYsICJ3YWl0IGZvciBlbXB0eSBDTUQgRklGTyB0aW1lZCBvdXRcbiIp Owo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiDCoCBzdGF0aWMgdm9p ZCBtZXNvbl9uZmNfY21kX2lkbGUoc3RydWN0IG1lc29uX25mYyAqbmZjLCB1MzIgdGltZSkKPj4g wqAgewo+PiArwqDCoMKgIG1lc29uX25mY193YWl0X2NtZF9maW5pc2gobmZjLCAwKTsKPj4gKwo+ PiDCoMKgwqDCoMKgIHdyaXRlbChuZmMtPnBhcmFtLmNoaXBfc2VsZWN0IHwgTkZDX0NNRF9JRExF IHwgKHRpbWUgJiAweDNmZiksCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZmMtPnJlZ19i YXNlICsgTkZDX1JFR19DTUQpOwo+PiDCoCB9Cj4+IEBAIC0zMDgsMjMgKzMyOCw5IEBAIHN0YXRp YyB2b2lkIG1lc29uX25mY19kcmFpbl9jbWQoc3RydWN0IG1lc29uX25mYyAqbmZjKQo+PiDCoMKg wqDCoMKgwqAgKi8KPj4gwqDCoMKgwqDCoCBtZXNvbl9uZmNfY21kX2lkbGUobmZjLCAwKTsKPj4g wqDCoMKgwqDCoCBtZXNvbl9uZmNfY21kX2lkbGUobmZjLCAwKTsKPj4gK8KgwqDCoCBtZXNvbl9u ZmNfd2FpdF9jbWRfZmluaXNoKG5mYywgMTAwMCk7Cj4+IMKgIH0KPj4gwqAgLXN0YXRpYyBpbnQg bWVzb25fbmZjX3dhaXRfY21kX2ZpbmlzaChzdHJ1Y3QgbWVzb25fbmZjICpuZmMsCj4+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCB0aW1lb3V0 X21zKQo+PiAtewo+PiAtwqDCoMKgIHUzMiBjbWRfc2l6ZSA9IDA7Cj4+IC3CoMKgwqAgaW50IHJl dDsKPj4gLQo+PiAtwqDCoMKgIC8qIHdhaXQgY21kIGZpZm8gaXMgZW1wdHkgKi8KPj4gLcKgwqDC oCByZXQgPSByZWFkbF9yZWxheGVkX3BvbGxfdGltZW91dChuZmMtPnJlZ19iYXNlICsgTkZDX1JF R19DTUQsIGNtZF9zaXplLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAhTkZDX0NNRF9HRVRfU0laRShjbWRfc2l6ZSksCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDEwLCB0aW1lb3V0X21zICogMTAwMCk7Cj4+IC3CoMKgwqAg aWYgKHJldCkKPj4gLcKgwqDCoMKgwqDCoMKgIGRldl9lcnIobmZjLT5kZXYsICJ3YWl0IGZvciBl bXB0eSBDTUQgRklGTyB0aW1lIG91dFxuIik7Cj4+IC0KPj4gLcKgwqDCoCByZXR1cm4gcmV0Owo+ PiAtfQo+PiDCoCDCoCBzdGF0aWMgaW50IG1lc29uX25mY193YWl0X2RtYV9maW5pc2goc3RydWN0 IG1lc29uX25mYyAqbmZjKQo+PiDCoCB7Cj4+IEBAIC02MzEsNiArNjM3LDQ4IEBAIHN0YXRpYyBp bnQgbWVzb25fbmZjX3J3X2NtZF9wcmVwYXJlX2FuZF9leGVjdXRlKHN0cnVjdCBuYW5kX2NoaXAg Km5hbmQsCj4+IMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgIH0KPj4gwqAgK3N0YXRpYyB1aW50 OF90IG1lc29uX25mY19yZWFkX2J5dGUoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCkKPj4gK3sKPj4g K8KgwqDCoCBzdHJ1Y3QgbWVzb25fbmZjICpuZmMgPSBuYW5kX2dldF9jb250cm9sbGVyX2RhdGEo bmFuZCk7Cj4+ICsKPj4gK8KgwqDCoCB3cml0ZWwoTkZDX0NNRF9EUkQsIG5mYy0+cmVnX2Jhc2Ug KyBORkNfUkVHX0NNRCk7Cj4+ICvCoMKgwqAgbWVzb25fbmZjX2NtZF9pZGxlKG5mYywgbmZjLT50 aW1pbmcudHdiKTsKPj4gK8KgwqDCoCBtZXNvbl9uZmNfZHJhaW5fY21kKG5mYyk7Cj4+ICsKPj4g K8KgwqDCoCByZXR1cm4gcmVhZGwobmZjLT5yZWdfYmFzZSArIE5GQ19SRUdfQlVGKTsKPj4gK30K Pj4gKwo+PiArc3RhdGljIGludCBtZXNvbl9uZmNfd2FpdF9kZXZfcmVhZHkoc3RydWN0IG5hbmRf Y2hpcCAqbmFuZCkKPj4gK3sKPj4gK8KgwqDCoCBzdHJ1Y3QgbWVzb25fbmZjICpuZmMgPSBuYW5k X2dldF9jb250cm9sbGVyX2RhdGEobmFuZCk7Cj4+ICvCoMKgwqAgdTMyIGNzID0gbmZjLT5wYXJh bS5jaGlwX3NlbGVjdDsKPj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIGNudCA9IDA7Cj4+ICsKPj4g K8KgwqDCoCBtZXNvbl9uZmNfZHJhaW5fY21kKG5mYyk7Cj4+ICsKPj4gK8KgwqDCoCB3cml0ZWwo Y3MgfCBORkNfQ01EX0NMRSB8IE5BTkRfQ01EX1NUQVRVUywgbmZjLT5yZWdfYmFzZSArIE5GQ19S RUdfQ01EKTsKPj4gKwo+PiArwqDCoMKgIC8qIDEwIG1zLiAqLwo+PiArwqDCoMKgIHdoaWxlIChj bnQgPCBERVZJQ0VfUkVBRFlfVElNRU9VVCkgewo+PiArwqDCoMKgwqDCoMKgwqAgdWludDhfdCBz dGF0dXM7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIHN0YXR1cyA9IG1lc29uX25mY19yZWFkX2J5 dGUobmFuZCk7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChzdGF0dXMgJiBOQU5EX1NUQVRV U19SRUFEWSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICsKPj4gK8KgwqDC oMKgwqDCoMKgIHVzbGVlcF9yYW5nZSgxMCwgMTEpOwo+PiArwqDCoMKgwqDCoMKgwqAgY250Kys7 Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgaWYgKGNudCA9PSBERVZJQ0VfUkVBRFlfVElN RU9VVCkgewo+PiArwqDCoMKgwqDCoMKgwqAgZGV2X2VycihuZmMtPmRldiwgImRldmljZSByZWFk eSB0aW1lb3V0XG4iKTsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRVRJTUVET1VUOwo+PiAr wqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+IMKgIHN0YXRp YyBpbnQgbWVzb25fbmZjX3dyaXRlX3BhZ2Vfc3ViKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgcGFnZSwgaW50 IHJhdykKPj4gwqAgewo+PiBAQCAtNjQzLDYgKzY5MSwxMCBAQCBzdGF0aWMgaW50IG1lc29uX25m Y193cml0ZV9wYWdlX3N1YihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+PiDCoMKgwqDCoMKgIHUz MiBjbWQ7Cj4+IMKgwqDCoMKgwqAgaW50IHJldDsKPj4gwqAgK8KgwqDCoCByZXQgPSBtZXNvbl9u ZmNfd2FpdF9kZXZfcmVhZHkobmFuZCk7Cj4+ICvCoMKgwqAgaWYgKHJldCkKPj4gK8KgwqDCoMKg wqDCoMKgIHJldHVybiByZXQ7Cj4+ICsKPj4gwqDCoMKgwqDCoCBtZXNvbl9uZmNfc2VsZWN0X2No aXAobmFuZCwgbmFuZC0+Y3VyX2NzKTsKPj4gwqAgwqDCoMKgwqDCoCBkYXRhX2xlbiA9wqAgbXRk LT53cml0ZXNpemUgKyBtdGQtPm9vYnNpemU7Cj4+IEBAIC02NjcsMTIgKzcxOSwyMCBAQCBzdGF0 aWMgaW50IG1lc29uX25mY193cml0ZV9wYWdlX3N1YihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBORkNfQ01EX1ND UkFNQkxFUl9ESVNBQkxFKTsKPj4gwqDCoMKgwqDCoCB9Cj4+IMKgICvCoMKgwqAgcmV0ID0gbWVz b25fbmZjX3dhaXRfZG1hX2ZpbmlzaChuZmMpOwo+PiArwqDCoMKgIGlmIChyZXQpCj4+ICvCoMKg wqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiArCj4+IMKgwqDCoMKgwqAgY21kID0gbmZjLT5wYXJh bS5jaGlwX3NlbGVjdCB8IE5GQ19DTURfQ0xFIHwgTkFORF9DTURfUEFHRVBST0c7Cj4+IMKgwqDC oMKgwqAgd3JpdGVsKGNtZCwgbmZjLT5yZWdfYmFzZSArIE5GQ19SRUdfQ01EKTsKPj4gwqDCoMKg wqDCoCBtZXNvbl9uZmNfcXVldWVfcmIobmZjLCBQU0VDX1RPX01TRUMoc2RyLT50UFJPR19tYXgp KTsKPj4gwqAgwqDCoMKgwqDCoCBtZXNvbl9uZmNfZG1hX2J1ZmZlcl9yZWxlYXNlKG5hbmQsIGRh dGFfbGVuLCBpbmZvX2xlbiwgRE1BX1RPX0RFVklDRSk7Cj4+IMKgICvCoMKgwqAgcmV0ID0gbWVz b25fbmZjX3dhaXRfZGV2X3JlYWR5KG5hbmQpOwo+PiArwqDCoMKgIGlmIChyZXQpCj4+ICvCoMKg wqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiArCj4+IMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4g wqAgfQo+PiDCoCBAQCAtNzIwLDYgKzc4MCwyMSBAQCBzdGF0aWMgdm9pZCBtZXNvbl9uZmNfY2hl Y2tfZWNjX3BhZ2VzX3ZhbGlkKHN0cnVjdCBtZXNvbl9uZmMgKm5mYywKPj4gwqDCoMKgwqDCoCB9 IHdoaWxlICghcmV0KTsKPj4gwqAgfQo+PiDCoCArc3RhdGljIGlubGluZSBpbnQgbWVzb25fbmZj X3NlbmRfcmVhZChzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kKQo+PiArewo+PiArwqDCoMKgIHN0cnVj dCBtZXNvbl9uZmMgKm5mYyA9IG5hbmRfZ2V0X2NvbnRyb2xsZXJfZGF0YShuYW5kKTsKPj4gK8Kg wqDCoCB1MzIgY3MgPSBuZmMtPnBhcmFtLmNoaXBfc2VsZWN0Owo+PiArwqDCoMKgIGludCByZXQ7 Cj4+ICsKPj4gK8KgwqDCoCByZXQgPSBtZXNvbl9uZmNfd2FpdF9kZXZfcmVhZHkobmFuZCk7Cj4+ ICvCoMKgwqAgaWYgKHJldCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICsKPj4g K8KgwqDCoCB3cml0ZWwoY3MgfCBORkNfQ01EX0NMRSB8IE5BTkRfQ01EX1JFQUQwLCBuZmMtPnJl Z19iYXNlICsgTkZDX1JFR19DTUQpOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ ICsKPiAKPiBpdCBhbHJlYWR5IGNhbGxzIG1lc29uX25mY19xdWV1ZV9yYigpIGluIG1lc29uX25m Y19yd19jbWRfcHJlcGFyZV9hbmRfZXhlY3V0ZSgpLiBDb3VsZCB5b3UgaW1wbGVtZW50cyB0aGlz IGluIG1lc29uX25mY19xdWV1ZV9yYigpPyBhbmQgd2UgY2FuIHVzZSB0aGUgaXJxIG1ldGhvZC4K PiBhbHNvIHdpdGhvdXQgUmVhZHkvQnVzeSBwaW4sIHRoZSBtZXNvbl9uZmNfcXVldWVfcmIoKSBz aG91bGQgY2hhbmdlIGxpa2UgYmVsb3c6Cj4gwqDCoMKgwqAuLi4uLi4KPiDCoMKgwqDCoCNkZWZp bmUgTkZDX0NNRF9SQl9JTlTCoMKgwqAgKCgweGIgPDwgMTApIHwgQklUKDE4KSkKPiAKPiDCoMKg wqDCoG1lc29uX25mY19jbWRfaWRsZShuZmMsIDApOwo+IMKgwqDCoMKgY21kID0gbmZjLT5wYXJh bS5jaGlwX3NlbGVjdCB8IE5GQ19DTURfQ0xFIHwgTkFORF9DTURfU1RBVFVTOwo+IMKgwqDCoMKg d3JpdGVsKGNtZCwgbmZjLT5yZWdfYmFzZSArIE5GQ19SRUdfQ01EKTsKPiDCoMKgwqDCoG1lc29u X25mY19jbWRfaWRsZShuZmMsIDUpOwo+IMKgwqDCoMKgY21kID0gTkZDX0NNRF9SQiB8IE5GQ19D TURfUkJfSU5UIHwgbmZjLT50aW1pbmcudGJlcnNfbWF4Owo+IMKgwqDCoMKgd3JpdGVsKGNtZCwg bmZjLT5yZWdfYmFzZSArIE5GQ19SRUdfQ01EKTsKPiAKPiDCoMKgwqDCoHJldCA9IHdhaXRfZm9y X2NvbXBsZXRpb25fdGltZW91dCgmbmZjLT5jb21wbGV0aW9uLAo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtc2Vjc190b19qaWZmaWVzKHRpbWVvdXRfbXMpKTsK PiDCoMKgwqDCoGlmIChyZXQgPT0gMCkKPiDCoMKgwqDCoMKgwqDCoCByZXQgPSAtMTsKPiAKPiDC oMKgwqDCoHdyaXRlbChjcyB8IE5GQ19DTURfQ0xFIHwgTkFORF9DTURfUkVBRDAsIG5mYy0+cmVn X2Jhc2UgKyBORkNfUkVHX0NNRCk7Cj4gwqDCoMKgwqAuLi4uLi4KPgoKwqDCoMKgwqAKVGhhbmtz IGZvciByZXBseSEgSSdsbCB0cnkgdGhpcyBjb2RlISBPbmUgbW9yZSBxdWVzdGlvbiBhYm91dCBP T0IgcHJvY2Vzc2luZyBpbiB0aGlzCmRyaXZlciAoYXMgWW91IGFyZSBhdXRob3Igb2YgaXQpOgoK ICAgT09CIHNpemUgaXMgNjQgYnl0ZXMsIGJ1dCBmb3IgZXhhbXBsZSBpZiBJIGhhdmUgMUsgRUND LCAyIGJ5dGVzIHVzZXIgYnl0ZXMgYW5kIDE0CiAgIGJ5dGVzIGZvciBFQ0MgY29kZSBmb3IgZWFj aCAxSy4gSW4gdGhpcyBjYXNlIEkgaGF2ZSBhY2Nlc3MgdG8gb25seSAzMiBieXRlcyBvZiBPT0I6 CiAgIDIgeCAoMiB1c2VyIGJ5dGVzICsgMTQgRUNDIGJ5dGVzKS4gQ29ycmVjdCBtZSBpZiBpJ20g d3JvbmcsIGJ1dCByZXN0IG9mIE9PQiAobmV4dAogICAzMiBieXRlcykgYmVjb21lIHVuYXZhaWxh YmxlIChpbiBib3RoIHJhdyBhbmQgRUNDIG1vZGVzKSA/CgpUaGFua3MsIEFyc2VuaXkKCj4+IMKg IHN0YXRpYyBpbnQgbWVzb25fbmZjX3JlYWRfcGFnZV9zdWIoc3RydWN0IG5hbmRfY2hpcCAqbmFu ZCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgcGFnZSwg aW50IHJhdykKPj4gwqAgewo+PiBAQCAtNzM0LDEwICs4MDksMTggQEAgc3RhdGljIGludCBtZXNv bl9uZmNfcmVhZF9wYWdlX3N1YihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+PiDCoMKgwqDCoMKg IGRhdGFfbGVuID3CoCBtdGQtPndyaXRlc2l6ZSArIG10ZC0+b29ic2l6ZTsKPj4gwqDCoMKgwqDC oCBpbmZvX2xlbiA9IG5hbmQtPmVjYy5zdGVwcyAqIFBFUl9JTkZPX0JZVEU7Cj4+IMKgICvCoMKg wqAgcmV0ID0gbWVzb25fbmZjX3dhaXRfZGV2X3JlYWR5KG5hbmQpOwo+PiArwqDCoMKgIGlmIChy ZXQpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiArCj4+IMKgwqDCoMKgwqAgcmV0 ID0gbWVzb25fbmZjX3J3X2NtZF9wcmVwYXJlX2FuZF9leGVjdXRlKG5hbmQsIHBhZ2UsIERJUlJF QUQpOwo+PiDCoMKgwqDCoMKgIGlmIChyZXQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4g cmV0Owo+PiDCoCArwqDCoMKgIHJldCA9IG1lc29uX25mY19zZW5kX3JlYWQobmFuZCk7Cj4+ICvC oMKgwqAgaWYgKHJldCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICsKPj4gwqDC oMKgwqDCoCByZXQgPSBtZXNvbl9uZmNfZG1hX2J1ZmZlcl9zZXR1cChuYW5kLCBtZXNvbl9jaGlw LT5kYXRhX2J1ZiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZGF0YV9sZW4sIG1lc29uX2NoaXAtPmluZm9fYnVmLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbmZvX2xlbiwgRE1BX0ZST01fREVWSUNFKTsKPj4g QEAgLTc1NCw2ICs4MzcsOSBAQCBzdGF0aWMgaW50IG1lc29uX25mY19yZWFkX3BhZ2Vfc3ViKHN0 cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4+IMKgwqDCoMKgwqAgfQo+PiDCoCDCoMKgwqDCoMKgIHJl dCA9IG1lc29uX25mY193YWl0X2RtYV9maW5pc2gobmZjKTsKPj4gK8KgwqDCoCBpZiAocmV0KQo+ PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gKwo+PiDCoMKgwqDCoMKgIG1lc29uX25m Y19jaGVja19lY2NfcGFnZXNfdmFsaWQobmZjLCBuYW5kLCByYXcpOwo+PiDCoCDCoMKgwqDCoMKg IG1lc29uX25mY19kbWFfYnVmZmVyX3JlbGVhc2UobmFuZCwgZGF0YV9sZW4sIGluZm9fbGVuLCBE TUFfRlJPTV9ERVZJQ0UpOwo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkxpbnV4IE1URCBkaXNjdXNzaW9uIG1haWxpbmcgbGlzdApodHRw Oi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW10ZC8K