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 81D75EB64DA for ; Wed, 14 Jun 2023 09:10:23 +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=NAfVcUb9gQISEQjzgl6MdDSetlKlzeenq6CgQD5ZxVw=; b=ovaryaY7VHhP0m QnhB4NzFuV5K89igrjrG0nZn/zMNQl/W4+/XhwkfasiOGiu9n07mKrPuXG9OMw9BKIw64qarwNfok 0HfbOLJB72SrixBbnEaAw9NE3jp7wx75LIKGMT1SKX2z5KeFreaMh3lhtakSpUcg031jsLqcDN+k/ JF0sIktJ3DwutbPdZZjSU8/UP+wlOfj7bV4LP8gVc+61jsuQ6pAGatKV6yfXj034mVNo0ClJI0xr+ 2Li2E01uVJjprtuqldb1IhWBA8cjqITMP5qctFw0jFjDDCmyEoN/QoCT6yTGww3Rw/IpY7RDL9a5b AfpRSnlp1pk45CP+mr/A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q9MW7-00B0nH-2i; Wed, 14 Jun 2023 09:10:15 +0000 Received: from relay8-d.mail.gandi.net ([2001:4b98:dc4:8::228]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q9MW3-00B0lk-2V for linux-mtd@lists.infradead.org; Wed, 14 Jun 2023 09:10:14 +0000 X-GND-Sasl: miquel.raynal@bootlin.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1686733806; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=WAO5PoZt2knoBaPqUHhj1MWZZ6nSInLED8yri3KtZlU=; b=dbO9elaRNuDZck4qiTEc3pGJCibUD8JclWSoc7sNAJymaXu4bKXWjqeflYagBks5OOEHZX 3a1D+82Dypr6PV+d0T5CbS99ulko1Pu6FX7mYCIcAkAmeaotiBRWUNx6L3fHlFTTHfzy3d 8RHn4031SlvyhG7J25Q9crNfdud4jwP6A1ow/6k14qObkDJEL4UU5s/7/lajqa34kNJe3r AJZWgo9+ASO+HEXUs+VP5eBcXrGfPEeHQnBBhwDGNQq59LVPCxE3sk0TUU7kZeneMm5e7f fEhB4Y93yo9sC4O9vjp9JIunrte2yHJrY0e09P7bSbrazwoa2EXrSOC/Pjzt3Q== X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com Received: by mail.gandi.net (Postfix) with ESMTPSA id CD1FA1BF20C; Wed, 14 Jun 2023 09:10:02 +0000 (UTC) Date: Wed, 14 Jun 2023 11:10:01 +0200 From: Miquel Raynal To: liao jaime Cc: Arseniy Krasnov , Richard Weinberger , Vignesh Raghavendra , Sumit Semwal , Christian =?UTF-8?B?S8O2bmln?= , oxffffaa@gmail.com, kernel@sberdevices.ru, Boris Brezillon , Jaime Liao , Mason Yang , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org Subject: Re: [PATCH v4] mtd: rawnand: macronix: OTP access for MX30LFxG18AC Message-ID: <20230614111001.6b0417d4@xps-13> In-Reply-To: References: <20230523101637.3009746-1-AVKrasnov@sberdevices.ru> <20230612185354.09b88e0d@xps-13> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; 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-20230614_021012_260610_D76CB482 X-CRM114-Status: GOOD ( 38.30 ) 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 SGkgbGlhbywKCmphaW1lbGlhby50d0BnbWFpbC5jb20gd3JvdGUgb24gV2VkLCAxNCBKdW4gMjAy MyAxNzowNjoxNiArMDgwMDoKCj4gSGkgTWlxdWVsCj4gCj4gCj4gPgo+ID4gSGVsbG8sCj4gPgo+ ID4gQVZLcmFzbm92QHNiZXJkZXZpY2VzLnJ1IHdyb3RlIG9uIFR1ZSwgMjMgTWF5IDIwMjMgMTM6 MTY6MzQgKzAzMDA6Cj4gPiAgCj4gPiA+IFRoaXMgYWRkcyBzdXBwb3J0IGZvciBPVFAgYXJlYSBh Y2Nlc3Mgb24gTVgzMExGeEcxOEFDIGNoaXAgc2VyaWVzLiAgCj4gPgo+ID4gSmFpbWUsIGFueSBm ZWVkYmFjayBvbiB0aGlzPyBXaWxsIHlvdSB0ZXN0IGl0Pwo+ID4KPiA+IEhvdyBhcmUgd2Ugc3Vw cG9zZWQgdG8gdGVzdCB0aGUgT1RQIGlzIGxvY2tlZD8gSSBzZWUgdGhpcyBpcyBzdGlsbCBhbgo+ ID4gb3BlbiBwb2ludC4gIAo+IEFmdGVyIGNoZWNraW5nIHdpdGggaW50ZXJuYWwsIHN1YiBmZWF0 dXJlIHBhcmFtZXRlciBhcmUgdm9sYXRpbGUgcmVnaXN0ZXIuCj4gCj4gSXQgY291bGQgYmUgY2hh bmdlIGFmdGVyIGVudGVyL2V4aXQgT1RQIHJlZ2lvbiBvciBwb3dlciBjeWNsZSBldmVuIE9UUAo+ IAo+IHJlZ2lvbiBoYXZlIGJlZW4gbG9ja2VkLgo+IAo+IE9UUCBvcGVyYXRpb24gbW9kZSBzdGls bCBjb3VsZCBiZSBlbnRlci9leGl0IGFuZCByZWdpb24gaXMgcmVhZCBvbmx5Cj4gYWZ0ZXIgT1RQ IGluIHByb3RlY3QgbW9kZS4KPiAKPiAjcHJvZ3JhbSBjb21tYW5kIGNvdWxkIGV4ZWN1dGUgYnV0 IG5vIHVzZSBhZnRlciBzZXR0aW5nIE9UUCByZWdpb24gaW4KPiBwcm90ZWN0IG1vZGUuCj4gCj4g U28gdGhhdCB3ZSBjYW4ndCBjaGVjayB3aGV0aGVyIE9UUCByZWdpb24gaXMgbG9ja2VkIHZpYSBn ZXQgZmVhdHVyZS4KPiAKPiBBbmQgd2UgZG9uJ3QgaGF2ZSByZWdpb24gZm9yIGNoZWNraW5nIHN0 YXR1cyBvZiBPVFAgbG9ja2VkLgoKQWgsIHRvbyBiYWQuIEJ1dCB0aGFua3MgYSBsb3QgZm9yIHRo ZSBleHBsYW5hdGlvbi4gQXJzZW5peSwgY2FuIHlvdQpwbGVhc2UgY2hhbmdlIHlvdXIgY29tbWVu dCB0byBleHBsYWluIHRoYXQgdGhlIGJpdCBpcyB2b2xhdGlsZSBhbmQgdGh1cwp0aGVyZSBpcyBu byB3YXkgdG8gY2hlY2sgaWYgYW4gb3RwIHJlZ2lvbiBpcyBsb2NrZWQ/IEkgd291bGQgcmV0dXJu CkVPUE5PVFNVUFAgaW4gdGhpcyBjYXNlIGFuZCB2ZXJpZnkgdGhhdCB0aGUgY29yZSBjbGVhbmx5 IGhhbmRsZXMgdGhlCnNpdHVhdGlvbi4KClRoYW5rcywKTWlxdcOobAoKPiAKPiA+ICAKPiA+ID4K PiA+ID4gU2lnbmVkLW9mZi1ieTogQXJzZW5peSBLcmFzbm92IDxBVktyYXNub3ZAc2JlcmRldmlj ZXMucnU+Cj4gPiA+IC0tLQo+ID4gPiAgIHYxIC0+IHYyOgo+ID4gPiAgICogQWRkIHNsYWIuaCBp bmNsdWRlIGR1ZSB0byBrZXJuZWwgdGVzdCByb2JvdCBlcnJvci4KPiA+ID4gICB2MiAtPiB2MzoK PiA+ID4gICAqIFVzZSAndWludDY0X3QnIGFzIGlucHV0IGFyZ3VtZW50IGZvciAnZG9fZGl2KCkn IGluc3RlYWQKPiA+ID4gICAgIG9mICd1bnNpZ25lZCBsb25nJyBkdWUgdG8ga2VybmVsIHRlc3Qg cm9ib3QgZXJyb3IuCj4gPiA+ICAgdjMgLT4gdjQ6Cj4gPiA+ICAgKiBVc2UgJ2Rldl9lcnIoKScg aW5zdGVhZCBvZiAnV0FSTigpJy4KPiA+ID4gICAqIENhbGwgJ21hdGNoX3N0cmluZygpJyBiZWZv cmUgY2hlY2tpbmcgJ3N1cHBvcnRzX3NldF9nZXRfZmVhdHVyZXMnCj4gPiA+ICAgICBpbiAnbWFj cm9uaXhfbmFuZF9zZXR1cF9vdHAoKS4KPiA+ID4gICAqIFVzZSAndTgnIGluc3RlYWQgb2YgJ3Vp bnQ4X3QnIGFzIC4vY2hlY2twYXRjaC5wbCB3YW50cy4KPiA+ID4KPiA+ID4gIGRyaXZlcnMvbXRk L25hbmQvcmF3L25hbmRfbWFjcm9uaXguYyB8IDIxNiArKysrKysrKysrKysrKysrKysrKysrKysr KysKPiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAyMTYgaW5zZXJ0aW9ucygrKQo+ID4gPgo+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9yYXcvbmFuZF9tYWNyb25peC5jIGIvZHJpdmVy cy9tdGQvbmFuZC9yYXcvbmFuZF9tYWNyb25peC5jCj4gPiA+IGluZGV4IDE0NzJmOTI1ZjM4Ni4u YmUxZmZhOTNiZWJiIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9uYW5k X21hY3Jvbml4LmMKPiA+ID4gKysrIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcvbmFuZF9tYWNyb25p eC5jCj4gPiA+IEBAIC02LDYgKzYsNyBAQAo+ID4gPiAgICogQXV0aG9yOiBCb3JpcyBCcmV6aWxs b24gPGJvcmlzLmJyZXppbGxvbkBmcmVlLWVsZWN0cm9ucy5jb20+Cj4gPiA+ICAgKi8KPiA+ID4K PiA+ID4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gPiA+ICAjaW5jbHVkZSAibGludXgvZGVs YXkuaCIKPiA+ID4gICNpbmNsdWRlICJpbnRlcm5hbHMuaCIKPiA+ID4KPiA+ID4gQEAgLTMxLDYg KzMyLDIwIEBACj4gPiA+Cj4gPiA+ICAjZGVmaW5lIE1YSUNfQ01EX1BPV0VSX0RPV04gMHhCOQo+ ID4gPgo+ID4gPiArI2RlZmluZSBPTkZJX0ZFQVRVUkVfQUREUl8zMExGWEcxOEFDX09UUCAgICAg MHg5MAo+ID4gPiArI2RlZmluZSBNQUNST05JWF8zMExGWEcxOEFDX09UUF9TVEFSVF9QQUdFICAg MAo+ID4gPiArI2RlZmluZSBNQUNST05JWF8zMExGWEcxOEFDX09UUF9QQUdFUyAgICAgICAgICAg ICAgICAzMAo+ID4gPiArI2RlZmluZSBNQUNST05JWF8zMExGWEcxOEFDX09UUF9QQUdFX1NJWkUg ICAgMjExMgo+ID4gPiArI2RlZmluZSBNQUNST05JWF8zMExGWEcxOEFDX09UUF9TVEFSVF9CWVRF ICAgXAo+ID4gPiArICAgICAoTUFDUk9OSVhfMzBMRlhHMThBQ19PVFBfU1RBUlRfUEFHRSAqICAg XAo+ID4gPiArICAgICAgTUFDUk9OSVhfMzBMRlhHMThBQ19PVFBfUEFHRV9TSVpFKQo+ID4gPiAr I2RlZmluZSBNQUNST05JWF8zMExGWEcxOEFDX09UUF9TSVpFX0JZVEVTICAgXAo+ID4gPiArICAg ICAoTUFDUk9OSVhfMzBMRlhHMThBQ19PVFBfUEFHRVMgKiAgICAgICAgXAo+ID4gPiArICAgICAg TUFDUk9OSVhfMzBMRlhHMThBQ19PVFBfUEFHRV9TSVpFKQo+ID4gPiArCj4gPiA+ICsjZGVmaW5l IE1BQ1JPTklYXzMwTEZYRzE4QUNfT1RQX0VOICAgICAgICAgICBCSVQoMCkKPiA+ID4gKyNkZWZp bmUgTUFDUk9OSVhfMzBMRlhHMThBQ19PVFBfTE9DS0VEICAgICAgICAgICAgICAgQklUKDEpCj4g PiA+ICsKPiA+ID4gIHN0cnVjdCBuYW5kX29uZmlfdmVuZG9yX21hY3Jvbml4IHsKPiA+ID4gICAg ICAgdTggcmVzZXJ2ZWQ7Cj4gPiA+ICAgICAgIHU4IHJlbGlhYmlsaXR5X2Z1bmM7Cj4gPiA+IEBA IC0zMTYsNiArMzMxLDIwNiBAQCBzdGF0aWMgdm9pZCBtYWNyb25peF9uYW5kX2RlZXBfcG93ZXJf ZG93bl9zdXBwb3J0KHN0cnVjdCBuYW5kX2NoaXAgKmNoaXApCj4gPiA+ICAgICAgIGNoaXAtPm9w cy5yZXN1bWUgPSBteGljX25hbmRfcmVzdW1lOwo+ID4gPiAgfQo+ID4gPgo+ID4gPiArc3RhdGlj IGludCBtYWNyb25peF8zMGxmeGcxOGFjX2dldF9vdHBfaW5mbyhzdHJ1Y3QgbXRkX2luZm8gKm10 ZCwgc2l6ZV90IGxlbiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZV90ICpyZXRsZW4sCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBvdHBfaW5mbyAqYnVmKQo+ID4gPiArewo+ID4gPiArICAgICBp ZiAobGVuIDwgc2l6ZW9mKCpidWYpKQo+ID4gPiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Owo+ID4gPiArCj4gPiA+ICsgICAgIC8qIERvbid0IGtub3cgaG93IHRvIGNoZWNrIHRoYXQgT1RQ IGlzIGxvY2tlZC4gKi8KPiA+ID4gKyAgICAgYnVmLT5sb2NrZWQgPSAwOwo+ID4gPiArICAgICBi dWYtPnN0YXJ0ID0gTUFDUk9OSVhfMzBMRlhHMThBQ19PVFBfU1RBUlRfQllURTsKPiA+ID4gKyAg ICAgYnVmLT5sZW5ndGggPSBNQUNST05JWF8zMExGWEcxOEFDX09UUF9TSVpFX0JZVEVTOwo+ID4g PiArCj4gPiA+ICsgICAgICpyZXRsZW4gPSBzaXplb2YoKmJ1Zik7Cj4gPiA+ICsKPiA+ID4gKyAg ICAgcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgbWFjcm9uaXhf MzBsZnhnMThhY19vdHBfZW5hYmxlKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQpCj4gPiA+ICt7Cj4g PiA+ICsgICAgIHU4IGZlYXR1cmVfYnVmW09ORklfU1VCRkVBVFVSRV9QQVJBTV9MRU5dID0geyAw IH07Cj4gPiA+ICsKPiA+ID4gKyAgICAgZmVhdHVyZV9idWZbMF0gPSBNQUNST05JWF8zMExGWEcx OEFDX09UUF9FTjsKPiA+ID4gKyAgICAgcmV0dXJuIG5hbmRfc2V0X2ZlYXR1cmVzKG5hbmQsIE9O RklfRkVBVFVSRV9BRERSXzMwTEZYRzE4QUNfT1RQLAo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZmVhdHVyZV9idWYpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMg aW50IG1hY3Jvbml4XzMwbGZ4ZzE4YWNfb3RwX2Rpc2FibGUoc3RydWN0IG5hbmRfY2hpcCAqbmFu ZCkKPiA+ID4gK3sKPiA+ID4gKyAgICAgdTggZmVhdHVyZV9idWZbT05GSV9TVUJGRUFUVVJFX1BB UkFNX0xFTl0gPSB7IDAgfTsKPiA+ID4gKwo+ID4gPiArICAgICByZXR1cm4gbmFuZF9zZXRfZmVh dHVyZXMobmFuZCwgT05GSV9GRUFUVVJFX0FERFJfMzBMRlhHMThBQ19PVFAsCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlX2J1Zik7Cj4gPiA+ICt9Cj4gPiA+ICsK PiA+ID4gK3N0YXRpYyBpbnQgX19tYWNyb25peF8zMGxmeGcxOGFjX3J3X290cChzdHJ1Y3QgbXRk X2luZm8gKm10ZCwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs b2ZmX3Qgb2Zmc19pbl9mbGFzaCwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplX3QgbGVuLCBzaXplX3QgKnJldGxlbiwKPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgKmJ1ZiwgYm9vbCB3cml0ZSkKPiA+ID4gK3sK PiA+ID4gKyAgICAgc3RydWN0IG5hbmRfY2hpcCAqbmFuZDsKPiA+ID4gKyAgICAgc2l6ZV90IGJ5 dGVzX2hhbmRsZWQ7Cj4gPiA+ICsgICAgIG9mZl90IG9mZnNfaW5fcGFnZTsKPiA+ID4gKyAgICAg dm9pZCAqZG1hX2J1ZjsKPiA+ID4gKyAgICAgdTY0IHBhZ2U7Cj4gPiA+ICsgICAgIGludCByZXQ7 Cj4gPiA+ICsKPiA+ID4gKyAgICAgLyogJ25hbmRfcHJvZy9yZWFkX3BhZ2Vfb3AoKScgbWF5IHVz ZSAnYnVmJyBhcyBETUEgYnVmZmVyLAo+ID4gPiArICAgICAgKiBzbyBhbGxvY2F0ZSBwcm9wZXJs eSBhbGlnbmVkIG1lbW9yeSBmb3IgaXQuIFRoaXMgaXMKPiA+ID4gKyAgICAgICogbmVlZGVkIGJl Y2F1c2UgY3Jvc3MgcGFnZSBhY2Nlc3NlcyBtYXkgbGVhZCB0byB1bmFsaWduZWQKPiA+ID4gKyAg ICAgICogYnVmZmVyIGFkZHJlc3MgZm9yIERNQS4KPiA+ID4gKyAgICAgICovCj4gPiA+ICsgICAg IGRtYV9idWYgPSBrbWFsbG9jKE1BQ1JPTklYXzMwTEZYRzE4QUNfT1RQX1BBR0VfU0laRSwgR0ZQ X0tFUk5FTCk7Cj4gPiA+ICsgICAgIGlmICghZG1hX2J1ZikKPiA+ID4gKyAgICAgICAgICAgICBy ZXR1cm4gLUVOT01FTTsKPiA+ID4gKwo+ID4gPiArICAgICBuYW5kID0gbXRkX3RvX25hbmQobXRk KTsKPiA+ID4gKyAgICAgbmFuZF9zZWxlY3RfdGFyZ2V0KG5hbmQsIDApOwo+ID4gPiArCj4gPiA+ ICsgICAgIHJldCA9IG1hY3Jvbml4XzMwbGZ4ZzE4YWNfb3RwX2VuYWJsZShuYW5kKTsKPiA+ID4g KyAgICAgaWYgKHJldCkKPiA+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF9vdHA7Cj4gPiA+ICsK PiA+ID4gKyAgICAgcGFnZSA9IG9mZnNfaW5fZmxhc2g7Cj4gPiA+ICsgICAgIC8qICdwYWdlJyB3 aWxsIGJlIHJlc3VsdCBvZiBkaXZpc2lvbi4gKi8KPiA+ID4gKyAgICAgb2Zmc19pbl9wYWdlID0g ZG9fZGl2KHBhZ2UsIE1BQ1JPTklYXzMwTEZYRzE4QUNfT1RQX1BBR0VfU0laRSk7Cj4gPiA+ICsg ICAgIGJ5dGVzX2hhbmRsZWQgPSAwOwo+ID4gPiArCj4gPiA+ICsgICAgIHdoaWxlIChieXRlc19o YW5kbGVkIDwgbGVuICYmCj4gPiA+ICsgICAgICAgICAgICBwYWdlIDwgTUFDUk9OSVhfMzBMRlhH MThBQ19PVFBfUEFHRVMpIHsKPiA+ID4gKyAgICAgICAgICAgICBzaXplX3QgYnl0ZXNfdG9faGFu ZGxlOwo+ID4gPiArCj4gPiA+ICsgICAgICAgICAgICAgYnl0ZXNfdG9faGFuZGxlID0gbWluX3Qo c2l6ZV90LCBsZW4gLSBieXRlc19oYW5kbGVkLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE1BQ1JPTklYXzMwTEZYRzE4QUNfT1RQX1BBR0VfU0laRSAtCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc19pbl9wYWdlKTsKPiA+ ID4gKwo+ID4gPiArICAgICAgICAgICAgIGlmICh3cml0ZSkgewo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgbWVtY3B5KGRtYV9idWYsICZidWZbYnl0ZXNfaGFuZGxlZF0sIGJ5dGVzX3RvX2hh bmRsZSk7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXQgPSBuYW5kX3Byb2dfcGFnZV9v cChuYW5kLCBwYWdlLCBvZmZzX2luX3BhZ2UsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkbWFfYnVmLCBieXRlc190b19oYW5kbGUpOwo+ID4gPiAr ICAgICAgICAgICAgIH0gZWxzZSB7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXQgPSBu YW5kX3JlYWRfcGFnZV9vcChuYW5kLCBwYWdlLCBvZmZzX2luX3BhZ2UsCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbWFfYnVmLCBieXRlc190b19o YW5kbGUpOwo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXQpCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweSgmYnVmW2J5dGVzX2hhbmRsZWRdLCBkbWFf YnVmLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdG9f aGFuZGxlKTsKPiA+ID4gKyAgICAgICAgICAgICB9Cj4gPiA+ICsgICAgICAgICAgICAgaWYgKHJl dCkKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0X290cDsKPiA+ID4gKwo+ID4g PiArICAgICAgICAgICAgIGJ5dGVzX2hhbmRsZWQgKz0gYnl0ZXNfdG9faGFuZGxlOwo+ID4gPiAr ICAgICAgICAgICAgIG9mZnNfaW5fcGFnZSA9IDA7Cj4gPiA+ICsgICAgICAgICAgICAgcGFnZSsr Owo+ID4gPiArICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAgKnJldGxlbiA9IGJ5dGVzX2hhbmRs ZWQ7Cj4gPiA+ICsKPiA+ID4gK291dF9vdHA6Cj4gPiA+ICsgICAgIGlmIChyZXQpCj4gPiA+ICsg ICAgICAgICAgICAgZGV2X2VycigmbXRkLT5kZXYsICJmYWlsZWQgdG8gcGVyZm9ybSBPVFAgSU86 ICVpXG4iLCByZXQpOwo+ID4gPiArCj4gPiA+ICsgICAgIHJldCA9IG1hY3Jvbml4XzMwbGZ4ZzE4 YWNfb3RwX2Rpc2FibGUobmFuZCk7Cj4gPiA+ICsgICAgIGlmIChyZXQpCj4gPiA+ICsgICAgICAg ICAgICAgZGV2X2VycigmbXRkLT5kZXYsICJmYWlsZWQgdG8gbGVhdmUgT1RQIG1vZGUgYWZ0ZXIg JXNcbiIsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICB3cml0ZSA/ICJ3cml0ZSIgOiAicmVh ZCIpOwo+ID4gPiArCj4gPiA+ICsgICAgIG5hbmRfZGVzZWxlY3RfdGFyZ2V0KG5hbmQpOwo+ID4g PiArICAgICBrZnJlZShkbWFfYnVmKTsKPiA+ID4gKwo+ID4gPiArICAgICByZXR1cm4gcmV0Owo+ ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW50IG1hY3Jvbml4XzMwbGZ4ZzE4YWNfd3Jp dGVfb3RwKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3QgdG8sCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sIHNpemVfdCAqcmxlbiwKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdV9jaGFyICpi dWYpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIHJldHVybiBfX21hY3Jvbml4XzMwbGZ4ZzE4YWNfcndf b3RwKG10ZCwgdG8sIGxlbiwgcmxlbiwgKHVfY2hhciAqKWJ1ZiwKPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ ID4gK3N0YXRpYyBpbnQgbWFjcm9uaXhfMzBsZnhnMThhY19yZWFkX290cChzdHJ1Y3QgbXRkX2lu Zm8gKm10ZCwgbG9mZl90IGZyb20sCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZV90IGxlbiwgc2l6ZV90ICpybGVuLAo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciAqYnVmKQo+ID4gPiArewo+ID4gPiArICAgICBy ZXR1cm4gX19tYWNyb25peF8zMGxmeGcxOGFjX3J3X290cChtdGQsIGZyb20sIGxlbiwgcmxlbiwg YnVmLCBmYWxzZSk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgbWFjcm9uaXhf MzBsZnhnMThhY19sb2NrX290cChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IGZyb20sCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbikKPiA+ ID4gK3sKPiA+ID4gKyAgICAgdTggZmVhdHVyZV9idWZbT05GSV9TVUJGRUFUVVJFX1BBUkFNX0xF Tl0gPSB7IDAgfTsKPiA+ID4gKyAgICAgc3RydWN0IG5hbmRfY2hpcCAqbmFuZDsKPiA+ID4gKyAg ICAgaW50IHJldDsKPiA+ID4gKwo+ID4gPiArICAgICBpZiAoZnJvbSAhPSBNQUNST05JWF8zMExG WEcxOEFDX09UUF9TVEFSVF9CWVRFIHx8Cj4gPiA+ICsgICAgICAgICBsZW4gIT0gTUFDUk9OSVhf MzBMRlhHMThBQ19PVFBfU0laRV9CWVRFUykKPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsKPiA+ID4gKwo+ID4gPiArICAgICBkZXZfZGJnKCZtdGQtPmRldiwgImxvY2tpbmcgT1RQ XG4iKTsKPiA+ID4gKwo+ID4gPiArICAgICBuYW5kID0gbXRkX3RvX25hbmQobXRkKTsKPiA+ID4g KyAgICAgbmFuZF9zZWxlY3RfdGFyZ2V0KG5hbmQsIDApOwo+ID4gPiArCj4gPiA+ICsgICAgIGZl YXR1cmVfYnVmWzBdID0gTUFDUk9OSVhfMzBMRlhHMThBQ19PVFBfRU4gfAo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgIE1BQ1JPTklYXzMwTEZYRzE4QUNfT1RQX0xPQ0tFRDsKPiA+ID4gKyAg ICAgcmV0ID0gbmFuZF9zZXRfZmVhdHVyZXMobmFuZCwgT05GSV9GRUFUVVJFX0FERFJfMzBMRlhH MThBQ19PVFAsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVfYnVm KTsKPiA+ID4gKyAgICAgaWYgKHJldCkgewo+ID4gPiArICAgICAgICAgICAgIGRldl9lcnIoJm10 ZC0+ZGV2LAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBsb2NrIE9UUCAo c2V0IGZlYXR1cmVzKTogJWlcbiIsIHJldCk7Cj4gPiA+ICsgICAgICAgICAgICAgbmFuZF9kZXNl bGVjdF90YXJnZXQobmFuZCk7Cj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ID4g KyAgICAgfQo+ID4gPiArCj4gPiA+ICsgICAgIC8qIERvIGR1bW15IHBhZ2UgcHJvZyB3aXRoIHpl cm8gYWRkcmVzcy4gKi8KPiA+ID4gKyAgICAgZmVhdHVyZV9idWZbMF0gPSAwOwo+ID4gPiArICAg ICByZXQgPSBuYW5kX3Byb2dfcGFnZV9vcChuYW5kLCAwLCAwLCBmZWF0dXJlX2J1ZiwgMSk7Cj4g PiA+ICsgICAgIGlmIChyZXQpCj4gPiA+ICsgICAgICAgICAgICAgZGV2X2VycigmbXRkLT5kZXYs Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGxvY2sgT1RQIChwYWdlIHBy b2cpOiAlaVxuIiwgcmV0KTsKPiA+ID4gKwo+ID4gPiArICAgICByZXQgPSBtYWNyb25peF8zMGxm eGcxOGFjX290cF9kaXNhYmxlKG5hbmQpOwo+ID4gPiArICAgICBpZiAocmV0KQo+ID4gPiArICAg ICAgICAgICAgIGRldl9lcnIoJm10ZC0+ZGV2LCAiZmFpbGVkIHRvIGxlYXZlIE9UUCBtb2RlIGFm dGVyIGxvY2tcbiIpOwo+ID4gPiArCj4gPiA+ICsgICAgIG5hbmRfZGVzZWxlY3RfdGFyZ2V0KG5h bmQpOwo+ID4gPiArCj4gPiA+ICsgICAgIHJldHVybiByZXQ7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ ID4gK3N0YXRpYyB2b2lkIG1hY3Jvbml4X25hbmRfc2V0dXBfb3RwKHN0cnVjdCBuYW5kX2NoaXAg KmNoaXApCj4gPiA+ICt7Cj4gPiA+ICsgICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc3Vw cG9ydGVkX290cF9tb2RlbHNbXSA9IHsKPiA+ID4gKyAgICAgICAgICAgICAiTVgzMExGMUcxOEFD IiwKPiA+ID4gKyAgICAgICAgICAgICAiTVgzMExGMkcxOEFDIiwKPiA+ID4gKyAgICAgICAgICAg ICAiTVgzMExGNEcxOEFDIiwKPiA+ID4gKyAgICAgfTsKPiA+ID4gKyAgICAgc3RydWN0IG10ZF9p bmZvICptdGQ7Cj4gPiA+ICsKPiA+ID4gKyAgICAgaWYgKG1hdGNoX3N0cmluZyhzdXBwb3J0ZWRf b3RwX21vZGVscywKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBBUlJBWV9TSVpFKHN1cHBv cnRlZF9vdHBfbW9kZWxzKSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBjaGlwLT5wYXJh bWV0ZXJzLm1vZGVsKSA8IDApCj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuOwo+ID4gPiArCj4g PiA+ICsgICAgIGlmICghY2hpcC0+cGFyYW1ldGVycy5zdXBwb3J0c19zZXRfZ2V0X2ZlYXR1cmVz KQo+ID4gPiArICAgICAgICAgICAgIHJldHVybjsKPiA+ID4gKwo+ID4gPiArICAgICBiaXRtYXBf c2V0KGNoaXAtPnBhcmFtZXRlcnMuZ2V0X2ZlYXR1cmVfbGlzdCwKPiA+ID4gKyAgICAgICAgICAg ICAgICBPTkZJX0ZFQVRVUkVfQUREUl8zMExGWEcxOEFDX09UUCwgMSk7Cj4gPiA+ICsgICAgIGJp dG1hcF9zZXQoY2hpcC0+cGFyYW1ldGVycy5zZXRfZmVhdHVyZV9saXN0LAo+ID4gPiArICAgICAg ICAgICAgICAgIE9ORklfRkVBVFVSRV9BRERSXzMwTEZYRzE4QUNfT1RQLCAxKTsKPiA+ID4gKwo+ ID4gPiArICAgICBtdGQgPSBuYW5kX3RvX210ZChjaGlwKTsKPiA+ID4gKyAgICAgbXRkLT5fZ2V0 X2ZhY3RfcHJvdF9pbmZvID0gbWFjcm9uaXhfMzBsZnhnMThhY19nZXRfb3RwX2luZm87Cj4gPiA+ ICsgICAgIG10ZC0+X3JlYWRfZmFjdF9wcm90X3JlZyA9IG1hY3Jvbml4XzMwbGZ4ZzE4YWNfcmVh ZF9vdHA7Cj4gPiA+ICsgICAgIG10ZC0+X2dldF91c2VyX3Byb3RfaW5mbyA9IG1hY3Jvbml4XzMw bGZ4ZzE4YWNfZ2V0X290cF9pbmZvOwo+ID4gPiArICAgICBtdGQtPl9yZWFkX3VzZXJfcHJvdF9y ZWcgPSBtYWNyb25peF8zMGxmeGcxOGFjX3JlYWRfb3RwOwo+ID4gPiArICAgICBtdGQtPl93cml0 ZV91c2VyX3Byb3RfcmVnID0gbWFjcm9uaXhfMzBsZnhnMThhY193cml0ZV9vdHA7Cj4gPiA+ICsg ICAgIG10ZC0+X2xvY2tfdXNlcl9wcm90X3JlZyA9IG1hY3Jvbml4XzMwbGZ4ZzE4YWNfbG9ja19v dHA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gIHN0YXRpYyBpbnQgbWFjcm9uaXhfbmFuZF9pbml0 KHN0cnVjdCBuYW5kX2NoaXAgKmNoaXApCj4gPiA+ICB7Cj4gPiA+ICAgICAgIGlmIChuYW5kX2lz X3NsYyhjaGlwKSkKPiA+ID4gQEAgLTMyNSw2ICs1NDAsNyBAQCBzdGF0aWMgaW50IG1hY3Jvbml4 X25hbmRfaW5pdChzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwKQo+ID4gPiAgICAgICBtYWNyb25peF9u YW5kX29uZmlfaW5pdChjaGlwKTsKPiA+ID4gICAgICAgbWFjcm9uaXhfbmFuZF9ibG9ja19wcm90 ZWN0aW9uX3N1cHBvcnQoY2hpcCk7Cj4gPiA+ICAgICAgIG1hY3Jvbml4X25hbmRfZGVlcF9wb3dl cl9kb3duX3N1cHBvcnQoY2hpcCk7Cj4gPiA+ICsgICAgIG1hY3Jvbml4X25hbmRfc2V0dXBfb3Rw KGNoaXApOwo+ID4gPgo+ID4gPiAgICAgICByZXR1cm4gMDsKPiA+ID4gIH0gIAo+ID4KPiA+Cj4g PiBUaGFua3MsCj4gPiBNaXF1w6hsICAKPiAKPiBUaGFua3MKPiBKYWltZQoKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXggTVREIGRp c2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtbXRkLwo=