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 43F53C43219 for ; Mon, 7 Nov 2022 14:56:51 +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=TmRPnbQk8Z78L7lAOPRdmbzc19hYAc+TC1vqVS63/Ug=; b=NoRKFO2qeqkmPT m1qlRY6wR91tN/i9IUL+k/TYXeQgMNbuK5hz0w57mpNgTVE6u49wRlFCDC3/Zm1LhInaYjTRoH8nD mEQiIUDO2Li5k6mmTY4n8KJZPyLmA9uwKPYDa8Bt4kSyE2OD5MbhDgoaIWYJlXgnl3cxUmYJLME8n XzD1wnEGyXpgy+DwH3Wu0RSrhlAO2AXxKB9wr/QKZDvGqgvC5Y0VLbbCQW+xvp0FY4d6JM3oaswGf bZUA5nFEsZo0BFTQGUqF58NfsYI+ltCRAN7U1wmeMeB+19hl1Wa5bV10mAsOYa80MTxPYRkyzEFio gyODJCGMmxV8dE2ZPn0g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1os3XH-00FQPl-Ef; Mon, 07 Nov 2022 14:55:39 +0000 Received: from relay4-d.mail.gandi.net ([217.70.183.196]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1os3JF-00FIyd-7d for linux-mtd@lists.infradead.org; Mon, 07 Nov 2022 14:41:12 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id B4A26E0014; Mon, 7 Nov 2022 14:41:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1667832065; 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=+3EQLXm1NcUDwgPO7Ok6rDijYmLYiTIRwJTMamFGKwA=; b=gmjl5BpRhibObcdzNutqKj9ZDcS7HwHx2INM92qI3a0eeaysPBOO+NY3W7CPTk2uVosJAD tFM37eL+ol00+DTpocAecNZGdzqdirxc+FQUeQCfu3TBoPyCQF9pDsgZdCoOU5e33SD/68 iZ2U9UmDpgnzwx4gstyzLyxVhXGXs7kibiuLwvAw+aHU5yPw6w2MBHe7GHTFcR/CcLNmDU 6xP4bzj4LXbNCGPGmUVmV1pTAD4ryxWQ1evHbuiQyUk/MoVsLXuMxcM4haNNPHvWaPZXJY IBd2nrHqYN3oG3S8tvpBHxQNr49p4zbNvMCWJ7Fjhhcvbepwex/WakfhUe/rKA== Date: Mon, 7 Nov 2022 15:41:01 +0100 From: Miquel Raynal To: JaimeLiao Cc: linux-mtd@lists.infradead.org, richard@nod.at, jaimeliao@mxic.com.tw, Leo Yu , Julien Su Subject: Re: [PATCH v2 1/1] mtd: rawnand: Cache read sequential Message-ID: <20221107154101.22708a7a@xps-13> In-Reply-To: <20221107145610.2d4f5cff@xps-13> References: <20220829072452.15342-1-jaimeliao.tw@gmail.com> <20220829072452.15342-2-jaimeliao.tw@gmail.com> <20221107145610.2d4f5cff@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-20221107_064109_744625_E9A39075 X-CRM114-Status: GOOD ( 50.26 ) 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 Cm1pcXVlbC5yYXluYWxAYm9vdGxpbi5jb20gd3JvdGUgb24gTW9uLCA3IE5vdiAyMDIyIDE0OjU2 OjEwICswMTAwOgoKPiBIaSBKYWltZSwKPiAKPiBTb3JyeSBmb3IgdGhlIGxvbmcgd2FpdC4KPiAK PiBqYWltZWxpYW8udHdAZ21haWwuY29tIHdyb3RlIG9uIE1vbiwgMjkgQXVnIDIwMjIgMTU6MjQ6 NTIgKzA4MDA6Cj4gCj4gPiBGb3IgcmVkdWNpbmcgaW5zdHJ1Y3Rpb24gaW4gY29tbWFuZCBvcGVy YXRpb24gYW5kIHRpbWUgb2YgcmVhZCBzZXF1ZW5jZQo+ID4gd2hpY2ggYWRkcmVzcyBhcmUgY29u dGludW91cy4KPiA+IEFkZGluZyBjYWNoZSByZWFkIHNlcXVlbnRpYWwgZmVhdHVyZSBzdXBwb3J0 IGluIHJhdyBuYW5kIGV4aXN0aW5nIGFyY2hpdGVjdHVyZS4gIAo+IAo+IFdoYXQgYWJvdXQgOgo+ IAo+ICIKPiBBZGQgc3VwcG9ydCBmb3Igc2VxdWVudGlhbCBjYWNoZSByZWFkcy4KPiAKPiBTZXF1 ZW50aWFsIHJlYWRzIG1heSByZWR1Y2UgdGhlIG92ZXJoZWFkIHdoZW4gYWNjZXNzaW5nIHBoeXNp Y2FsbHkKPiBjb250aW51b3VzIGRhdGEgYnkgbG9hZGluZyBpbiBjYWNoZSB0aGUgbmV4dCBwYWdl IHdoaWxlIHRoZSBwcmV2aW91cwo+IHBhZ2UgZ2V0cyBzZW50IG91dCBvbiB0aGUgTkFORCBidXMu Cj4gCj4gVGhlIE9ORkkgc3BlY2lmaWNhdGlvbiBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGFkZGl0 aW9uYWwgY29tbWFuZHMgdG8KPiBoYW5kbGUgc2VxdWVudGlhbCBjYWNoZWQgcmVhZHM6Cj4gCj4g KiAweDMxIC0gUkVBRCBDQUNIRSBTRVFVRU5USUFMOgo+ICAgUmVxdWlyZXMgdGhlIE5BTkQgY2hp cCB0byBsb2FkIHRoZSBuZXh0IHBhZ2UgaW50byBjYWNoZSB3aGlsZSBrZWVwaW5nCj4gICB0aGUg Y3VycmVudCBjYWNoZSBhdmFpbGFibGUgZm9yIGhvc3QgcmVhZHMuCj4gKiAweDNGIC0gUkVBRCBD QUNIRSBFTkQ6Cj4gICBUZWxscyB0aGUgTkFORCBjaGlwIHRoaXMgaXMgdGhlIGVuZCBvZiB0aGUg c2VxdWVudGlhbCBjYWNoZSByZWFkLCB0aGUKPiAgIGN1cnJlbnQgY2FjaGUgc2hhbGwgcmVtYWlu IGFjY2Vzc2libGUgZm9yIHRoZSBob3N0IGJ1dCBubyBtb3JlCj4gICBpbnRlcm5hbCBjYWNoZSBs b2FkaW5nIG9wZXJhdGlvbiBpcyByZXF1aXJlZC4KPiAKPiBPbiB0aGUgYnVzLCBhIG11bHRpIHBh Z2UgcmVhZCBvcGVyYXRpb24gaXMgY3VycmVudGx5IGhhbmRsZWQgbGlrZSB0aGlzOgo+IAo+IAkw MCAtLSBBRERSMSAtLSAzMCAtLSBXQUlUX1JEWSAodFIrdFJSKSAtLSBEQVRBMV9JTgo+IAkwMCAt LSBBRERSMiAtLSAzMCAtLSBXQUlUX1JEWSAodFIrdFJSKSAtLSBEQVRBMl9JTgo+IAkwMCAtLSBB RERSMyAtLSAzMCAtLSBXQUlUX1JEWSAodFIrdFJSKSAtLSBEQVRBM19JTgo+IAo+IFNlcXVlbnRp YWwgY2FjaGVkIHJlYWRzIG1heSBpbnN0ZWFkIGJlIGFjaGlldmVkIHdpdGg6Cj4gCj4gCTAwIC0t IEFERFIxIC0tIDMwIC0tIFdBSVRfUkRZICh0UikgLS0gXAo+IAkJICAgICAgIDMxIC0tIFdBSVRf UkRZICh0UkNCU1krdFJSKSAtLSBEQVRBMV9JTiBcCj4gCQkgICAgICAgMzEgLS0gV0FJVF9SRFkg KHRSQ0JTWSt0UlIpIC0tIERBVEEyX0lOIFwKPiAJCSAgICAgICAzRiAtLSBXQUlUX1JEWSAodFJD QlNZK3RSUikgLS0gREFUQTNfSU4KPiAiCj4gCj4gPiBDcmVhdGluZyBuYW5kX2V4ZWNfY29udGlu dWVfcmVhZF9wYWdlX29wIGZ1bmN0aW9uIGZvciByZWFkIGNvbW1hbmQgZXh0ZW5kLgo+ID4gQWRk aW5nIGNvbW1hbmQgc2VsZWN0IGluIG5hbmRfbHBfZXhlY19yZWFkX3BhZ2Vfb3AgYW5kIHRha2lu ZyByZWFkbGVuIHRvCj4gPiBqdWRnZSB0aGUgbGFzdCBwYWdlIGZvciByZWFkLgo+ID4gQ29tbWFu ZCBvZiByZWFkIGNhY2hlIHNlcXVlbnRpYWwgY2FuIGJlIHNlcGFyYXRlIDMgcGFydHMuCj4gPiAK PiA+IEZpcnN0IHBhcnQgaXMgMDAtQUREUi0zMC0zMS1EQVRBX0lOLCBpdCBtZWFucyByZWFkIGNh Y2hlIHNlcXVlbnRpYWwgZW5hYmxlZCBhbmQgbmV4dAo+ID4gcGFnZSBkYXRhIGNhbiBiZSBwcmVw YXJlIHdoaWxlIGNhY2hlIGRhdGEgcmVhZGluZy4KPiA+IAo+ID4gU2Vjb25kIHBhcnQgaXMgMzEt REFUQV9JTiwgbWVhbnMgZmxhc2ggd2lsbCBwcmVwYXJlIG5leHQgcGFnZSBkYXRhIGZvciByZWR1 Y2luZwo+ID4gdGltZSBjb3N0Lgo+ID4gCj4gPiBMYXN0IHBhcnQgaXMgM0YtREFUQV9JTiwgbWVh bnMgdGhlIGxhc3QgY2FjaGUgcmVhZCBhbmQgZmxhc2ggZG9uJ3QgbmVlZCB0byBwcmVwYXJlCj4g PiBuZXh0IHBhZ2UgZGF0YS4KPiA+IAo+ID4gRXhhbXBsZSBmb3IgMiBwYWdlIHJlYWQgb3BlcmF0 aW9uLCBhcyBiZWxvdyBpcyB0aGUgTkFORCBvcGVyYXRpb24gaW5zdHJ1Y3Rpb25zOgo+ID4gTm9y bWFsIHJlYWQgbW9kZToKPiA+ICAgICAgICAgMDAgLS0gQUREUjEgLS0gMzAgLS0gV0FJVF9SRFko dFIrdFJSKSAtLSBEQVRBMV9JTgo+ID4gICAgICAgICAwMCAtLSBBRERSMiAtLSAzMCAtLSBXQUlU X1JEWSh0Uit0UlIpIC0tIERBVEEyX0lOCj4gPiAKPiA+IENhY2hlIHJlYWQgc2VxdWVudGlhbCBt b2RlOgo+ID4gICAgICAgICAwMCAtLSBBRERSMSAtLSAzMCAtLSBXQUlUX1JEWSh0UikgLS0gMzEg LS0gV0FJVF9SRFkodFJDQlNZK3RSUikgLS0gREFUQTFfSU4KPiA+ICAgICAgICAgM0YgLS0gV0FJ VF9SRFkodFJDQlNZK3RSUikgLS0gREFUQTJfSU4KPiA+IAo+ID4gdFIgICAgIGlzIGFib3V0IDIw IG1pY3Jvc2Vjb25kCj4gPiB0UkNCU1kgaXMgYWJvdXQgNSBtaWNyb3NlY29uZAo+ID4gdFJSICAg IGlzIGFib3V0IDIwIG5hbm9zZWNvbmQKPiA+IAo+ID4gQXMgYmVsb3cgaXMgbXRkX3NwZWVkdGVz dCByZXN1bHQgYmV0d2VlbiBub3JtYWxlIHJlYWQgYW5kIGNhY2hlIHJlYWQKPiA+IHNlcXVlbnRp YWwgb24gTlhQIGkuTVg2IFZBUi1TT00tU09MTyBtYXBwaW5nIG1vZGUuICAKPiAKPiBCZWxvdyBh cmUgdGhlIHJlYWQgc3BlZWQgdGVzdCByZXN1bHRzIHdpdGggcmVndWxhciByZWFkcyBhbmQKPiBz ZXF1ZW50aWFsIGNhY2hlZCByZWFkcywgb24gTlhQIGkuTVg2IFZBUi1TT00tU09MTyBpbiBtYXBw aW5nIG1vZGUgd2l0aAo+IGEgTkFORCBjaGlwIGNoYXJhY3Rlcml6ZWQgd2l0aCB0aGUgZm9sbG93 aW5nIHRpbWluZ3M6Cj4gKiB0UiBpcyBhYm91dCAyMMK1cwo+ICogdFJDQlNZIGlzIGFib3V0IDXC tXMKPiAqIHRSUiBpcyBhYm91dCAyMMK1cwo+IAo+ID4gCj4gPiA9PT09PT09PT09PT09PT1Ob3Jt YWwgcmVhZCAzM009PT09PT09PT09PT09PT09PT09Cj4gPiBtdGRfc3BlZWR0ZXN0OiBNVEQgZGV2 aWNlOiAwCj4gPiBtdGRfc3BlZWR0ZXN0OiBNVEQgZGV2aWNlIHNpemUgMjA5NzE1MiwgZXJhc2Vi bG9jayBzaXplIDEzMTA3MiwgcGFnZSBzaXplIDIwNDgsCj4gPiBjb3VudCBvZiBlcmFzZWJsb2Nr cyAxNiwgcGFnZXMgcGVyIGVyYXNlYmxvY2sgNjQsIE9PQiBzaXplIDY0Cj4gPiBtdGRfdGVzdDog c2Nhbm5pbmcgZm9yIGJhZCBlcmFzZWJsb2Nrcwo+ID4gbXRkX3Rlc3Q6IHNjYW5uZWQgMTYgZXJh c2VibG9ja3MsIDAgYXJlIGJhZAo+ID4gbXRkX3NwZWVkdGVzdDogdGVzdGluZyBlcmFzZWJsb2Nr IHdyaXRlIHNwZWVkCj4gPiBtdGRfc3BlZWR0ZXN0OiBlcmFzZWJsb2NrIHdyaXRlIHNwZWVkIGlz IDM4NjQgS2lCL3MKPiA+IG10ZF9zcGVlZHRlc3Q6IHRlc3RpbmcgZXJhc2VibG9jayByZWFkIHNw ZWVkCj4gPiBtdGRfc3BlZWR0ZXN0OiBlcmFzZWJsb2NrIHJlYWQgc3BlZWQgaXMgMTU2MzMgS2lC L3MgIAo+IAo+IE1heWJlIGluIGJvdGggY2FzZXMgeW91IGNhbiBqdXN0IGtlZXAgdGhlIGludGVy ZXN0aW5nIGxpbmVzIHdpdGggdGhlCj4gdmFyaW91cyByZWFkIHNwZWVkcy4KPiAKPiA+IG10ZF9z cGVlZHRlc3Q6IHRlc3RpbmcgcGFnZSB3cml0ZSBzcGVlZAo+ID4gbXRkX3NwZWVkdGVzdDogcGFn ZSB3cml0ZSBzcGVlZCBpcyAzNTYxIEtpQi9zCj4gPiBtdGRfc3BlZWR0ZXN0OiB0ZXN0aW5nIHBh Z2UgcmVhZCBzcGVlZAo+ID4gbXRkX3NwZWVkdGVzdDogcGFnZSByZWFkIHNwZWVkIGlzIDE1NTE1 IEtpQi9zCj4gPiBtdGRfc3BlZWR0ZXN0OiB0ZXN0aW5nIDIgcGFnZSB3cml0ZSBzcGVlZAo+ID4g bXRkX3NwZWVkdGVzdDogMiBwYWdlIHdyaXRlIHNwZWVkIGlzIDM2OTAgS2lCL3MKPiA+IG10ZF9z cGVlZHRlc3Q6IHRlc3RpbmcgMiBwYWdlIHJlYWQgc3BlZWQKPiA+IG10ZF9zcGVlZHRlc3Q6IDIg cGFnZSByZWFkIHNwZWVkIGlzIDE1Mzk4IEtpQi9zCj4gPiBtdGRfc3BlZWR0ZXN0OiBUZXN0aW5n IGVyYXNlIHNwZWVkCj4gPiBtdGRfc3BlZWR0ZXN0OiBlcmFzZSBzcGVlZCBpcyAyMjc1NTUgS2lC L3MKPiA+IG10ZF9zcGVlZHRlc3Q6IFRlc3RpbmcgMnggbXVsdGktYmxvY2sgZXJhc2Ugc3BlZWQK PiA+IG10ZF9zcGVlZHRlc3Q6IDJ4IG11bHRpLWJsb2NrIGVyYXNlIHNwZWVkIGlzIDIwNDgwMCBL aUIvcwo+ID4gbXRkX3NwZWVkdGVzdDogVGVzdGluZyA0eCBtdWx0aS1ibG9jayBlcmFzZSBzcGVl ZAo+ID4gbXRkX3NwZWVkdGVzdDogNHggbXVsdGktYmxvY2sgZXJhc2Ugc3BlZWQgaXMgMjA0ODAw IEtpQi9zCj4gPiBtdGRfc3BlZWR0ZXN0OiBUZXN0aW5nIDh4IG11bHRpLWJsb2NrIGVyYXNlIHNw ZWVkCj4gPiBtdGRfc3BlZWR0ZXN0OiA4eCBtdWx0aS1ibG9jayBlcmFzZSBzcGVlZCBpcyAyMDQ4 MDAgS2lCL3MKPiA+IG10ZF9zcGVlZHRlc3Q6IFRlc3RpbmcgMTZ4IG11bHRpLWJsb2NrIGVyYXNl IHNwZWVkCj4gPiBtdGRfc3BlZWR0ZXN0OiAxNnggbXVsdGktYmxvY2sgZXJhc2Ugc3BlZWQgaXMg MjA0ODAwIEtpQi9zCj4gPiBtdGRfc3BlZWR0ZXN0OiBUZXN0aW5nIDMyeCBtdWx0aS1ibG9jayBl cmFzZSBzcGVlZAo+ID4gbXRkX3NwZWVkdGVzdDogMzJ4IG11bHRpLWJsb2NrIGVyYXNlIHNwZWVk IGlzIDIwNDgwMCBLaUIvcwo+ID4gbXRkX3NwZWVkdGVzdDogVGVzdGluZyA2NHggbXVsdGktYmxv Y2sgZXJhc2Ugc3BlZWQKPiA+IG10ZF9zcGVlZHRlc3Q6IDY0eCBtdWx0aS1ibG9jayBlcmFzZSBz cGVlZCBpcyAyMjc1NTUgS2lCL3MKPiA+IG10ZF9zcGVlZHRlc3Q6IGZpbmlzaGVkCj4gPiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gPiAKPiA+ID09 PT09PT09PT09PUNhY2hlIHJlYWRlIFNlcXVlbnRpYWwgMzNNSHo9PT09PT09PT09PQo+ID4gbXRk X3NwZWVkdGVzdDogTVREIGRldmljZTogMAo+ID4gbXRkX3NwZWVkdGVzdDogTVREIGRldmljZSBz aXplIDIwOTcxNTIsIGVyYXNlYmxvY2sgc2l6ZSAxMzEwNzIsIHBhZ2Ugc2l6ZSAyMDQ4LAo+ID4g Y291bnQgb2YgZXJhc2VibG9ja3MgMTYsIHBhZ2VzIHBlciBlcmFzZWJsb2NrIDY0LCBPT0Igc2l6 ZSA2NAo+ID4gbXRkX3Rlc3Q6IHNjYW5uaW5nIGZvciBiYWQgZXJhc2VibG9ja3MKPiA+IG10ZF90 ZXN0OiBzY2FubmVkIDE2IGVyYXNlYmxvY2tzLCAwIGFyZSBiYWQKPiA+IG10ZF9zcGVlZHRlc3Q6 IHRlc3RpbmcgZXJhc2VibG9jayB3cml0ZSBzcGVlZAo+ID4gbXRkX3NwZWVkdGVzdDogZXJhc2Vi bG9jayB3cml0ZSBzcGVlZCBpcyA0MTIwIEtpQi9zCj4gPiBtdGRfc3BlZWR0ZXN0OiB0ZXN0aW5n IGVyYXNlYmxvY2sgcmVhZCBzcGVlZAo+ID4gbXRkX3NwZWVkdGVzdDogZXJhc2VibG9jayByZWFk IHNwZWVkIGlzIDE4Mjg1IEtpQi9zCj4gPiBtdGRfc3BlZWR0ZXN0OiB0ZXN0aW5nIHBhZ2Ugd3Jp dGUgc3BlZWQKPiA+IG10ZF9zcGVlZHRlc3Q6IHBhZ2Ugd3JpdGUgc3BlZWQgaXMgNDAzMSBLaUIv cwo+ID4gbXRkX3NwZWVkdGVzdDogdGVzdGluZyBwYWdlIHJlYWQgc3BlZWQKPiA+IG10ZF9zcGVl ZHRlc3Q6IHBhZ2UgcmVhZCBzcGVlZCBpcyAxNTg3NSBLaUIvcwo+ID4gbXRkX3NwZWVkdGVzdDog dGVzdGluZyAyIHBhZ2Ugd3JpdGUgc3BlZWQKPiA+IG10ZF9zcGVlZHRlc3Q6IDIgcGFnZSB3cml0 ZSBzcGVlZCBpcyAzOTQ2IEtpQi9zCj4gPiBtdGRfc3BlZWR0ZXN0OiB0ZXN0aW5nIDIgcGFnZSBy ZWFkIHNwZWVkCj4gPiBtdGRfc3BlZWR0ZXN0OiAyIHBhZ2UgcmVhZCBzcGVlZCBpcyAxNjI1MyBL aUIvcwo+ID4gbXRkX3NwZWVkdGVzdDogVGVzdGluZyBlcmFzZSBzcGVlZAo+ID4gbXRkX3NwZWVk dGVzdDogZXJhc2Ugc3BlZWQgaXMgMjI3NTU1IEtpQi9zCj4gPiBtdGRfc3BlZWR0ZXN0OiBUZXN0 aW5nIDJ4IG11bHRpLWJsb2NrIGVyYXNlIHNwZWVkCj4gPiBtdGRfc3BlZWR0ZXN0OiAyeCBtdWx0 aS1ibG9jayBlcmFzZSBzcGVlZCBpcyAyMjc1NTUgS2lCL3MKPiA+IG10ZF9zcGVlZHRlc3Q6IFRl c3RpbmcgNHggbXVsdGktYmxvY2sgZXJhc2Ugc3BlZWQKPiA+IG10ZF9zcGVlZHRlc3Q6IDR4IG11 bHRpLWJsb2NrIGVyYXNlIHNwZWVkIGlzIDIwNDgwMCBLaUIvcwo+ID4gbXRkX3NwZWVkdGVzdDog VGVzdGluZyA4eCBtdWx0aS1ibG9jayBlcmFzZSBzcGVlZAo+ID4gbXRkX3NwZWVkdGVzdDogOHgg bXVsdGktYmxvY2sgZXJhc2Ugc3BlZWQgaXMgMjA0ODAwIEtpQi9zCj4gPiBtdGRfc3BlZWR0ZXN0 OiBUZXN0aW5nIDE2eCBtdWx0aS1ibG9jayBlcmFzZSBzcGVlZAo+ID4gbXRkX3NwZWVkdGVzdDog MTZ4IG11bHRpLWJsb2NrIGVyYXNlIHNwZWVkIGlzIDIyNzU1NSBLaUIvcwo+ID4gbXRkX3NwZWVk dGVzdDogVGVzdGluZyAzMnggbXVsdGktYmxvY2sgZXJhc2Ugc3BlZWQKPiA+IG10ZF9zcGVlZHRl c3Q6IDMyeCBtdWx0aS1ibG9jayBlcmFzZSBzcGVlZCBpcyAyMDQ4MDAgS2lCL3MKPiA+IG10ZF9z cGVlZHRlc3Q6IFRlc3RpbmcgNjR4IG11bHRpLWJsb2NrIGVyYXNlIHNwZWVkCj4gPiBtdGRfc3Bl ZWR0ZXN0OiA2NHggbXVsdGktYmxvY2sgZXJhc2Ugc3BlZWQgaXMgMjA0ODAwIEtpQi9zCj4gPiBt dGRfc3BlZWR0ZXN0OiBmaW5pc2hlZAo+ID4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQo+ID4gCj4gPiBUaGUgcmVzdWx0IGNvdWxkIGhhdmUgYWJvdXQg NSUgaW1wcm92ZW1lbnQgYmV0d2VlbiAyIG1vZGVzIHdoZW4gMiBwYWdlcyByZWFkLiAgCj4gCj4g V2Ugb2JzZXJ2ZSBhbiBvdmVyYWxsIGltcHJvdmVtZW50IG9mIHglIHdoZW4gcmVhZGluZyAyIHBh Z2VzLCB5JSB3aGVuCj4gcmVhZGluZyBhIGJsb2NrLgo+IAo+ID4gU2lnbmVkLW9mZi1ieTogSmFp bWVMaWFvIDxqYWltZWxpYW8udHdAZ21haWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9tdGQv bmFuZC9yYXcvbmFuZF9iYXNlLmMgICAgfCA5NiArKysrKysrKysrKysrKysrKysrKysrKysrKyst LQo+ID4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L25hbmRfdGltaW5ncy5jIHwgMTIgKysrKwo+ID4g IGluY2x1ZGUvbGludXgvbXRkL3Jhd25hbmQuaCAgICAgICAgIHwgIDcgKysrCj4gPiAgMyBmaWxl cyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvcmF3L25hbmRfYmFzZS5jIGIvZHJpdmVycy9tdGQv bmFuZC9yYXcvbmFuZF9iYXNlLmMKPiA+IGluZGV4IDNkNmM2ZTg4MDUyMC4uNzQwMDgxNmYwNjI3 IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9yYXcvbmFuZF9iYXNlLmMKPiA+ICsr KyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L25hbmRfYmFzZS5jCj4gPiBAQCAtMTE3Niw2ICsxMTc2 LDM5IEBAIHN0YXRpYyBpbnQgbmFuZF9scF9leGVjX3JlYWRfcGFnZV9vcChzdHJ1Y3QgbmFuZF9j aGlwICpjaGlwLCB1bnNpZ25lZCBpbnQgcGFnZSwKPiA+ICAJY29uc3Qgc3RydWN0IG5hbmRfaW50 ZXJmYWNlX2NvbmZpZyAqY29uZiA9Cj4gPiAgCQluYW5kX2dldF9pbnRlcmZhY2VfY29uZmlnKGNo aXApOwo+ID4gIAl1OCBhZGRyc1s1XTsKPiA+ICsKPiA+ICsJLyogQ29tbWFuZCBzZXF1ZW5jZSBz ZWxlY3QgdG8gMDAtMzAtMzEgd2hlbiByZWFkIGNhY2hlIHNlcXVlbnRpYWwgaXMgZW5hYmxlZCAq Lwo+ID4gKwlpZiAoY2hpcC0+b3BzLmNvbnRpX3JlYWRfcmVxdWlyZSkgewo+ID4gKwkJc3RydWN0 IG5hbmRfb3BfaW5zdHIgaW5zdHJzW10gPSB7Cj4gPiArCQkJTkFORF9PUF9DTUQoTkFORF9DTURf UkVBRDAsIDApLAo+ID4gKwkJCU5BTkRfT1BfQUREUig0LCBhZGRycywgMCksCj4gPiArCQkJTkFO RF9PUF9DTUQoTkFORF9DTURfUkVBRFNUQVJULCBOQU5EX0NPTU1PTl9USU1JTkdfTlMoY29uZiwg dFdCX21heCkpLAo+ID4gKwkJCU5BTkRfT1BfV0FJVF9SRFkoTkFORF9DT01NT05fVElNSU5HX01T KGNvbmYsIHRSX21heCksIDApLAo+ID4gKwkJCU5BTkRfT1BfQ01EKE5BTkRfQ01EX1JFQURDT05U SSwgTkFORF9DT01NT05fVElNSU5HX05TKGNvbmYsIHRXQl9tYXgpKSwKPiA+ICsJCQlOQU5EX09Q X1dBSVRfUkRZKE5BTkRfQ09NTU9OX1RJTUlOR19NUyhjb25mLCB0UkNCU1lfbWluKSwKPiA+ICsJ CQkJCSBOQU5EX0NPTU1PTl9USU1JTkdfTlMoY29uZiwgdFJSX21pbikpLAo+ID4gKwkJCU5BTkRf T1BfREFUQV9JTihsZW4sIGJ1ZiwgMCksCj4gPiArCQl9Owo+ID4gKwkJc3RydWN0IG5hbmRfb3Bl cmF0aW9uIG9wID0gTkFORF9PUEVSQVRJT04oY2hpcC0+Y3VyX2NzLCBpbnN0cnMpOwo+ID4gKwkJ aW50IHJldDsKPiA+ICsKPiA+ICsJCWlmICghbGVuKQo+ID4gKwkJCW9wLm5pbnN0cnMtLTsKPiA+ ICsKPiA+ICsJCXJldCA9IG5hbmRfZmlsbF9jb2x1bW5fY3ljbGVzKGNoaXAsIGFkZHJzLCBvZmZz ZXRfaW5fcGFnZSk7Cj4gPiArCQlpZiAocmV0IDwgMCkKPiA+ICsJCQlyZXR1cm4gcmV0Owo+ID4g Kwo+ID4gKwkJYWRkcnNbMl0gPSBwYWdlOwo+ID4gKwkJYWRkcnNbM10gPSBwYWdlID4+IDg7Cj4g PiArCj4gPiArCQlpZiAoY2hpcC0+b3B0aW9ucyAmIE5BTkRfUk9XX0FERFJfMykgewo+ID4gKwkJ CWFkZHJzWzRdID0gcGFnZSA+PiAxNjsKPiA+ICsJCQlpbnN0cnNbMV0uY3R4LmFkZHIubmFkZHJz Kys7Cj4gPiArCQl9Cj4gPiArCj4gPiArCQlyZXR1cm4gbmFuZF9leGVjX29wKGNoaXAsICZvcCk7 Cj4gPiArCX0gIAo+IAo+IFBsZWFzZSBjcmVhdGUgYSBkZWRpY2F0ZWQgZnVuY3Rpb24gZm9yIGNv bnRpbnVvdXMgcmVhZHMsIGxldCdzIGF2b2lkCj4gbWVzc2luZyB3aXRoIHRoZSByZWd1bGFyIHBh dGguCj4gCj4gSSB3b3VsZCBncmVhdGx5IGFwcHJlY2lhdGUgYWRkaXRpb25hbCBwYXJhbWV0ZXJz IAo+IAo+ID4gIAlzdHJ1Y3QgbmFuZF9vcF9pbnN0ciBpbnN0cnNbXSA9IHsKPiA+ICAJCU5BTkRf T1BfQ01EKE5BTkRfQ01EX1JFQUQwLCAwKSwKPiA+ICAJCU5BTkRfT1BfQUREUig0LCBhZGRycywg MCksCj4gPiBAQCAtMTIwNiw2ICsxMjM5LDMyIEBAIHN0YXRpYyBpbnQgbmFuZF9scF9leGVjX3Jl YWRfcGFnZV9vcChzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwLCB1bnNpZ25lZCBpbnQgcGFnZSwKPiA+ ICAJcmV0dXJuIG5hbmRfZXhlY19vcChjaGlwLCAmb3ApOwo+ID4gIH0KPiA+ICAKPiA+ICtzdGF0 aWMgaW50IG5hbmRfZXhlY19jb250aW51ZV9yZWFkX3BhZ2Vfb3Aoc3RydWN0IG5hbmRfY2hpcCAq Y2hpcCwKPiA+ICsJCQkJCSAgICB2b2lkICpidWYsIHVuc2lnbmVkIGludCBsZW4pCj4gPiArewo+ ID4gKwlzdHJ1Y3QgbXRkX2luZm8gKm10ZCA9IG5hbmRfdG9fbXRkKGNoaXApOwo+ID4gKwlib29s IGNvbnRpX3JlYWRfbGFzdCA9IGZhbHNlOwo+ID4gKwljb25zdCBzdHJ1Y3QgbmFuZF9pbnRlcmZh Y2VfY29uZmlnICpjb25mID0KPiA+ICsJCW5hbmRfZ2V0X2ludGVyZmFjZV9jb25maWcoY2hpcCk7 Cj4gPiArCS8qIFNldCBjb250aV9yZWFkX2xhc3QgdHJ1ZSBiZWZvcmUgdGhlIGxhc3QgYWxpZ25l ZCBwYWdlIHJlYWRpbmcgKi8KPiA+ICsJaWYgKGNoaXAtPm9wcy5jb250aV9yZWFkbGVuID49IG10 ZC0+d3JpdGVzaXplICYmIGNoaXAtPm9wcy5jb250aV9yZWFkbGVuIDwgMiptdGQtPndyaXRlc2l6 ZSkKPiA+ICsJCWNvbnRpX3JlYWRfbGFzdCA9IHRydWU7Cj4gPiArCXN0cnVjdCBuYW5kX29wX2lu c3RyIGluc3Ryc1tdID0gewo+ID4gKwkJTkFORF9PUF9DTUQoY29udGlfcmVhZF9sYXN0P05BTkRf Q01EX1JFQURMQVNUOk5BTkRfQ01EX1JFQURDT05USSwKPiA+ICsJCQkJCSAgICBOQU5EX0NPTU1P Tl9USU1JTkdfTlMoY29uZiwgdFdCX21heCkpLCAgCj4gCj4gUGxlYXNlIHJ1biBjaGVja3BhdGNo LnBsIGFuZCBmaXggdGhlIHN0eWxlLgo+IAo+ID4gKwkJTkFORF9PUF9XQUlUX1JEWShOQU5EX0NP TU1PTl9USU1JTkdfTVMoY29uZiwgdFJDQlNZX21pbiksCj4gPiArCQkJCSBOQU5EX0NPTU1PTl9U SU1JTkdfTlMoY29uZiwgdFJSX21pbikpLAo+ID4gKwkJTkFORF9PUF9EQVRBX0lOKGxlbiwgYnVm LCAwKSwKPiA+ICsJfTsKPiA+ICsJc3RydWN0IG5hbmRfb3BlcmF0aW9uIG9wID0gTkFORF9PUEVS QVRJT04oY2hpcC0+Y3VyX2NzLCBpbnN0cnMpOwo+ID4gKwo+ID4gKwkvKiBEcm9wIHRoZSBEQVRB X0lOIGluc3RydWN0aW9uIGlmIGxlbiBpcyBzZXQgdG8gMC4gKi8KPiA+ICsJaWYgKCFsZW4pCj4g PiArCQlvcC5uaW5zdHJzLS07Cj4gPiArCj4gPiArCXJldHVybiBuYW5kX2V4ZWNfb3AoY2hpcCwg Jm9wKTsKPiA+ICt9Cj4gPiArCj4gPiAgLyoqCj4gPiAgICogbmFuZF9yZWFkX3BhZ2Vfb3AgLSBE byBhIFJFQUQgUEFHRSBvcGVyYXRpb24KPiA+ICAgKiBAY2hpcDogVGhlIE5BTkQgY2hpcAo+ID4g QEAgLTEyMzEsMTAgKzEyOTAsMTUgQEAgaW50IG5hbmRfcmVhZF9wYWdlX29wKHN0cnVjdCBuYW5k X2NoaXAgKmNoaXAsIHVuc2lnbmVkIGludCBwYWdlLAo+ID4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4g PiAgCj4gPiAgCWlmIChuYW5kX2hhc19leGVjX29wKGNoaXApKSB7Cj4gPiAtCQlpZiAobXRkLT53 cml0ZXNpemUgPiA1MTIpCj4gPiAtCQkJcmV0dXJuIG5hbmRfbHBfZXhlY19yZWFkX3BhZ2Vfb3Ao Y2hpcCwgcGFnZSwKPiA+IC0JCQkJCQkJIG9mZnNldF9pbl9wYWdlLCBidWYsCj4gPiAtCQkJCQkJ CSBsZW4pOwo+ID4gKwkJaWYgKG10ZC0+d3JpdGVzaXplID4gNTEyKSB7Cj4gPiArCQkJLyogU2Vs ZWN0aW5nIHJlYWQgY29tbWFuZCBzZXF1ZW5jZSAgKi8KPiA+ICsJCQlpZiAoIWNoaXAtPm9wcy5j b250aV9yZWFkX2ZpcnN0X3BhZ2UgJiYgY2hpcC0+b3BzLmNvbnRpX3JlYWRfcmVxdWlyZSkKPiA+ ICsJCQkJcmV0dXJuIG5hbmRfZXhlY19jb250aW51ZV9yZWFkX3BhZ2Vfb3AoY2hpcCwgYnVmLCBs ZW4pOwo+ID4gKwkJCWVsc2UKPiA+ICsJCQkJcmV0dXJuIG5hbmRfbHBfZXhlY19yZWFkX3BhZ2Vf b3AoY2hpcCwgcGFnZSwKPiA+ICsJCQkJCQkJCSBvZmZzZXRfaW5fcGFnZSwgYnVmLAo+ID4gKwkJ CQkJCQkJIGxlbik7Cj4gPiArCQl9ICAKPiAKPiBFWiBOQU5EIGRvIG5vdCBzdXBwb3J0IHNlcXVl bnRpYWwgY2FjaGUgcmVhZHMsIHBsZWFzZSBhZGQgdGhlIG5lY2Vzc2FyeQo+IGZsYWdzIHRvIGF2 b2lkIHRyeWluZyBjb250aW51b3VzIHJlYWRzIG9uIHRoZW0uCgpQbGVhc2UgYWxzbyBydW4gZXhl Y19vcCB3aXRoIGNoZWNrX29ubHkgc2V0IHRvIHZlcmlmeSB0aGUgY29udHJvbGxlcgpzdXBwb3J0 cyBpdCBiZWZvcmUgZW5hYmxpbmcgdGhlIGZsYWcuCgo+IEFsc28sIGFzIHNhaWQgYWJvdmUsIEkg d291bGQgY3JlYXRlIGFuIGVudGlyZWx5IG5ldyBoZWxwZXIgbGlrZSB0aGlzOgo+IAo+IG5hbmRf bHBfZXhlY19jb250X3JlYWRfcGFnZV9vcChjaGlwLCBwYWdlLCBidWYsIGxlbikKPiB7Cj4gCWlm IChjaGlwLT5jb250X3JlYWRfZmlyc3RfcGFnZSA9PSBwYWdlKQo+IAkJc3RhcnRfY29udGludW91 c19yZWFkKCk7Cj4gCWVsc2UgaWYgKGNoaXAtPmNvbnRfcmVhZF9sYXN0X3BhZ2UgPT0gcGFnZSkK PiAJCWVuZF9jb250aW51b3VzX3JlYWQoKTsKPiAJZWxzZQo+IAkJY29udGludW91c19yZWFkKCk7 Cj4gfQo+IAo+ID4gIAo+ID4gIAkJcmV0dXJuIG5hbmRfc3BfZXhlY19yZWFkX3BhZ2Vfb3AoY2hp cCwgcGFnZSwgb2Zmc2V0X2luX3BhZ2UsCj4gPiAgCQkJCQkJIGJ1ZiwgbGVuKTsKPiA+IEBAIC0z MzYyLDcgKzM0MjYsNiBAQCBzdGF0aWMgaW50IG5hbmRfZG9fcmVhZF9vcHMoc3RydWN0IG5hbmRf Y2hpcCAqY2hpcCwgbG9mZl90IGZyb20sCj4gPiAgCj4gPiAgCQlieXRlcyA9IG1pbihtdGQtPndy aXRlc2l6ZSAtIGNvbCwgcmVhZGxlbik7Cj4gPiAgCQlhbGlnbmVkID0gKGJ5dGVzID09IG10ZC0+ d3JpdGVzaXplKTsKPiA+IC0gIAo+IAo+IFVucmVsYXRlZCBjaGFuZ2UsIHBsZWFzZSBkcm9wCj4g Cj4gPiAgCQlpZiAoIWFsaWduZWQpCj4gPiAgCQkJdXNlX2JvdW5jZV9idWYgPSAxOwo+ID4gIAkJ ZWxzZSBpZiAoY2hpcC0+b3B0aW9ucyAmIE5BTkRfVVNFU19ETUEpCj4gPiBAQCAtMzM4MSw2ICsz NDQ0LDI1IEBAIHN0YXRpYyBpbnQgbmFuZF9kb19yZWFkX29wcyhzdHJ1Y3QgbmFuZF9jaGlwICpj aGlwLCBsb2ZmX3QgZnJvbSwKPiA+ICAJCQkJCQkgX19mdW5jX18sIGJ1Zik7Cj4gPiAgCj4gPiAg cmVhZF9yZXRyeTogIAo+IAo+IEkgYmVsaWV2ZSByZWFkIHJldHJpZXMgY2Fubm90IGJlIHVzZWQg d2l0aCBzZXF1ZW50aWFsIGNhY2hlIHJlYWRzLAo+IGJlY2F1c2UgdGhlIHdob2xlIHBvaW50IG9m IHJldHJpZXMgaXMgdG8gcmVhZCBmcm9tIHRoZSBOQU5EIGFycmF5IGludG8KPiBjYWNoZSBhZ2Fp biwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IHdlIGFyZSB0cnlpbmcgdG8gYXZvaWQuIEFtIEkgcmln aHQ/Cj4gSWYgeWVzLCB0aGVuIHdlIHNob3VsZCBkaXNhYmxlIGNvbnRpbnVvdXMgcmVhZHMgd2hl biBhIHJldHJ5IGlzCj4gcmVxdWlyZWQuCj4gCj4gPiArCQkJLyoKPiA+ICsJCQkgKiBSZWFkIGNh Y2hlIHNlcXVlbnRpYWwgY29tbWFuZCBjYW4gYmUgc2VwYXJhdGUgMyBwYXJ0cy4KPiA+ICsJCQkg KiBGb3IgZGlzdGluZ3Vpc2hpbmcgdGhhdCBmbGFzaCBkcml2ZXIgc2V0IHZhbHVlIHRvCj4gPiAr CQkJICogY29udGlfcmVhZF9maXJzdF9wYWdlIGZvciBjaGVja2luZyB3aGV0aGVyIHRoZSBmaXJz dCBwYWdlCj4gPiArCQkJICogYW5kIHNldCBjb250aV9yZWFkX3JlcXVpcmUgdG8gc2VsZWN0IGNv bW1hbmQgc2VxdWVuY2UuCj4gPiArCQkJICogQW5kIHRha2UgcmVhZGxlbiB0byBjb250aV9yZWFk bGVuIGZvciBjaGVja2luZyB3aGV0aGVyIHRoZQo+ID4gKwkJCSAqIGxhc3QgcGFnZSBvciBub3Qu ICAKPiAKPiBNYXliZSB5b3UgY291bGQgdXNlIHRoZSByZXdvcmRlZCBjb21taXQgbG9nIEkgcHJv cG9zZWQgdG8gZXhwbGFpbiB0aGUKPiBkaWZmZXJlbnQgY2FzZXMuCj4gCj4gPiArCQkJICovCj4g PiArCQkJaWYgKCFjb2wgJiYgcmVhZGxlbiA+PSAoMiptdGQtPndyaXRlc2l6ZSkpIHsKPiA+ICsJ CQkJaWYgKGNoaXAtPm9wcy5jb250aV9yZWFkX3JlcXVpcmUgPT0gMCkKPiA+ICsJCQkJCWNoaXAt Pm9wcy5jb250aV9yZWFkX2ZpcnN0X3BhZ2UgPSAxOwo+ID4gKwkJCQllbHNlCj4gPiArCQkJCQlj aGlwLT5vcHMuY29udGlfcmVhZF9maXJzdF9wYWdlID0gMDsKPiA+ICsJCQkJY2hpcC0+b3BzLmNv bnRpX3JlYWRfcmVxdWlyZSA9IDE7Cj4gPiArCQkJCWNoaXAtPm9wcy5jb250aV9yZWFkbGVuID0g cmVhZGxlbjsKPiA+ICsJCQl9IGVsc2UgaWYgKGNoaXAtPm9wcy5jb250aV9yZWFkX3JlcXVpcmUp IHsKPiA+ICsJCQkJY2hpcC0+b3BzLmNvbnRpX3JlYWRfZmlyc3RfcGFnZSA9IDA7Cj4gPiArCQkJ CWNoaXAtPm9wcy5jb250aV9yZWFkbGVuID0gcmVhZGxlbjsKPiA+ICsJCQl9ICAKPiAKPiBJIHdv dWxkIGNyZWF0ZSBhIGhlbHBlciBmb3IgdGhhdC4KPiAKPiBJdCBzaG91bGQgbG9vayBhdCB0aGUg ZW50aXJlIG9wZXJhdGlvbiBhbmQganVzdCBzZXQgYSBudW1iZXIgb2YKPiB2YXJpYWJsZXMgc3Rv cmVkIGludG8gc3RydWN0IG5hbmRfY2hpcCAoZXZlbiB0aG91Z2ggSSdtIG5vdCBhIGJpZyBmYW4K PiBvZiB0aGUgaWRlYSwgSSBkb24ndCBzZWUgaG93IHRvIGRvIGl0IGRpZmZlcmVudGx5KS4gVGhl IGZlYXR1cmUgc2hvdWxkCj4gYmUgZGlzYWJsZWQgaWYgdGhleSBjYW5ub3QgYmUgZnVsbHkgdXNl ZCwgbGV0J3Mgc3VwcG9ydCB0aGUgc2ltcGxlc3QKPiBjYXNlcyBvbmx5LiBJIHdvdWxkIGxpa2Ug dG8gc2VlIGEgc2luZ2xlIHBhcmFtZXRlciB3aGljaCB0ZWxscyB0aGUgY29yZToKPiB1c2Ugb3Ig ZG8gbm90IHVzZSBjb250aW51b3VzIHJlYWQgb24gdGhpcyBvcGVyYXRpb24uIFRoZW4sIEkgd291 bGQKPiBwcmVmZXIgc3RvcmluZyBlZy4gdGhlIGFkZHJlc3Mgb2YgdGhlIGZpcnN0IGFuZCBsYXN0 IHBhZ2VzIHRvIHJlYWQgc28KPiB0aGF0IGEgZHVtYiByZWFkIGhlbHBlciAobGlrZSBhYm92ZSkg Y2FuIGp1c3QgbG9vayBhdCB0aGUgcGFnZSBhZGRyZXNzCj4gYW5kIHBlcmZvcm0gdGhlIHJpZ2h0 IGNhbGwuCj4gCj4gPiAgCQkJLyoKPiA+ICAJCQkgKiBOb3cgcmVhZCB0aGUgcGFnZSBpbnRvIHRo ZSBidWZmZXIuICBBYnNlbnQgYW4gZXJyb3IsCj4gPiAgCQkJICogdGhlIHJlYWQgbWV0aG9kcyBy ZXR1cm4gbWF4IGJpdGZsaXBzIHBlciBlY2Mgc3RlcC4KPiA+IEBAIC0zNDY4LDYgKzM1NTAsMTAg QEAgc3RhdGljIGludCBuYW5kX2RvX3JlYWRfb3BzKHN0cnVjdCBuYW5kX2NoaXAgKmNoaXAsIGxv ZmZfdCBmcm9tLAo+ID4gIAkJCXJldHJ5X21vZGUgPSAwOwo+ID4gIAkJfQo+ID4gIAo+ID4gKwkJ Lyogc2V0IGNvbnRpX3JlYWRfcmVxdWlyZSAwIHdoZW4gZmluaXNoIHRoZSBsYXN0IGFsaWduZWQg cGFnZSByZWFkICovCj4gPiArCQlpZiAocmVhZGxlbiA8IG10ZC0+d3JpdGVzaXplKQo+ID4gKwkJ CWNoaXAtPm9wcy5jb250aV9yZWFkX3JlcXVpcmUgPSAwOwo+ID4gKwo+ID4gIAkJaWYgKCFyZWFk bGVuKQo+ID4gIAkJCWJyZWFrOwo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25h bmQvcmF3L25hbmRfdGltaW5ncy5jIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcvbmFuZF90aW1pbmdz LmMKPiA+IGluZGV4IDdiNDFhZmMzNzJkMi4uY2VjNWQ5ZTUyNmZlIDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9tdGQvbmFuZC9yYXcvbmFuZF90aW1pbmdzLmMKPiA+ICsrKyBiL2RyaXZlcnMvbXRk L25hbmQvcmF3L25hbmRfdGltaW5ncy5jICAKPiAKPiBNYXliZSB0aGUgdGltaW5nIGFkZGl0aW9u cyBjYW4gYmUgZG9uZSBpbiBhIHNlcGFyYXRlZCBwYXRjaC4KPiAKPiA+IEBAIC0yNyw2ICsyNyw3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmFuZF9pbnRlcmZhY2VfY29uZmlnIG9uZmlfc2RyX3Rp bWluZ3NbXSA9IHsKPiA+ICAJCS50aW1pbmdzLnNkciA9IHsKPiA+ICAJCQkudENDU19taW4gPSA1 MDAwMDAsCj4gPiAgCQkJLnRSX21heCA9IDIwMDAwMDAwMCwKPiA+ICsJCQkudFJDQlNZX21pbiA9 IDQwMDAwMDAwLAo+ID4gIAkJCS50UFJPR19tYXggPSAxMDAwMDAwVUxMICogT05GSV9EWU5fVElN SU5HX01BWCwKPiA+ICAJCQkudEJFUlNfbWF4ID0gMTAwMDAwMFVMTCAqIE9ORklfRFlOX1RJTUlO R19NQVgsCj4gPiAgCQkJLnRBRExfbWluID0gNDAwMDAwLAo+ID4gQEAgLTcyLDYgKzczLDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBuYW5kX2ludGVyZmFjZV9jb25maWcgb25maV9zZHJfdGltaW5n c1tdID0gewo+ID4gIAkJLnRpbWluZ3Muc2RyID0gewo+ID4gIAkJCS50Q0NTX21pbiA9IDUwMDAw MCwKPiA+ICAJCQkudFJfbWF4ID0gMjAwMDAwMDAwLAo+ID4gKwkJCS50UkNCU1lfbWluID0gNDAw MDAwMDAsCj4gPiAgCQkJLnRQUk9HX21heCA9IDEwMDAwMDBVTEwgKiBPTkZJX0RZTl9USU1JTkdf TUFYLAo+ID4gIAkJCS50QkVSU19tYXggPSAxMDAwMDAwVUxMICogT05GSV9EWU5fVElNSU5HX01B WCwKPiA+ICAJCQkudEFETF9taW4gPSA0MDAwMDAsCj4gPiBAQCAtMTE3LDYgKzExOSw3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgbmFuZF9pbnRlcmZhY2VfY29uZmlnIG9uZmlfc2RyX3RpbWluZ3Nb XSA9IHsKPiA+ICAJCS50aW1pbmdzLnNkciA9IHsKPiA+ICAJCQkudENDU19taW4gPSA1MDAwMDAs Cj4gPiAgCQkJLnRSX21heCA9IDIwMDAwMDAwMCwKPiA+ICsJCQkudFJDQlNZX21pbiA9IDQwMDAw MDAwLAo+ID4gIAkJCS50UFJPR19tYXggPSAxMDAwMDAwVUxMICogT05GSV9EWU5fVElNSU5HX01B WCwKPiA+ICAJCQkudEJFUlNfbWF4ID0gMTAwMDAwMFVMTCAqIE9ORklfRFlOX1RJTUlOR19NQVgs Cj4gPiAgCQkJLnRBRExfbWluID0gNDAwMDAwLAo+ID4gQEAgLTE2Miw2ICsxNjUsNyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IG5hbmRfaW50ZXJmYWNlX2NvbmZpZyBvbmZpX3Nkcl90aW1pbmdzW10g PSB7Cj4gPiAgCQkudGltaW5ncy5zZHIgPSB7Cj4gPiAgCQkJLnRDQ1NfbWluID0gNTAwMDAwLAo+ ID4gIAkJCS50Ul9tYXggPSAyMDAwMDAwMDAsCj4gPiArCQkJLnRSQ0JTWV9taW4gPSA0MDAwMDAw MCwKPiA+ICAJCQkudFBST0dfbWF4ID0gMTAwMDAwMFVMTCAqIE9ORklfRFlOX1RJTUlOR19NQVgs Cj4gPiAgCQkJLnRCRVJTX21heCA9IDEwMDAwMDBVTEwgKiBPTkZJX0RZTl9USU1JTkdfTUFYLAo+ ID4gIAkJCS50QURMX21pbiA9IDQwMDAwMCwKPiA+IEBAIC0yMDcsNiArMjExLDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBuYW5kX2ludGVyZmFjZV9jb25maWcgb25maV9zZHJfdGltaW5nc1tdID0g ewo+ID4gIAkJLnRpbWluZ3Muc2RyID0gewo+ID4gIAkJCS50Q0NTX21pbiA9IDUwMDAwMCwKPiA+ ICAJCQkudFJfbWF4ID0gMjAwMDAwMDAwLAo+ID4gKwkJCS50UkNCU1lfbWluID0gNDAwMDAwMDAs Cj4gPiAgCQkJLnRQUk9HX21heCA9IDEwMDAwMDBVTEwgKiBPTkZJX0RZTl9USU1JTkdfTUFYLAo+ ID4gIAkJCS50QkVSU19tYXggPSAxMDAwMDAwVUxMICogT05GSV9EWU5fVElNSU5HX01BWCwKPiA+ ICAJCQkudEFETF9taW4gPSA0MDAwMDAsCj4gPiBAQCAtMjUyLDYgKzI1Nyw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgbmFuZF9pbnRlcmZhY2VfY29uZmlnIG9uZmlfc2RyX3RpbWluZ3NbXSA9IHsK PiA+ICAJCS50aW1pbmdzLnNkciA9IHsKPiA+ICAJCQkudENDU19taW4gPSA1MDAwMDAsCj4gPiAg CQkJLnRSX21heCA9IDIwMDAwMDAwMCwKPiA+ICsJCQkudFJDQlNZX21pbiA9IDQwMDAwMDAwLAo+ ID4gIAkJCS50UFJPR19tYXggPSAxMDAwMDAwVUxMICogT05GSV9EWU5fVElNSU5HX01BWCwKPiA+ ICAJCQkudEJFUlNfbWF4ID0gMTAwMDAwMFVMTCAqIE9ORklfRFlOX1RJTUlOR19NQVgsCj4gPiAg CQkJLnRBRExfbWluID0gNDAwMDAwLAo+ID4gQEAgLTMwMCw2ICszMDYsNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IG5hbmRfaW50ZXJmYWNlX2NvbmZpZyBvbmZpX252ZGRyX3RpbWluZ3NbXSA9IHsK PiA+ICAJCS50aW1pbmdzLm52ZGRyID0gewo+ID4gIAkJCS50Q0NTX21pbiA9IDUwMDAwMCwKPiA+ ICAJCQkudFJfbWF4ID0gMjAwMDAwMDAwLAo+ID4gKwkJCS50UkNCU1lfbWluID0gNDAwMDAwMDAs Cj4gPiAgCQkJLnRQUk9HX21heCA9IDEwMDAwMDBVTEwgKiBPTkZJX0RZTl9USU1JTkdfTUFYLAo+ ID4gIAkJCS50QkVSU19tYXggPSAxMDAwMDAwVUxMICogT05GSV9EWU5fVElNSU5HX01BWCwKPiA+ ICAJCQkudEFDX21pbiA9IDMwMDAsCj4gPiBAQCAtMzQyLDYgKzM0OSw3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgbmFuZF9pbnRlcmZhY2VfY29uZmlnIG9uZmlfbnZkZHJfdGltaW5nc1tdID0gewo+ ID4gIAkJLnRpbWluZ3MubnZkZHIgPSB7Cj4gPiAgCQkJLnRDQ1NfbWluID0gNTAwMDAwLAo+ID4g IAkJCS50Ul9tYXggPSAyMDAwMDAwMDAsCj4gPiArCQkJLnRSQ0JTWV9taW4gPSA0MDAwMDAwMCwK PiA+ICAJCQkudFBST0dfbWF4ID0gMTAwMDAwMFVMTCAqIE9ORklfRFlOX1RJTUlOR19NQVgsCj4g PiAgCQkJLnRCRVJTX21heCA9IDEwMDAwMDBVTEwgKiBPTkZJX0RZTl9USU1JTkdfTUFYLAo+ID4g IAkJCS50QUNfbWluID0gMzAwMCwKPiA+IEBAIC0zODQsNiArMzkyLDcgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBuYW5kX2ludGVyZmFjZV9jb25maWcgb25maV9udmRkcl90aW1pbmdzW10gPSB7Cj4g PiAgCQkudGltaW5ncy5udmRkciA9IHsKPiA+ICAJCQkudENDU19taW4gPSA1MDAwMDAsCj4gPiAg CQkJLnRSX21heCA9IDIwMDAwMDAwMCwKPiA+ICsJCQkudFJDQlNZX21pbiA9IDQwMDAwMDAwLAo+ ID4gIAkJCS50UFJPR19tYXggPSAxMDAwMDAwVUxMICogT05GSV9EWU5fVElNSU5HX01BWCwKPiA+ ICAJCQkudEJFUlNfbWF4ID0gMTAwMDAwMFVMTCAqIE9ORklfRFlOX1RJTUlOR19NQVgsCj4gPiAg CQkJLnRBQ19taW4gPSAzMDAwLAo+ID4gQEAgLTQyNiw2ICs0MzUsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IG5hbmRfaW50ZXJmYWNlX2NvbmZpZyBvbmZpX252ZGRyX3RpbWluZ3NbXSA9IHsKPiA+ ICAJCS50aW1pbmdzLm52ZGRyID0gewo+ID4gIAkJCS50Q0NTX21pbiA9IDUwMDAwMCwKPiA+ICAJ CQkudFJfbWF4ID0gMjAwMDAwMDAwLAo+ID4gKwkJCS50UkNCU1lfbWluID0gNDAwMDAwMDAsCj4g PiAgCQkJLnRQUk9HX21heCA9IDEwMDAwMDBVTEwgKiBPTkZJX0RZTl9USU1JTkdfTUFYLAo+ID4g IAkJCS50QkVSU19tYXggPSAxMDAwMDAwVUxMICogT05GSV9EWU5fVElNSU5HX01BWCwKPiA+ICAJ CQkudEFDX21pbiA9IDMwMDAsCj4gPiBAQCAtNDY4LDYgKzQ3OCw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgbmFuZF9pbnRlcmZhY2VfY29uZmlnIG9uZmlfbnZkZHJfdGltaW5nc1tdID0gewo+ID4g IAkJLnRpbWluZ3MubnZkZHIgPSB7Cj4gPiAgCQkJLnRDQ1NfbWluID0gNTAwMDAwLAo+ID4gIAkJ CS50Ul9tYXggPSAyMDAwMDAwMDAsCj4gPiArCQkJLnRSQ0JTWV9taW4gPSA0MDAwMDAwMCwKPiA+ ICAJCQkudFBST0dfbWF4ID0gMTAwMDAwMFVMTCAqIE9ORklfRFlOX1RJTUlOR19NQVgsCj4gPiAg CQkJLnRCRVJTX21heCA9IDEwMDAwMDBVTEwgKiBPTkZJX0RZTl9USU1JTkdfTUFYLAo+ID4gIAkJ CS50QUNfbWluID0gMzAwMCwKPiA+IEBAIC01MTAsNiArNTIxLDcgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBuYW5kX2ludGVyZmFjZV9jb25maWcgb25maV9udmRkcl90aW1pbmdzW10gPSB7Cj4gPiAg CQkudGltaW5ncy5udmRkciA9IHsKPiA+ICAJCQkudENDU19taW4gPSA1MDAwMDAsCj4gPiAgCQkJ LnRSX21heCA9IDIwMDAwMDAwMCwKPiA+ICsJCQkudFJDQlNZX21pbiA9IDQwMDAwMDAwLAo+ID4g IAkJCS50UFJPR19tYXggPSAxMDAwMDAwVUxMICogT05GSV9EWU5fVElNSU5HX01BWCwKPiA+ICAJ CQkudEJFUlNfbWF4ID0gMTAwMDAwMFVMTCAqIE9ORklfRFlOX1RJTUlOR19NQVgsCj4gPiAgCQkJ LnRBQ19taW4gPSAzMDAwLAo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXRkL3Jhd25h bmQuaCBiL2luY2x1ZGUvbGludXgvbXRkL3Jhd25hbmQuaAo+ID4gaW5kZXggYjJmOWRkM2NiZDY5 Li40OWYxMjQ5YmE4NTIgMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L210ZC9yYXduYW5k LmgKPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvbXRkL3Jhd25hbmQuaAo+ID4gQEAgLTY3LDYgKzY3 LDggQEAgc3RydWN0IGdwaW9fZGVzYzsKPiA+ICAKPiA+ICAvKiBFeHRlbmRlZCBjb21tYW5kcyBm b3IgbGFyZ2UgcGFnZSBkZXZpY2VzICovCj4gPiAgI2RlZmluZSBOQU5EX0NNRF9SRUFEU1RBUlQJ MHgzMAo+ID4gKyNkZWZpbmUgTkFORF9DTURfUkVBRENPTlRJICAgICAweDMxCj4gPiArI2RlZmlu ZSBOQU5EX0NNRF9SRUFETEFTVCAgICAgIDB4M2YKPiA+ICAjZGVmaW5lIE5BTkRfQ01EX1JORE9V VFNUQVJUCTB4RTAKPiA+ICAjZGVmaW5lIE5BTkRfQ01EX0NBQ0hFRFBST0cJMHgxNQo+ID4gIAo+ ID4gQEAgLTQzNiw2ICs0MzgsNyBAQCBzdHJ1Y3QgbmFuZF9zZHJfdGltaW5ncyB7Cj4gPiAgCXUz MiB0Q0NTX21pbjsKPiA+ICAJdTY0IHRQUk9HX21heDsKPiA+ICAJdTY0IHRSX21heDsKPiA+ICsJ dTY0IHRSQ0JTWV9taW47Cj4gPiAgCXUzMiB0QUxIX21pbjsKPiA+ICAJdTMyIHRBRExfbWluOwo+ ID4gIAl1MzIgdEFMU19taW47Cj4gPiBAQCAtNTI1LDYgKzUyOCw3IEBAIHN0cnVjdCBuYW5kX252 ZGRyX3RpbWluZ3Mgewo+ID4gIAl1MzIgdENDU19taW47Cj4gPiAgCXU2NCB0UFJPR19tYXg7Cj4g PiAgCXU2NCB0Ul9tYXg7Cj4gPiArCXU2NCB0UkNCU1lfbWluOwo+ID4gIAl1MzIgdEFDX21pbjsK PiA+ICAJdTMyIHRBQ19tYXg7Cj4gPiAgCXUzMiB0QURMX21pbjsKPiA+IEBAIC0xMTczLDYgKzEx NzcsOSBAQCBzdHJ1Y3QgbmFuZF9jaGlwX29wcyB7Cj4gPiAgCWludCAoKnNldHVwX3JlYWRfcmV0 cnkpKHN0cnVjdCBuYW5kX2NoaXAgKmNoaXAsIGludCByZXRyeV9tb2RlKTsKPiA+ICAJaW50ICgq Y2hvb3NlX2ludGVyZmFjZV9jb25maWcpKHN0cnVjdCBuYW5kX2NoaXAgKmNoaXAsCj4gPiAgCQkJ CSAgICAgICBzdHJ1Y3QgbmFuZF9pbnRlcmZhY2VfY29uZmlnICppZmFjZSk7Cj4gPiArCWJvb2wg Y29udGlfcmVhZF9yZXF1aXJlOwo+ID4gKwlib29sIGNvbnRpX3JlYWRfZmlyc3RfcGFnZTsKPiA+ ICsJaW50IGNvbnRpX3JlYWRsZW47ICAKPiAKPiBJIHdvdWxkIHJhdGhlciBwcmVmZXIgdGhlIGNv bnRfIHByZWZpeCByYXRoZXIgdGhhbiBjb250aV8uCj4gCj4gQW5kIHdoeSBkbyB3ZSBoYXZlIHRo ZXNlIGluZm9ybWF0aW9uIHVuZGVyICJuYW5kX2NoaXBfb3BzIiByYXRoZXIgdGhhbgo+IG5hbmRf Y2hpcD8KPiAKPiBUaGFua3MsCj4gTWlxdcOobAoKClRoYW5rcywKTWlxdcOobAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4IE1URCBk aXNjdXNzaW9uIG1haWxpbmcgbGlzdApodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LW10ZC8K