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 AB1ECC433EF for ; Tue, 22 Feb 2022 14:24:08 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Message-ID:References:In-Reply-To:Subject:Cc:To:From :Date:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ORMvsWLQe+CnwjVS2nEdsSQftwwIvNKJY2EJnJHNBLQ=; b=llH/JOXq1D501qOHoOImx1SgQZ 7jYYLK3hB6eB5sxgJv9fR3au5fsDq+kRJmai3novuFsmR1/hqWeJU8rrhF/DZsYd8LZolcCuur3ET cW5R4ZQaR6iJPrvU3aKSOkGFQovpOBHIO/bkMOmm1zGcksPr8WRW451dqWEDojs+IdHJ/Mo7jUSEJ S4DnDrtF1nlqLnMsNiPLezh0OhpJQvUveKYbFT2lX4d6VTGMuIvPmdpcQV/zRxrCeM4OOK+CQNinM 97o4zE87l1YVNpcrGrK4RHGQMo7Vsa1YO5eF7+rV0rEKPcKBI7XB+asPGjs2mS6QVnePIvSznXsRK YukTTGfQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nMW4n-009sHa-Bc; Tue, 22 Feb 2022 14:23:37 +0000 Received: from ssl.serverraum.org ([176.9.125.105]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nMW4d-009sCX-8l for linux-mtd@lists.infradead.org; Tue, 22 Feb 2022 14:23:29 +0000 Received: from ssl.serverraum.org (web.serverraum.org [172.16.0.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ssl.serverraum.org (Postfix) with ESMTPSA id 2E28822205; Tue, 22 Feb 2022 15:23:25 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1645539805; 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=p7nCyihZrTAEDIAYltsM5PtP+i9ASLLiz/HV93vby0U=; b=Iw0TSoTKVXkz8ttb/Kl4zBRK0FmLo3UzAVkQfMP9GJnn1rWmM8Iu0ToYmRXqiHymX9JncM J9E8FbJfvFIDCRH/aRjAFVOBpW3TWsisV5J8IWtwFf15GfD44ZCgAMROT+bugNfr4/qB2U PW4UtjEKdPJZuopkHBnoJYY71ujL3Vs= MIME-Version: 1.0 Date: Tue, 22 Feb 2022 15:23:25 +0100 From: Michael Walle To: Tudor.Ambarus@microchip.com Cc: p.yadav@ti.com, broonie@kernel.org, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, linux-spi@vger.kernel.org, Nicolas.Ferre@microchip.com, zhengxunli@mxic.com.tw, jaimeliao@mxic.com.tw Subject: Re: [PATCH 2/4] mtd: spi-nor: core: Allow specifying the byte order in DTR mode In-Reply-To: <73ff1e23-75a9-c2ed-e4a5-3dc62a957a17@microchip.com> References: <20220218145900.1440045-1-tudor.ambarus@microchip.com> <20220218145900.1440045-3-tudor.ambarus@microchip.com> <73ff1e23-75a9-c2ed-e4a5-3dc62a957a17@microchip.com> User-Agent: Roundcube Webmail/1.4.12 Message-ID: <0d4dc33bb2720e8800199ec60aa52b26@walle.cc> X-Sender: michael@walle.cc X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220222_062327_661111_20E74D66 X-CRM114-Status: GOOD ( 30.11 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org QW0gMjAyMi0wMi0yMiAxNTowMiwgc2NocmllYiBUdWRvci5BbWJhcnVzQG1pY3JvY2hpcC5jb206 Cj4gT24gMi8yMS8yMiAwOTozNiwgTWljaGFlbCBXYWxsZSB3cm90ZToKPj4gRVhURVJOQUwgRU1B SUw6IERvIG5vdCBjbGljayBsaW5rcyBvciBvcGVuIGF0dGFjaG1lbnRzIHVubGVzcyB5b3Uga25v dyAKPj4gdGhlIGNvbnRlbnQgaXMgc2FmZQo+PiAKPj4gQW0gMjAyMi0wMi0xOCAxNTo1OCwgc2No cmllYiBUdWRvciBBbWJhcnVzOgo+Pj4gTWFjcm9uaXggc3dhcHMgYnl0ZXMgb24gYSAxNi1iaXQg Ym91bmRhcnkgd2hlbiBjb25maWd1cmVkIGluIE9jdGFsIAo+Pj4gRFRSLgo+Pj4gVGhlIGJ5dGUg b3JkZXIgb2YgMTYtYml0IHdvcmRzIGlzIHN3YXBwZWQgd2hlbiByZWFkIG9yIHdyaXRlIHdyaXR0 ZW4gCj4+PiBpbgo+Pj4gOEQtOEQtOEQgbW9kZSBjb21wYXJlZCB0byBTVFIgbW9kZXMuIFN3YXBw aW5nIHRoZSBieXRlcyBpcyBhIGJhZCAKPj4+IGRlc2lnbgo+Pj4gZGVjaXNpb24gYmVjYXVzZSB0 aGlzIG1heSBhZmZlY3QgdGhlIGJvb3Qgc2VxdWVuY2UgaWYgdGhlIGVudGlyZSBib290Cj4+PiBz ZXF1ZW5jZSBpcyBub3QgaGFuZGxlZCBpbiBlaXRoZXIgOEQtOEQtOEQgbW9kZSBvciAxLTEtMSBt b2RlLiBBbGxvdwo+Pj4gb3BlcmF0aW9ucyB0byBzcGVjaWZ5IHRoZSBieXRlIG9yZGVyIGluIERU UiBtb2RlLCBzbyB0aGF0IGNvbnRyb2xsZXJzCj4+PiBjYW4KPj4+IHN3YXAgdGhlIGJ5dGVzIGJh Y2sgYXQgcnVuLXRpbWUgdG8gZml4IHRoZSBlbmRpYW5uZXNzLCBpZiB0aGV5IGFyZQo+Pj4gY2Fw YWJsZS4KPj4+IAo+Pj4gVGhlIGJ5dGUgb3JkZXIgaW4gOEQtOEQtOEQgbW9kZSBjYW4gYmUgcmV0 cmlldmVkIGF0IHJ1bi10aW1lIGJ5Cj4+PiBjaGVja2luZwo+Pj4gQkZQVFtEV09SRCgxOCldIEJJ VCgzMSkuIFdoZW4gc2V0IHRvIG9uZSwgdGhlICJCeXRlIG9yZGVyIG9mIDE2LWJpdAo+Pj4gd29y ZHMKPj4+IGlzIHN3YXBwZWQgd2hlbiByZWFkIGluIDhELThELThEIG1vZGUgY29tcGFyZWQgdG8g MS0xLTEgbW9kZS4iLiBJdAo+Pj4gZG9lc24ndAo+Pj4gc3BlY2lmeSBpZiB0aGlzIGFwcGxpZXMg dG8gYm90aCByZWdpc3RlciBhbmQgZGF0YSBvcGVyYXRpb25zLiAKPj4+IE1hY3Jvbml4Cj4+PiBp cwo+Pj4gdGhlIHNpbmdsZSB1c2VyIG9mIHRoaXMgYnl0ZSBzd2FwIGFuZCBpdCBkb2Vzbid0IGhh dmUgY2xlYXIgcnVsZXMsIGFzCj4+PiBpdAo+Pj4gY29udGFpbnMgcmVnaXN0ZXIgb3BlcmF0aW9u cyB0aGF0IHJlcXVpcmUgZGF0YSBzd2FwIChSRFBBU1MsIFdSUEFTUywKPj4+IFBBU1NVTEssIFJE U0ZEUCkgYW5kIHJlZ2lzdGVyIG9wZXJhdGlvbnMgdGhhdCBkb24ndCByZXF1aXJlIGRhdGEgc3dh cAo+Pj4gKFdSRkJSKS4gQWxsIHRoZXNlIGFyZSBub3QgY29tbW9uIGFuZCBjYW4gYmUgaGFuZGxl ZCBpbiAxLTEtMSBtb2RlLCAKPj4+IHNvCj4+PiB3ZQo+Pj4gY2FuIGlnbm9yZSB0aGVtIGZvciBu b3cuIEFsbCB0aGUgb3RoZXIgcmVnaXN0ZXIgb3BlcmF0aW9ucyBhcmUgZG9uZSAKPj4+IG9uCj4+ PiBvbmUKPj4+IGJ5dGUgbGVuZ3RoLiBUaGUgcmVhZCByZWdpc3RlciBvcGVyYXRpb25zIGFyZSBh Y3R1YWxseSBpbiA4RC04RC04Uwo+Pj4gbW9kZSwKPj4+IGFzIHRoZXkgc2VuZCB0aGUgZGF0YSB2 YWx1ZSB0d2ljZSwgb24gZWFjaCBoYWxmIG9mIHRoZSBjbG9jayBjeWNsZS4gCj4+PiBJbgo+Pj4g Y2FzZQo+Pj4gb2YgYSByZWdpc3RlciB3cml0ZSBvZiBvbmUgYnl0ZSwgdGhlIG1lbW9yeSBzdXBw b3J0cyByZWNlaXZpbmcgdGhlCj4+PiByZWdpc3Rlcgo+Pj4gdmFsdWUgb25seSBvbiB0aGUgZmly c3QgYnl0ZSwgdGh1cyBpdCBkaXNjYXJkcyB0aGUgdmFsdWUgb2YgdGhlIGJ5dGUgCj4+PiBvbgo+ Pj4gdGhlCj4+PiBzZWNvbmQgaGFsZiBvZiB0aGUgY2xvY2sgY3ljbGUuIFN3YXBwaW5nIHRoZSBi eXRlcyBmb3Igb25lIGJ5dGUKPj4+IHJlZ2lzdGVyCj4+PiB3cml0ZXMgaXMgbm90IHJlcXVpcmVk LCBhbmQgZm9yIG9uZSBieXRlIHJlZ2lzdGVyIHJlYWRzIGl0IGRvZXNuJ3QKPj4+IG1hdHRlci4K Pj4+IFRodXMgc3dhcCB0aGUgYnl0ZXMgb25seSBmb3IgcmVhZCBvciBwYWdlIHByb2dyYW0gb3Bl cmF0aW9ucy4KPj4+IAo+Pj4gU2lnbmVkLW9mZi1ieTogVHVkb3IgQW1iYXJ1cyA8dHVkb3IuYW1i YXJ1c0BtaWNyb2NoaXAuY29tPgo+Pj4gLS0tCj4+PiDCoGRyaXZlcnMvbXRkL3NwaS1ub3IvY29y ZS5jwqAgfCAzMSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCj4+PiDCoGRyaXZlcnMv bXRkL3NwaS1ub3IvY29yZS5owqAgfMKgIDEgKwo+Pj4gwqBpbmNsdWRlL2xpbnV4L210ZC9zcGkt bm9yLmggfCAxNyArKysrKysrKysrKysrKysrKwo+Pj4gwqAzIGZpbGVzIGNoYW5nZWQsIDQzIGlu c2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4+PiAKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L210ZC9zcGktbm9yL2NvcmUuYyBiL2RyaXZlcnMvbXRkL3NwaS1ub3IvY29yZS5jCj4+PiBpbmRl eCAwNGVhMTgwMTE4ZTMuLjQ1M2Q4YzU0ZDA2MiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvbXRk L3NwaS1ub3IvY29yZS5jCj4+PiArKysgYi9kcml2ZXJzL210ZC9zcGktbm9yL2NvcmUuYwo+Pj4g QEAgLTEwNiw2ICsxMDYsOSBAQCB2b2lkIHNwaV9ub3Jfc3BpbWVtX3NldHVwX29wKGNvbnN0IHN0 cnVjdCBzcGlfbm9yCj4+PiAqbm9yLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3At PmR1bW15LmR0ciA9IHRydWU7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcC0+ZGF0 YS5kdHIgPSB0cnVlOwo+Pj4gCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChzcGlf bm9yX3Byb3RvY29sX2lzX2R0cl9ic3dhcDE2KHByb3RvKSkKPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wLT5kYXRhLmR0cl9ic3dhcDE2ID0gdHJ1ZTsKPj4+ ICsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIDIgYnl0ZXMgcGVyIGNsb2NrIGN5 Y2xlIGluIERUUiBtb2RlLiAqLwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3AtPmR1 bW15Lm5ieXRlcyAqPSAyOwo+Pj4gCj4+PiBAQCAtMzg4LDcgKzM5MSw3IEBAIGludCBzcGlfbm9y X3JlYWRfc3Ioc3RydWN0IHNwaV9ub3IgKm5vciwgdTggKnNyKQo+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTUElfTUVN X09QX05PX0RVTU1ZLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTUElfTUVNX09QX0RBVEFfSU4oMSwgc3IsIDApKTsK Pj4+IAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAobm9yLT5yZWdfcHJvdG8gPT0g U05PUl9QUk9UT184XzhfOF9EVFIpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg KHNwaV9ub3JfcHJvdG9jb2xfaXNfb2N0YWxfZHRyKG5vci0+cmVnX3Byb3RvKSkgewo+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wLmFkZHIubmJ5dGVzID0g bm9yLT5wYXJhbXMtPnJkc3JfYWRkcl9uYnl0ZXM7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgb3AuZHVtbXkubmJ5dGVzID0gbm9yLT5wYXJhbXMtPnJkc3Jf ZHVtbXk7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoK Pj4+IEBAIC00MzIsNyArNDM1LDcgQEAgc3RhdGljIGludCBzcGlfbm9yX3JlYWRfZnNyKHN0cnVj dCBzcGlfbm9yICpub3IsIAo+Pj4gdTgKPj4+ICpmc3IpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNQSV9NRU1fT1Bf Tk9fRFVNTVksCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNQSV9NRU1fT1BfREFUQV9JTigxLCBmc3IsIDApKTsKPj4+ IAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAobm9yLT5yZWdfcHJvdG8gPT0gU05P Ul9QUk9UT184XzhfOF9EVFIpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHNw aV9ub3JfcHJvdG9jb2xfaXNfb2N0YWxfZHRyKG5vci0+cmVnX3Byb3RvKSkgewo+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wLmFkZHIubmJ5dGVzID0gbm9y LT5wYXJhbXMtPnJkc3JfYWRkcl9uYnl0ZXM7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgb3AuZHVtbXkubmJ5dGVzID0gbm9yLT5wYXJhbXMtPnJkc3JfZHVt bXk7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPj4+ IEBAIC0yNDg4LDcgKzI0OTEsNyBAQCBzdGF0aWMgaW50IHNwaV9ub3Jfc2V0X2FkZHJfd2lkdGgo c3RydWN0IAo+Pj4gc3BpX25vcgo+Pj4gKm5vcikKPj4+IMKgewo+Pj4gwqDCoMKgwqDCoCBpZiAo bm9yLT5hZGRyX3dpZHRoKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBhbHJl YWR5IGNvbmZpZ3VyZWQgZnJvbSBTRkRQICovCj4+PiAtwqDCoMKgwqAgfSBlbHNlIGlmIChub3It PnJlYWRfcHJvdG8gPT0gU05PUl9QUk9UT184XzhfOF9EVFIpIHsKPj4+ICvCoMKgwqDCoCB9IGVs c2UgaWYgKHNwaV9ub3JfcHJvdG9jb2xfaXNfb2N0YWxfZHRyKG5vci0+cmVhZF9wcm90bykpIHsK Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICogSW4gOEQtOEQtOEQgbW9kZSwgb25lIGJ5dGUgdGFrZXMgaGFsZiBhIGN5Y2xl IHRvIAo+Pj4gdHJhbnNmZXIuIFNvCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICog aW4gdGhpcyBwcm90b2NvbCBhbiBvZGQgYWRkcmVzcyB3aWR0aCBjYW5ub3QgYmUgdXNlZCAKPj4+ IGJlY2F1c2UKPj4+IEBAIC0yNzAxLDYgKzI3MDQsMTkgQEAgc3RhdGljIHZvaWQgc3BpX25vcl9p bml0X2ZpeHVwX2ZsYWdzKHN0cnVjdAo+Pj4gc3BpX25vciAqbm9yKQo+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgbm9yLT5mbGFncyB8PSBTTk9SX0ZfSU9fTU9ERV9FTl9WT0xBVElMRTsK Pj4+IMKgfQo+Pj4gCj4+PiArc3RhdGljIHZvaWQgc3BpX25vcl9zZXRfZHRyX2Jzd2FwMTZfb3Bz KHN0cnVjdCBzcGlfbm9yICpub3IpCj4+PiArewo+Pj4gK8KgwqDCoMKgIHN0cnVjdCBzcGlfbm9y X2ZsYXNoX3BhcmFtZXRlciAqcGFyYW1zID0gbm9yLT5wYXJhbXM7Cj4+PiArwqDCoMKgwqAgdTMy IG1hc2sgPSBTTk9SX0hXQ0FQU19SRUFEXzhfOF84X0RUUiB8IAo+Pj4gU05PUl9IV0NBUFNfUFBf OF84XzhfRFRSOwo+Pj4gKwo+Pj4gK8KgwqDCoMKgIGlmICgocGFyYW1zLT5od2NhcHMubWFzayAm IG1hc2spID09IG1hc2spIHsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGFyYW1zLT5y ZWFkc1tTTk9SX0NNRF9SRUFEXzhfOF84X0RUUl0ucHJvdG8gfD0KPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNOT1JfUFJPVE9fSVNfRFRSX0JTV0FQMTY7Cj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBhcmFtcy0+cGFnZV9wcm9ncmFtc1tTTk9SX0NN RF9QUF84XzhfOF9EVFJdLnByb3RvIHw9Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBTTk9SX1BST1RPX0lTX0RUUl9CU1dBUDE2Owo+Pj4gK8KgwqDCoMKgIH0K Pj4+ICt9Cj4+PiArCj4+PiDCoC8qKgo+Pj4gwqAgKiBzcGlfbm9yX2xhdGVfaW5pdF9wYXJhbXMo KSAtIExhdGUgaW5pdGlhbGl6YXRpb24gb2YgZGVmYXVsdCBmbGFzaAo+Pj4gcGFyYW1ldGVycy4K Pj4+IMKgICogQG5vcjrCoMKgwqDCoCBwb2ludGVyIHRvIGEgJ3N0cnVjdCBzcGlfbm9yJwo+Pj4g QEAgLTI3MjEsNiArMjczNyw5IEBAIHN0YXRpYyB2b2lkIHNwaV9ub3JfbGF0ZV9pbml0X3BhcmFt cyhzdHJ1Y3QKPj4+IHNwaV9ub3IgKm5vcikKPj4+IMKgwqDCoMKgwqAgc3BpX25vcl9pbml0X2Zs YWdzKG5vcik7Cj4+PiDCoMKgwqDCoMKgIHNwaV9ub3JfaW5pdF9maXh1cF9mbGFncyhub3IpOwo+ Pj4gCj4+PiArwqDCoMKgwqAgaWYgKG5vci0+ZmxhZ3MgJiBTTk9SX0ZfRFRSX0JTV0FQMTYpCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwaV9ub3Jfc2V0X2R0cl9ic3dhcDE2X29wcyhu b3IpOwo+Pj4gKwo+Pj4gwqDCoMKgwqDCoCAvKgo+Pj4gwqDCoMKgwqDCoMKgICogTk9SIHByb3Rl Y3Rpb24gc3VwcG9ydC4gV2hlbiBsb2NraW5nX29wcyBhcmUgbm90IHByb3ZpZGVkLCAKPj4+IHdl IHBpY2sKPj4+IMKgwqDCoMKgwqDCoCAqIHRoZSBkZWZhdWx0IG9uZXMuCj4+PiBAQCAtMjg5OSw4 ICsyOTE4LDggQEAgc3RhdGljIGludCBzcGlfbm9yX29jdGFsX2R0cl9lbmFibGUoc3RydWN0Cj4+ PiBzcGlfbm9yICpub3IsIGJvb2wgZW5hYmxlKQo+Pj4gwqDCoMKgwqDCoCBpZiAoIW5vci0+cGFy YW1zLT5vY3RhbF9kdHJfZW5hYmxlKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIDA7Cj4+PiAKPj4+IC3CoMKgwqDCoCBpZiAoIShub3ItPnJlYWRfcHJvdG8gPT0gU05PUl9Q Uk9UT184XzhfOF9EVFIgJiYKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoCBub3ItPndyaXRlX3By b3RvID09IFNOT1JfUFJPVE9fOF84XzhfRFRSKSkKPj4+ICvCoMKgwqDCoCBpZiAoIShzcGlfbm9y X3Byb3RvY29sX2lzX29jdGFsX2R0cihub3ItPnJlYWRfcHJvdG8pICYmCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3BpX25vcl9wcm90b2NvbF9pc19vY3RhbF9kdHIobm9yLT53cml0ZV9wcm90 bykpKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+PiAKPj4+IMKg wqDCoMKgwqAgaWYgKCEobm9yLT5mbGFncyAmIFNOT1JfRl9JT19NT0RFX0VOX1ZPTEFUSUxFKSkK Pj4+IEBAIC0yOTY4LDcgKzI5ODcsNyBAQCBzdGF0aWMgaW50IHNwaV9ub3JfaW5pdChzdHJ1Y3Qg c3BpX25vciAqbm9yKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3BpX25vcl90cnlf dW5sb2NrX2FsbChub3IpOwo+Pj4gCj4+PiDCoMKgwqDCoMKgIGlmIChub3ItPmFkZHJfd2lkdGgg PT0gNCAmJgo+Pj4gLcKgwqDCoMKgwqDCoMKgwqAgbm9yLT5yZWFkX3Byb3RvICE9IFNOT1JfUFJP VE9fOF84XzhfRFRSICYmCj4+PiArwqDCoMKgwqDCoMKgwqDCoCAhc3BpX25vcl9wcm90b2NvbF9p c19vY3RhbF9kdHIobm9yLT5yZWFkX3Byb3RvKSAmJgo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICEo bm9yLT5mbGFncyAmIFNOT1JfRl80Ql9PUENPREVTKSkgewo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgLyoKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBJZiB0aGUgUkVT RVQjIHBpbiBpc24ndCBob29rZWQgdXAgcHJvcGVybHksIG9yIHRoZSAKPj4+IHN5c3RlbQo+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL3NwaS1ub3IvY29yZS5oIGIvZHJpdmVycy9tdGQvc3Bp LW5vci9jb3JlLmgKPj4+IGluZGV4IDJhZmI2MTA4NTNhOS4uN2MwNzdkNDFjMzM1IDEwMDY0NAo+ Pj4gLS0tIGEvZHJpdmVycy9tdGQvc3BpLW5vci9jb3JlLmgKPj4+ICsrKyBiL2RyaXZlcnMvbXRk L3NwaS1ub3IvY29yZS5oCj4+PiBAQCAtMjksNiArMjksNyBAQCBlbnVtIHNwaV9ub3Jfb3B0aW9u X2ZsYWdzIHsKPj4+IMKgwqDCoMKgwqAgU05PUl9GX0lPX01PREVfRU5fVk9MQVRJTEUgPSBCSVQo MTQpLAo+Pj4gwqDCoMKgwqDCoCBTTk9SX0ZfU09GVF9SRVNFVMKgwqDCoMKgwqDCoCA9IEJJVCgx NSksCj4+PiDCoMKgwqDCoMKgIFNOT1JfRl9TV1BfSVNfVk9MQVRJTEXCoCA9IEJJVCgxNiksCj4+ PiArwqDCoMKgwqAgU05PUl9GX0RUUl9CU1dBUDE2wqDCoMKgwqDCoCA9IEJJVCgxNyksCj4+PiDC oH07Cj4+PiAKPj4+IMKgc3RydWN0IHNwaV9ub3JfcmVhZF9jb21tYW5kIHsKPj4+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL2xpbnV4L210ZC9zcGktbm9yLmggCj4+PiBiL2luY2x1ZGUvbGludXgvbXRk L3NwaS1ub3IuaAo+Pj4gaW5kZXggZmM5MGZjZTI2ZTMzLi42ZTk2NjA0NzVjNWIgMTAwNjQ0Cj4+ PiAtLS0gYS9pbmNsdWRlL2xpbnV4L210ZC9zcGktbm9yLmgKPj4+ICsrKyBiL2luY2x1ZGUvbGlu dXgvbXRkL3NwaS1ub3IuaAo+Pj4gQEAgLTE2OCw2ICsxNjgsMTEgQEAKPj4+IMKgwqDCoMKgwqDC oCBTTk9SX1BST1RPX0RBVEFfTUFTSykKPj4+IAo+Pj4gwqAjZGVmaW5lIFNOT1JfUFJPVE9fSVNf RFRSwqDCoMKgIEJJVCgyNCkgLyogRG91YmxlIFRyYW5zZmVyIFJhdGUgKi8KPj4+ICsvKgo+Pj4g KyAqIEJ5dGUgb3JkZXIgb2YgMTYtYml0IHdvcmRzIGlzIHN3YXBwZWQgd2hlbiByZWFkIG9yIHdy aXR0ZW4gaW4gRFRSCj4+PiBtb2RlCj4+PiArICogY29tcGFyZWQgdG8gU1RSIG1vZGUuCj4+PiAr ICovCj4+PiArI2RlZmluZSBTTk9SX1BST1RPX0lTX0RUUl9CU1dBUDE2wqDCoMKgIEJJVCgyNSkK Pj4+IAo+Pj4gwqAjZGVmaW5lIFNOT1JfUFJPVE9fU1RSKF9pbnN0X25iaXRzLCBfYWRkcl9uYml0 cywgX2RhdGFfbmJpdHMpwqDCoMKgwqDCoMKgwqAgCj4+PiBcCj4+PiDCoMKgwqDCoMKgIChTTk9S X1BST1RPX0lOU1QoX2luc3RfbmJpdHMpIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgXAo+Pj4gQEAgLTIwMSw2ICsyMDYsMTggQEAgc3RhdGljIGlubGlu ZSBib29sIHNwaV9ub3JfcHJvdG9jb2xfaXNfZHRyKGVudW0KPj4+IHNwaV9ub3JfcHJvdG9jb2wg cHJvdG8pCj4+PiDCoMKgwqDCoMKgIHJldHVybiAhIShwcm90byAmIFNOT1JfUFJPVE9fSVNfRFRS KTsKPj4+IMKgfQo+Pj4gCj4+PiArc3RhdGljIGlubGluZSBib29sIHNwaV9ub3JfcHJvdG9jb2xf aXNfb2N0YWxfZHRyKGVudW0gCj4+PiBzcGlfbm9yX3Byb3RvY29sCj4+PiBwcm90bykKPj4+ICt7 Cj4+PiArwqDCoMKgwqAgcmV0dXJuICgocHJvdG8gJiBTTk9SX1BST1RPXzhfOF84X0RUUikgPT0g Cj4+PiBTTk9SX1BST1RPXzhfOF84X0RUUik7Cj4+IAo+PiBUaGlzIGxvb2tzIHdyb25nIHdoYXQg aWYgdGhlcmUgYXJlIDAncyBpbiBTTk9SX1BST1RPXzhfOF84X0RUUj8gSWYgCj4+IHRoaXMKPj4g aGFwcGVucyB0byBiZSB0aGUgc2FtZSBhcyBTTk9SX1BST1RPX01BU0sgKHdoaWNoIGRvZXNuJ3Qg ZXhpc3QpIHRoaXMKPj4gZGVzZXJ2ZXMgYSBjb21tZW50Lgo+IAo+IEknbSBub3Qgc3VyZSBJIHVu ZGVyc3RhbmQgdGhlIGNvbW1lbnQuIFNOT1JfUFJPVE9fOF84XzhfRFRSIGhhcyB2YWx1ZSAKPiAw eDgwODA4Lgo+IFRoaXMgbWV0aG9kIGlzIGFkZGVkIHRvIGNvdmVyIHRoZSBjbGFzc2ljYWwgOEQt OEQtOEQgbW9kZSBhbmQgdGhlIAo+IDhELThELThEIG1vZGUKPiB3aXRoIGJ5dGVzIHN3YXBwZWQu IFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRydWUgZm9yIGJvdGggY2FzZXMuCgpJIGtub3cgaXQg c2hvdWxkIGNvdmVyIGJvdGggY2FzZXMsIG9yIHRoYXQgaXMgd2hhdCBJIGRlZGN1ZGVkIGJlY2F1 c2UKeW91IG1vdmVkIHRoZSBzaW1wbGUgY29tcGFyZSBpbnRvIGEgaGVscGVyLiBJdCB3b3JrcyBp biB0aGlzIGNhc2UsCmJlY2F1c2UgYWxsIHZhbHVlcyBqdXN0IGhhdmUgbXV0dWFsbHkgZXhjbHVz aXZlIGJpdHMsIHRodXMgSSB0aGluayB0aGlzCmRlc2VydmVzIGEgY29tbWVudC4KClVzdWFsbHks IHlvdSdkIG1hc2sgYSBmaWVsZCBhbmQgdGhlbiBjb21wYXJlIGl0IHdpdGggYSB2YWx1ZS4gU28g SSdkCmhhdmUgZXhwZWN0ZWQgc3RoIGxpa2U6CgojZGVmaW5lIE1BU0sgKFNOT1JfUFJPVE9fSU5T VF9NQVNLIHwgU05PUl9QUk9UT19BRERSX01BU0sgfCAKU05PUl9QUk9UT19EQVRBX01BU0spCnJl dHVybiBwcm90byAmIChNQVNLIHwgU05PUl9QUk9UT19JU19EVFIpID09IFNOT1JfUFJPVE9fOF84 XzhfRFRSOwoKCj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBzcGlfbm9yX3By b3RvY29sX2lzX2R0cl9ic3dhcDE2KGVudW0KPj4+IHNwaV9ub3JfcHJvdG9jb2wgcHJvdG8pCj4+ PiArewo+Pj4gK8KgwqDCoMKgIHUzMiBtYXNrID0gU05PUl9QUk9UT19JU19EVFIgfCBTTk9SX1BS T1RPX0lTX0RUUl9CU1dBUDE2Owo+Pj4gKwo+Pj4gK8KgwqDCoMKgIHJldHVybiAoKHByb3RvICYg bWFzaykgPT0gbWFzayk7Cj4+IAo+PiBpc24ndCAicmV0dXJuIHByb3RvICYgU05PUl9QUk9UT19J U19EVFJfQlNXQVAxNjsiIGVub3VnaCBoZXJlPwo+IAo+IEJ5dGUgc3dhcCBjYW4gYmUgZG9uZSBv bmx5IG9uIERUUiBtb2Rlcy4gU05PUl9QUk9UT19JU19EVFJfQlNXQVAxNgo+IHdpdGhvdXQgU05P Ul9QUk9UT19JU19EVFIgZG9lc24ndCBtYWtlIHNlbnNlLiBUaGlzIG1ldGhvZCBpbmNsdWRlcwo+ IHRoaXMgc2FuaXR5IGNoZWNrLgoKSSBkb24ndCB0aGluayB0aGlzIGlzIHRoZSBiZXN0IHBsYWNl IGZvciBzYW5pdHkgY2hlY2tzIFRCSC4KCi1taWNoYWVsCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFp bGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtbXRkLwo=