Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754155AbeAKG2M (ORCPT + 1 other); Thu, 11 Jan 2018 01:28:12 -0500 Received: from mail-sn1nam02on0082.outbound.protection.outlook.com ([104.47.36.82]:42684 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753668AbeAKG2J (ORCPT ); Thu, 11 Jan 2018 01:28:09 -0500 From: Jiaying Liang To: Arnaud Pouliquen , "ohad@wizery.com" , "bjorn.andersson@linaro.org" CC: "linux-remoteproc@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [RFC] rpmsg: virtio rpmsg: Add RPMsg char driver support Thread-Topic: [RFC] rpmsg: virtio rpmsg: Add RPMsg char driver support Thread-Index: AQHThbJeqUl3nXbke0GVV0bDSj1GGaNlXPuAgAA+xtCABes5gIACtIiQ Date: Thu, 11 Jan 2018 06:28:04 +0000 Message-ID: References: <1515107908-5351-1-git-send-email-jliang@xilinx.com> <76870793-8f08-1efc-512e-364ecbf0f6df@st.com> In-Reply-To: <76870793-8f08-1efc-512e-364ecbf0f6df@st.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=jliang@xilinx.com; x-originating-ip: [149.199.62.254] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;BY1PR0201MB1079;7:S9qNliffhsu2HYI3X0lPi8vXX8ceMl7UbIKMX+CV2Jl1Bet56lSievFfN0+FztGTxDUBqcyBNx6HKYgN0DcpuQEKHIPjqvYT9W8pGakotekWzwISHv9nQrISM2iCNUYjxlNPWMK/A9dr7xXgIk5uXg7tnpu32FdX9TvasFFwTfJ9BIeoPqKrQYqx26tJL1/8qwAwn6PVl1ubVf0jpdSaoQja2l5QL8Zu4380fJCiCjyQWBmJdl8azBTUpiz88vwO x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 5047ea4a-82cb-4d85-3419-08d558bc7894 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020061)(4652020)(48565401081)(5600026)(4604075)(3008032)(2017052603307)(7153060)(7193020);SRVR:BY1PR0201MB1079; x-ms-traffictypediagnostic: BY1PR0201MB1079: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(278428928389397)(9452136761055)(192813158149592); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(6040470)(2401047)(5005006)(8121501046)(3231023)(944501134)(10201501046)(3002001)(93006095)(93001095)(6055026)(6041268)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(20161123562045)(6072148)(201708071742011);SRVR:BY1PR0201MB1079;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:BY1PR0201MB1079; x-forefront-prvs: 0549E6FD50 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39380400002)(39860400002)(396003)(376002)(346002)(366004)(189003)(199004)(13464003)(57704003)(24454002)(110136005)(8676002)(74316002)(25786009)(54906003)(478600001)(316002)(105586002)(4326008)(53946003)(68736007)(9686003)(6436002)(229853002)(33656002)(55016002)(3846002)(6116002)(106356001)(66066001)(53936002)(7696005)(3660700001)(6506007)(14454004)(7736002)(81166006)(53546011)(97736004)(76176011)(2950100002)(2900100001)(59450400001)(8936002)(5660300001)(3280700002)(2906002)(81156014)(99286004)(6246003)(2501003)(5250100002)(2201001)(102836004)(305945005)(93886005)(86362001)(559001)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:BY1PR0201MB1079;H:BY1PR0201MB0885.namprd02.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; x-microsoft-antispam-message-info: LgR5Bkwp2Czj/zgfTod1wsl5CV6qNi/THsOSwMyLo8/JljWa593LUxplFOS/KwrswVZ6KUJOTjwvevJFJElVhA== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5047ea4a-82cb-4d85-3419-08d558bc7894 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jan 2018 06:28:04.1617 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR0201MB1079 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFybmF1ZCBQb3VsaXF1ZW4g W21haWx0bzphcm5hdWQucG91bGlxdWVuQHN0LmNvbV0NCj4gU2VudDogVHVlc2RheSwgSmFudWFy eSAwOSwgMjAxOCA0OjU2IEFNDQo+IFRvOiBKaWF5aW5nIExpYW5nIDxqbGlhbmdAeGlsaW54LmNv bT47IG9oYWRAd2l6ZXJ5LmNvbTsNCj4gYmpvcm4uYW5kZXJzc29uQGxpbmFyby5vcmcNCj4gQ2M6 IGxpbnV4LXJlbW90ZXByb2NAdmdlci5rZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJu ZWwub3JnDQo+IFN1YmplY3Q6IFJlOiBbUkZDXSBycG1zZzogdmlydGlvIHJwbXNnOiBBZGQgUlBN c2cgY2hhciBkcml2ZXIgc3VwcG9ydA0KPiANCj4gDQo+IA0KPiBPbiAwMS8wNS8yMDE4IDExOjEw IFBNLCBKaWF5aW5nIExpYW5nIHdyb3RlOg0KPiA+DQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogQXJuYXVkIFBvdWxpcXVlbiBbbWFpbHRvOmFybmF1ZC5w b3VsaXF1ZW5Ac3QuY29tXQ0KPiA+PiBTZW50OiBGcmlkYXksIEphbnVhcnkgMDUsIDIwMTggNjo0 OCBBTQ0KPiA+PiBUbzogSmlheWluZyBMaWFuZyA8amxpYW5nQHhpbGlueC5jb20+OyBvaGFkQHdp emVyeS5jb207DQo+ID4+IGJqb3JuLmFuZGVyc3NvbkBsaW5hcm8ub3JnDQo+ID4+IENjOiBsaW51 eC1yZW1vdGVwcm9jQHZnZXIua2VybmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9y ZzsNCj4gPj4gSmlheWluZyBMaWFuZyA8amxpYW5nQHhpbGlueC5jb20+DQo+ID4+IFN1YmplY3Q6 IFJlOiBbUkZDXSBycG1zZzogdmlydGlvIHJwbXNnOiBBZGQgUlBNc2cgY2hhciBkcml2ZXIgc3Vw cG9ydA0KPiA+Pg0KPiA+PiBIaSBXZW5keSwNCj4gPj4NCj4gPj4gRmV3IHJlbWFya3Mgb24geW91 ciBwYXRjaC4NCj4gPj4NCj4gPj4gT24gMDEvMDUvMjAxOCAxMjoxOCBBTSwgV2VuZHkgTGlhbmcg d3JvdGU6DQo+ID4+PiB2aXJ0aW8gcnBtc2cgd2FzIG5vdCBpbXBsZW1lbnRlZCB0byB1c2UgUlBN c2cgY2hhciBkcml2ZXIuDQo+ID4+PiBFYWNoIHZpcnRpbyBucyBhbm5vdW5jZW1lbnQgd2lsbCBj cmVhdGUgYSBuZXcgUlBNc2cgZGV2aWNlIHdoaWNoIGlzDQo+ID4+PiBzdXBwb3NlZCB0byBib3Vu ZCB0byBhIFJQTXNnIGRyaXZlci4gSXQgZG9lc24ndCBzdXBwb3J0IGR5bmFtaWMNCj4gPj4+IGVu ZHBvaW50cyB3aXRoIG5hbWUgc2VydmljZSBwZXIgUlBNc2cgZGV2aWNlLg0KPiA+Pj4gV2l0aCBS UE1zZyBjaGFyIGRyaXZlciwgeW91IGNhbiBoYXZlIG11bHRpcGxlIGVuZHBvaW50cyBwZXIgUlBN c2cNCj4gPj4+IGRldmljZS4NCj4gPj4+DQo+ID4+PiBIZXJlIGlzIHRoZSBjaGFuZ2UgZnJvbSB0 aGlzIHBhdGNoOg0KPiA+Pj4gKiBJbnRyb2R1Y2UgYSBtYWNybyB0byBpbmRpY2F0ZSBpZiB3YW50 IHRvIHVzZSBSUE1zZyBjaGFyIGRyaXZlcg0KPiA+Pj4gICBmb3IgdmlydGlvIFJQTXNnLiBUaGUg UlBNc2cgZGV2aWNlIGNhbiBlaXRoZXIgYmUgYm91bmRlZCB0bw0KPiA+Pj4gICBhIHNpbXBsZSBS UE1zZyBkcml2ZXIgb3IgdGhlIFJQTXNnIGNoYXIgZHJpdmVyLg0KPiA+Pj4gKiBDcmVhdGUgVmly dGlvIFJQTXNnIGNoYXIgZGV2aWNlIHdoZW4gdGhlIHZpcnRpbyBSUE1zZyBkcml2ZXIgaXMNCj4g Pj4+ICAgcHJvYmVkLg0KPiA+Pj4gKiB3aGVuIHRoZXJlIGlzIGEgcmVtb3RlIHNlcnZpY2UgYW5u b3VuY2VkLCBrZWVwIGl0IGluIHRoZSB2aXJ0aW8NCj4gPj4+ICAgcHJvYyByZW1vdGUgc2Vydmlj ZXMgbGlzdC4NCj4gPj4+ICogd2hlbiB0aGVyZSBpcyBhbiBlbmRwb2ludCBjcmVhdGVkLCBiaW5k IGl0IHRvIGEgcmVtb3RlIHNlcnZpY2UNCj4gPj4+ICAgZnJvbSB0aGUgcmVtb3RlIHNlcnZpY2Vz IGxpc3QuIElmIHRoZSBzZXJ2aWNlIGRvZXNuJ3QgZXhpc3QgeWV0LA0KPiA+Pj4gICBjcmVhdGUg b25lIGFuZCBtYXJrIHRoZSBzZXJ2aWNlIGFkZHJlc3MgYXMgQU5ZLg0KPiA+PiBXb3VsZCBiZSBu aWNlIHRvIHNpbXBsaWZ5IHRoZSByZXZpZXcgaWYgcGF0Y2ggd2FzIHNwbGl0IGluIHNldmVyYWwN Cj4gPj4gcGF0Y2hlcyAoZm9yIGluc3RhbmNlIHBlciBmZWF0dXJlIGludHJvZHVjZWQpLg0KPiA+ IFtXZW5keV0gVGhlc2UgY2hhbmdlcyBhcmUgbWFkZSB0byB1c2UgdGhlIFJQTXNnIGNoYXIgZHJp dmVyLg0KPiA+IFNvbWUgaXRlbXMgc3VjaCB3aGVuIGFuIGVuZHBvaW50IGlzIGNyZWF0ZWQgd2hp bGUgdGhlIHJlbW90ZSBoYXNuJ3QNCj4gPiBhbm5vdW5jZWQgdGhpcyBzZXJ2aWNlIHlldCBpcyAi bmV3IGZlYXR1cmUiLCBidXQgYXQgdGhlIG1vbWVudCBJIGFtDQo+ID4gbm90IDEwMCUgc3VyZSBp ZiB0aGlzIGNoYW5nZSBmb2xsb3dzIHRoZSByaWdodCBkaXJlY3Rpb24uDQo+ID4NCj4gPj4NCj4g Pj4+DQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBXZW5keSBMaWFuZyA8amxpYW5nQHhpbGlueC5jb20+ DQo+ID4+PiAtLS0NCj4gPj4+IFdlIGhhdmUgZGlmZmVyZW50IHVzZXJzcGFjZSBhcHBsaWNhdGlv bnMgdG8gdXNlIFJQTXNnIGRpZmZlcmVudGx5LA0KPiA+Pj4gd2hhdCB3ZSBuZWVkIGlzIGEgUlBN c2cgY2hhciBkcml2ZXIgd2hpY2ggY2FuIHN1cHBvcnRzIG11bHRpcGxlDQo+ID4+PiBlbmRwb2lu dHMgcGVyIHJlbW90ZSBkZXZpY2UuDQo+ID4+PiBUaGUgdmlydGlvIHJwbXNnIGRyaXZlciBhdCB0 aGUgbW9tZW50IGRvZXNuJ3Qgc3VwcG9ydCB0aGUgUlBNc2cgY2hhcg0KPiA+Pj4gZHJpdmVyLg0K PiA+Pj4gUGxlYXNlIGFkdmlzZSBpZiB0aGlzIGlzIHBhdGNoIGlzIHRoZSByaWdodCBkaXJlY3Rp b24uIElmIG5vdCwgYW55DQo+ID4+PiBzdWdnZXN0aW9ucz8gVGhhbmtzDQo+ID4+PiAtLS0NCj4g Pj4+ICBkcml2ZXJzL3JwbXNnL0tjb25maWcgICAgICAgICAgICB8ICAgOCArDQo+ID4+PiAgZHJp dmVycy9ycG1zZy92aXJ0aW9fcnBtc2dfYnVzLmMgfCAzNjQNCj4gPj4+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLQ0KPiA+Pj4gIDIgZmlsZXMgY2hhbmdlZCwgMzY1IGlu c2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pDQo+ID4+Pg0KPiA+Pj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvcnBtc2cvS2NvbmZpZyBiL2RyaXZlcnMvcnBtc2cvS2NvbmZpZyBpbmRleA0KPiA+Pj4g NjVhOWY2Yi4uNzQ2ZjA3ZSAxMDA2NDQNCj4gPj4+IC0tLSBhL2RyaXZlcnMvcnBtc2cvS2NvbmZp Zw0KPiA+Pj4gKysrIGIvZHJpdmVycy9ycG1zZy9LY29uZmlnDQo+ID4+PiBAQCAtNTIsNCArNTIs MTIgQEAgY29uZmlnIFJQTVNHX1ZJUlRJTw0KPiA+Pj4gIAlzZWxlY3QgUlBNU0cNCj4gPj4+ICAJ c2VsZWN0IFZJUlRJTw0KPiA+Pj4NCj4gPj4+ICtjb25maWcgUlBNU0dfVklSVElPX0NIQVINCj4g Pj4+ICsJYm9vbCAiRW5hYmxlIFZpcnRpbyBSUE1TRyBjaGFyIGRldmljZSBkcml2ZXIgc3VwcG9y dCINCj4gPj4+ICsJZGVmYXVsdCB5DQo+ID4+PiArCWRlcGVuZHMgb24gUlBNU0dfVklSVElPDQo+ ID4+PiArCWRlcGVuZHMgb24gUlBNU0dfQ0hBUg0KPiA+Pj4gKwloZWxwDQo+ID4+PiArCSAgU2F5 IHkgaGVyZSB0byBlbmFibGUgdG8gdXNlIFJQTVNHIGNoYXIgZGV2aWNlIGludGVyZmFjZS4NCj4g Pj4+ICsNCj4gPj4+ICBlbmRtZW51DQo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ycG1zZy92 aXJ0aW9fcnBtc2dfYnVzLmMNCj4gPj4+IGIvZHJpdmVycy9ycG1zZy92aXJ0aW9fcnBtc2dfYnVz LmMNCj4gPj4+IGluZGV4IDgyYjgzMDAuLjZlMzBhM2NjIDEwMDY0NA0KPiA+Pj4gLS0tIGEvZHJp dmVycy9ycG1zZy92aXJ0aW9fcnBtc2dfYnVzLmMNCj4gPj4+ICsrKyBiL2RyaXZlcnMvcnBtc2cv dmlydGlvX3JwbXNnX2J1cy5jDQo+ID4+PiBAQCAtNTYsNiArNTYsNyBAQA0KPiA+Pj4gICAqIEBz ZW5kcToJd2FpdCBxdWV1ZSBvZiBzZW5kaW5nIGNvbnRleHRzIHdhaXRpbmcgZm9yIGEgdHgNCj4g YnVmZmVycw0KPiA+Pj4gICAqIEBzbGVlcGVyczoJbnVtYmVyIG9mIHNlbmRlcnMgdGhhdCBhcmUg d2FpdGluZyBmb3IgYSB0eCBidWZmZXINCj4gPj4+ICAgKiBAbnNfZXB0Ogl0aGUgYnVzJ3MgbmFt ZSBzZXJ2aWNlIGVuZHBvaW50DQo+ID4+PiArICogQHJzdmNzOglyZW1vdGUgc2VydmljZXMNCj4g Pj4+ICAgKg0KPiA+Pj4gICAqIFRoaXMgc3RydWN0dXJlIHN0b3JlcyB0aGUgcnBtc2cgc3RhdGUg b2YgYSBnaXZlbiB2aXJ0aW8gcmVtb3RlDQo+IHByb2Nlc3Nvcg0KPiA+Pj4gICAqIGRldmljZSAo dGhlcmUgbWlnaHQgYmUgc2V2ZXJhbCB2aXJ0aW8gcHJvYyBkZXZpY2VzIGZvciBlYWNoDQo+ID4+ PiBwaHlzaWNhbCBAQCAtNzUsNiArNzYsOSBAQCBzdHJ1Y3QgdmlydHByb2NfaW5mbyB7DQo+ID4+ PiAgCXdhaXRfcXVldWVfaGVhZF90IHNlbmRxOw0KPiA+Pj4gIAlhdG9taWNfdCBzbGVlcGVyczsN Cj4gPj4+ICAJc3RydWN0IHJwbXNnX2VuZHBvaW50ICpuc19lcHQ7DQo+ID4+PiArI2lmZGVmIENP TkZJR19SUE1TR19WSVJUSU9fQ0hBUg0KPiA+Pj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIHJzdmNzOw0K PiA+Pj4gKyNlbmRpZg0KPiA+Pj4gIH07DQo+ID4+Pg0KPiA+Pj4gIC8qIFRoZSBmZWF0dXJlIGJp dG1hcCBmb3IgdmlydGlvIHJwbXNnICovIEBAIC0xNDEsNiArMTQ1LDM2IEBADQo+ID4+PiBzdHJ1 Y3QgdmlydGlvX3JwbXNnX2NoYW5uZWwgeyAgI2RlZmluZSB0b192aXJ0aW9fcnBtc2dfY2hhbm5l bChfcnBkZXYpDQo+IFwNCj4gPj4+ICAJY29udGFpbmVyX29mKF9ycGRldiwgc3RydWN0IHZpcnRp b19ycG1zZ19jaGFubmVsLCBycGRldikNCj4gPj4+DQo+ID4+PiArI2lmZGVmIENPTkZJR19SUE1T R19WSVJUSU9fQ0hBUg0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAqIHN0cnVjdCB2aXJ0aW9fcnBtc2df cnN2YyAtIHZpcnRpbyBSUE1zZyByZW1vdGUgc2VydmljZQ0KPiA+Pj4gKyAqIEBuYW1lOiBuYW1l IG9mIHRoZSBSUE1zZyByZW1vdGUgc2VydmljZQ0KPiA+Pj4gKyAqIEBhZGRyOiBSUE1zZyBhZGRy ZXNzIG9mIHRoZSByZW1vdGUgc2VydmljZQ0KPiA+Pj4gKyAqIEBlcHQ6ICBsb2NhbCBlbmRwb2lu dCBib3VuZCB0byB0aGUgcmVtb3RlIHNlcnZpY2UNCj4gPj4+ICsgKiBAbm9kZTogbGlzdCBub2Rl DQo+ID4+PiArICovDQo+ID4+PiArc3RydWN0IHZpcnRpb19ycG1zZ19yc3ZjIHsNCj4gPj4+ICsJ Y2hhciBuYW1lW1JQTVNHX05BTUVfU0laRV07DQo+ID4+PiArCXUzMiBhZGRyOw0KPiA+Pj4gKwlz dHJ1Y3QgcnBtc2dfZW5kcG9pbnQgKmVwdDsNCj4gPj4+ICsJc3RydWN0IGxpc3RfaGVhZCBub2Rl Ow0KPiA+Pj4gK307DQo+ID4+PiArDQo+ID4+PiArLyoqDQo+ID4+PiArICogc3RydWN0IHZpcnRp b19ycG1zZ19lcHQgLSB2aXJ0aW8gUlBNc2cgZW5kcG9pbnQNCj4gPj4+ICsgKiBAcnN2YzogUlBN c2cgc2VydmljZQ0KPiA+Pj4gKyAqIEBlcHQ6ICBSUE1zZyBlbmRwb2ludA0KPiA+Pj4gKyAqDQo+ ID4+PiArICovDQo+ID4+PiArc3RydWN0IHZpcnRpb19ycG1zZ19lcHQgew0KPiA+Pj4gKwlzdHJ1 Y3QgdmlydGlvX3JwbXNnX3JzdmMgKnJzdmM7DQo+ID4+PiArCXN0cnVjdCBycG1zZ19lbmRwb2lu dCBlcHQ7DQo+ID4+PiArfTsNCj4gPj4+ICsNCj4gPj4+ICsjZGVmaW5lIHRvX3ZpcnRpb19ycG1z Z19lcHQoX2VwdCkgXA0KPiA+Pj4gKwljb250YWluZXJfb2YoX2VwdCwgc3RydWN0IHZpcnRpb19y cG1zZ19lcHQsIGVwdCkgI2VuZGlmDQo+ID4+PiArDQo+ID4+PiAgLyoNCj4gPj4+ICAgKiBXZSdy ZSBhbGxvY2F0aW5nIGJ1ZmZlcnMgb2YgNTEyIGJ5dGVzIGVhY2ggZm9yIGNvbW11bmljYXRpb25z LiBUaGUNCj4gPj4+ICAgKiBudW1iZXIgb2YgYnVmZmVycyB3aWxsIGJlIGNvbXB1dGVkIGZyb20g dGhlIG51bWJlciBvZiBidWZmZXJzDQo+ID4+PiBzdXBwb3J0ZWQgQEAgLTIxNiw2ICsyNTAsMTk5 IEBAIHJwbXNnX3NnX2luaXQoc3RydWN0IHNjYXR0ZXJsaXN0DQo+ID4+PiAqc2csDQo+ID4+IHZv aWQgKmNwdV9hZGRyLCB1bnNpZ25lZCBpbnQgbGVuKQ0KPiA+Pj4gIAl9DQo+ID4+PiAgfQ0KPiA+ Pj4NCj4gPj4+ICsjaWZkZWYgQ09ORklHX1JQTVNHX1ZJUlRJT19DSEFSDQo+ID4+PiArLyoqDQo+ ID4+PiArICogdmlydGlvX3JwbXNnX2ZpbmRfcnN2Y19ieV9uYW1lIC0gZmluZCB0aGUgYW5ub3Vu Y2VkIHJlbW90ZQ0KPiA+Pj4gK3NlcnZpY2UNCj4gPj4+ICsgKiBAdnJwOiB2aXJ0aW8gcmVtb3Rl IHByb2MgaW5mb3JtYXRpb24NCj4gPj4+ICsgKiBAbmFtZTogcmVtb3RlIHNlcnZpY2UgbmFtZQ0K PiA+Pj4gKyAqDQo+ID4+PiArICogVGhlIGNhbGxlciBpcyBzdXBwb3NlZCB0byBoYXZlIG11dGV4 IGxvY2sgYmVmb3JlIGNhbGxpbmcgdGhpcw0KPiA+Pj4gK2Z1bmN0aW9uDQo+ID4+PiArICoNCj4g Pj4+ICsgKiByZXR1cm4gTlVMTCBpZiBubyByZW1vdGUgc2VydmljZSBoYXMgYmVlbiBmb3VuZCwg b3RoZXJ3aXNlLA0KPiA+Pj4gK3JldHVybg0KPiA+Pj4gKyAqIHRoZSByZW1vdGUgc2VydmljZSBw b2ludGVyLg0KPiA+Pj4gKyAqLw0KPiA+Pj4gK3N0YXRpYyBzdHJ1Y3QgdmlydGlvX3JwbXNnX3Jz dmMgKg0KPiA+Pj4gK3ZpcnRpb19ycG1zZ19maW5kX3JzdmNfYnlfbmFtZShzdHJ1Y3QgdmlydHBy b2NfaW5mbyAqdnJwLCBjaGFyDQo+ID4+PiArKm5hbWUpIHsNCj4gPj4+ICsJc3RydWN0IHZpcnRp b19ycG1zZ19yc3ZjICpyc3ZjOw0KPiA+Pj4gKw0KPiA+Pj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 KHJzdmMsICZ2cnAtPnJzdmNzLCBub2RlKSB7DQo+ID4+PiArCQlpZiAoIXN0cm5jbXAocnN2Yy0+ bmFtZSwgbmFtZSwgUlBNU0dfTkFNRV9TSVpFKSkNCj4gPj4+ICsJCQkvKiByZW1vdGUgc2Vydmlj ZSBoYXMgZm91bmQgKi8NCj4gPj4+ICsJCQlyZXR1cm4gcnN2YzsNCj4gPj4+ICsJfQ0KPiA+Pj4g Kw0KPiA+Pj4gKwlyZXR1cm4gTlVMTDsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArLyoqDQo+ ID4+PiArICogdmlydGlvX3JwbXNnX2NyZWF0ZV9yc3ZjX2J5X25hbWUgLSBjcmVhdGUgcmVtb3Rl IHNlcnZpY2UNCj4gPj4+ICsgKiBAdnJwOiB2aXJ0aW8gcmVtb3RlIHByb2MgaW5mb3JtYXRpb24N Cj4gPj4+ICsgKiBAbmFtZTogcmVtb3RlIHNlcnZpY2UgbmFtZQ0KPiA+Pj4gKyAqDQo+ID4+PiAr ICogVGhlIGNhbGxlciBpcyBzdXBwb3NlZCB0byBoYXZlIG11dGV4IGxvY2sgYmVmb3JlIGNhbGxp bmcgdGhpcw0KPiA+Pj4gK2Z1bmN0aW9uDQo+ID4+PiArICoNCj4gPj4+ICsgKiByZXR1cm4gTlVM TCBpZiByZW1vdGUgc2VydmljZSBjcmVhdGlvbiBmYWlsZWQuIG90aGVyd2lzZSwgcmV0dXJuDQo+ ID4+PiArICogdGhlIHJlbW90ZSBzZXJ2aWNlIHBvaW50ZXIuDQo+ID4+PiArICovDQo+ID4+PiAr c3RhdGljIHN0cnVjdCB2aXJ0aW9fcnBtc2dfcnN2YyAqDQo+ID4+PiArdmlydGlvX3JwbXNnX2Ny ZWF0ZV9yc3ZjX2J5X25hbWUoc3RydWN0IHZpcnRwcm9jX2luZm8gKnZycCwgY2hhcg0KPiA+Pj4g KypuYW1lKSB7DQo+ID4+PiArCXN0cnVjdCB2aXJ0aW9fcnBtc2dfcnN2YyAqcnN2YzsNCj4gPj4+ ICsNCj4gPj4+ICsJcnN2YyA9IHZpcnRpb19ycG1zZ19maW5kX3JzdmNfYnlfbmFtZSh2cnAsIG5h bWUpOw0KPiA+Pj4gKwlpZiAocnN2YykNCj4gPj4+ICsJCXJldHVybiByc3ZjOw0KPiA+PiBIZXJl LCBJIHRoaW5rIHlvdSBicmVhayB0aGUgcG9zc2liaWxpdHkgdG8gaW5zdGFudGlhdGUgc2V2ZXJh bCB0aW1lcw0KPiA+PiB0aGUgc2FtZSBzZXJ2aWNlIC4NCj4gPj4gRm9yIGluc3RhbmNlLCB0b2Rh eSBpZiB5b3UgaGF2ZSAyIGNvbW11bmljYXRpb25zIGluIHBhcmFsbGVsOg0KPiA+PiBDb3JlMV9B cGxsaTEgIDwtLSAiZm9vIiBzZXJ2aWNlIC0tPiBjb3JlMl9hcHBsaTENCj4gPj4gQ29yZTFfQXBs bGkyICA8LS0gImZvbyIgc2VydmljZSAtLT4gY29yZTJfYXBwbGkyDQo+ID4gW1dlbmR5XSBJIGNh biBhZGQgdGhlIHJlbW90ZSBzZXJ2aWNlIGFkZHJlc3MgdG8gdGhlIGlucHV0IGFyZ3VtZW50DQo+ ID4gVGhhdCBpcyB0byBpZGVudGlmeSBhIHJlbW90ZSBzZXJ2aWNlLCBpdCB3aWxsIGJlIHRoZSAi bmFtZSIgKyBzZXJ2aWNlIGFkZHJlc3MuDQo+ID4+DQo+ID4+IDIgd2F5cyB0byBkbyBpdDoNCj4g Pj4gMSkgb25lIHNlcnZpY2UgYW5kIDQgZW5kcG9pbnRzDQo+ID4+ID0+IGlzc3VlIGl0IHRvIGtu b3cgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MuDQo+ID4+IDIpIDIgaW5zdGFuY2VzIG9mIHRoZSBz YW1lIHNlcnZpY2Ugd2l0aCBkZWZhdWx0IGVuZHBvaW50Lg0KPiA+Pg0KPiA+Pj4gKwlyc3ZjID0g a3phbGxvYyhzaXplb2YoKnJzdmMpLCBHRlBfS0VSTkVMKTsNCj4gPj4+ICsJaWYgKCFyc3ZjKQ0K PiA+Pj4gKwkJcmV0dXJuIE5VTEw7DQo+ID4+PiArCXN0cm5jcHkocnN2Yy0+bmFtZSwgbmFtZSwg UlBNU0dfTkFNRV9TSVpFKTsNCj4gPj4+ICsJbGlzdF9hZGRfdGFpbCgmcnN2Yy0+bm9kZSwgJnZy cC0+cnN2Y3MpOw0KPiA+Pj4gKwlyZXR1cm4gcnN2YzsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+ PiArLyoqDQo+ID4+PiArICogdmlydGlvX3JwbXNnX3JlbW92ZV9yc3ZjX2J5X25hbWUgLSByZW1v dmUgcmVtb3RlIHNlcnZpY2UNCj4gPj4+ICsgKiBAdnJwOiB2aXJ0aW8gcmVtb3RlIHByb2MgaW5m b3JtYXRpb24NCj4gPj4+ICsgKiBAbmFtZTogcmVtb3RlIHNlcnZpY2UgbmFtZQ0KPiA+Pj4gKyAq DQo+ID4+PiArICovDQo+ID4+PiArc3RhdGljIHZvaWQNCj4gPj4+ICt2aXJ0aW9fcnBtc2dfcmVt b3ZlX3JzdmNfYnlfbmFtZShzdHJ1Y3QgdmlydHByb2NfaW5mbyAqdnJwLCBjaGFyDQo+ID4+PiAr Km5hbWUpIHsNCj4gPj4+ICsJc3RydWN0IHZpcnRpb19ycG1zZ19yc3ZjICpyc3ZjOw0KPiA+Pj4g KwlzdHJ1Y3QgcnBtc2dfZW5kcG9pbnQgKmVwdDsNCj4gPj4+ICsJc3RydWN0IHZpcnRpb19ycG1z Z19lcHQgKnZlcHQ7DQo+ID4+PiArDQo+ID4+PiArCW11dGV4X2xvY2soJnZycC0+ZW5kcG9pbnRz X2xvY2spOw0KPiA+Pj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJzdmMsICZ2cnAtPnJzdmNzLCBu b2RlKSB7DQo+ID4+PiArCQlpZiAoIXN0cm5jbXAocnN2Yy0+bmFtZSwgbmFtZSwgUlBNU0dfTkFN RV9TSVpFKSkgew0KPiA+Pj4gKwkJCS8qIHJlbW90ZSBzZXJ2aWNlIGhhcyBmb3VuZCwgbm8gbmVl ZCB0bw0KPiA+Pj4gKwkJCSAqIGNyZWF0ZQ0KPiA+Pj4gKwkJCSAqLw0KPiA+Pj4gKwkJCWVwdCA9 IHJzdmMtPmVwdDsNCj4gPj4+ICsJCQlpZiAoZXB0KSB7DQo+ID4+PiArCQkJCXZlcHQgPSB0b192 aXJ0aW9fcnBtc2dfZXB0KGVwdCk7DQo+ID4+PiArCQkJCXZlcHQtPnJzdmMgPSBOVUxMOw0KPiA+ Pj4gKwkJCX0NCj4gPj4+ICsJCQlsaXN0X2RlbCgmcnN2Yy0+bm9kZSk7DQo+ID4+PiArCQkJa2Zy ZWUocnN2Yyk7DQo+ID4+PiArCQkJYnJlYWs7DQo+ID4+PiArCQl9DQo+ID4+PiArCX0NCj4gPj4+ ICsJbXV0ZXhfdW5sb2NrKCZ2cnAtPmVuZHBvaW50c19sb2NrKTsNCj4gPj4+ICt9DQo+ID4+PiAr DQo+ID4+PiArLyoqDQo+ID4+PiArICogdmlydGlvX3JwbXNnX2NyZWF0ZV9yc3ZjIC0gY3JlYXRl IHJlbW90ZSBzZXJ2aWNlIHdpdGggY2hhbm5lbA0KPiA+Pj4gK2luZm9ybWF0aW9uDQo+ID4+PiAr ICogQHZycDogdmlydGlvIHJlbW90ZSBwcm9jIGluZm9ybWF0aW9uDQo+ID4+PiArICogQGNoaW5m bzogY2hhbm5lbCBpbmZvcm1hdGlvbg0KPiA+Pj4gKyAqDQo+ID4+PiArICogcmV0dXJuIHJlbW90 ZSBzZXJ2aWNlIHBvaW50ZXIgaWYgaXQgaXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQ7DQo+ID4+PiAr b3RoZXJ3aXNlLA0KPiA+Pj4gKyAqIHJldHVybiBOVUxMLg0KPiA+Pj4gKyAqLw0KPiA+Pj4gK3N0 YXRpYyBzdHJ1Y3QgdmlydGlvX3JwbXNnX3JzdmMgKg0KPiA+Pj4gK3ZpcnRpb19ycG1zZ19jcmVh dGVfcnN2YyhzdHJ1Y3QgdmlydHByb2NfaW5mbyAqdnJwLA0KPiA+Pj4gKwkJCSBzdHJ1Y3QgcnBt c2dfY2hhbm5lbF9pbmZvICpjaGluZm8pIHsNCj4gPj4+ICsJc3RydWN0IHZpcnRpb19ycG1zZ19y c3ZjICpyc3ZjOw0KPiA+Pj4gKw0KPiA+Pj4gKwltdXRleF9sb2NrKCZ2cnAtPmVuZHBvaW50c19s b2NrKTsNCj4gPj4+ICsJcnN2YyA9IHZpcnRpb19ycG1zZ19jcmVhdGVfcnN2Y19ieV9uYW1lKHZy cCwgY2hpbmZvLT5uYW1lKTsNCj4gPj4+ICsJaWYgKHJzdmMpIHsNCj4gPj4+ICsJCXN0cnVjdCB2 aXJ0aW9fZGV2aWNlICp2ZGV2ID0gdnJwLT52ZGV2Ow0KPiA+Pj4gKw0KPiA+Pj4gKwkJcnN2Yy0+ YWRkciA9IGNoaW5mby0+ZHN0Ow0KPiA+Pj4gKwkJZGV2X2luZm8oJnZkZXYtPmRldiwgIlJlbW90 ZSBoYXMgYW5ub3VuY2VkDQo+ID4+IHNlcnZpY2UgJXMsICVkLlxuIiwNCj4gPj4+ICsJCQkgY2hp bmZvLT5uYW1lLCByc3ZjLT5hZGRyKTsNCj4gPj4+ICsJfQ0KPiA+Pj4gKwltdXRleF91bmxvY2so JnZycC0+ZW5kcG9pbnRzX2xvY2spOw0KPiA+Pj4gKwlyZXR1cm4gcnN2YzsNCj4gPj4+ICt9DQo+ ID4+PiArDQo+ID4+PiArLyoqDQo+ID4+PiArICogdmlydGlvX3JwbXNnX2Fubm91bmNlX2VwdF9j cmVhdGUgLSBhbm5vdW5jZSBlbmRwb2ludCBoYXMgYmVlbg0KPiA+Pj4gK2NyZWF0ZWQNCj4gPj4+ ICsgKiBAZXB0OiBSUE1zZyBlbmRwb2ludA0KPiA+Pj4gKyAqDQo+ID4+PiArICogcmV0dXJuIDAg aWYgc3VjY2VlZGVkLCBvdGhlcndpc2UsIHJldHVybiBlcnJvciBjb2RlLg0KPiA+Pj4gKyAqLw0K PiA+Pj4gK3N0YXRpYyBpbnQgdmlydGlvX3JwbXNnX2Fubm91bmNlX2VwdF9jcmVhdGUoc3RydWN0 IHJwbXNnX2VuZHBvaW50DQo+ID4+PiArKmVwdCkgew0KPiA+Pj4gKwlzdHJ1Y3QgdmlydGlvX3Jw bXNnX2VwdCAqdmVwdCA9IHRvX3ZpcnRpb19ycG1zZ19lcHQoZXB0KTsNCj4gPj4+ICsJc3RydWN0 IHZpcnRpb19ycG1zZ19yc3ZjICpyc3ZjID0gdmVwdC0+cnN2YzsNCj4gPj4+ICsJc3RydWN0IHJw bXNnX2RldmljZSAqcnBkZXYgPSBlcHQtPnJwZGV2Ow0KPiA+Pj4gKwlzdHJ1Y3QgdmlydGlvX3Jw bXNnX2NoYW5uZWwgKnZjaDsNCj4gPj4+ICsJc3RydWN0IHZpcnRwcm9jX2luZm8gKnZycDsNCj4g Pj4+ICsJc3RydWN0IGRldmljZSAqZGV2Ow0KPiA+Pj4gKwlpbnQgZXJyID0gMDsNCj4gPj4+ICsN Cj4gPj4+ICsJaWYgKCFycGRldikNCj4gPj4+ICsJCS8qIElmIHRoZSBlbmRwb2ludCBpcyBub3Qg Y29ubmVjdGVkIHRvIGEgUlBNc2cgZGV2aWNlLA0KPiA+Pj4gKwkJICogbm8gbmVlZCB0byBzZW5k IHRoZSBhbm5vdW5jZW1lbnQuDQo+ID4+PiArCQkgKi8NCj4gPj4+ICsJCXJldHVybiAwOw0KPiA+ Pj4gKwl2Y2ggPSB0b192aXJ0aW9fcnBtc2dfY2hhbm5lbChycGRldik7DQo+ID4+PiArCXZycCA9 IHZjaC0+dnJwOw0KPiA+Pj4gKwlkZXYgPSAmZXB0LT5ycGRldi0+ZGV2Ow0KPiA+Pj4gKwkvKiBu ZWVkIHRvIHRlbGwgcmVtb3RlIHByb2Nlc3NvcidzIG5hbWUgc2VydmljZSBhYm91dCB0aGlzIGNo YW5uZWwgPw0KPiA+PiAqLw0KPiA+Pj4gKwlpZiAodmlydGlvX2hhc19mZWF0dXJlKHZycC0+dmRl diwgVklSVElPX1JQTVNHX0ZfTlMpKSB7DQo+ID4+PiArCQlzdHJ1Y3QgcnBtc2dfbnNfbXNnIG5z bTsNCj4gPj4+ICsNCj4gPj4+ICsJCXN0cm5jcHkobnNtLm5hbWUsIHJzdmMtPm5hbWUsIFJQTVNH X05BTUVfU0laRSk7DQo+ID4+PiArCQluc20uYWRkciA9IGVwdC0+YWRkcjsNCj4gPj4+ICsJCW5z bS5mbGFncyA9IFJQTVNHX05TX0NSRUFURTsNCj4gPj4+ICsNCj4gPj4+ICsJCWVyciA9IHJwbXNn X3NlbmR0byhlcHQsICZuc20sIHNpemVvZihuc20pLA0KPiA+Pj4gKwkJCQkgICBSUE1TR19OU19B RERSKTsNCj4gPj4+ICsJCWlmIChlcnIpDQo+ID4+PiArCQkJZGV2X2VycihkZXYsICJmYWlsZWQg dG8gYW5ub3VuY2Ugc2VydmljZSAlZFxuIiwgZXJyKTsNCj4gPj4+ICsJfQ0KPiA+Pj4gKw0KPiA+ Pj4gKwlyZXR1cm4gZXJyOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICsvKioNCj4gPj4+ICsg KiB2aXJ0aW9fcnBtc2dfYW5ub3VuY2VfZXB0X2Rlc3Ryb3kgLSBhbm5vdW5jZSBlbmRwb2ludCBo YXMgYmVlbg0KPiA+Pj4gK2Rlc3Ryb3llZA0KPiA+Pj4gKyAqIEBlcHQ6IFJQTXNnIGVuZHBvaW50 DQo+ID4+PiArICoNCj4gPj4+ICsgKiByZXR1cm4gMCBpZiBzdWNjZWVkZWQsIG90aGVyd2lzZSwg cmV0dXJuIGVycm9yIGNvZGUuDQo+ID4+PiArICovDQo+ID4+PiArc3RhdGljIGludCB2aXJ0aW9f cnBtc2dfYW5ub3VuY2VfZXB0X2Rlc3Ryb3koc3RydWN0IHJwbXNnX2VuZHBvaW50DQo+ID4+PiAr KmVwdCkgew0KPiA+Pj4gKwlzdHJ1Y3QgdmlydGlvX3JwbXNnX2VwdCAqdmVwdCA9IHRvX3ZpcnRp b19ycG1zZ19lcHQoZXB0KTsNCj4gPj4+ICsJc3RydWN0IHZpcnRpb19ycG1zZ19yc3ZjICpyc3Zj ID0gdmVwdC0+cnN2YzsNCj4gPj4+ICsJc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYgPSBlcHQt PnJwZGV2Ow0KPiA+Pj4gKwlzdHJ1Y3QgdmlydGlvX3JwbXNnX2NoYW5uZWwgKnZjaDsNCj4gPj4+ ICsJc3RydWN0IHZpcnRwcm9jX2luZm8gKnZycDsNCj4gPj4+ICsJc3RydWN0IGRldmljZSAqZGV2 Ow0KPiA+Pj4gKwlpbnQgZXJyID0gMDsNCj4gPj4+ICsNCj4gPj4+ICsJaWYgKCFycGRldikNCj4g Pj4+ICsJCS8qIElmIHRoZSBlbmRwb2ludCBpcyBub3QgY29ubmVjdGVkIHRvIGEgUlBNc2cgZGV2 aWNlLA0KPiA+Pj4gKwkJICogbm8gbmVlZCB0byBzZW5kIHRoZSBhbm5vdW5jZW1lbnQuDQo+ID4+ PiArCQkgKi8NCj4gPj4+ICsJCXJldHVybiAwOw0KPiA+Pj4gKwl2Y2ggPSB0b192aXJ0aW9fcnBt c2dfY2hhbm5lbChycGRldik7DQo+ID4+PiArCXZycCA9IHZjaC0+dnJwOw0KPiA+Pj4gKwlkZXYg PSAmZXB0LT5ycGRldi0+ZGV2Ow0KPiA+Pj4gKwkvKiB0ZWxsIHJlbW90ZSBwcm9jZXNzb3IncyBu YW1lIHNlcnZpY2Ugd2UncmUgcmVtb3ZpbmcgdGhpcw0KPiA+Pj4gK2NoYW5uZWwNCj4gPj4gKi8N Cj4gPj4+ICsJaWYgKHZpcnRpb19oYXNfZmVhdHVyZSh2cnAtPnZkZXYsIFZJUlRJT19SUE1TR19G X05TKSkgew0KPiA+Pj4gKwkJc3RydWN0IHJwbXNnX25zX21zZyBuc207DQo+ID4+PiArDQo+ID4+ PiArCQlzdHJuY3B5KG5zbS5uYW1lLCByc3ZjLT5uYW1lLCBSUE1TR19OQU1FX1NJWkUpOw0KPiA+ Pj4gKwkJbnNtLmFkZHIgPSBlcHQtPmFkZHI7DQo+ID4+PiArCQluc20uZmxhZ3MgPSBSUE1TR19O U19ERVNUUk9ZOw0KPiA+Pj4gKw0KPiA+Pj4gKwkJZXJyID0gcnBtc2dfc2VuZHRvKGVwdCwgJm5z bSwgc2l6ZW9mKG5zbSksDQo+ID4+PiArCQkJCSAgIFJQTVNHX05TX0FERFIpOw0KPiA+Pj4gKwkJ aWYgKGVycikNCj4gPj4+ICsJCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBhbm5vdW5jZSBzZXJ2 aWNlICVkXG4iLCBlcnIpOw0KPiA+Pj4gKwl9DQo+ID4+PiArDQo+ID4+PiArCXJldHVybiBlcnI7 DQo+ID4+PiArfQ0KPiA+Pj4gKyNlbmRpZg0KPiA+Pj4gKw0KPiA+Pj4gIC8qKg0KPiA+Pj4gICAq IF9fZXB0X3JlbGVhc2UoKSAtIGRlYWxsb2NhdGUgYW4gcnBtc2cgZW5kcG9pbnQNCj4gPj4+ICAg KiBAa3JlZjogdGhlIGVwdCdzIHJlZmVyZW5jZSBjb3VudCBAQCAtMjI5LDI2ICs0NTYsNTMgQEAg c3RhdGljDQo+ID4+PiB2b2lkIF9fZXB0X3JlbGVhc2Uoc3RydWN0IGtyZWYgKmtyZWYpICB7DQo+ ID4+PiAgCXN0cnVjdCBycG1zZ19lbmRwb2ludCAqZXB0ID0gY29udGFpbmVyX29mKGtyZWYsIHN0 cnVjdA0KPiA+PiBycG1zZ19lbmRwb2ludCwNCj4gPj4+ICAJCQkJCQkgIHJlZmNvdW50KTsNCj4g Pj4+ICsjaWZkZWYgQ09ORklHX1JQTVNHX1ZJUlRJT19DSEFSDQo+ID4+PiArCXN0cnVjdCB2aXJ0 aW9fcnBtc2dfZXB0ICp2ZXB0ID0gdG9fdmlydGlvX3JwbXNnX2VwdChlcHQpOw0KPiA+Pj4gKwlz dHJ1Y3QgdmlydGlvX3JwbXNnX2NoYW5uZWwgKnZjaDsNCj4gPj4+ICsJc3RydWN0IHZpcnRwcm9j X2luZm8gKnZycDsNCj4gPj4+ICsNCj4gPj4+ICsJaWYgKGVwdC0+cnBkZXYpIHsNCj4gPj4+ICsJ CXZjaCA9IHRvX3ZpcnRpb19ycG1zZ19jaGFubmVsKGVwdC0+cnBkZXYpOw0KPiA+Pj4gKwkJdnJw ID0gdmNoLT52cnA7DQo+ID4+PiArCQkodm9pZCl2aXJ0aW9fcnBtc2dfYW5ub3VuY2VfZXB0X2Rl c3Ryb3koZXB0KTsNCj4gPj4+ICsJCW11dGV4X2xvY2soJnZycC0+ZW5kcG9pbnRzX2xvY2spOw0K PiA+Pj4gKwkJdmVwdC0+cnN2Yy0+ZXB0ID0gTlVMTDsNCj4gPj4+ICsJCW11dGV4X3VubG9jaygm dnJwLT5lbmRwb2ludHNfbG9jayk7DQo+ID4+PiArCX0NCj4gPj4+ICsJa2ZyZWUodmVwdCk7DQo+ ID4+PiArI2Vsc2UNCj4gPj4+ICAJLyoNCj4gPj4+ICAJICogQXQgdGhpcyBwb2ludCBubyBvbmUg aG9sZHMgYSByZWZlcmVuY2UgdG8gZXB0IGFueW1vcmUsDQo+ID4+PiAgCSAqIHNvIHdlIGNhbiBk aXJlY3RseSBmcmVlIGl0DQo+ID4+PiAgCSAqLw0KPiA+Pj4gIAlrZnJlZShlcHQpOw0KPiA+Pj4g KyNlbmRpZg0KPiA+Pj4gIH0NCj4gPj4+DQo+ID4+PiAgLyogZm9yIG1vcmUgaW5mbywgc2VlIGJl bG93IGRvY3VtZW50YXRpb24gb2YgcnBtc2dfY3JlYXRlX2VwdCgpICovDQo+ID4+PiBzdGF0aWMg c3RydWN0IHJwbXNnX2VuZHBvaW50ICpfX3JwbXNnX2NyZWF0ZV9lcHQoc3RydWN0DQo+ID4+PiB2 aXJ0cHJvY19pbmZvDQo+ID4+ICp2cnAsDQo+ID4+PiAgCQkJCQkJIHN0cnVjdCBycG1zZ19kZXZp Y2UgKnJwZGV2LA0KPiA+Pj4gIAkJCQkJCSBycG1zZ19yeF9jYl90IGNiLA0KPiA+Pj4gLQkJCQkJ CSB2b2lkICpwcml2LCB1MzIgYWRkcikNCj4gPj4+ICsJCQkJCQkgdm9pZCAqcHJpdiwNCj4gPj4+ ICsJCQkJCQkgc3RydWN0IHJwbXNnX2NoYW5uZWxfaW5mbw0KPiA+PiAqY2gpDQo+ID4+PiAgew0K PiA+Pj4gIAlpbnQgaWRfbWluLCBpZF9tYXgsIGlkOw0KPiA+Pj4gIAlzdHJ1Y3QgcnBtc2dfZW5k cG9pbnQgKmVwdDsNCj4gPj4+ICsJdTMyIGFkZHIgPSBjaC0+c3JjOw0KPiA+Pj4gIAlzdHJ1Y3Qg ZGV2aWNlICpkZXYgPSBycGRldiA/ICZycGRldi0+ZGV2IDogJnZycC0+dmRldi0+ZGV2Ow0KPiA+ Pj4gKyNpZmRlZiBDT05GSUdfUlBNU0dfVklSVElPX0NIQVINCj4gPj4+ICsJc3RydWN0IHZpcnRp b19ycG1zZ19lcHQgKnZlcHQ7DQo+ID4+PiArCXN0cnVjdCB2aXJ0aW9fcnBtc2dfcnN2YyAqcnN2 YzsNCj4gPj4+DQo+ID4+PiArCXZlcHQgPSBremFsbG9jKHNpemVvZigqdmVwdCksIEdGUF9LRVJO RUwpOw0KPiA+Pj4gKwlpZiAoIXZlcHQpDQo+ID4+PiArCQlyZXR1cm4gTlVMTDsNCj4gPj4+ICsJ ZXB0ID0gJnZlcHQtPmVwdDsNCj4gPj4+ICsjZWxzZQ0KPiA+Pj4gIAllcHQgPSBremFsbG9jKHNp emVvZigqZXB0KSwgR0ZQX0tFUk5FTCk7DQo+ID4+PiAgCWlmICghZXB0KQ0KPiA+Pj4gIAkJcmV0 dXJuIE5VTEw7DQo+ID4+PiArI2VuZGlmDQo+ID4+Pg0KPiA+Pj4gIAlrcmVmX2luaXQoJmVwdC0+ cmVmY291bnQpOw0KPiA+Pj4gIAltdXRleF9pbml0KCZlcHQtPmNiX2xvY2spOw0KPiA+Pj4gQEAg LTI1OSw3ICs1MTMsNyBAQCBzdGF0aWMgc3RydWN0IHJwbXNnX2VuZHBvaW50DQo+ID4+ICpfX3Jw bXNnX2NyZWF0ZV9lcHQoc3RydWN0IHZpcnRwcm9jX2luZm8gKnZycCwNCj4gPj4+ICAJZXB0LT5v cHMgPSAmdmlydGlvX2VuZHBvaW50X29wczsNCj4gPj4+DQo+ID4+PiAgCS8qIGRvIHdlIG5lZWQg dG8gYWxsb2NhdGUgYSBsb2NhbCBhZGRyZXNzID8gKi8NCj4gPj4+IC0JaWYgKGFkZHIgPT0gUlBN U0dfQUREUl9BTlkpIHsNCj4gPj4+ICsJaWYgKGNoLT5zcmMgPT0gUlBNU0dfQUREUl9BTlkpIHsN Cj4gPj4+ICAJCWlkX21pbiA9IFJQTVNHX1JFU0VSVkVEX0FERFJFU1NFUzsNCj4gPj4+ICAJCWlk X21heCA9IDA7DQo+ID4+PiAgCX0gZWxzZSB7DQo+ID4+PiBAQCAtMjc3LDYgKzUzMSwxOSBAQCBz dGF0aWMgc3RydWN0IHJwbXNnX2VuZHBvaW50DQo+ID4+ICpfX3JwbXNnX2NyZWF0ZV9lcHQoc3Ry dWN0IHZpcnRwcm9jX2luZm8gKnZycCwNCj4gPj4+ICAJfQ0KPiA+Pj4gIAllcHQtPmFkZHIgPSBp ZDsNCj4gPj4+DQo+ID4+PiArI2lmZGVmIENPTkZJR19SUE1TR19WSVJUSU9fQ0hBUg0KPiA+Pj4g KwlpZiAoZXB0LT5hZGRyICE9IFJQTVNHX05TX0FERFIpIHsNCj4gPj4+ICsJCXJzdmMgPSB2aXJ0 aW9fcnBtc2dfY3JlYXRlX3JzdmNfYnlfbmFtZSh2cnAsIGNoLT5uYW1lKTsNCj4gPj4+ICsJCWlm ICghcnN2YykNCj4gPj4+ICsJCQlnb3RvIGZyZWVfZXB0Ow0KPiA+Pj4gKwkJdmVwdC0+cnN2YyA9 IHJzdmM7DQo+ID4+PiArCQlyc3ZjLT5lcHQgPSBlcHQ7DQo+ID4+PiArCQlkZXZfaW5mbygmdnJw LT52ZGV2LT5kZXYsICJSUE1zZyBlcHQNCj4gPj4gY3JlYXRlZCwgJXM6JWQsJWQuXG4iLA0KPiA+ Pj4gKwkJCSBjaC0+bmFtZSwgZXB0LT5hZGRyLCByc3ZjLT5hZGRyKTsNCj4gPj4+ICsJCSh2b2lk KXZpcnRpb19ycG1zZ19hbm5vdW5jZV9lcHRfY3JlYXRlKGVwdCk7DQo+ID4+PiArCX0NCj4gPj4+ ICsjZW5kaWYNCj4gPj4+ICsNCj4gPj4+ICAJbXV0ZXhfdW5sb2NrKCZ2cnAtPmVuZHBvaW50c19s b2NrKTsNCj4gPj4+DQo+ID4+PiAgCXJldHVybiBlcHQ7DQo+ID4+PiBAQCAtMjk0LDcgKzU2MSw3 IEBAIHN0YXRpYyBzdHJ1Y3QgcnBtc2dfZW5kcG9pbnQNCj4gPj4+ICp2aXJ0aW9fcnBtc2dfY3Jl YXRlX2VwdChzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldiAgew0KPiA+Pj4gIAlzdHJ1Y3Qgdmly dGlvX3JwbXNnX2NoYW5uZWwgKnZjaCA9IHRvX3ZpcnRpb19ycG1zZ19jaGFubmVsKHJwZGV2KTsN Cj4gPj4+DQo+ID4+PiAtCXJldHVybiBfX3JwbXNnX2NyZWF0ZV9lcHQodmNoLT52cnAsIHJwZGV2 LCBjYiwgcHJpdiwgY2hpbmZvLnNyYyk7DQo+ID4+PiArCXJldHVybiBfX3JwbXNnX2NyZWF0ZV9l cHQodmNoLT52cnAsIHJwZGV2LCBjYiwgcHJpdiwgJmNoaW5mbyk7DQo+ID4+PiAgfQ0KPiA+Pj4N Cj4gPj4+ICAvKioNCj4gPj4+IEBAIC0zOTIsNiArNjU5LDcgQEAgc3RhdGljIHZvaWQgdmlydGlv X3JwbXNnX3JlbGVhc2VfZGV2aWNlKHN0cnVjdA0KPiA+PiBkZXZpY2UgKmRldikNCj4gPj4+ICAJ a2ZyZWUodmNoKTsNCj4gPj4+ICB9DQo+ID4+Pg0KPiA+Pj4gKyNpZm5kZWYgQ09ORklHX1JQTVNH X1ZJUlRJT19DSEFSDQo+ID4+PiAgLyoNCj4gPj4+ICAgKiBjcmVhdGUgYW4gcnBtc2cgY2hhbm5l bCB1c2luZyBpdHMgbmFtZSBhbmQgYWRkcmVzcyBpbmZvLg0KPiA+Pj4gICAqIHRoaXMgZnVuY3Rp b24gd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZSBib3RoIHN0YXRpYyBhbmQgZHluYW1pYyBAQA0KPiA+ Pj4gLTQ0NCw2ICs3MTIsNyBAQCBzdGF0aWMgc3RydWN0IHJwbXNnX2RldmljZQ0KPiA+Pj4gKnJw bXNnX2NyZWF0ZV9jaGFubmVsKHN0cnVjdCB2aXJ0cHJvY19pbmZvICp2cnAsDQo+ID4+Pg0KPiA+ Pj4gIAlyZXR1cm4gcnBkZXY7DQo+ID4+PiAgfQ0KPiA+Pj4gKyNlbmRpZg0KPiA+Pj4NCj4gPj4+ ICAvKiBzdXBlciBzaW1wbGUgYnVmZmVyICJhbGxvY2F0b3IiIHRoYXQgaXMganVzdCBlbm91Z2gg Zm9yIG5vdyAqLw0KPiA+Pj4gc3RhdGljIHZvaWQgKmdldF9hX3R4X2J1ZihzdHJ1Y3QgdmlydHBy b2NfaW5mbyAqdnJwKSBAQCAtNjYwLDgNCj4gPj4+ICs5MjksMjEgQEAgc3RhdGljIGludCBycG1z Z19zZW5kX29mZmNoYW5uZWxfcmF3KHN0cnVjdCBycG1zZ19kZXZpY2UNCj4gPj4+ICpycGRldiwg c3RhdGljIGludCB2aXJ0aW9fcnBtc2dfc2VuZChzdHJ1Y3QgcnBtc2dfZW5kcG9pbnQgKmVwdCwN Cj4gPj4+IHZvaWQgKmRhdGEsIGludCBsZW4pICB7DQo+ID4+PiAgCXN0cnVjdCBycG1zZ19kZXZp Y2UgKnJwZGV2ID0gZXB0LT5ycGRldjsNCj4gPj4+IC0JdTMyIHNyYyA9IGVwdC0+YWRkciwgZHN0 ID0gcnBkZXYtPmRzdDsNCj4gPj4+ICsJdTMyIHNyYyA9IGVwdC0+YWRkcjsNCj4gPj4+ICsjaWZk ZWYgQ09ORklHX1JQTVNHX1ZJUlRJT19DSEFSDQo+ID4+PiArCXN0cnVjdCB2aXJ0aW9fcnBtc2df ZXB0ICp2ZXB0ID0gdG9fdmlydGlvX3JwbXNnX2VwdChlcHQpOw0KPiA+Pj4gKwl1MzIgZHN0ID0g dmVwdC0+cnN2Yy0+YWRkcjsNCj4gPj4+ICsNCj4gPj4+ICsJaWYgKGRzdCA9PSBSUE1TR19BRERS X0FOWSkNCj4gPj4+ICsJCXJldHVybiAtRVBJUEU7DQo+ID4+PiArI2Vsc2UNCj4gPj4+ICsJdTMy IGRzdCA9IHJwZGV2LT5kc3Q7DQo+ID4+PiArI2VuZGlmDQo+ID4+Pg0KPiA+Pj4gKwlpZiAoIXJw ZGV2KSB7DQo+ID4+PiArCQlwcl9lcnIoIiVzLCBlcHQgJXAgcnBkZXYgaXMgTlVMTFxuIiwgX19m dW5jX18sIGVwdCk7DQo+ID4+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4+ICsJfQ0KPiA+Pj4g IAlyZXR1cm4gcnBtc2dfc2VuZF9vZmZjaGFubmVsX3JhdyhycGRldiwgc3JjLCBkc3QsIGRhdGEs IGxlbiwNCj4gPj4+IHRydWUpOyB9DQo+ID4+Pg0KPiA+Pj4gQEAgLTY4NSw3ICs5NjcsMTYgQEAg c3RhdGljIGludCB2aXJ0aW9fcnBtc2dfc2VuZF9vZmZjaGFubmVsKHN0cnVjdA0KPiA+Pj4gcnBt c2dfZW5kcG9pbnQgKmVwdCwgdTMyIHNyYywgIHN0YXRpYyBpbnQNCj4gPj4+IHZpcnRpb19ycG1z Z190cnlzZW5kKHN0cnVjdCBycG1zZ19lbmRwb2ludCAqZXB0LCB2b2lkICpkYXRhLCBpbnQgbGVu KSAgew0KPiA+Pj4gIAlzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldiA9IGVwdC0+cnBkZXY7DQo+ ID4+PiAtCXUzMiBzcmMgPSBlcHQtPmFkZHIsIGRzdCA9IHJwZGV2LT5kc3Q7DQo+ID4+PiArCXUz MiBzcmMgPSBlcHQtPmFkZHI7DQo+ID4+PiArI2lmZGVmIENPTkZJR19SUE1TR19WSVJUSU9fQ0hB Ug0KPiA+Pj4gKwlzdHJ1Y3QgdmlydGlvX3JwbXNnX2VwdCAqdmVwdCA9IHRvX3ZpcnRpb19ycG1z Z19lcHQoZXB0KTsNCj4gPj4+ICsJdTMyIGRzdCA9IHZlcHQtPnJzdmMtPmFkZHI7DQo+ID4+PiAr DQo+ID4+PiArCWlmIChkc3QgPT0gUlBNU0dfQUREUl9BTlkpDQo+ID4+PiArCQlyZXR1cm4gLUVQ SVBFOw0KPiA+Pj4gKyNlbHNlDQo+ID4+PiArCXUzMiBkc3QgPSBycGRldi0+ZHN0Ow0KPiA+Pj4g KyNlbmRpZg0KPiA+Pj4NCj4gPj4+ICAJcmV0dXJuIHJwbXNnX3NlbmRfb2ZmY2hhbm5lbF9yYXco cnBkZXYsIHNyYywgZHN0LCBkYXRhLCBsZW4sDQo+ID4+PiBmYWxzZSk7IH0gQEAgLTgyNCwxMSAr MTExNSwxMyBAQCBzdGF0aWMgaW50IHJwbXNnX25zX2NiKHN0cnVjdA0KPiA+Pj4gcnBtc2dfZGV2 aWNlICpycGRldiwgdm9pZCAqZGF0YSwgaW50IGxlbiwNCj4gPj4+ICAJCSAgICAgICB2b2lkICpw cml2LCB1MzIgc3JjKQ0KPiA+Pj4gIHsNCj4gPj4+ICAJc3RydWN0IHJwbXNnX25zX21zZyAqbXNn ID0gZGF0YTsNCj4gPj4+IC0Jc3RydWN0IHJwbXNnX2RldmljZSAqbmV3Y2g7DQo+ID4+PiAgCXN0 cnVjdCBycG1zZ19jaGFubmVsX2luZm8gY2hpbmZvOw0KPiA+Pj4gIAlzdHJ1Y3QgdmlydHByb2Nf aW5mbyAqdnJwID0gcHJpdjsNCj4gPj4+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gJnZycC0+dmRl di0+ZGV2Ow0KPiA+Pj4gKyNpZm5kZWYgQ09ORklHX1JQTVNHX1ZJUlRJT19DSEFSDQo+ID4+PiAr CXN0cnVjdCBycG1zZ19kZXZpY2UgKm5ld2NoOw0KPiA+Pj4gIAlpbnQgcmV0Ow0KPiA+Pj4gKyNl bmRpZg0KPiA+Pj4NCj4gPj4+ICAjaWYgZGVmaW5lZChDT05GSUdfRFlOQU1JQ19ERUJVRykNCj4g Pj4+ICAJZHluYW1pY19oZXhfZHVtcCgiTlMgYW5ub3VuY2VtZW50OiAiLCBEVU1QX1BSRUZJWF9O T05FLCAxNiwNCj4gPj4gMSwgQEANCj4gPj4+IC04NjMsMTMgKzExNTYsMjUgQEAgc3RhdGljIGlu dCBycG1zZ19uc19jYihzdHJ1Y3QgcnBtc2dfZGV2aWNlDQo+ID4+PiAqcnBkZXYsDQo+ID4+IHZv aWQgKmRhdGEsIGludCBsZW4sDQo+ID4+PiAgCWNoaW5mby5kc3QgPSBtc2ctPmFkZHI7DQo+ID4+ Pg0KPiA+Pj4gIAlpZiAobXNnLT5mbGFncyAmIFJQTVNHX05TX0RFU1RST1kpIHsNCj4gPj4+ICsj aWZkZWYgQ09ORklHX1JQTVNHX1ZJUlRJT19DSEFSDQo+ID4+PiArCQl2aXJ0aW9fcnBtc2dfcmVt b3ZlX3JzdmNfYnlfbmFtZSh2cnAsIGNoaW5mby5uYW1lKTsgI2Vsc2UNCj4gPj4+ICAJCXJldCA9 IHJwbXNnX3VucmVnaXN0ZXJfZGV2aWNlKCZ2cnAtPnZkZXYtPmRldiwgJmNoaW5mbyk7DQo+ID4+ PiAgCQlpZiAocmV0KQ0KPiA+Pj4gIAkJCWRldl9lcnIoZGV2LCAicnBtc2dfZGVzdHJveV9jaGFu bmVsIGZhaWxlZDogJWRcbiIsDQo+ID4+IHJldCk7DQo+ID4+PiArI2VuZGlmDQo+ID4+PiAgCX0g ZWxzZSB7DQo+ID4+PiArI2lmZGVmIENPTkZJR19SUE1TR19WSVJUSU9fQ0hBUg0KPiA+Pj4gKwkJ c3RydWN0IHZpcnRpb19ycG1zZ19yc3ZjICpyc3ZjOw0KPiA+Pj4gKw0KPiA+Pj4gKwkJcnN2YyA9 IHZpcnRpb19ycG1zZ19jcmVhdGVfcnN2Yyh2cnAsICZjaGluZm8pOw0KPiA+Pj4gKwkJaWYgKCFy c3ZjKQ0KPiA+Pj4gKwkJCWRldl9lcnIoZGV2LCAidmlydGlvX3JwbXNnX2NyZWF0ZV9yc3ZjIGZh aWxlZFxuIik7DQo+ID4+ICNlbHNlDQo+ID4+PiAgCQluZXdjaCA9IHJwbXNnX2NyZWF0ZV9jaGFu bmVsKHZycCwgJmNoaW5mbyk7DQo+ID4+PiAgCQlpZiAoIW5ld2NoKQ0KPiA+Pj4gIAkJCWRldl9l cnIoZGV2LCAicnBtc2dfY3JlYXRlX2NoYW5uZWwgZmFpbGVkXG4iKTsNCj4gPj4+ICsjZW5kaWYN Cj4gPj4+ICAJfQ0KPiA+Pj4NCj4gPj4+ICAJcmV0dXJuIDA7DQo+ID4+PiBAQCAtODg1LDYgKzEx OTAsMTAgQEAgc3RhdGljIGludCBycG1zZ19wcm9iZShzdHJ1Y3QgdmlydGlvX2RldmljZQ0KPiAq dmRldikNCj4gPj4+ICAJaW50IGVyciA9IDAsIGk7DQo+ID4+PiAgCXNpemVfdCB0b3RhbF9idWZf c3BhY2U7DQo+ID4+PiAgCWJvb2wgbm90aWZ5Ow0KPiA+Pj4gKyNpZmRlZiBDT05GSUdfUlBNU0df VklSVElPX0NIQVINCj4gPj4+ICsJc3RydWN0IHZpcnRpb19ycG1zZ19jaGFubmVsICp2Y2g7DQo+ ID4+PiArCXN0cnVjdCBycG1zZ19kZXZpY2UgKnJwX2NoYXJfZGV2Ow0KPiA+Pj4gKyNlbmRpZg0K PiA+Pj4NCj4gPj4+ICAJdnJwID0ga3phbGxvYyhzaXplb2YoKnZycCksIEdGUF9LRVJORUwpOw0K PiA+Pj4gIAlpZiAoIXZycCkNCj4gPj4+IEBAIC05NTYsOSArMTI2NSwxNCBAQCBzdGF0aWMgaW50 IHJwbXNnX3Byb2JlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlDQo+ID4+PiAqdmRldikNCj4gPj4+DQo+ ID4+PiAgCS8qIGlmIHN1cHBvcnRlZCBieSB0aGUgcmVtb3RlIHByb2Nlc3NvciwgZW5hYmxlIHRo ZSBuYW1lIHNlcnZpY2UgKi8NCj4gPj4+ICAJaWYgKHZpcnRpb19oYXNfZmVhdHVyZSh2ZGV2LCBW SVJUSU9fUlBNU0dfRl9OUykpIHsNCj4gPj4+ICsJCXN0cnVjdCBycG1zZ19jaGFubmVsX2luZm8g bnNfY2hpbmZvOw0KPiA+Pj4gKw0KPiA+Pj4gKwkJbnNfY2hpbmZvLnNyYyA9IFJQTVNHX05TX0FE RFI7DQo+ID4+PiArCQluc19jaGluZm8uZHN0ID0gUlBNU0dfTlNfQUREUjsNCj4gPj4+ICsJCXN0 cmNweShuc19jaGluZm8ubmFtZSwgIm5hbWVfc2VydmljZSIpOw0KPiA+Pj4gIAkJLyogYSBkZWRp Y2F0ZWQgZW5kcG9pbnQgaGFuZGxlcyB0aGUgbmFtZSBzZXJ2aWNlIG1zZ3MgKi8NCj4gPj4+ICAJ CXZycC0+bnNfZXB0ID0gX19ycG1zZ19jcmVhdGVfZXB0KHZycCwgTlVMTCwgcnBtc2dfbnNfY2Is DQo+ID4+PiAtCQkJCQkJdnJwLCBSUE1TR19OU19BRERSKTsNCj4gPj4+ICsJCQkJCQl2cnAsICZu c19jaGluZm8pOw0KPiA+Pj4gIAkJaWYgKCF2cnAtPm5zX2VwdCkgew0KPiA+Pj4gIAkJCWRldl9l cnIoJnZkZXYtPmRldiwgImZhaWxlZCB0byBjcmVhdGUgdGhlIG5zIGVwdFxuIik7DQo+ID4+PiAg CQkJZXJyID0gLUVOT01FTTsNCj4gPj4+IEBAIC05NjYsNiArMTI4MCwzMiBAQCBzdGF0aWMgaW50 IHJwbXNnX3Byb2JlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlDQo+ICp2ZGV2KQ0KPiA+Pj4gIAkJfQ0K PiA+Pj4gIAl9DQo+ID4+Pg0KPiA+Pj4gKyNpZmRlZiBDT05GSUdfUlBNU0dfVklSVElPX0NIQVIN Cj4gPj4+ICsJdmNoID0ga3phbGxvYyhzaXplb2YoKnZjaCksIEdGUF9LRVJORUwpOw0KPiA+Pj4g KwlpZiAoIXZjaCkgew0KPiA+Pj4gKwkJZXJyID0gLUVOT01FTTsNCj4gPj4+ICsJCWdvdG8gZnJl ZV9jb2hlcmVudDsNCj4gPj4+ICsJfQ0KPiA+Pj4gKw0KPiA+Pj4gKwkvKiBMaW5rIHRoZSBjaGFu bmVsIHRvIG91ciB2cnAgKi8NCj4gPj4+ICsJdmNoLT52cnAgPSB2cnA7DQo+ID4+PiArCS8qIElu aXRpYWxpemUgcmVtb3RlIHNlcnZpY2VzIGxpc3QgKi8NCj4gPj4+ICsJSU5JVF9MSVNUX0hFQUQo JnZycC0+cnN2Y3MpOw0KPiA+Pj4gKw0KPiA+Pj4gKwkvKiBBc3NpZ24gcHVibGljIGluZm9ybWF0 aW9uIHRvIHRoZSBycG1zZ19kZXZpY2UgKi8NCj4gPj4+ICsJcnBfY2hhcl9kZXYgPSAmdmNoLT5y cGRldjsNCj4gPj4+ICsJcnBfY2hhcl9kZXYtPm9wcyA9ICZ2aXJ0aW9fcnBtc2dfb3BzOw0KPiA+ Pj4gKw0KPiA+Pj4gKwlycF9jaGFyX2Rldi0+ZGV2LnBhcmVudCA9ICZ2cnAtPnZkZXYtPmRldjsN Cj4gPj4+ICsJcnBfY2hhcl9kZXYtPmRldi5yZWxlYXNlID0gdmlydGlvX3JwbXNnX3JlbGVhc2Vf ZGV2aWNlOw0KPiA+Pj4gKwllcnIgPSBycG1zZ19jaHJkZXZfcmVnaXN0ZXJfZGV2aWNlKHJwX2No YXJfZGV2KTsNCj4gPj4NCj4gPj4gSSBhbHNvIHRyaWVkIHRvIHVzZSB0aGlzIGNoYXIgZGV2aWNl IHRvIGV4cG9zZSBycG1zZyBzZXJ2aWNlIGZvciBhcHBsaWNhdGlvbi4NCj4gPj4gSXNzdWUgd2l0 aCB0aGlzIGRldmljZSAoZnJvbSBteSBwb2ludCBvZiB2aWV3KSBpcyB0aGF0IGl0IGhhcyB0byBi ZQ0KPiA+PiByZWxpZWQgb24gYSBrZXJuZWwgcnBtc2cgZGV2aWNlLg0KPiA+PiBJIHN1cHBvc2Ug dGhhdCB5b3VyIG5lZWQgaXMgdG8gZXhwb3NlIFJNUFNHIHRvIHVzZXJsYW5kIHdpdGhvdXQNCj4g Pj4gY3JlYXRpbmcgYSBwbGF0Zm9ybSBkcml2ZXIuDQo+ID4+IEluIHRoaXMgY2FzZSBwZXJoYXBz IGFuIGFsdGVybmF0aXZlIGNvdWxkIGJlIHRvIG1vdmUgdGhpcyBwYXJ0IGluDQo+ID4+IHJtcHNn X2NoYXIgdG8gYWxsb3cgdG8gcHJvYmUgaXQgaW4gc3RhbmRhbG9uZS4uLg0KPiA+IFtXZW5keV0g d2l0aCB0aGUgZXhpc3RpbmcgdmlydGlvIHJwbXNnIGltcGxlbWVudGF0aW9uLCBlYWNoIHNlcnZp Y2UNCj4gPiB3aWxsIGJlIGJpbmRlZCB0byBhIHJwbXNnX2RldmljZS4gRWFjaCBycG1zZ19kZXZp Y2UgY2FuIGhhdmUgbXVsdGlwbGUNCj4gc3RhdGljIGVuZHBvaW50cy4NCj4gPiBCdXQgdGhpcyBp cyBkaWZmZXJlbnQgdG8gaG93IHJwbXNnX2NoYXIgaXMgc3VwcG9zZWQgdG8gdXNlLCBycG1zZ19j aGFyDQo+ID4gbG9va3MgdG8gbWUgRWFjaCBlbmRwb2ludCBjcmVhdGVkIGJ5IHJwbXNnX2NoYXIs IGVpdGhlciBkeW5hbWljDQo+ID4gKHdpdGhvdXQga25vd2luZyB0aGUgcmVtb3RlIEFkZHJlc3Mg YmVmb3JlaGFuZCkgb3Igc3RhdGljKHNwZWNpZnlpbmcNCj4gPiB0aGUgcmVtb3RlIGVuZHBvaW50 KSBzaG91bGQgYmUgYmluZGVkIHRvIGEgc2VydmljZS4NCj4gPg0KPiA+IHJwbXNnX2NoYXIgdXNl ciBBUElzIGNhbiBtZWV0IHdoYXQgd2UgbmVlZCwgaG93ZXZlciwgd2UgdXNlcyBycG1zZw0KPiBv dmVyIHZpcnRpby4NCj4gPiBCdXQgYXQgdGhlIG1vbWVudCB0aGUgdmlydGlvX3JwbXNnIGRvZXNu J3Qgc3VwcG9ydCBycG1zZ19jaGFyLg0KPiA+IFlvdSB0YWxrZWQgYWJvdXQgdGhlIGFsbG93IHJw bXNnX2NoYXIgdG8gYmUgcHJvYmVkIGluIHN0YW5kYWxvbmUsIEkNCj4gPiB0aGluayB0aGF0J3Mg Z29vZCBJZGVhLCBob3dldmVyLCB3ZSBuZWVkIHRvIGJpbmQgdGhlIHJwbXNnX2NoYXIgdG8gdGhl DQo+IHZpcnRpbyBycG1zZyBkZXZpY2UuDQo+IHJlbW90ZXByb2MgYmluZHMgcnBtc2cgd2l0aCB2 aXJ0aW8sIHNvIGNhbGxpbmcgcmVnaXN0ZXJfcnBtc2dfZHJpdmVyIHNob3VsZA0KPiBkbyB0aGUg am9iLg0KPiANCj4gPg0KPiA+IEhvdyBhYm91dCB0byBoYXZlICJkcml2ZXJfb3ZlcnJpZGUiIG9m IHJwbXNnX2RldmljZSBleHBvc2VkIHRvDQo+ID4gdXNlcnNwYWNlIHdpdGggY2hhbm5lbCBuYW1l IGluZm9ybWF0aW9uIGF2YWlsYWJsZSAoc3lzZnMpIGFuZCB0aGVuIHdlDQo+ID4gY2FuIGR5bmFt aWNhbGx5IGJpbmQgaXQgdG8gcnBtc2dfY2hhciBkcml2ZXIgZnJvbSB1c2Vyc3BhY2U/IEFuZCB0 aGVuDQo+ID4gd2UgY2FuIGxpbWl0IHRoZSBycG1zZ19jaGFyIGNyZWF0ZSBlbmRwb2ludCBmZWF0 dXJlIHRvIG9ubHkgY3JlYXRlIHN0YXRpYw0KPiBlbmRwb2ludHMgb3ZlciB0aGUgc2FtZSBjaGFu bmVsIGluIGNhc2Ugb2YgdmlydGlvX3JwbXNnIHVzYWdlPw0KPiANCj4gQ3JlYXRpbmcgYSBzcGVj aWZpYyBkZXZpY2UgY291bGQgYmUgYW5vdGhlciBzb2x1dGlvbi4gSSBoYXZlIG5vIG9waW5pb24g b24NCj4gd2hhdCBjb3VsZCBiZSB0aGUgYmVzdCBzdHJhdGVneS4NCj4gQmpvcm4sIHdoYXQgaXMg eW91ciBmZWVsaW5nPw0KW1dlbmR5XSBJIGp1c3Qgbm90aWNlZCB0aGF0IEFudXAgaGFzIHNlbnQg YSBwYXRjaCB0byBhZGQgImRyaXZlcl9vdmVycmlkZSIuDQo+IA0KPiBBIGNvbnN0cmFpbnQgdG8g YWRkIGluIGRlc2lnbiBpcyAgdGhhdCB3ZSBzaG91bGQgbm90IGV4cG9zZSBhbGwgdGhlIHJwbXNn DQo+IGRldmljZSB0byB1c2VybGFuZC4gRXhjZXB0IGlmIGkgbWlzc2VkIHNvbWV0aGluZywgaXQg c2VlbXMgdGhhdCBhY3RpdmF0aW5nDQo+IFJQTVNHX1ZJUlRJT19DSEFSIGNvbmZpZyBleHBvc2Vz IGFsbCB0aGUgcnBtc2cgZGV2aWNlcy4NCltXZW5keV0ganVzdCB3b25kZXIgd2l0aCAiZHJpdmVy X292ZXJyaWRlIiwgY2FuIHdlIGxpbWl0IHRvIGFwcGx5IHRvIHRob3NlDQpSUE1zZyBkZXZpY2Ug d2hpY2ggaXMgbm90IGJvdW5kIHRvIGFueSBkcml2ZXIgeWV0Pw0KDQo+IA0KPiBBbm90aGVyIGFs dGVybmF0aXZlIGlzIHRvIGV4cG9zZSBycG1zZyB0byB1c2VybGFuZCB0cm91Z2ggc29tZSBnZW5l cmljDQo+IGludGVyZmFjZXMgbGlrZSBwcm94eSwgdHR5LCBGUyBwb3NpeC4uLi4NCltXZW5keV0g WWVzLCBidXQgaXQgbmVlZHMgdG8gaGF2ZSBSUE1zZyBkcml2ZXIgZm9yIGVhY2ggb2YgdGhlbS4N Cg0KPiANCj4gVGhhbmtzLA0KPiBBcm5hdWQNCj4gDQo+ID4NCj4gPiBUaGFua3MsDQo+ID4gV2Vu ZHkNCj4gPg0KPiA+Pg0KPiA+PiBSZWdhcmRzDQo+ID4+IEFybmF1ZA0KPiA+Pg0KPiA+Pj4gKwlp ZiAoZXJyKSB7DQo+ID4+PiArCQlrZnJlZSh2Y2gpOw0KPiA+Pj4gKwkJZ290byBmcmVlX2NvaGVy ZW50Ow0KPiA+Pj4gKwl9DQo+ID4+PiArCWRldl9pbmZvKCZ2ZGV2LT5kZXYsICJSZWdpc3RlcmVk IGFzIFJQTXNnIGNoYXIgZGV2aWNlLlxuIik7ICNlbmRpZg0KPiA+Pj4gKw0KPiA+Pj4gIAkvKg0K PiA+Pj4gIAkgKiBQcmVwYXJlIHRvIGtpY2sgYnV0IGRvbid0IG5vdGlmeSB5ZXQgLSB3ZSBjYW4n dCBkbyB0aGlzIGJlZm9yZQ0KPiA+Pj4gIAkgKiBkZXZpY2UgaXMgcmVhZHkuDQo+ID4+PiBAQCAt MTAwOSw2ICsxMzQ5LDkgQEAgc3RhdGljIHZvaWQgcnBtc2dfcmVtb3ZlKHN0cnVjdCB2aXJ0aW9f ZGV2aWNlDQo+ID4+ICp2ZGV2KQ0KPiA+Pj4gIAlzdHJ1Y3QgdmlydHByb2NfaW5mbyAqdnJwID0g dmRldi0+cHJpdjsNCj4gPj4+ICAJc2l6ZV90IHRvdGFsX2J1Zl9zcGFjZSA9IHZycC0+bnVtX2J1 ZnMgKiB2cnAtPmJ1Zl9zaXplOw0KPiA+Pj4gIAlpbnQgcmV0Ow0KPiA+Pj4gKyNpZmRlZiBDT05G SUdfUlBNU0dfVklSVElPX0NIQVINCj4gPj4+ICsJc3RydWN0IHZpcnRpb19ycG1zZ19yc3ZjICpy c3ZjLCAqdG1wOyAjZW5kaWYNCj4gPj4+DQo+ID4+PiAgCXZkZXYtPmNvbmZpZy0+cmVzZXQodmRl dik7DQo+ID4+Pg0KPiA+Pj4gQEAgLTEwMjEsNiArMTM2NCwxMyBAQCBzdGF0aWMgdm9pZCBycG1z Z19yZW1vdmUoc3RydWN0IHZpcnRpb19kZXZpY2UNCj4gPj4+ICp2ZGV2KQ0KPiA+Pj4NCj4gPj4+ ICAJaWRyX2Rlc3Ryb3koJnZycC0+ZW5kcG9pbnRzKTsNCj4gPj4+DQo+ID4+PiArI2lmZGVmIENP TkZJR19SUE1TR19WSVJUSU9fQ0hBUg0KPiA+Pj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUo cnN2YywgdG1wLCAmdnJwLT5yc3Zjcywgbm9kZSkgew0KPiA+Pj4gKwkJbGlzdF9kZWwoJnJzdmMt Pm5vZGUpOw0KPiA+Pj4gKwkJa2ZyZWUocnN2Yyk7DQo+ID4+PiArCX0NCj4gPj4+ICsjZW5kaWYN Cj4gPj4+ICsNCj4gPj4+ICAJdmRldi0+Y29uZmlnLT5kZWxfdnFzKHZycC0+dmRldik7DQo+ID4+ Pg0KPiA+Pj4gIAlkbWFfZnJlZV9jb2hlcmVudCh2ZGV2LT5kZXYucGFyZW50LT5wYXJlbnQsIHRv dGFsX2J1Zl9zcGFjZSwNCj4gPj4+DQo=