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 BE21EC433FE for ; Fri, 19 Nov 2021 09:25:37 +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 8CDDC61A79 for ; Fri, 19 Nov 2021 09:25:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 8CDDC61A79 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=HG0REZMUNJcJR8oADlP0/aiYAVdVZSkIkc+EXNvWRIE=; b=YRZaYhseJDKeWX tsnSwg0i6Falip22hTfL0HTLKxGZ0cG5cDcsdhwSiSBXpJaxdpafqicALQ8IVlAziXtoabededV18 FMlVOHzCq1OZCKG8+I5q/LroFlzarbwQvBJUKK5y9rQUG0vPebOZGVgoY+lV2oHHhHRfXxAT0f2bF qbYegZVar0kUyKSgJx1wR6PLKiAjkSbaIOta+ttUZmw/lMnFQQflMcZA5+HEf/Z/4+rrlAcyjPYOC gRsub+10thYccDXb1yThjm4Dz+WIQZQGS3djBkKjKrXapSWtCpd0096JWrGDvIj4KmUJoJ2lLWWvf LKg1njn7QkENGp1C673g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mo07p-009xOu-RS; Fri, 19 Nov 2021 09:24:05 +0000 Received: from relay2-d.mail.gandi.net ([217.70.183.194]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mo07W-009xKo-Nc; Fri, 19 Nov 2021 09:23:48 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by relay2-d.mail.gandi.net (Postfix) with ESMTPSA id DD04340003; Fri, 19 Nov 2021 09:23:41 +0000 (UTC) Date: Fri, 19 Nov 2021 10:23:40 +0100 From: Miquel Raynal To: Geert Uytterhoeven Cc: Richard Weinberger , Vignesh Raghavendra , Tudor Ambarus , Pratyush Yadav , Michael Walle , MTD Maling List , Thomas Petazzoni , Jimmy Lalande , Milan Stevanovic , Linux-Renesas , Magnus Damm , Linux ARM , Gareth Williams Subject: Re: [PATCH 2/3] mtd: rawnand: rzn1: Add new NAND controller driver Message-ID: <20211119102340.05f2f3e4@xps13> In-Reply-To: References: <20211118111940.1275351-1-miquel.raynal@bootlin.com> <20211118111940.1275351-3-miquel.raynal@bootlin.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-20211119_012347_084186_6221F8AD X-CRM114-Status: GOOD ( 29.90 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgR2VlcnQsCgpnZWVydEBsaW51eC1tNjhrLm9yZyB3cm90ZSBvbiBGcmksIDE5IE5vdiAyMDIx IDA5OjU1OjUzICswMTAwOgoKPiBIaSBNaXF1ZWwsCj4gCj4gQ0MgR2FyZXRoCj4gCj4gT24gVGh1 LCBOb3YgMTgsIDIwMjEgYXQgMTI6MTkgUE0gTWlxdWVsIFJheW5hbAo+IDxtaXF1ZWwucmF5bmFs QGJvb3RsaW4uY29tPiB3cm90ZToKPiA+IEludHJvZHVjZSBSZW5lc2FzIFJaL04xeCBOQU5EIGNv bnRyb2xsZXIgZHJpdmVyIHdoaWNoIHN1cHBvcnRzOgo+ID4gLSBBbGwgT05GSSB0aW1pbmcgbW9k ZXMKPiA+IC0gRGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIG9mIGl0cyBpbnRlcm5hbCBFQ0MgY29u dHJvbGxlcgo+ID4gLSBPbi1kaWUgKG5vdCB0ZXN0ZWQpIGFuZCBzb2Z0d2FyZSBFQ0Mgc3VwcG9y dAo+ID4gLSBTZXZlcmFsIGNoaXBzIChub3QgdGVzdGVkKQo+ID4gLSBTdWJwYWdlIGFjY2Vzc2Vz Cj4gPiAtIERNQSBhbmQgUElPCj4gPgo+ID4gU2lnbmVkLW9mZi1ieTogTWlxdWVsIFJheW5hbCA8 bWlxdWVsLnJheW5hbEBib290bGluLmNvbT4gIAo+IAo+IFRoYW5rcyBmb3IgeW91ciBwYXRjaCEK PiAKPiA+IC0tLSBhL2RyaXZlcnMvbXRkL25hbmQvcmF3L0tjb25maWcKPiA+ICsrKyBiL2RyaXZl cnMvbXRkL25hbmQvcmF3L0tjb25maWcKPiA+IEBAIC00NjcsNiArNDY3LDEyIEBAIGNvbmZpZyBN VERfTkFORF9QTDM1WAo+ID4gICAgICAgICAgIEVuYWJsZXMgc3VwcG9ydCBmb3IgUHJpbWVDZWxs IFNNQyBQTDM1MSBhbmQgUEwzNTMgTkFORAo+ID4gICAgICAgICAgIGNvbnRyb2xsZXIgZm91bmQg b24gWnlucTcwMDAuCj4gPgo+ID4gK2NvbmZpZyBNVERfTkFORF9SWk4xCj4gPiArICAgICAgIHRy aXN0YXRlICJSZW5lc2FzIFJaL04xRCwgUlovTjFTLCBSWi9OMUwgTkFORCBjb250cm9sbGVyIgo+ ID4gKyAgICAgICBkZXBlbmRzIG9uIE9GIHx8IENPTVBJTEVfVEVTVCAgCj4gCj4gZGVwZW5kcyBv biBBUkNIX1JFTkVTQVMgfHwgQ09NUElMRV9URVNUCgpZZWFoIG9mIGNvdXJzZSwgc29ycnkgYWJv dXQgdGhhdC4KCj4gCj4gPiArICAgICAgIGhlbHAKPiA+ICsgICAgICAgICBFbmFibGVzIHN1cHBv cnQgZm9yIFJlbmVzYXMgUlovTjF4IFNvQyBmYW1pbHkgTkFORCBjb250cm9sbGVyLgo+ID4gKwo+ ID4gIGNvbW1lbnQgIk1pc2MiCj4gPgo+ID4gIGNvbmZpZyBNVERfU01fQ09NTU9OICAKPiAKPiA+ IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L3J6bjEtbmFuZC1j b250cm9sbGVyLmMgIAo+IAo+ID4gK3N0YXRpYyBpbnQgcnpuMV9yZWFkX3N1YnBhZ2VfaHdfZWNj KHN0cnVjdCBuYW5kX2NoaXAgKmNoaXAsIHUzMiByZXFfb2Zmc2V0LAo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdTMyIHJlcV9sZW4sIHU4ICpidWZwb2ksIGludCBwYWdl KQo+ID4gK3sKPiA+ICsgICAgICAgc3RydWN0IHJ6bjFfbmZjICpuZmMgPSB0b19yem4xX25mYyhj aGlwLT5jb250cm9sbGVyKTsKPiA+ICsgICAgICAgc3RydWN0IG10ZF9pbmZvICptdGQgPSBuYW5k X3RvX210ZChjaGlwKTsKPiA+ICsgICAgICAgc3RydWN0IHJ6bjFfbmFuZF9jaGlwICpyem4xX25h bmQgPSB0b19yem4xX25hbmQoY2hpcCk7Cj4gPiArICAgICAgIHVuc2lnbmVkIGludCBjcyA9IHRv X25mY19jcyhyem4xX25hbmQpOwo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9vZmYgPSBy b3VuZF9kb3duKHJlcV9vZmZzZXQsIGNoaXAtPmVjYy5zaXplKTsKPiA+ICsgICAgICAgdW5zaWdu ZWQgaW50IHJlYWxfbGVuID0gcm91bmRfdXAocmVxX29mZnNldCArIHJlcV9sZW4gLSBwYWdlX29m ZiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpcC0+ZWNj LnNpemUpOwo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgc3RhcnRfY2h1bmsgPSBwYWdlX29mZiAv IGNoaXAtPmVjYy5zaXplOwo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgbmNodW5rcyA9IHJlYWxf bGVuIC8gY2hpcC0+ZWNjLnNpemU7Cj4gPiArICAgICAgIHVuc2lnbmVkIGludCBlY2Nfb2ZmID0g MiArIChzdGFydF9jaHVuayAqIGNoaXAtPmVjYy5ieXRlcyk7Cj4gPiArICAgICAgIHN0cnVjdCBy em4xX29wIHJvcCA9IHsKPiA+ICsgICAgICAgICAgICAgICAuY29tbWFuZCA9IENPTU1BTkRfSU5Q VVRfU0VMX0FIQlMgfCBDT01NQU5EXzAoTkFORF9DTURfUkVBRDApIHwKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgIENPTU1BTkRfMihOQU5EX0NNRF9SRUFEU1RBUlQpIHwgQ09NTUFORF9G SUZPX1NFTCB8Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBDT01NQU5EX1NFUV9SRUFE X1BBR0UsCj4gPiArICAgICAgICAgICAgICAgLmFkZHIwX3JvdyA9IHBhZ2UsCj4gPiArICAgICAg ICAgICAgICAgLmFkZHIwX2NvbCA9IHBhZ2Vfb2ZmLAo+ID4gKyAgICAgICAgICAgICAgIC5sZW4g PSByZWFsX2xlbiwKPiA+ICsgICAgICAgICAgICAgICAuZWNjX29mZnNldCA9IEVDQ19PRkZTRVQo bXRkLT53cml0ZXNpemUgKyBlY2Nfb2ZmKSwKPiA+ICsgICAgICAgfTsKPiA+ICsgICAgICAgdW5z aWduZWQgaW50IG1heF9iaXRmbGlwcyA9IDA7Cj4gPiArICAgICAgIHUzMiBlY2Nfc3RhdDsKPiA+ ICsgICAgICAgaW50IGJmLCByZXQsIGk7ICAKPiAKPiB1bnNpZ25lZCBpbnQgaQoKU3RyYW5nZWx5 IEknbSB1c2VkIHRvIGFsd2F5cyBzZXQgbXkgbG9vcCBpbmRleGVzIGFzIHNpZ25lZCBpbnRlZ2Vy cywKYnV0IEknbGwgaGFwcGlseSBjaGFuZ2UgdGhhdCBldmVyeXdoZXJlIGluIHRoZSBkcml2ZXIg YmVmb3JlCnJlLXN1Ym1pdHRpbmcuCgpbLi4uXQoKPiA+ICtzdGF0aWMgaW50IHJ6bjFfd3JpdGVf cGFnZV9od19lY2Moc3RydWN0IG5hbmRfY2hpcCAqY2hpcCwgY29uc3QgdTggKmJ1ZiwKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb29iX3JlcXVpcmVkLCBpbnQgcGFn ZSkKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCByem4xX25mYyAqbmZjID0gdG9fcnpuMV9uZmMo Y2hpcC0+Y29udHJvbGxlcik7Cj4gPiArICAgICAgIHN0cnVjdCBtdGRfaW5mbyAqbXRkID0gbmFu ZF90b19tdGQoY2hpcCk7Cj4gPiArICAgICAgIHN0cnVjdCByem4xX25hbmRfY2hpcCAqcnpuMV9u YW5kID0gdG9fcnpuMV9uYW5kKGNoaXApOwo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgY3MgPSB0 b19uZmNfY3MocnpuMV9uYW5kKTsKPiA+ICsgICAgICAgc3RydWN0IHJ6bjFfb3Agcm9wID0gewo+ ID4gKyAgICAgICAgICAgICAgIC5jb21tYW5kID0gQ09NTUFORF9JTlBVVF9TRUxfRE1BIHwgQ09N TUFORF8wKE5BTkRfQ01EX1NFUUlOKSB8Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBD T01NQU5EXzEoTkFORF9DTURfUEFHRVBST0cpIHwgQ09NTUFORF9GSUZPX1NFTCB8Cj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICBDT01NQU5EX1NFUV9XUklURV9QQUdFLAo+ID4gKyAgICAg ICAgICAgICAgIC5hZGRyMF9yb3cgPSBwYWdlLAo+ID4gKyAgICAgICAgICAgICAgIC5sZW4gPSBt dGQtPndyaXRlc2l6ZSwKPiA+ICsgICAgICAgICAgICAgICAuZWNjX29mZnNldCA9IEVDQ19PRkZT RVQobXRkLT53cml0ZXNpemUgKyAyKSwKPiA+ICsgICAgICAgfTsKPiA+ICsgICAgICAgZG1hX2Fk ZHJfdCBkbWFfYWRkcjsKPiA+ICsgICAgICAgaW50IHJldDsKPiA+ICsKPiA+ICsgICAgICAgbWVt Y3B5KG5mYy0+YnVmLCBidWYsIG10ZC0+d3JpdGVzaXplKTsKPiA+ICsKPiA+ICsgICAgICAgLyog UHJlcGFyZSBjb250cm9sbGVyICovCj4gPiArICAgICAgIHJ6bjFfbmZjX3NlbGVjdF90YXJnZXQo Y2hpcCwgY2hpcC0+Y3VyX2NzKTsKPiA+ICsgICAgICAgcnpuMV9uZmNfY2xlYXJfc3RhdHVzKG5m Yyk7Cj4gPiArICAgICAgIHJlaW5pdF9jb21wbGV0aW9uKCZuZmMtPmNvbXBsZXRlKTsKPiA+ICsg ICAgICAgcnpuMV9uZmNfZW5faW50ZXJydXB0cyhuZmMsIElOVF9NRU1fUkRZKGNzKSk7Cj4gPiAr ICAgICAgIHJ6bjFfbmZjX2VuX2NvcnJlY3Rpb24obmZjKTsKPiA+ICsKPiA+ICsgICAgICAgLyog Q29uZmlndXJlIERNQSAqLwo+ID4gKyAgICAgICBkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKG5m Yy0+ZGV2LCAodm9pZCAqKW5mYy0+YnVmLCBtdGQtPndyaXRlc2l6ZSwKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBETUFfVE9fREVWSUNFKTsKPiA+ICsgICAgICAgd3JpdGVs KGRtYV9hZGRyLCBuZmMtPnJlZ3MgKyBETUFfQUREUl9MT1dfUkVHKTsKPiA+ICsgICAgICAgd3Jp dGVsKG10ZC0+d3JpdGVzaXplLCBuZmMtPnJlZ3MgKyBETUFfQ05UX1JFRyk7Cj4gPiArICAgICAg IHdyaXRlbChETUFfVExWTF9NQVgsIG5mYy0+cmVncyArIERNQV9UTFZMX1JFRyk7Cj4gPiArCj4g PiArICAgICAgIHJ6bjFfbmZjX3RyaWdnZXJfb3AobmZjLCAmcm9wKTsKPiA+ICsgICAgICAgcnpu MV9uZmNfdHJpZ2dlcl9kbWEobmZjKTsKPiA+ICsKPiA+ICsgICAgICAgcmV0ID0gcnpuMV9uZmNf d2FpdF9lbmRfb2ZfaW8obmZjLCBjaGlwKTsKPiA+ICsgICAgICAgZG1hX3VubWFwX3NpbmdsZShu ZmMtPmRldiwgZG1hX2FkZHIsIG10ZC0+d3JpdGVzaXplLCBETUFfVE9fREVWSUNFKTsKPiA+ICsg ICAgICAgcnpuMV9uZmNfZGlzX2NvcnJlY3Rpb24obmZjKTsKPiA+ICsgICAgICAgaWYgKHJldCkg ewo+ID4gKyAgICAgICAgICAgICAgIGRldl9lcnIobmZjLT5kZXYsICJXcml0ZSBwYWdlIG9wZXJh dGlvbiBuZXZlciBlbmRpbmdcbiIpOwo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4g PiArICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgaWYgKG9vYl9yZXF1aXJlZCkgeyAgCj4gCj4g UmV0dXJuIGVhcmx5IGlmICFvb2JfcmVxdWlyZWQsIHRvIHJlZHVjZSBpbmRlbnRhdGlvbiBiZWxv dz8KClllYWggc3VyZS4KCj4gPiArICAgICAgICAgICAgICAgcmV0ID0gbmFuZF9jaGFuZ2Vfd3Jp dGVfY29sdW1uX29wKGNoaXAsIG10ZC0+d3JpdGVzaXplLAo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlwLT5vb2JfcG9pLCBtdGQtPm9vYnNp emUsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZhbHNlKTsKPiA+ICsgICAgICAgICAgICAgICBpZiAocmV0KQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICByZXR1 cm4gMDsKPiA+ICt9ICAKClsuLi5dCgo+ID4gK3N0YXRpYyBpbnQgcnpuMV9uZmNfcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCByem4x X25mYyAqbmZjOwo+ID4gKyAgICAgICBpbnQgaXJxLCByZXQ7Cj4gPiArCj4gPiArICAgICAgIG5m YyA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKm5mYyksIEdGUF9LRVJORUwpOwo+ ID4gKyAgICAgICBpZiAoIW5mYykKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsK PiA+ICsKPiA+ICsgICAgICAgbmZjLT5kZXYgPSAmcGRldi0+ZGV2Owo+ID4gKyAgICAgICBuYW5k X2NvbnRyb2xsZXJfaW5pdCgmbmZjLT5jb250cm9sbGVyKTsKPiA+ICsgICAgICAgbmZjLT5jb250 cm9sbGVyLm9wcyA9ICZyem4xX25mY19vcHM7Cj4gPiArICAgICAgIElOSVRfTElTVF9IRUFEKCZu ZmMtPmNoaXBzKTsKPiA+ICsgICAgICAgaW5pdF9jb21wbGV0aW9uKCZuZmMtPmNvbXBsZXRlKTsK PiA+ICsKPiA+ICsgICAgICAgbmZjLT5yZWdzID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291 cmNlKHBkZXYsIDApOwo+ID4gKyAgICAgICBpZiAoSVNfRVJSKG5mYy0+cmVncykpCj4gPiArICAg ICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIobmZjLT5yZWdzKTsKPiA+ICsKPiA+ICsgICAgICAg cnpuMV9uZmNfZGlzX2ludGVycnVwdHMobmZjKTsKPiA+ICsgICAgICAgaXJxID0gcGxhdGZvcm1f Z2V0X2lycShwZGV2LCAwKTsgIAo+IAo+IHBsYXRmb3JtX2dldF9pcnFfb3B0aW9uYWwoKQo+IAo+ ID4gKyAgICAgICBpZiAoaXJxIDwgMCkgeyAgCj4gCj4gV2hhdCBpZiB0aGlzIGlzIGEgcmVhbCBl cnJvciwgb3IgLUVQUk9CRV9ERUZFUj8KCklmIGl0J3MgYSByZWFsIGVycm9yIEkgYmVsaWV2ZSB3 ZSBzaG91bGQgc3RpbGwgZmFsbGJhY2sgdG8gcG9sbGluZz8gT3IKZG8geW91IHByZWZlciB0byBv bmx5IHVzZSBwb2xsaW5nIG9uIGEgZml4ZWQgY29uZGl0aW9uPwoKSG93ZXZlciBpdCdzIHRydWUg dGhhdCBJIGZvcmdvdCB0byBoYW5kbGUgdGhlIGRlZmVycmVkIGNhc2UgaGVyZS4KCj4gPiArICAg ICAgICAgICAgICAgZGV2X2luZm8oJnBkZXYtPmRldiwgIlVzaW5nIHBvbGxpbmdcbiIpOwo+ID4g KyAgICAgICAgICAgICAgIG5mYy0+dXNlX3BvbGxpbmcgPSB0cnVlOwo+ID4gKyAgICAgICB9IGVs c2Ugewo+ID4gKyAgICAgICAgICAgICAgIHJldCA9IGRldm1fcmVxdWVzdF9pcnEoJnBkZXYtPmRl diwgaXJxLCByem4xX25mY19pcnFfaGFuZGxlciwgMCwKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJyem4xLW5hbmQtY29udHJvbGxlciIsIG5mYyk7Cj4gPiArICAg ICAgICAgICAgICAgaWYgKHJldCA8IDApCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gcmV0Owo+ID4gKyAgICAgICB9Cj4gPiArCj4gPiArICAgICAgIHJldCA9IGRtYV9zZXRfbWFz aygmcGRldi0+ZGV2LCBETUFfQklUX01BU0soMzIpKTsKPiA+ICsgICAgICAgaWYgKHJldCkKPiA+ ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gKwo+ID4gKyAgICAgICBuZmMtPmhjbGsg PSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgImhjbGsiKTsKPiA+ICsgICAgICAgaWYgKElTX0VS UihuZmMtPmhjbGspKQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKG5mYy0+aGNs ayk7Cj4gPiArCj4gPiArICAgICAgIG5mYy0+ZWNsayA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2 LCAiZWNsayIpOwo+ID4gKyAgICAgICBpZiAoSVNfRVJSKG5mYy0+ZWNsaykpCj4gPiArICAgICAg ICAgICAgICAgcmV0dXJuIFBUUl9FUlIobmZjLT5lY2xrKTsKPiA+ICsKPiA+ICsgICAgICAgcmV0 ID0gY2xrX3ByZXBhcmVfZW5hYmxlKG5mYy0+aGNsayk7Cj4gPiArICAgICAgIGlmIChyZXQpCj4g PiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsKPiA+ICsgICAgICAgcmV0ID0gY2xr X3ByZXBhcmVfZW5hYmxlKG5mYy0+ZWNsayk7Cj4gPiArICAgICAgIGlmIChyZXQpCj4gPiArICAg ICAgICAgICAgICAgZ290byBkaXNhYmxlX2hjbGs7Cj4gPiArCj4gPiArICAgICAgIHJ6bjFfbmZj X2NsZWFyX2ZpZm8obmZjKTsKPiA+ICsKPiA+ICsgICAgICAgcGxhdGZvcm1fc2V0X2RydmRhdGEo cGRldiwgbmZjKTsKPiA+ICsKPiA+ICsgICAgICAgcmV0ID0gcnpuMV9uYW5kX2NoaXBzX2luaXQo bmZjKTsKPiA+ICsgICAgICAgaWYgKHJldCkKPiA+ICsgICAgICAgICAgICAgICBnb3RvIGRpc2Fi bGVfZWNsazsKPiA+ICsKPiA+ICsgICAgICAgcmV0dXJuIDA7Cj4gPiArCj4gPiArZGlzYWJsZV9l Y2xrOgo+ID4gKyAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUobmZjLT5lY2xrKTsKPiA+ICtk aXNhYmxlX2hjbGs6Cj4gPiArICAgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShuZmMtPmhjbGsp Owo+ID4gKwo+ID4gKyAgICAgICByZXR1cm4gcmV0Owo+ID4gK30gIAo+IAo+ID4gK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJ6bjFfbmZjX2lkX3RhYmxlW10gPSB7Cj4gPiArICAg ICAgIHsgLmNvbXBhdGlibGUgPSAicmVuZXNhcyxyOWEwNmcwMzItbmFuZC1jb250cm9sbGVyIiB9 LCAgCj4gCj4gR2l2ZW4gbXkgY29tbWVudCBvbiB0aGUgYmluZGluZ3MsIHlvdSBwcm9iYWJseSB3 YW50IHRvIG1hdGNoIGFnYWluc3QKPiAicmVuZXNhcyxyem4xLW5hbmQtY29udHJvbGxlciIgaW5z dGVhZC4KClN1cmUuCgo+IAo+ID4gKyAgICAgICB7fSAvKiBzZW50aW5lbCAqLwo+ID4gK307Cj4g PiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbmZjX2lkX3RhYmxlKTsKPiA+ICsKPiA+ICtzdGF0 aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciByem4xX25mY19kcml2ZXIgPSB7Cj4gPiArICAgICAg IC5kcml2ZXIgPSB7Cj4gPiArICAgICAgICAgICAgICAgLm5hbWUgICA9ICJyZW5lc2FzLW5mYyIs ICAKPiAKPiBQZXJoYXBzIHMvbmZjL25hbmRjLyBldmVyeXdoZXJlLCB0byBhdm9pZCBjb25mdXNp b24gd2l0aCB0aGUgb3RoZXIgbmZjPwoKVGhlcmUgYXJlIG1hbnkgTkFORCBjb250cm9sbGVyIGRy aXZlcnMgdGhhdCBhcmUgYWJicmV2aWF0ZWQgd2l0aCBuZmMKYmVjYXVzZSBpdCdzIHNob3J0IGFu ZCBlYXN5IHRvIHdyaXRlIHdoaWxlIHN0aWxsIHByZWNpc2UsIGJ1dCBJIGhhdmUgbm8KaXNzdWUg cmV3b3JkaW5nIG5mYyBpbnRvIG5hbmRjIGlmIHlvdSBwcmVmZXIuCgo+ID4gKyAgICAgICAgICAg ICAgIC5vZl9tYXRjaF90YWJsZSA9IG9mX21hdGNoX3B0cihyem4xX25mY19pZF90YWJsZSksCj4g PiArICAgICAgIH0sCj4gPiArICAgICAgIC5wcm9iZSA9IHJ6bjFfbmZjX3Byb2JlLAo+ID4gKyAg ICAgICAucmVtb3ZlID0gcnpuMV9uZmNfcmVtb3ZlLAo+ID4gK307Cj4gPiArbW9kdWxlX3BsYXRm b3JtX2RyaXZlcihyem4xX25mY19kcml2ZXIpOyAgCj4gCgpUaGFua3MsCk1pcXXDqGwKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJu ZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRw Oi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK