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 X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4731FC282CB for ; Tue, 5 Feb 2019 14:13:12 +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 09FD620844 for ; Tue, 5 Feb 2019 14:13:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="IfbMTxbW" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 09FD620844 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject: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=A643kfeErQDh0lUkDjEyz1W37o9i0mTZcLRbbcsnEhA=; b=IfbMTxbWOVuL3V 8Kc8zjGGOFbjrMws2mSkPcpghEM2OMstBe6yzerrDl+nZrwnutnH59CMiuMBSgbwY4Cb8wCppJD6C HQEokcJsBQzalQdCJUVj1+A5Xs6W9E4e8j6A2PR/N1KQmIdSnKCByezcJ7yiwWdqA7CMpssgSJrWc ste3n2dwuF9R+AykqGI2Bfz763LBbChA6JccMauCYsEHST1mEkERJISVWj1GzdX9+eOZVPO9sWdJN bbWf2+TR0vGpn8V1eUpdMtW1H36SSKzhB34ZHIyFb+sETC2SBT3YgkYGaKR+xHkUsqSsYBJxFrMiU wFt7xdV8l4+CChVHgA3w==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gr1TI-0002Hl-6h; Tue, 05 Feb 2019 14:13:08 +0000 Received: from relay10.mail.gandi.net ([217.70.178.230]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gr1TD-0002H3-OB for linux-mtd@lists.infradead.org; Tue, 05 Feb 2019 14:13:06 +0000 Received: from xps13 (aaubervilliers-681-1-80-177.w90-88.abo.wanadoo.fr [90.88.22.177]) (Authenticated sender: miquel.raynal@bootlin.com) by relay10.mail.gandi.net (Postfix) with ESMTPSA id 71206240015; Tue, 5 Feb 2019 14:12:57 +0000 (UTC) Date: Tue, 5 Feb 2019 15:12:56 +0100 From: Miquel Raynal To: Paul Cercueil Subject: Re: [PATCH v3 8/9] mtd: rawnand: ingenic: Add support for the JZ4725B Message-ID: <20190205151256.1bb3dab0@xps13> In-Reply-To: <20190204190426.11618-8-paul@crapouillou.net> References: <20190204190426.11618-1-paul@crapouillou.net> <20190204190426.11618-8-paul@crapouillou.net> Organization: Bootlin X-Mailer: Claws Mail 3.17.1 (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-20190205_061304_087183_9CDC5860 X-CRM114-Status: GOOD ( 38.82 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , devicetree@vger.kernel.org, Boris Brezillon , Mathieu Malaterre , Richard Weinberger , linux-kernel@vger.kernel.org, Marek Vasut , Rob Herring , linux-mtd@lists.infradead.org, Harvey Hunt , Brian Norris , David Woodhouse 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 SGkgUGF1bCwKClBhdWwgQ2VyY3VlaWwgPHBhdWxAY3JhcG91aWxsb3UubmV0PiB3cm90ZSBvbiBN b24sICA0IEZlYiAyMDE5IDE2OjA0OjI1Ci0wMzAwOgoKPiBUaGUgYm9vdCBST00gb2YgdGhlIEpa NDcyNUIgU29DIGV4cGVjdHMgYSBzcGVjaWZpYyBPT0IgbGF5b3V0IG9uIHRoZQo+IE5BTkQsIHNv IHdlIHVzZSBpdCB1bmNvbmRpdGlvbmFsbHkgaW4gdGhlIGluZ2VuaWMtbmFuZCBkcml2ZXIuCj4g Cj4gQWxzbyBhZGQgdGhlIGp6NDcyNWItYmNoIGRyaXZlciB0byBzdXBwb3J0IHRoZSBKWjQ3MjVC LXNwZWNpZmljIEJDSAo+IGhhcmR3YXJlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFBhdWwgQ2VyY3Vl aWwgPHBhdWxAY3JhcG91aWxsb3UubmV0Pgo+IC0tLQo+IAo+IENoYW5nZXM6Cj4gCj4gdjI6IElu c3RlYWQgb2YgZm9yY2luZyB0aGUgT09CIGxheW91dCwgbGVhdmUgaXQgdG8gdGhlIGJvYXJkIGNv ZGUgb3IKPiAgICAgZGV2aWNldHJlZSB0byBkZWNpZGUgaWYgdGhlIGp6NDcyNWItc3BlY2lmaWMg bGF5b3V0IHNob3VsZCBiZSB1c2VkCj4gICAgIG9yIG5vdC4KPiAKPiB2MzogLSBSZXZlcnQgdGhl IGNoYW5nZSBpbiB2MiwgYXMgdGhlIHByZXZpb3VzIGJlaGF2aW91ciB3YXMgY29ycmVjdC4KPiAg ICAgLSBBbHNvIGFkZCBzdXBwb3J0IGZvciB0aGUgaGFyZHdhcmUgQkNIIG9mIHRoZSBKWjQ3MjVC IGluIHRoaXMKPiAgICAgICBwYXRjaC4KPiAKPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvaW5nZW5p Yy9LY29uZmlnICAgICAgICB8ICAxMCArKwo+ICBkcml2ZXJzL210ZC9uYW5kL3Jhdy9pbmdlbmlj L01ha2VmaWxlICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvaW5nZW5pYy9p bmdlbmljX25hbmQuYyB8ICA0OCArKysrKy0KPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvaW5nZW5p Yy9qejQ3MjViX2JjaC5jICB8IDI1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDQg ZmlsZXMgY2hhbmdlZCwgMzA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvbXRkL25hbmQvcmF3L2luZ2VuaWMvano0NzI1Yl9iY2guYwo+ IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9pbmdlbmljL0tjb25maWcgYi9k cml2ZXJzL210ZC9uYW5kL3Jhdy9pbmdlbmljL0tjb25maWcKPiBpbmRleCBjYzY2M2NjMTUxMTku LjQ5N2I0NmIxNDRmMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9pbmdlbmlj L0tjb25maWcKPiArKysgYi9kcml2ZXJzL210ZC9uYW5kL3Jhdy9pbmdlbmljL0tjb25maWcKPiBA QCAtMjcsNiArMjcsMTYgQEAgY29uZmlnIE1URF9OQU5EX0paNDc0MF9FQ0MKPiAgCSAgVGhpcyBk cml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIElmIHNvLCB0aGUgbW9kdWxlCj4g IAkgIHdpbGwgYmUgY2FsbGVkIGp6NDc0MC1lY2MuCj4gIAo+ICtjb25maWcgTVREX05BTkRfSlo0 NzI1Ql9CQ0gKPiArCXRyaXN0YXRlICJIYXJkd2FyZSBCQ0ggc3VwcG9ydCBmb3IgSlo0NzI1QiBT b0MiCj4gKwlzZWxlY3QgTVREX05BTkRfSU5HRU5JQ19FQ0MKPiArCWhlbHAKPiArCSAgRW5hYmxl IHRoaXMgZHJpdmVyIHRvIHN1cHBvcnQgdGhlIEJDSCBlcnJvci1jb3JyZWN0aW9uIGhhcmR3YXJl Cj4gKwkgIHByZXNlbnQgb24gdGhlIEpaNDcyNUIgU29DIGZyb20gSW5nZW5pYy4KPiArCj4gKwkg IFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiBJZiBzbywgdGhlIG1v ZHVsZQo+ICsJICB3aWxsIGJlIGNhbGxlZCBqejQ3MjViLWJjaC4KPiArCj4gIGNvbmZpZyBNVERf TkFORF9KWjQ3ODBfQkNICj4gIAl0cmlzdGF0ZSAiSGFyZHdhcmUgQkNIIHN1cHBvcnQgZm9yIEpa NDc4MCBTb0MiCj4gIAlzZWxlY3QgTVREX05BTkRfSU5HRU5JQ19FQ0MKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9tdGQvbmFuZC9yYXcvaW5nZW5pYy9NYWtlZmlsZSBiL2RyaXZlcnMvbXRkL25hbmQv cmF3L2luZ2VuaWMvTWFrZWZpbGUKPiBpbmRleCA1NjNiN2VmZmNmNTkuLmFiMmM1ZjQ3ZTViNyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9pbmdlbmljL01ha2VmaWxlCj4gKysr IGIvZHJpdmVycy9tdGQvbmFuZC9yYXcvaW5nZW5pYy9NYWtlZmlsZQo+IEBAIC0zLDQgKzMsNSBA QCBvYmotJChDT05GSUdfTVREX05BTkRfSlo0NzgwKSArPSBpbmdlbmljX25hbmQubwo+ICAKPiAg b2JqLSQoQ09ORklHX01URF9OQU5EX0lOR0VOSUNfRUNDKSArPSBpbmdlbmljX2VjYy5vCj4gIG9i ai0kKENPTkZJR19NVERfTkFORF9KWjQ3NDBfRUNDKSArPSBqejQ3NDBfZWNjLm8KPiArb2JqLSQo Q09ORklHX01URF9OQU5EX0paNDcyNUJfQkNIKSArPSBqejQ3MjViX2JjaC5vCj4gIG9iai0kKENP TkZJR19NVERfTkFORF9KWjQ3ODBfQkNIKSArPSBqejQ3ODBfYmNoLm8KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9tdGQvbmFuZC9yYXcvaW5nZW5pYy9pbmdlbmljX25hbmQuYyBiL2RyaXZlcnMvbXRk L25hbmQvcmF3L2luZ2VuaWMvaW5nZW5pY19uYW5kLmMKPiBpbmRleCAzZmQwNzg5MjBiMTcuLjBl NmQ3OTk5M2ZmMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9pbmdlbmljL2lu Z2VuaWNfbmFuZC5jCj4gKysrIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcvaW5nZW5pYy9pbmdlbmlj X25hbmQuYwo+IEBAIC0zNCw2ICszNCw3IEBAIHN0cnVjdCBqel9zb2NfaW5mbyB7Cj4gIAl1bnNp Z25lZCBsb25nIGRhdGFfb2Zmc2V0Owo+ICAJdW5zaWduZWQgbG9uZyBhZGRyX29mZnNldDsKPiAg CXVuc2lnbmVkIGxvbmcgY21kX29mZnNldDsKPiArCWNvbnN0IHN0cnVjdCBtdGRfb29ibGF5b3V0 X29wcyAqb29iX2xheW91dDsKPiAgfTsKPiAgCj4gIHN0cnVjdCBpbmdlbmljX25hbmRfY3Mgewo+ IEBAIC03MSw2ICs3Miw0MSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpbmdlbmljX25mYyAqdG9f aW5nZW5pY19uZmMoc3RydWN0IG5hbmRfY29udHJvbGxlciAqY3RybCkKPiAgCXJldHVybiBjb250 YWluZXJfb2YoY3RybCwgc3RydWN0IGluZ2VuaWNfbmZjLCBjb250cm9sbGVyKTsKPiAgfQo+ICAK PiArc3RhdGljIGludCBqejQ3MjViX29vYmxheW91dF9lY2Moc3RydWN0IG10ZF9pbmZvICptdGQs IGludCBzZWN0aW9uLAo+ICsJCQkJIHN0cnVjdCBtdGRfb29iX3JlZ2lvbiAqb29icmVnaW9uKQo+ ICt7Cj4gKwlzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwID0gbXRkX3RvX25hbmQobXRkKTsKPiArCXN0 cnVjdCBuYW5kX2VjY19jdHJsICplY2MgPSAmY2hpcC0+ZWNjOwo+ICsKPiArCWlmIChzZWN0aW9u IHx8ICFlY2MtPnRvdGFsKQo+ICsJCXJldHVybiAtRVJBTkdFOwo+ICsKPiArCW9vYnJlZ2lvbi0+ bGVuZ3RoID0gZWNjLT50b3RhbDsKPiArCW9vYnJlZ2lvbi0+b2Zmc2V0ID0gMzsKPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBqejQ3MjViX29vYmxheW91dF9mcmVlKHN0 cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgc2VjdGlvbiwKPiArCQkJCSAgc3RydWN0IG10ZF9vb2Jf cmVnaW9uICpvb2JyZWdpb24pCj4gK3sKPiArCXN0cnVjdCBuYW5kX2NoaXAgKmNoaXAgPSBtdGRf dG9fbmFuZChtdGQpOwo+ICsJc3RydWN0IG5hbmRfZWNjX2N0cmwgKmVjYyA9ICZjaGlwLT5lY2M7 Cj4gKwo+ICsJaWYgKHNlY3Rpb24pCj4gKwkJcmV0dXJuIC1FUkFOR0U7Cj4gKwo+ICsJb29icmVn aW9uLT5sZW5ndGggPSBtdGQtPm9vYnNpemUgLSBlY2MtPnRvdGFsIC0gMzsKPiArCW9vYnJlZ2lv bi0+b2Zmc2V0ID0gMyArIGVjYy0+dG90YWw7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g K2NvbnN0IHN0cnVjdCBtdGRfb29ibGF5b3V0X29wcyBqejQ3MjViX29vYmxheW91dF9vcHMgPSB7 Cj4gKwkuZWNjID0gano0NzI1Yl9vb2JsYXlvdXRfZWNjLAo+ICsJLmZyZWUgPSBqejQ3MjViX29v YmxheW91dF9mcmVlLAo+ICt9Owo+ICsKPiAgc3RhdGljIHZvaWQgaW5nZW5pY19uYW5kX3NlbGVj dF9jaGlwKHN0cnVjdCBuYW5kX2NoaXAgKmNoaXAsIGludCBjaGlwbnIpCj4gIHsKPiAgCXN0cnVj dCBpbmdlbmljX25hbmQgKm5hbmQgPSB0b19pbmdlbmljX25hbmQobmFuZF90b19tdGQoY2hpcCkp Owo+IEBAIC0yMTEsNyArMjQ3LDcgQEAgc3RhdGljIGludCBpbmdlbmljX25hbmRfYXR0YWNoX2No aXAoc3RydWN0IG5hbmRfY2hpcCAqY2hpcCkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAg Cj4gLQltdGRfc2V0X29vYmxheW91dChtdGQsICZuYW5kX29vYmxheW91dF9scF9vcHMpOwo+ICsJ bXRkX3NldF9vb2JsYXlvdXQobXRkLCBuZmMtPnNvY19pbmZvLT5vb2JfbGF5b3V0KTsKPiAgCj4g IAlyZXR1cm4gMDsKPiAgfQo+IEBAIC00MDcsMTYgKzQ0MywyNiBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGp6X3NvY19pbmZvIGp6NDc0MF9zb2NfaW5mbyA9IHsKPiAgCS5kYXRhX29mZnNldCA9IDB4 MDAwMDAwMDAsCj4gIAkuY21kX29mZnNldCAgPSAweDAwMDA4MDAwLAo+ICAJLmFkZHJfb2Zmc2V0 ID0gMHgwMDAxMDAwMCwKPiArCS5vb2JfbGF5b3V0ID0gJm5hbmRfb29ibGF5b3V0X2xwX29wcywK PiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qganpfc29jX2luZm8gano0NzI1Yl9zb2Nf aW5mbyA9IHsKPiArCS5kYXRhX29mZnNldCA9IDB4MDAwMDAwMDAsCj4gKwkuY21kX29mZnNldCAg PSAweDAwMDA4MDAwLAo+ICsJLmFkZHJfb2Zmc2V0ID0gMHgwMDAxMDAwMCwKPiArCS5vb2JfbGF5 b3V0ID0gJmp6NDcyNWJfb29ibGF5b3V0X29wcywKPiAgfTsKPiAgCj4gIHN0YXRpYyBjb25zdCBz dHJ1Y3Qganpfc29jX2luZm8gano0NzgwX3NvY19pbmZvID0gewo+ICAJLmRhdGFfb2Zmc2V0ID0g MHgwMDAwMDAwMCwKPiAgCS5jbWRfb2Zmc2V0ICA9IDB4MDA0MDAwMDAsCj4gIAkuYWRkcl9vZmZz ZXQgPSAweDAwODAwMDAwLAo+ICsJLm9vYl9sYXlvdXQgPSAmbmFuZF9vb2JsYXlvdXRfbHBfb3Bz LAo+ICB9Owo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW5nZW5pY19u YW5kX2R0X21hdGNoW10gPSB7Cj4gIAl7IC5jb21wYXRpYmxlID0gImluZ2VuaWMsano0NzQwLW5h bmQiLCAuZGF0YSA9ICZqejQ3NDBfc29jX2luZm8gfSwKPiArCXsgLmNvbXBhdGlibGUgPSAiaW5n ZW5pYyxqejQ3MjViLW5hbmQiLCAuZGF0YSA9ICZqejQ3MjViX3NvY19pbmZvIH0sCj4gIAl7IC5j b21wYXRpYmxlID0gImluZ2VuaWMsano0NzgwLW5hbmQiLCAgLmRhdGEgPSAmano0NzgwX3NvY19p bmZvICB9LAo+ICAJe30sCj4gIH07Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvcmF3 L2luZ2VuaWMvano0NzI1Yl9iY2guYyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L2luZ2VuaWMvano0 NzI1Yl9iY2guYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi42 NmJlNDU0YmUzODMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcv aW5nZW5pYy9qejQ3MjViX2JjaC5jCj4gQEAgLTAsMCArMSwyNTEgQEAKPiArLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoKPiArICogSlo0NzI1QiBCQ0ggY29udHJvbGxl ciBkcml2ZXIKPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDE4IFBhdWwgQ2VyY3VlaWwgPHBh dWxAY3JhcG91aWxsb3UubmV0Pgo+ICsgKgo+ICsgKiBCYXNlZCBvbiBqejQ3ODBfYmNoLmMKPiAr ICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvYml0b3BzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9k ZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pb3Bv bGwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvbXV0 ZXguaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiArCj4gKyNpbmNsdWRlICJpbmdlbmljX2VjYy5oIgo+ICsK PiArI2RlZmluZSBCQ0hfQkhDUgkJCTB4MAo+ICsjZGVmaW5lIEJDSF9CSENTUgkJCTB4NAo+ICsj ZGVmaW5lIEJDSF9CSENDUgkJCTB4OAo+ICsjZGVmaW5lIEJDSF9CSENOVAkJCTB4Ywo+ICsjZGVm aW5lIEJDSF9CSERSCQkJMHgxMAo+ICsjZGVmaW5lIEJDSF9CSFBBUjAJCQkweDE0Cj4gKyNkZWZp bmUgQkNIX0JIRVJSMAkJCTB4MjgKPiArI2RlZmluZSBCQ0hfQkhJTlQJCQkweDI0Cj4gKyNkZWZp bmUgQkNIX0JISU5URVMJCQkweDNjCj4gKyNkZWZpbmUgQkNIX0JISU5URUMJCQkweDQwCj4gKyNk ZWZpbmUgQkNIX0JISU5URQkJCTB4MzgKPiArCj4gKyNkZWZpbmUgQkNIX0JIQ1JfQlNFTF9TSElG VAkJMgo+ICsjZGVmaW5lIEJDSF9CSENSX0JTRUxfTUFTSwkJKDB4MSA8PCBCQ0hfQkhDUl9CU0VM X1NISUZUKQo+ICsjZGVmaW5lIEJDSF9CSENSX0VOQ0UJCQlCSVQoMykKPiArI2RlZmluZSBCQ0hf QkhDUl9JTklUCQkJQklUKDEpCj4gKyNkZWZpbmUgQkNIX0JIQ1JfQkNIRQkJCUJJVCgwKQo+ICsK PiArI2RlZmluZSBCQ0hfQkhDTlRfREVDX0NPVU5UX1NISUZUCTE2Cj4gKyNkZWZpbmUgQkNIX0JI Q05UX0RFQ19DT1VOVF9NQVNLCSgweDNmZiA8PCBCQ0hfQkhDTlRfREVDX0NPVU5UX1NISUZUKQo+ ICsjZGVmaW5lIEJDSF9CSENOVF9FTkNfQ09VTlRfU0hJRlQJMAo+ICsjZGVmaW5lIEJDSF9CSENO VF9FTkNfQ09VTlRfTUFTSwkoMHgzZmYgPDwgQkNIX0JIQ05UX0VOQ19DT1VOVF9TSElGVCkKPiAr Cj4gKyNkZWZpbmUgQkNIX0JIRVJSX0lOREVYMF9TSElGVAkJMAo+ICsjZGVmaW5lIEJDSF9CSEVS Ul9JTkRFWDBfTUFTSwkJKDB4MWZmZiA8PCBCQ0hfQkhFUlJfSU5ERVgwX1NISUZUKQo+ICsjZGVm aW5lIEJDSF9CSEVSUl9JTkRFWDFfU0hJRlQJCTE2Cj4gKyNkZWZpbmUgQkNIX0JIRVJSX0lOREVY MV9NQVNLCQkoMHgxZmZmIDw8IEJDSF9CSEVSUl9JTkRFWDFfU0hJRlQpCj4gKwo+ICsjZGVmaW5l IEJDSF9CSElOVF9FUlJDX1NISUZUCQkyOAo+ICsjZGVmaW5lIEJDSF9CSElOVF9FUlJDX01BU0sJ CSgweGYgPDwgQkNIX0JISU5UX0VSUkNfU0hJRlQpCj4gKyNkZWZpbmUgQkNIX0JISU5UX1RFUlJD X1NISUZUCQkxNgo+ICsjZGVmaW5lIEJDSF9CSElOVF9URVJSQ19NQVNLCQkoMHg3ZiA8PCBCQ0hf QkhJTlRfVEVSUkNfU0hJRlQpCj4gKyNkZWZpbmUgQkNIX0JISU5UX0FMTF8wCQkJQklUKDUpCj4g KyNkZWZpbmUgQkNIX0JISU5UX0FMTF9GCQkJQklUKDQpCj4gKyNkZWZpbmUgQkNIX0JISU5UX0RF Q0YJCQlCSVQoMykKPiArI2RlZmluZSBCQ0hfQkhJTlRfRU5DRgkJCUJJVCgyKQo+ICsjZGVmaW5l IEJDSF9CSElOVF9VTkNPUgkJCUJJVCgxKQo+ICsjZGVmaW5lIEJDSF9CSElOVF9FUlIJCQlCSVQo MCkKPiArCj4gKy8qIFRpbWVvdXQgZm9yIEJDSCBjYWxjdWxhdGlvbi9jb3JyZWN0aW9uLiAqLwo+ ICsjZGVmaW5lIEJDSF9USU1FT1VUX1VTCQkJMTAwMDAwCj4gKwo+ICtzdGF0aWMgdm9pZCBqejQ3 MjViX2JjaF9pbml0KHN0cnVjdCBpbmdlbmljX2VjYyAqYmNoLAo+ICsJCQkgICAgIHN0cnVjdCBp bmdlbmljX2VjY19wYXJhbXMgKnBhcmFtcywgYm9vbCBlbmNvZGUpCgpJIGRvbid0IGtub3cgdGhl IElQIGJ1dCAnZW5jb2RlJyBsb29rcyBzdHJhbmdlLCB3aGF0IGlzIGl0IHN1cHBvc2VkIHRvCm1l YW4/Cgo+ICt7Cj4gKwl1MzIgcmVnOwo+ICsKPiArCS8qIENsZWFyIGludGVycnVwdCBzdGF0dXMu ICovCj4gKwl3cml0ZWwocmVhZGwoYmNoLT5iYXNlICsgQkNIX0JISU5UKSwgYmNoLT5iYXNlICsg QkNIX0JISU5UKTsKPiArCj4gKwkvKiBJbml0aWFsaXNlIGFuZCBlbmFibGUgQkNILiAqLwo+ICsJ d3JpdGVsKDB4MWYsIGJjaC0+YmFzZSArIEJDSF9CSENDUik7Cj4gKwl3cml0ZWwoQkNIX0JIQ1Jf QkNIRSwgYmNoLT5iYXNlICsgQkNIX0JIQ1NSKTsKPiArCj4gKwlpZiAocGFyYW1zLT5zdHJlbmd0 aCA9PSA4KQo+ICsJCXdyaXRlbChCQ0hfQkhDUl9CU0VMX01BU0ssIGJjaC0+YmFzZSArIEJDSF9C SENTUik7Cj4gKwllbHNlCj4gKwkJd3JpdGVsKEJDSF9CSENSX0JTRUxfTUFTSywgYmNoLT5iYXNl ICsgQkNIX0JIQ0NSKTsKCkhlcmUgeW91IHdyaXRlIHRvIEJDSF9CSENTUiBvciBCQ0hfQkhDQ1Ig ZGVwZW5kaW5nIG9uCnBhcmFtcy0+c3RyZW5ndGguLi4KCj4gKwo+ICsJaWYgKGVuY29kZSkKPiAr CQl3cml0ZWwoQkNIX0JIQ1JfRU5DRSwgYmNoLT5iYXNlICsgQkNIX0JIQ1NSKTsKPiArCWVsc2UK PiArCQl3cml0ZWwoQkNIX0JIQ1JfRU5DRSwgYmNoLT5iYXNlICsgQkNIX0JIQ0NSKTsKCi4uLmFu ZCBoZXJlIGRlcGVuZGluZyBvbiBlbmNvZGUuCgpDYW4geW91IGV4cGxhaW4gYSBiaXQ/Cgo+ICsK PiArCXdyaXRlbChCQ0hfQkhDUl9JTklULCBiY2gtPmJhc2UgKyBCQ0hfQkhDU1IpOwo+ICsKPiAr CS8qIFNldCB1cCBCQ0ggY291bnQgcmVnaXN0ZXIuICovCj4gKwlyZWcgPSBwYXJhbXMtPnNpemUg PDwgQkNIX0JIQ05UX0VOQ19DT1VOVF9TSElGVDsKPiArCXJlZyB8PSAocGFyYW1zLT5zaXplICsg cGFyYW1zLT5ieXRlcykgPDwgQkNIX0JIQ05UX0RFQ19DT1VOVF9TSElGVDsKCk1heWJlIHlvdSB3 YW50IHRvIGNoZWNrIHBhcmFtcy0+c2l6ZSB0byBmaXQgdGhlIGJpdGZpZWxkIGxlbmd0aD8KCj4g Kwl3cml0ZWwocmVnLCBiY2gtPmJhc2UgKyBCQ0hfQkhDTlQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZCBqejQ3MjViX2JjaF9kaXNhYmxlKHN0cnVjdCBpbmdlbmljX2VjYyAqYmNoKQo+ICt7Cj4g Kwl3cml0ZWwocmVhZGwoYmNoLT5iYXNlICsgQkNIX0JISU5UKSwgYmNoLT5iYXNlICsgQkNIX0JI SU5UKTsKPiArCXdyaXRlbChCQ0hfQkhDUl9CQ0hFLCBiY2gtPmJhc2UgKyBCQ0hfQkhDQ1IpOwoK SSB3b3VsZCBhZGQgY29tbWVudHMsIG9uZSB0byBzYXkgeW91IGNsZWFyIHRoZSBpbnRlcnJ1cHRz LCBvbmUgd2hlbiB5b3UKZGlzYWJsZSB0aGUgZW5naW5lLgoKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgano0NzI1Yl9iY2hfd3JpdGVfZGF0YShzdHJ1Y3QgaW5nZW5pY19lY2MgKmJjaCwgY29uc3Qg dTggKmJ1ZiwKPiArCQkJCSAgIHNpemVfdCBzaXplKQo+ICt7Cj4gKwl3aGlsZSAoc2l6ZS0tKQo+ ICsJCXdyaXRlYigqYnVmKyssIGJjaC0+YmFzZSArIEJDSF9CSERSKTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgano0NzI1Yl9iY2hfcmVhZF9wYXJpdHkoc3RydWN0IGluZ2VuaWNfZWNjICpiY2gs IHU4ICpidWYsCj4gKwkJCQkgICAgc2l6ZV90IHNpemUpCj4gK3sKPiArCXNpemVfdCBzaXplMzIg PSBzaXplIC8gc2l6ZW9mKHUzMik7Cj4gKwlzaXplX3Qgc2l6ZTggPSBzaXplICUgc2l6ZW9mKHUz Mik7Cj4gKwl1MzIgKmRlc3QzMjsKPiArCXU4ICpkZXN0ODsKPiArCXUzMiB2YWwsIG9mZnNldCA9 IDA7Cj4gKwo+ICsJZGVzdDMyID0gKHUzMiAqKWJ1ZjsKPiArCXdoaWxlIChzaXplMzItLSkgewo+ ICsJCSpkZXN0MzIrKyA9IHJlYWRsKGJjaC0+YmFzZSArIEJDSF9CSFBBUjAgKyBvZmZzZXQpOwo+ ICsJCW9mZnNldCArPSBzaXplb2YodTMyKTsKPiArCX0KPiArCj4gKwlkZXN0OCA9ICh1OCAqKWRl c3QzMjsKPiArCXZhbCA9IHJlYWRsKGJjaC0+YmFzZSArIEJDSF9CSFBBUjAgKyBvZmZzZXQpOwo+ ICsJc3dpdGNoIChzaXplOCkgewo+ICsJY2FzZSAzOgo+ICsJCWRlc3Q4WzJdID0gKHZhbCA+PiAx NikgJiAweGZmOwo+ICsJY2FzZSAyOgo+ICsJCWRlc3Q4WzFdID0gKHZhbCA+PiA4KSAmIDB4ZmY7 Cj4gKwljYXNlIDE6Cj4gKwkJZGVzdDhbMF0gPSB2YWwgJiAweGZmOwo+ICsJCWJyZWFrOwo+ICsJ fQo+ICt9CgpIYXZlIHlvdSB0cmllZCB3aXRoIF9yZWxheGVkIG9wZXJhdG9ycz8KCj4gKwo+ICtz dGF0aWMgYm9vbCBqejQ3MjViX2JjaF93YWl0X2NvbXBsZXRlKHN0cnVjdCBpbmdlbmljX2VjYyAq YmNoLCB1bnNpZ25lZCBpbnQgaXJxLAo+ICsJCQkJICAgICAgdTMyICpzdGF0dXMpCj4gK3sKPiAr CXUzMiByZWc7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCS8qCj4gKwkgKiBXaGlsZSB3ZSBjb3VsZCB1 c2UgaW50ZXJydXB0cyBoZXJlIGFuZCBzbGVlcCB1bnRpbCB0aGUgb3BlcmF0aW9uCj4gKwkgKiBj b21wbGV0ZXMsIHRoZSBjb250cm9sbGVyIHdvcmtzIGZhaXJseSBxdWlja2x5ICh1c3VhbGx5IGEg ZmV3Cj4gKwkgKiBtaWNyb3NlY29uZHMpIGFuZCBzbyB0aGUgb3ZlcmhlYWQgb2Ygc2xlZXBpbmcg dW50aWwgd2UgZ2V0IGFuCj4gKwkgKiBpbnRlcnJ1cHQgcXVpdGUgbm90aWNlYWJseSBkZWNyZWFz ZXMgcGVyZm9ybWFuY2UuCj4gKwkgKi8KPiArCXJldCA9IHJlYWRsX3BvbGxfdGltZW91dChiY2gt PmJhc2UgKyBCQ0hfQkhJTlQsIHJlZywKPiArCQkJCSAocmVnICYgaXJxKSA9PSBpcnEsIDAsIEJD SF9USU1FT1VUX1VTKTsKCkkgc3VwcG9zZSAocmVnICYgaXJxKSBpcyBlbm91Z2g/Cgo+ICsJaWYg KHJldCkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJaWYgKHN0YXR1cykKPiArCQkqc3RhdHVz ID0gcmVnOwo+ICsKPiArCXdyaXRlbChyZWcsIGJjaC0+YmFzZSArIEJDSF9CSElOVCk7CgpzcGFj ZQoKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGp6NDcyNWJfY2FsY3Vs YXRlKHN0cnVjdCBpbmdlbmljX2VjYyAqYmNoLAo+ICsJCQkgICAgIHN0cnVjdCBpbmdlbmljX2Vj Y19wYXJhbXMgKnBhcmFtcywKPiArCQkJICAgICBjb25zdCB1OCAqYnVmLCB1OCAqZWNjX2NvZGUp Cj4gK3sKPiArCWludCByZXQgPSAwOwo+ICsKPiArCW11dGV4X2xvY2soJmJjaC0+bG9jayk7Cj4g KwlqejQ3MjViX2JjaF9pbml0KGJjaCwgcGFyYW1zLCB0cnVlKTsKPiArCWp6NDcyNWJfYmNoX3dy aXRlX2RhdGEoYmNoLCBidWYsIHBhcmFtcy0+c2l6ZSk7Cj4gKwo+ICsJaWYgKGp6NDcyNWJfYmNo X3dhaXRfY29tcGxldGUoYmNoLCBCQ0hfQkhJTlRfRU5DRiwgTlVMTCkpIHsKCkkgd291bGQgcHJl ZmVyIGJjaF93YWl0X2NvbXBsZXRlKCkgdG8gcmV0dXJuIGFuIHVzdWFsIG5lZ2F0aXZlIGVycm9y Cmluc3RlYWQgb2YgYSBib29sZWFuLgoKQW5kIG1heWJlIGEgZ290byBjb3VsZCBiZSB1c2VkIGlu IGNhc2Ugb2YgZXJyb3IgdG8gZGlzYWJsZSBCQ0gsIHVubG9jawp0aGUgbXV0ZXggYW5kIHJldHVy bi4KCj4gKwkJano0NzI1Yl9iY2hfcmVhZF9wYXJpdHkoYmNoLCBlY2NfY29kZSwgcGFyYW1zLT5i eXRlcyk7Cj4gKwl9IGVsc2Ugewo+ICsJCWRldl9lcnIoYmNoLT5kZXYsICJ0aW1lZCBvdXQgd2hp bGUgY2FsY3VsYXRpbmcgRUNDXG4iKTsKPiArCQlyZXQgPSAtRVRJTUVET1VUOwo+ICsJfQo+ICsK PiArCWp6NDcyNWJfYmNoX2Rpc2FibGUoYmNoKTsKPiArCW11dGV4X3VubG9jaygmYmNoLT5sb2Nr KTsKClNwYWNlCgo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCBqejQ3MjVi X2NvcnJlY3Qoc3RydWN0IGluZ2VuaWNfZWNjICpiY2gsCj4gKwkJCSAgIHN0cnVjdCBpbmdlbmlj X2VjY19wYXJhbXMgKnBhcmFtcywKPiArCQkJICAgdTggKmJ1ZiwgdTggKmVjY19jb2RlKQo+ICt7 Cj4gKwl1MzIgcmVnLCBlcnJvcnMsIGJpdDsKPiArCXVuc2lnbmVkIGludCBpOwo+ICsJaW50IHJl dCA9IDA7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmYmNoLT5sb2NrKTsKPiArCj4gKwlqejQ3MjViX2Jj aF9pbml0KGJjaCwgcGFyYW1zLCBmYWxzZSk7Cj4gKwlqejQ3MjViX2JjaF93cml0ZV9kYXRhKGJj aCwgYnVmLCBwYXJhbXMtPnNpemUpOwo+ICsJano0NzI1Yl9iY2hfd3JpdGVfZGF0YShiY2gsIGVj Y19jb2RlLCBwYXJhbXMtPmJ5dGVzKTsKPiArCj4gKwlpZiAoIWp6NDcyNWJfYmNoX3dhaXRfY29t cGxldGUoYmNoLCBCQ0hfQkhJTlRfREVDRiwgJnJlZykpIHsKPiArCQlkZXZfZXJyKGJjaC0+ZGV2 LCAidGltZWQgb3V0IHdoaWxlIGNvcnJlY3RpbmcgZGF0YVxuIik7Cj4gKwkJcmV0ID0gLUVUSU1F RE9VVDsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwlpZiAocmVnICYgKEJDSF9CSElOVF9B TExfRiB8IEJDSF9CSElOVF9BTExfMCkpIHsKPiArCQkvKiBEYXRhIGFuZCBFQ0MgaXMgYWxsIDB4 ZmYgb3IgMHgwMCAtIG5vdGhpbmcgdG8gY29ycmVjdCAqLwo+ICsJCXJldCA9IDA7Cj4gKwkJZ290 byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJaWYgKHJlZyAmIEJDSF9CSElOVF9VTkNPUikgewo+ICsJCS8q IFVuY29ycmVjdGFibGUgRUNDIGVycm9yICovCj4gKwkJcmV0ID0gLUVCQURNU0c7Cj4gKwkJZ290 byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJZXJyb3JzID0gKHJlZyAmIEJDSF9CSElOVF9FUlJDX01BU0sp ID4+IEJDSF9CSElOVF9FUlJDX1NISUZUOwo+ICsKPiArCS8qIENvcnJlY3QgYW55IGRldGVjdGVk IGVycm9ycy4gKi8KPiArCWZvciAoaSA9IDA7IGkgPCBlcnJvcnM7IGkrKykgewo+ICsJCWlmIChp ICYgMSkgewo+ICsJCQliaXQgPSAocmVnICYgQkNIX0JIRVJSX0lOREVYMV9NQVNLKSA+PiBCQ0hf QkhFUlJfSU5ERVgxX1NISUZUOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCXJlZyA9IHJlYWRsKGJjaC0+ YmFzZSArIEJDSF9CSEVSUjAgKyAoaSAqIDQpKTsKPiArCQkJYml0ID0gKHJlZyAmIEJDSF9CSEVS Ul9JTkRFWDBfTUFTSykgPj4gQkNIX0JIRVJSX0lOREVYMF9TSElGVDsKPiArCQl9Cj4gKwo+ICsJ CWJ1ZlsoYml0ID4+IDMpXSBePSBCSVQoYml0ICYgMHg3KTsKPiArCX0KPiArCj4gK291dDoKPiAr CWp6NDcyNWJfYmNoX2Rpc2FibGUoYmNoKTsKPiArCW11dGV4X3VubG9jaygmYmNoLT5sb2NrKTsK PiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW5nZW5pY19l Y2Nfb3BzIGp6NDcyNWJfYmNoX29wcyA9IHsKPiArCS5kaXNhYmxlID0gano0NzI1Yl9iY2hfZGlz YWJsZSwKPiArCS5jYWxjdWxhdGUgPSBqejQ3MjViX2NhbGN1bGF0ZSwKPiArCS5jb3JyZWN0ID0g ano0NzI1Yl9jb3JyZWN0LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgano0NzI1Yl9iY2hfZHRfbWF0Y2hbXSA9IHsKPiArCXsgLmNvbXBhdGlibGUgPSAiaW5n ZW5pYyxqejQ3MjViLWJjaCIsIC5kYXRhID0gJmp6NDcyNWJfYmNoX29wcyB9LAo+ICsJe30sCj4g K307Cj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGp6NDcyNWJfYmNoX2R0X21hdGNoKTsKPiAr Cj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGp6NDcyNWJfYmNoX2RyaXZlciA9IHsK PiArCS5wcm9iZQkJPSBpbmdlbmljX2VjY19wcm9iZSwKPiArCS5kcml2ZXIJPSB7Cj4gKwkJLm5h bWUJPSAiano0NzI1Yi1iY2giLAo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IGp6NDcyNWJfYmNoX2R0 X21hdGNoLAo+ICsJfSwKPiArfTsKPiArbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihqejQ3MjViX2Jj aF9kcml2ZXIpOwoKTWlzc2luZyBNT0RVTEVfIG1hY3Jvcz8gKGF1dGhvciwgbGljZW5zZSkKCgpU aGFua3MsCk1pcXXDqGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpMaW51eCBNVEQgZGlzY3Vzc2lvbiBtYWlsaW5nIGxpc3QKaHR0cDovL2xp c3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tdGQvCg==