From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20051.outbound.protection.outlook.com [40.107.2.51]) by dpdk.org (Postfix) with ESMTP id 8B3781B59D for ; Sun, 17 Jun 2018 12:15:09 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ysGi4fNoLZr7ghfgwL9RwCRNSjaCpD2rRxTAxt8s7WI=; b=WG5DXmUe4cbpbWhvwrUJ0LWxbx3wOtjzTWL21lKOZuS1u83ruEIGBWrfw3ple5G0viOjTDKpWcp1whxeHoRDAbPHJkrdbtMpcmVgQtydlCiNDGaaihHtNuAykmpFehbKsPrtziiHLTIraBrI5sqUH0CBC/uJkcYxfyy+/ysa6zg= Received: from DB7PR05MB4426.eurprd05.prod.outlook.com (52.134.109.15) by DB7PR05MB4411.eurprd05.prod.outlook.com (52.134.109.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.863.19; Sun, 17 Jun 2018 10:15:07 +0000 Received: from DB7PR05MB4426.eurprd05.prod.outlook.com ([fe80::4c94:2db9:b8c5:cc6b]) by DB7PR05MB4426.eurprd05.prod.outlook.com ([fe80::4c94:2db9:b8c5:cc6b%4]) with mapi id 15.20.0863.016; Sun, 17 Jun 2018 10:15:07 +0000 From: Shahaf Shuler To: "Xueming(Steven) Li" , Adrien Mazarguil CC: "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v2 6/7] net/mlx5: probe all port representors Thread-Index: AQHUA7qglxyeqjm7kUStlpk5b3NHZ6RimMCAgAGgu8A= Date: Sun, 17 Jun 2018 10:15:07 +0000 Message-ID: References: <20180525161814.13873-1-adrien.mazarguil@6wind.com> <20180614083047.10812-1-adrien.mazarguil@6wind.com> <20180614083047.10812-7-adrien.mazarguil@6wind.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=shahafs@mellanox.com; x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB7PR05MB4411; 7:IyYQKjJZoIN0Z08dRrLn82gDKDa8f8YZdFsf0jH+zWnF35cm8Qig68y6APNNnl8foIiCLz4Dco1w8mAYi6Sx4bpbh66BHVwtuyhzOxsTXg/WdyViuuH4PWwRekEX3bzQKzJ+IY4N8hludFvQkvGn6gUKJl7rp9hBSvGBpgpXNviv9xPxRJnjR/f3C8si7UW4/SWBXnqIv1wTMuG+j53FmQjUYigzG9n81zj+sTGmSZJi1aXRF8azcsgJwqHJ42dw x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: e7b8c24b-76a5-4f7c-517f-08d5d43b33bb x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(711020)(2017052603328)(7153060)(7193020); SRVR:DB7PR05MB4411; x-ms-traffictypediagnostic: DB7PR05MB4411: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:; x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231254)(944501410)(52105095)(10201501046)(3002001)(6055026)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(6072148)(201708071742011)(7699016); SRVR:DB7PR05MB4411; BCL:0; PCL:0; RULEID:; SRVR:DB7PR05MB4411; x-forefront-prvs: 07063A0A30 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(366004)(396003)(39860400002)(376002)(39380400002)(199004)(189003)(13464003)(97736004)(66066001)(53946003)(3846002)(3280700002)(99286004)(53936002)(2906002)(68736007)(6116002)(5250100002)(7696005)(5890100001)(76176011)(6246003)(4326008)(106356001)(3660700001)(105586002)(81166006)(81156014)(8936002)(8676002)(93886005)(316002)(110136005)(478600001)(74316002)(2900100001)(14454004)(11346002)(476003)(25786009)(446003)(33656002)(9686003)(53546011)(86362001)(486006)(6436002)(59450400001)(26005)(102836004)(55016002)(229853002)(5660300001)(7736002)(6506007)(305945005)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR05MB4411; H:DB7PR05MB4426.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: rUB6SHN1ap2MZ4Zsmtq1/dEqDt0n4YX5hNRmOmFDZtrGmm3UgoVcSkvg5LZPcQpIZMvvpcnub3+cVCxVzWhnALMoiFyQogLq6X4r15whxshLBrEXdjGO19EhZcNGgYS/GeaRqrOWxv7qtiv9oh5IJi3A+dMhLdT6Cjs0ZfPVp7LhfcT81XbGFOCfJ7KImE8F spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: e7b8c24b-76a5-4f7c-517f-08d5d43b33bb X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Jun 2018 10:15:07.8085 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR05MB4411 Subject: Re: [dpdk-dev] [PATCH v2 6/7] net/mlx5: probe all port representors X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jun 2018 10:15:09 -0000 SGkgQWRyaWVuLA0KDQpTYXR1cmRheSwgSnVuZSAxNiwgMjAxOCAxMTo1OCBBTSwgWHVlbWluZyhT dGV2ZW4pIExpOg0KPiBTdWJqZWN0OiBSRTogW2RwZGstZGV2XSBbUEFUQ0ggdjIgNi83XSBuZXQv bWx4NTogcHJvYmUgYWxsIHBvcnQgcmVwcmVzZW50b3JzDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogZGV2IDxkZXYtYm91bmNlc0BkcGRrLm9yZz4gT24gQmVo YWxmIE9mIEFkcmllbiBNYXphcmd1aWwNCj4gPiBTZW50OiBUaHVyc2RheSwgSnVuZSAxNCwgMjAx OCA0OjM1IFBNDQo+ID4gVG86IFNoYWhhZiBTaHVsZXIgPHNoYWhhZnNAbWVsbGFub3guY29tPg0K PiA+IENjOiBkZXZAZHBkay5vcmcNCj4gPiBTdWJqZWN0OiBbZHBkay1kZXZdIFtQQVRDSCB2MiA2 LzddIG5ldC9tbHg1OiBwcm9iZSBhbGwgcG9ydA0KPiA+IHJlcHJlc2VudG9ycw0KPiA+DQo+ID4g UHJvYmUgZXhpc3RpbmcgcG9ydCByZXByZXNlbnRvcnMgaW4gYWRkaXRpb24gdG8gdGhlaXIgbWFz dGVyIGRldmljZSBhbmQNCj4gYXNzb2NpYXRlIHRoZW0gYXV0b21hdGljYWxseS4NCj4gPg0KPiA+ IFRvIGF2b2lkIG5hbWUgY29sbGlzaW9uIGJldHdlZW4gRXRoZXJuZXQgZGV2aWNlcywgdGhlaXIg bmFtZXMgdXNlIHRoZQ0KPiA+IHNhbWUgY29udmVudGlvbiBhcyBpeGdiZSBhbmQgaTQwZSBQTURz LCB0aGF0IGlzLCBpbnN0ZWFkIG9mIG9ubHkgYSBQQ0kNCj4gYWRkcmVzcyBpbiBEQkRGIG5vdGF0 aW9uOg0KPiA+DQo+ID4gLSAibmV0X3tEQkRGfV8wIiBmb3IgbWFzdGVyL3N3aXRjaCBkZXZpY2Vz Lg0KDQpUaGlzIGlzIGJyZWFraW5nIGNvbXBhdGliaWxpdHkgZm9yIGFwcGxpY2F0aW9uIHVzaW5n IHRoZSBkZXZpY2UgbmFtZXMgaW4gb3JkZXIgdG8gYXR0YWNoIHRoZW0gdG8gdGhlIGFwcGxpY2F0 aW9uIChlLmcuIE9WUy1EUERLKS4gDQpCZWZvcmUgdGhpcyBwYXRjaCB0aGUgbmFtaW5nIHNjaGVt ZSBmb3Igbm9uLXJlcHJlc2VudG9yIHBvcnQgaXMgIntEQkRGfSIuIA0KDQpDYW4gd2UgcHJlc2Vy dmUgdGhlIGNvbXBhdGliaWxpdHkgYW5kIGFkZCBhcHByb3ByaWF0ZSBzdWZmaXggZm9yIHRoZSBy ZXByZXNlbnRvciBjYXNlPyANCg0KPiA+IC0gIm5ldF97REJERn1fcmVwcmVzZW50b3Jfe3JlcH0i IHdpdGggInJlcCIgc3RhcnRpbmcgZnJvbSAwIGZvciBwb3J0DQo+ID4gICByZXByZXNlbnRvcnMu DQo+ID4NCj4gPiBCb3RoIG9wdGlvbmFsbHkgc3VmZml4ZWQgd2l0aCAiX3BvcnRfe251bX0iIGlu c3RlYWQgb2YgIiBwb3J0IHtudW19Ig0KPiA+IGZvciBkZXZpY2VzIHRoYXQgZXhwb3NlIHNldmVy YWwgVmVyYnMgcG9ydHMgKG5vdGUgdGhpcyBpcyBuZXZlciB0aGUgY2FzZSBvbg0KPiBtbHg1LCBi dXQga2VwdCBmb3IgaGlzdG9yaWNhbCByZWFzb25zIGZvciB0aGUgdGltZSBiZWluZykuDQo+ID4N Cj4gPiAoUGF0Y2ggYmFzZWQgb24gcHJpb3Igd29yayBmcm9tIFl1YW5oYW4gTGl1KQ0KPiA+DQo+ ID4gU2lnbmVkLW9mZi1ieTogQWRyaWVuIE1hemFyZ3VpbCA8YWRyaWVuLm1hemFyZ3VpbEA2d2lu ZC5jb20+DQo+ID4gLS0NCj4gPiB2MiBjaGFuZ2VzOg0KPiA+DQo+ID4gLSBBZGRlZCByZXByZXNl bnRvciBpbmZvcm1hdGlvbiB0byBkZXZfaW5mb3NfZ2V0KCkuIERQREsgcG9ydCBJRCBvZg0KPiBt YXN0ZXINCj4gPiAgIGRldmljZSBpcyBub3cgc3RvcmVkIGluIHRoZSBwcml2YXRlIHN0cnVjdHVy ZSB0byByZXRyaWV2ZSBpdA0KPiA+ICAgY29udmVuaWVudGx5Lg0KPiA+IC0gTWFzdGVyIGRldmlj ZSBpcyBhc3NpZ25lZCBkdW1teSByZXByZXNlbnRvciBJRCB2YWx1ZSAtMSB0byBiZXR0ZXINCj4g PiAgIGRpc3Rpbmd1aXNoIGZyb20gdGhlIHRoZSBmaXJzdCBhY3R1YWwgcmVwcmVzZW50b3IgcmVw b3J0ZWQgYnkNCj4gPiAgIGRldl9pbmZvc19nZXQoKSBhcyB0aG9zZSBhcmUgaW5kZXhlZCBmcm9t IDAuDQo+ID4gLSBBZGRlZCBSVEVfRVRIX0RFVl9SRVBSRVNFTlRPUiBkZXZpY2UgZmxhZy4NCj4g PiAtLS0NCj4gPiAgZHJpdmVycy9uZXQvbWx4NS9tbHg1LmMgICAgICAgIHwgMTM4ICsrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tDQo+ID4gIGRyaXZlcnMvbmV0L21seDUvbWx4NS5oICAg ICAgICB8ICAgOSArKy0NCj4gPiAgZHJpdmVycy9uZXQvbWx4NS9tbHg1X2V0aGRldi5jIHwgMTUx DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQ0KPiA+ICBkcml2ZXJzL25l dC9tbHg1L21seDVfbWFjLmMgICAgfCAgIDIgKy0NCj4gPiAgZHJpdmVycy9uZXQvbWx4NS9tbHg1 X3N0YXRzLmMgIHwgICA2ICstDQo+ID4gIDUgZmlsZXMgY2hhbmdlZCwgMjUyIGluc2VydGlvbnMo KyksIDU0IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21s eDUvbWx4NS5jIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1LmMgaW5kZXgNCj4gPiA0OThmODBjODku LjcxNmM5ZDlhNSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC9tbHg1L21seDUuYw0KPiA+ ICsrKyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NS5jDQo+ID4gQEAgLTMwNCw2ICszMDQsOSBAQCBt bHg1X2Rldl9jbG9zZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikNCj4gPiAgCWlmIChyZXQpDQo+ ID4gIAkJRFJWX0xPRyhXQVJOSU5HLCAicG9ydCAldSBzb21lIGZsb3dzIHN0aWxsIHJlbWFpbiIs DQo+ID4gIAkJCWRldi0+ZGF0YS0+cG9ydF9pZCk7DQo+ID4gKwlpZiAoIXByaXYtPnJlcHJlc2Vu dG9yICYmDQo+ID4gKwkgICAgcHJpdi0+ZG9tYWluX2lkICE9IFJURV9FVEhfREVWX1NXSVRDSF9E T01BSU5fSURfSU5WQUxJRCkNCj4gPiArCQljbGFpbV96ZXJvKHJ0ZV9ldGhfc3dpdGNoX2RvbWFp bl9mcmVlKHByaXYtPmRvbWFpbl9pZCkpOw0KPiA+ICAJbWVtc2V0KHByaXYsIDAsIHNpemVvZigq cHJpdikpOw0KPiA+ICB9DQo+ID4NCj4gPiBAQCAtNjQ4LDYgKzY1MSwxMCBAQCBtbHg1X3Vhcl9p bml0X3NlY29uZGFyeShzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gKmRldikNCj4gPiAgICogICBWZXJi cyBkZXZpY2UgYXR0cmlidXRlcy4NCj4gPiAgICogQHBhcmFtIHBvcnQNCj4gPiAgICogICBWZXJi cyBwb3J0IHRvIHVzZSAoaW5kZXhlZCBmcm9tIDEpLg0KPiA+ICsgKiBAcGFyYW0gbWFzdGVyDQo+ ID4gKyAqICAgTWFzdGVyIGRldmljZSBpbiBjYXNlIEBwIGlidl9kZXYgaXMgYSBwb3J0IHJlcHJl c2VudG9yLg0KPiA+ICsgKiBAcGFyYW0gcmVwX2lkDQo+ID4gKyAqICAgUmVwcmVzZW50b3IgaWRl bnRpZmllciB3aGVuIEBwIG1hc3RlciBpcyBub24tTlVMTC4NCj4gPiAgICoNCj4gPiAgICogQHJl dHVybg0KPiA+ICAgKiAgIEEgdmFsaWQgRXRoZXJuZXQgZGV2aWNlIG9iamVjdCBvbiBzdWNjZXNz LCBOVUxMIG90aGVyd2lzZSBhbmQNCj4gcnRlX2Vycm5vDQo+ID4gQEAgLTY1OCw3ICs2NjUsOSBA QCBtbHg1X2Rldl9zcGF3bl9vbmUoc3RydWN0IHJ0ZV9kZXZpY2UNCj4gKmRwZGtfZGV2LA0KPiA+ ICAJCSAgIHN0cnVjdCBpYnZfZGV2aWNlICppYnZfZGV2LA0KPiA+ICAJCSAgIGludCB2ZiwNCj4g PiAgCQkgICBjb25zdCBzdHJ1Y3QgaWJ2X2RldmljZV9hdHRyX2V4ICphdHRyLA0KPiA+IC0JCSAg IHVuc2lnbmVkIGludCBwb3J0KQ0KPiA+ICsJCSAgIHVuc2lnbmVkIGludCBwb3J0LA0KPiA+ICsJ CSAgIHN0cnVjdCBydGVfZXRoX2RldiAqbWFzdGVyLA0KPiA+ICsJCSAgIHVuc2lnbmVkIGludCBy ZXBfaWQpDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBpYnZfY29udGV4dCAqY3R4Ow0KPiA+ICAJc3Ry dWN0IGlidl9wb3J0X2F0dHIgcG9ydF9hdHRyOw0KPiA+IEBAIC04MDIsMTEgKzgxMSwxNCBAQCBt bHg1X2Rldl9zcGF3bl9vbmUoc3RydWN0IHJ0ZV9kZXZpY2UNCj4gKmRwZGtfZGV2LA0KPiA+ICAJ CSIgb2xkIE9GRUQvcmRtYS1jb3JlIHZlcnNpb24gb3IgZmlybXdhcmUgY29uZmlndXJhdGlvbiIp Ow0KPiAjZW5kaWYNCj4gPiAgCWNvbmZpZy5tcGxzX2VuID0gbXBsc19lbjsNCj4gPiAtCWlmIChh dHRyLT5vcmlnX2F0dHIucGh5c19wb3J0X2NudCA+IDEpDQo+ID4gLQkJc25wcmludGYobmFtZSwg c2l6ZW9mKG5hbWUpLCAiJXMgcG9ydCAldSIsDQo+ID4gLQkJCSBkcGRrX2Rldi0+bmFtZSwgcG9y dCk7DQo+ID4gKwlpZiAoIW1hc3RlcikNCj4gPiArCQlzbnByaW50ZihuYW1lLCBzaXplb2YobmFt ZSksICJuZXRfJXNfMCIsIGRwZGtfZGV2LQ0KPiA+bmFtZSk7DQo+ID4gIAllbHNlDQo+ID4gLQkJ c25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCAiJXMiLCBkcGRrX2Rldi0+bmFtZSk7DQo+ID4g KwkJc25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCAibmV0XyVzX3JlcHJlc2VudG9yXyV1IiwN Cj4gPiArCQkJIGRwZGtfZGV2LT5uYW1lLCByZXBfaWQpOw0KPiA+ICsJaWYgKGF0dHItPm9yaWdf YXR0ci5waHlzX3BvcnRfY250ID4gMSkNCj4gPiArCQlzbnByaW50ZihuYW1lLCBzaXplb2YobmFt ZSksICIlc19wb3J0XyV1IiwgbmFtZSwgcG9ydCk7DQo+ID4gKwlEUlZfTE9HKERFQlVHLCAibmFt aW5nIEV0aGVybmV0IGRldmljZSBcIiVzXCIiLCBuYW1lKTsNCj4gPiAgCWlmIChydGVfZWFsX3By b2Nlc3NfdHlwZSgpID09IFJURV9QUk9DX1NFQ09OREFSWSkgew0KPiA+ICAJCWV0aF9kZXYgPSBy dGVfZXRoX2Rldl9hdHRhY2hfc2Vjb25kYXJ5KG5hbWUpOw0KPiA+ICAJCWlmIChldGhfZGV2ID09 IE5VTEwpIHsNCj4gPiBAQCAtODgzLDYgKzg5NSwzMCBAQCBtbHg1X2Rldl9zcGF3bl9vbmUoc3Ry dWN0IHJ0ZV9kZXZpY2UNCj4gKmRwZGtfZGV2LA0KPiA+ICAJcHJpdi0+cG9ydCA9IHBvcnQ7DQo+ ID4gIAlwcml2LT5wZCA9IHBkOw0KPiA+ICAJcHJpdi0+bXR1ID0gRVRIRVJfTVRVOw0KPiA+ICsJ LyoNCj4gPiArCSAqIEFsbG9jYXRlIGEgc3dpdGNoIGRvbWFpbiBmb3IgbWFzdGVyIGRldmljZXMg YW5kIHNoYXJlIGl0IHdpdGgNCj4gPiArCSAqIHBvcnQgcmVwcmVzZW50b3JzLg0KPiA+ICsJICov DQo+ID4gKwlpZiAoIW1hc3Rlcikgew0KPiA+ICsJCXByaXYtPnJlcHJlc2VudG9yID0gMDsNCj4g PiArCQlwcml2LT5tYXN0ZXJfaWQgPSAtMTsgLyogVXBkYXRlZCBvbmNlIGtub3duLiAqLw0KPiA+ ICsJCXByaXYtPmRvbWFpbl9pZCA9DQo+IFJURV9FVEhfREVWX1NXSVRDSF9ET01BSU5fSURfSU5W QUxJRDsNCj4gDQo+IERvbWFpbl9pZCB3aWxsIG92ZXJyaWRlIGJlbG93Lg0KPiANCj4gPiArCQlw cml2LT5yZXBfaWQgPSAtMTsgLyogRHVtbXkgdW5pcXVlIHZhbHVlLiAqLw0KPiA+ICsJCWVyciA9 IHJ0ZV9ldGhfc3dpdGNoX2RvbWFpbl9hbGxvYygmcHJpdi0+ZG9tYWluX2lkKTsNCj4gPiArCQlp ZiAoZXJyKSB7DQo+ID4gKwkJCWVyciA9IHJ0ZV9lcnJubzsNCj4gPiArCQkJRFJWX0xPRyhFUlIs ICJ1bmFibGUgdG8gYWxsb2NhdGUgc3dpdGNoIGRvbWFpbjoNCj4gJXMiLA0KPiA+ICsJCQkJc3Ry ZXJyb3IocnRlX2Vycm5vKSk7DQo+ID4gKwkJCWdvdG8gZXJyb3I7DQo+ID4gKwkJfQ0KPiA+ICsJ fSBlbHNlIHsNCj4gPiArCQlwcml2LT5yZXByZXNlbnRvciA9IDE7DQo+ID4gKwkJcHJpdi0+bWFz dGVyX2lkID0NCj4gPiArCQkJKChzdHJ1Y3QgcHJpdiAqKW1hc3Rlci0+ZGF0YS0+ZGV2X3ByaXZh dGUpLQ0KPiA+bWFzdGVyX2lkOw0KPiA+ICsJCXByaXYtPmRvbWFpbl9pZCA9DQo+ID4gKwkJCSgo c3RydWN0IHByaXYgKiltYXN0ZXItPmRhdGEtPmRldl9wcml2YXRlKS0NCj4gPmRvbWFpbl9pZDsN Cj4gPiArCQlwcml2LT5yZXBfaWQgPSByZXBfaWQ7DQo+ID4gKwl9DQo+IA0KPiBEbyB5b3UgdGhp bmsgc3VjaCBpbmZvcm1hdGlvbiBzaG91bGQgYmUgc2V0IGFzIHdlbGwgaW4gc2Vjb25kYXJ5IHBy b2Nlc3M/DQo+IA0KPiA+ICAJZXJyID0gbWx4NV9hcmdzKCZjb25maWcsIGRwZGtfZGV2LT5kZXZh cmdzKTsNCj4gPiAgCWlmIChlcnIpIHsNCj4gPiAgCQllcnIgPSBydGVfZXJybm87DQo+ID4gQEAg LTk2NCw2ICsxMDAwLDE4IEBAIG1seDVfZGV2X3NwYXduX29uZShzdHJ1Y3QgcnRlX2RldmljZQ0K PiAqZHBka19kZXYsDQo+ID4gIAkJZXJyID0gRU5PTUVNOw0KPiA+ICAJCWdvdG8gZXJyb3I7DQo+ ID4gIAl9DQo+ID4gKwkvKg0KPiA+ICsJICogTm93IHRoYXQgZXRoX2RldiBpcyBhbGxvY2F0ZWQg YW5kIGl0cyBwb3J0IElEIGlzIGtub3duLCBtYWtlDQo+ID4gKwkgKiBub24tcmVwcmVzZW50b3Ig cG9ydHMgdGFyZ2V0IHRoZWlyIG93biBwb3J0IElEIGFzIG1hc3RlciBmb3INCj4gPiArCSAqIGNv bnZlbmllbmNlLg0KPiA+ICsJICoNCj4gPiArCSAqIE1hc3RlciBwb3J0IElEIGlzIGFscmVhZHkg c2V0IGZvciBhY3R1YWwgcmVwcmVzZW50b3JzLiBUaG9zZSBvbmx5DQo+ID4gKwkgKiBuZWVkIHRo ZSByaWdodCBkZXZpY2UgZmxhZy4NCj4gPiArCSAqLw0KPiA+ICsJaWYgKCFtYXN0ZXIpDQo+ID4g KwkJcHJpdi0+bWFzdGVyX2lkID0gZXRoX2Rldi0+ZGF0YS0+cG9ydF9pZDsNCj4gPiArCWVsc2UN Cj4gPiArCQlldGhfZGV2LT5kYXRhLT5kZXZfZmxhZ3MgfD0gUlRFX0VUSF9ERVZfUkVQUkVTRU5U T1I7DQo+ID4gIAlldGhfZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZSA9IHByaXY7DQo+ID4gIAlwcml2 LT5kZXZfZGF0YSA9IGV0aF9kZXYtPmRhdGE7DQo+ID4gIAlldGhfZGV2LT5kYXRhLT5tYWNfYWRk cnMgPSBwcml2LT5tYWM7IEBAIC0xMDgzLDggKzExMzEsMTIgQEANCj4gPiBtbHg1X2Rldl9zcGF3 bl9vbmUoc3RydWN0IHJ0ZV9kZXZpY2UgKmRwZGtfZGV2LA0KPiA+ICAJcnRlX3J3bG9ja193cml0 ZV91bmxvY2soJm1seDVfc2hhcmVkX2RhdGEtDQo+ID5tZW1fZXZlbnRfcndsb2NrKTsNCj4gPiAg CXJldHVybiBldGhfZGV2Ow0KPiA+ICBlcnJvcjoNCj4gPiAtCWlmIChwcml2KQ0KPiA+ICsJaWYg KHByaXYpIHsNCj4gPiArCQlpZiAoIXByaXYtPnJlcHJlc2VudG9yICYmDQo+ID4gKwkJICAgIHBy aXYtPmRvbWFpbl9pZCAhPQ0KPiBSVEVfRVRIX0RFVl9TV0lUQ0hfRE9NQUlOX0lEX0lOVkFMSUQp DQo+ID4gKwkJCWNsYWltX3plcm8ocnRlX2V0aF9zd2l0Y2hfZG9tYWluX2ZyZWUocHJpdi0NCj4g PmRvbWFpbl9pZCkpOw0KPiA+ICAJCXJ0ZV9mcmVlKHByaXYpOw0KPiA+ICsJfQ0KPiA+ICAJaWYg KHBkKQ0KPiA+ICAJCWNsYWltX3plcm8obWx4NV9nbHVlLT5kZWFsbG9jX3BkKHBkKSk7DQo+ID4g IAlpZiAoZXRoX2RldikNCj4gPiBAQCAtMTA5NywxMiArMTE0OSwxNCBAQCBtbHg1X2Rldl9zcGF3 bl9vbmUoc3RydWN0IHJ0ZV9kZXZpY2UNCj4gPiAqZHBka19kZXYsICB9DQo+ID4NCj4gPiAgLyoq DQo+ID4gLSAqIFNwYXduIEV0aGVybmV0IGRldmljZXMgZnJvbSBWZXJicyBpbmZvcm1hdGlvbiwg b25lIHBlciBkZXRlY3RlZA0KPiBwb3J0Lg0KPiA+ICsgKiBTcGF3biBFdGhlcm5ldCBkZXZpY2Vz IGZyb20gVmVyYnMgaW5mb3JtYXRpb24sIG9uZSBwZXIgZGV0ZWN0ZWQNCj4gPiArIHBvcnQgYW5k DQo+ID4gKyAqIHBvcnQgcmVwcmVzZW50b3IuDQo+ID4gICAqDQo+ID4gICAqIEBwYXJhbSBkcGRr X2Rldg0KPiA+ICAgKiAgIEJhY2tpbmcgRFBESyBkZXZpY2UuDQo+ID4gICAqIEBwYXJhbSBpYnZf ZGV2DQo+ID4gLSAqICAgVmVyYnMgZGV2aWNlLg0KPiA+ICsgKiAgIE5VTEwtdGVybWluYXRlZCBs aXN0IG9mIFZlcmJzIGRldmljZXMuIEZpcnN0IGVudHJ5IGlzIHRoZSBtYXN0ZXIgZGV2aWNlDQo+ ID4gKyAqICAgKG1hbmRhdG9yeSksIGZvbGxvd2VkIGJ5IG9wdGlvbmFsIHJlcHJlc2VudG9ycy4N Cj4gPiAgICogQHBhcmFtIHZmDQo+ID4gICAqICAgSWYgbm9uemVybywgZW5hYmxlIFZGLXNwZWNp ZmljIGZlYXR1cmVzLg0KPiA+ICAgKg0KPiA+IEBAIC0xMTEzLDE3ICsxMTY3LDIxIEBAIG1seDVf ZGV2X3NwYXduX29uZShzdHJ1Y3QgcnRlX2RldmljZQ0KPiAqZHBka19kZXYsDQo+ID4gICAqLw0K PiA+ICBzdGF0aWMgc3RydWN0IHJ0ZV9ldGhfZGV2ICoqDQo+ID4gIG1seDVfZGV2X3NwYXduKHN0 cnVjdCBydGVfZGV2aWNlICpkcGRrX2RldiwNCj4gPiAtCSAgICAgICBzdHJ1Y3QgaWJ2X2Rldmlj ZSAqaWJ2X2RldiwNCj4gPiArCSAgICAgICBzdHJ1Y3QgaWJ2X2RldmljZSAqKmlidl9kZXYsDQo+ ID4gIAkgICAgICAgaW50IHZmKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgcnRlX2V0aF9kZXYgKipl dGhfbGlzdCA9IE5VTEw7DQo+ID4gIAlzdHJ1Y3QgaWJ2X2NvbnRleHQgKmN0eDsNCj4gPiAgCXN0 cnVjdCBpYnZfZGV2aWNlX2F0dHJfZXggYXR0cjsNCj4gPiArCXZvaWQgKnRtcDsNCj4gPiAgCXVu c2lnbmVkIGludCBpOw0KPiA+ICsJdW5zaWduZWQgaW50IGogPSAwOw0KPiA+ICsJdW5zaWduZWQg aW50IG4gPSAwOw0KPiA+ICAJaW50IHJldDsNCj4gPg0KPiA+ICtuZXh0Og0KPiA+ICAJZXJybm8g PSAwOw0KPiA+IC0JY3R4ID0gbWx4NV9nbHVlLT5vcGVuX2RldmljZShpYnZfZGV2KTsNCj4gPiAr CWN0eCA9IG1seDVfZ2x1ZS0+b3Blbl9kZXZpY2UoaWJ2X2RldltqXSk7DQo+ID4gIAlpZiAoIWN0 eCkgew0KPiA+ICAJCXJ0ZV9lcnJubyA9IGVycm5vID8gZXJybm8gOiBFTk9ERVY7DQo+ID4gIAkJ aWYgKHJ0ZV9lcnJubyA9PSBFTk9ERVYpDQo+ID4gQEAgLTExMzIsNyArMTE5MCw3IEBAIG1seDVf ZGV2X3NwYXduKHN0cnVjdCBydGVfZGV2aWNlICpkcGRrX2RldiwNCj4gPiAgCQllbHNlDQo+ID4g IAkJCURSVl9MT0coRVJSLA0KPiA+ICAJCQkJImNhbm5vdCB1c2UgZGV2aWNlLCBhcmUgZHJpdmVy cyB1cCB0byBkYXRlPyIpOw0KPiA+IC0JCXJldHVybiBOVUxMOw0KPiA+ICsJCWdvdG8gZXJyb3I7 DQo+ID4gIAl9DQo+ID4gIAlyZXQgPSBtbHg1X2dsdWUtPnF1ZXJ5X2RldmljZV9leChjdHgsIE5V TEwsICZhdHRyKTsNCj4gPiAgCW1seDVfZ2x1ZS0+Y2xvc2VfZGV2aWNlKGN0eCk7DQo+ID4gQEAg LTExNDAsMzQgKzExOTgsNDIgQEAgbWx4NV9kZXZfc3Bhd24oc3RydWN0IHJ0ZV9kZXZpY2UNCj4g KmRwZGtfZGV2LA0KPiA+ICAJCXJ0ZV9lcnJubyA9IHJldDsNCj4gPiAgCQlEUlZfTE9HKEVSUiwg InVuYWJsZSB0byBxdWVyeSBkZXZpY2UgaW5mb3JtYXRpb246ICVzIiwNCj4gPiAgCQkJc3RyZXJy b3IocnRlX2Vycm5vKSk7DQo+ID4gLQkJcmV0dXJuIE5VTEw7DQo+ID4gKwkJZ290byBlcnJvcjsN Cj4gPiAgCX0NCj4gPiAtCURSVl9MT0coSU5GTywgIiV1IHBvcnQocykgZGV0ZWN0ZWQiLA0KPiBh dHRyLm9yaWdfYXR0ci5waHlzX3BvcnRfY250KTsNCj4gPiAtCWV0aF9saXN0ID0gbWFsbG9jKHNp emVvZigqZXRoX2xpc3QpICoNCj4gPiAtCQkJICAoYXR0ci5vcmlnX2F0dHIucGh5c19wb3J0X2Nu dCArIDEpKTsNCj4gPiAtCWlmICghZXRoX2xpc3QpIHsNCj4gPiArCURSVl9MT0coSU5GTywgIiV1 IHBvcnQocykgZGV0ZWN0ZWQgb24gXCIlc1wiIiwNCj4gPiArCQlhdHRyLm9yaWdfYXR0ci5waHlz X3BvcnRfY250LCBpYnZfZGV2W2pdLT5uYW1lKTsNCj4gPiArCXRtcCA9IHJlYWxsb2MoZXRoX2xp c3QsIHNpemVvZigqZXRoX2xpc3QpICoNCj4gPiArCQkgICAgICAobiArIGF0dHIub3JpZ19hdHRy LnBoeXNfcG9ydF9jbnQgKyAxKSk7DQo+ID4gKwlpZiAoIXRtcCkgew0KPiA+ICAJCXJ0ZV9lcnJu byA9IGVycm5vOw0KPiA+IC0JCXJldHVybiBOVUxMOw0KPiA+ICsJCWdvdG8gZXJyb3I7DQo+ID4g IAl9DQo+ID4gKwlldGhfbGlzdCA9IHRtcDsNCj4gPiAgCWZvciAoaSA9IDA7IGkgPCBhdHRyLm9y aWdfYXR0ci5waHlzX3BvcnRfY250OyArK2kpIHsNCj4gPiAtCQlldGhfbGlzdFtpXSA9IG1seDVf ZGV2X3NwYXduX29uZShkcGRrX2RldiwgaWJ2X2RldiwgdmYsDQo+ID4gLQkJCQkJCSAmYXR0ciwg aSArIDEpOw0KPiA+IC0JCWlmIChldGhfbGlzdFtpXSkNCj4gPiAtCQkJY29udGludWU7DQo+ID4g LQkJLyogU2F2ZSBydGVfZXJybm8gYW5kIHJvbGwgYmFjayBpbiBjYXNlIG9mIGZhaWx1cmUuICov DQo+ID4gLQkJcmV0ID0gcnRlX2Vycm5vOw0KPiA+IC0JCXdoaWxlIChpLS0pIHsNCj4gPiAtCQkJ bWx4NV9kZXZfY2xvc2UoZXRoX2xpc3RbaV0pOw0KPiA+IC0JCQlpZiAocnRlX2VhbF9wcm9jZXNz X3R5cGUoKSA9PSBSVEVfUFJPQ19QUklNQVJZKQ0KPiA+IC0JCQkJcnRlX2ZyZWUoZXRoX2xpc3Rb aV0tPmRhdGEtPmRldl9wcml2YXRlKTsNCj4gPiAtCQkJY2xhaW1femVybyhydGVfZXRoX2Rldl9y ZWxlYXNlX3BvcnQoZXRoX2xpc3RbaV0pKTsNCj4gPiAtCQl9DQo+ID4gLQkJZnJlZShldGhfbGlz dCk7DQo+ID4gLQkJcnRlX2Vycm5vID0gcmV0Ow0KPiA+IC0JCXJldHVybiBOVUxMOw0KPiA+ICsJ CWV0aF9saXN0W25dID0gbWx4NV9kZXZfc3Bhd25fb25lKGRwZGtfZGV2LCBpYnZfZGV2W2pdLA0K PiB2ZiwNCj4gPiArCQkJCQkJICZhdHRyLCBpICsgMSwNCj4gPiArCQkJCQkJIGogPyBldGhfbGlz dFswXSA6IE5VTEwsDQo+ID4gKwkJCQkJCSBqIC0gMSk7DQoNClRoZSByZXByZXNlbnRvciBpZCBp cyBhY2NvcmRpbmcgdG8gdGhlIHNvcnQgbWFkZSBieSBxc29ydCAoYmFzZWQgb24gZGV2aWNlIG5h bWVzKS4NCkEgYmV0dGVyIHdheSBtYXkgYmUgdG8gc2V0IGl0IGFjY29yZGluZyB0byB0aGUgc3lz ZnMgaW5mb3JtYXRpb24sIGxpa2UgeW91IGRvIGluIHRoZSBtbHg1X2dldF9pZm5hbWUgZnVuY3Rp b24uDQpXaGF0IGRvIHlvdSB0aGluaz8gDQoNCj4gPiArCQlpZiAoIWV0aF9saXN0W25dKQ0KPiA+ ICsJCQlnb3RvIGVycm9yOw0KPiA+ICsJCSsrbjsNCj4gPiAgCX0NCj4gPiAtCWV0aF9saXN0W2ld ID0gTlVMTDsNCj4gPiArCWlmIChpYnZfZGV2Wysral0pDQo+ID4gKwkJZ290byBuZXh0Ow0KPiA+ ICsJZXRoX2xpc3Rbbl0gPSBOVUxMOw0KPiA+ICAJcmV0dXJuIGV0aF9saXN0Ow0KPiA+ICtlcnJv cjoNCj4gPiArCS8qIFNhdmUgcnRlX2Vycm5vIGFuZCByb2xsIGJhY2sgaW4gY2FzZSBvZiBmYWls dXJlLiAqLw0KPiA+ICsJcmV0ID0gcnRlX2Vycm5vOw0KPiA+ICsJd2hpbGUgKG4tLSkgew0KPiA+ ICsJCW1seDVfZGV2X2Nsb3NlKGV0aF9saXN0W25dKTsNCj4gPiArCQlpZiAocnRlX2VhbF9wcm9j ZXNzX3R5cGUoKSA9PSBSVEVfUFJPQ19QUklNQVJZKQ0KPiA+ICsJCQlydGVfZnJlZShldGhfbGlz dFtuXS0+ZGF0YS0+ZGV2X3ByaXZhdGUpOw0KPiA+ICsJCWNsYWltX3plcm8ocnRlX2V0aF9kZXZf cmVsZWFzZV9wb3J0KGV0aF9saXN0W25dKSk7DQo+ID4gKwl9DQo+ID4gKwlmcmVlKGV0aF9saXN0 KTsNCj4gPiArCXJ0ZV9lcnJubyA9IHJldDsNCj4gPiArCXJldHVybiBOVUxMOw0KPiA+ICB9DQo+ ID4NCj4gPiAgLyoqDQo+ID4gQEAgLTEyODIsNyArMTM0OCw3IEBAIG1seDVfcGNpX3Byb2JlKHN0 cnVjdCBydGVfcGNpX2RyaXZlciAqcGNpX2Rydg0KPiBfX3J0ZV91bnVzZWQsDQo+ID4gIAkJCQlp YnZfbWF0Y2hbcmV0XS0+bmFtZSwgcmV0IC0gMSk7DQo+ID4gIAl9DQo+ID4gIAlpZiAobikNCj4g PiAtCQlldGhfbGlzdCA9IG1seDVfZGV2X3NwYXduKCZwY2lfZGV2LT5kZXZpY2UsDQo+IGlidl9t YXRjaFswXSwgdmYpOw0KPiA+ICsJCWV0aF9saXN0ID0gbWx4NV9kZXZfc3Bhd24oJnBjaV9kZXYt PmRldmljZSwgaWJ2X21hdGNoLA0KPiB2Zik7DQo+ID4gIAltbHg1X2dsdWUtPmZyZWVfZGV2aWNl X2xpc3QoaWJ2X2xpc3QpOw0KPiA+ICAJaWYgKCFuKSB7DQo+ID4gIAkJRFJWX0xPRyhXQVJOSU5H LA0KPiA+IEBAIC0xMzAyLDcgKzEzNjgsMTEgQEAgbWx4NV9wY2lfcHJvYmUoc3RydWN0IHJ0ZV9w Y2lfZHJpdmVyICpwY2lfZHJ2DQo+IF9fcnRlX3VudXNlZCwNCj4gPiAgCQlyZXQgPSAtcnRlX2Vy cm5vOw0KPiA+ICAJfSBlbHNlIHsNCj4gPiAgCQlmb3IgKHJldCA9IDA7IGV0aF9saXN0W3JldF07 ICsrcmV0KSB7DQo+ID4gKwkJCXVpbnQzMl90IHJlc3RvcmUgPSBldGhfbGlzdFtyZXRdLT5kYXRh LT5kZXZfZmxhZ3M7DQo+ID4gKw0KPiA+ICAJCQlydGVfZXRoX2NvcHlfcGNpX2luZm8oZXRoX2xp c3RbcmV0XSwgcGNpX2Rldik7DQo+ID4gKwkJCS8qIFJlc3RvcmUgbm9uLVBDSSBmbGFncyBjbGVh cmVkIGJ5IHRoZSBhYm92ZSBjYWxsLiAqLw0KPiA+ICsJCQlldGhfbGlzdFtyZXRdLT5kYXRhLT5k ZXZfZmxhZ3MgfD0gcmVzdG9yZTsNCj4gPiAgCQkJcnRlX2V0aF9kZXZfcHJvYmluZ19maW5pc2go ZXRoX2xpc3RbcmV0XSk7DQo+ID4gIAkJfQ0KPiA+ICAJCXJldCA9IDA7DQo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NS5oIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1LmggaW5k ZXgNCj4gPiA5OTdiMDRhMzMuLjBmZTQ2NzE0MCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25l dC9tbHg1L21seDUuaA0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NS5oDQo+ID4gQEAg LTE2MSw2ICsxNjEsMTAgQEAgc3RydWN0IHByaXYgew0KPiA+ICAJdWludDE2X3QgbXR1OyAvKiBD b25maWd1cmVkIE1UVS4gKi8NCj4gPiAgCXVpbnQ4X3QgcG9ydDsgLyogUGh5c2ljYWwgcG9ydCBu dW1iZXIuICovDQo+ID4gIAl1bnNpZ25lZCBpbnQgaXNvbGF0ZWQ6MTsgLyogV2hldGhlciBpc29s YXRlZCBtb2RlIGlzIGVuYWJsZWQuICovDQo+ID4gKwl1bnNpZ25lZCBpbnQgcmVwcmVzZW50b3I6 MTsgLyogRGV2aWNlIGlzIGEgcG9ydCByZXByZXNlbnRvci4gKi8NCg0KV2h5IHdlIG5lZWQgYWJv dmUgZmxhZz8gV2h5IGNhbid0IHdlIHVzZSBSVEVfRVRIX0RFVl9SRVBSRVNFTlRPUiBmcm9tIGV0 aF9kZXYtPmRhdGEtPmRldl9mbGFncy4gDQoNCj4gPiArCXVpbnQxNl90IG1hc3Rlcl9pZDsgLyog RFBESyBwb3J0IElEIG9mIHN3aXRjaCBkb21haW4gbWFzdGVyLiAqLw0KPiA+ICsJdWludDE2X3Qg ZG9tYWluX2lkOyAvKiBTd2l0Y2ggZG9tYWluIGlkZW50aWZpZXIuICovDQo+ID4gKwl1bnNpZ25l ZCBpbnQgcmVwX2lkOyAvKiBQb3J0IHJlcHJlc2VudG9yIGlkZW50aWZpZXIuICovDQo+ID4gIAkv KiBSWC9UWCBxdWV1ZXMuICovDQo+ID4gIAl1bnNpZ25lZCBpbnQgcnhxc19uOyAvKiBSWCBxdWV1 ZXMgYXJyYXkgc2l6ZS4gKi8NCj4gPiAgCXVuc2lnbmVkIGludCB0eHFzX247IC8qIFRYIHF1ZXVl cyBhcnJheSBzaXplLiAqLyBAQCAtMjA5LDkgKzIxMywxMg0KPiA+IEBAIGludCBtbHg1X2dldGVu dl9pbnQoY29uc3QgY2hhciAqKTsNCj4gPg0KPiA+ICAvKiBtbHg1X2V0aGRldi5jICovDQo+ID4N Cj4gPiAraW50IG1seDVfZ2V0X21hc3Rlcl9pZm5hbWUoY29uc3Qgc3RydWN0IHJ0ZV9ldGhfZGV2 ICpkZXYsDQo+ID4gKwkJCSAgIGNoYXIgKCppZm5hbWUpW0lGX05BTUVTSVpFXSk7DQo+ID4gIGlu dCBtbHg1X2dldF9pZm5hbWUoY29uc3Qgc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIGNoYXINCj4g PiAoKmlmbmFtZSlbSUZfTkFNRVNJWkVdKTsgIGludCBtbHg1X2lmaW5kZXgoY29uc3Qgc3RydWN0 IHJ0ZV9ldGhfZGV2DQo+ID4gKmRldik7IC1pbnQgbWx4NV9pZnJlcShjb25zdCBzdHJ1Y3QgcnRl X2V0aF9kZXYgKmRldiwgaW50IHJlcSwgc3RydWN0DQo+ID4gaWZyZXEgKmlmcik7DQo+ID4gK2lu dCBtbHg1X2lmcmVxKGNvbnN0IHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBpbnQgcmVxLCBzdHJ1 Y3QgaWZyZXEgKmlmciwNCj4gPiArCSAgICAgICBpbnQgbWFzdGVyKTsNCj4gPiAgaW50IG1seDVf Z2V0X210dShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDE2X3QgKm10dSk7ICBpbnQNCj4g PiBtbHg1X3NldF9mbGFncyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdW5zaWduZWQgaW50IGtl ZXAsDQo+ID4gIAkJICAgdW5zaWduZWQgaW50IGZsYWdzKTsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvbWx4NS9tbHg1X2V0aGRldi5jDQo+ID4gYi9kcml2ZXJzL25ldC9tbHg1L21seDVf ZXRoZGV2LmMgaW5kZXggOTA0ODhhZjMzLi45ZDU3OTY1OWUgMTAwNjQ0DQo+ID4gLS0tIGEvZHJp dmVycy9uZXQvbWx4NS9tbHg1X2V0aGRldi5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9t bHg1X2V0aGRldi5jDQo+ID4gQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IGV0aHRvb2xfbGlua19z ZXR0aW5ncyB7ICAjZW5kaWYNCj4gPg0KPiA+ICAvKioNCj4gPiAtICogR2V0IGludGVyZmFjZSBu YW1lIGZyb20gcHJpdmF0ZSBzdHJ1Y3R1cmUuDQo+ID4gKyAqIEdldCBtYXN0ZXIgaW50ZXJmYWNl IG5hbWUgZnJvbSBwcml2YXRlIHN0cnVjdHVyZS4NCj4gPiAgICoNCj4gPiAgICogQHBhcmFtW2lu XSBkZXYNCj4gPiAgICogICBQb2ludGVyIHRvIEV0aGVybmV0IGRldmljZS4NCj4gPiBAQCAtMTA0 LDcgKzEwNCw4IEBAIHN0cnVjdCBldGh0b29sX2xpbmtfc2V0dGluZ3Mgew0KPiA+ICAgKiAgIDAg b24gc3VjY2VzcywgYSBuZWdhdGl2ZSBlcnJubyB2YWx1ZSBvdGhlcndpc2UgYW5kIHJ0ZV9lcnJu byBpcyBzZXQuDQo+ID4gICAqLw0KPiA+ICBpbnQNCj4gPiAtbWx4NV9nZXRfaWZuYW1lKGNvbnN0 IHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBjaGFyDQo+ID4gKCppZm5hbWUpW0lGX05BTUVTSVpF XSkNCj4gPiArbWx4NV9nZXRfbWFzdGVyX2lmbmFtZShjb25zdCBzdHJ1Y3QgcnRlX2V0aF9kZXYg KmRldiwNCj4gPiArCQkgICAgICAgY2hhciAoKmlmbmFtZSlbSUZfTkFNRVNJWkVdKQ0KPiA+ICB7 DQo+ID4gIAlzdHJ1Y3QgcHJpdiAqcHJpdiA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4g IAlESVIgKmRpcjsNCj4gPiBAQCAtMTc5LDYgKzE4MCwxMTMgQEAgbWx4NV9nZXRfaWZuYW1lKGNv bnN0IHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+IGNoYXIgKCppZm5hbWUpW0lGX05BTUVT SVpFXSkgIH0NCj4gPg0KPiA+ICAvKioNCj4gPiArICogR2V0IGludGVyZmFjZSBuYW1lIGZyb20g cHJpdmF0ZSBzdHJ1Y3R1cmUuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgaXMgYSBwb3J0IHJlcHJl c2VudG9yLWF3YXJlIHZlcnNpb24gb2YgbWx4NV9nZXRfbWFzdGVyX2lmbmFtZSgpLg0KPiA+ICsg Kg0KPiA+ICsgKiBAcGFyYW1baW5dIGRldg0KPiA+ICsgKiAgIFBvaW50ZXIgdG8gRXRoZXJuZXQg ZGV2aWNlLg0KPiA+ICsgKiBAcGFyYW1bb3V0XSBpZm5hbWUNCj4gPiArICogICBJbnRlcmZhY2Ug bmFtZSBvdXRwdXQgYnVmZmVyLg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAg MCBvbiBzdWNjZXNzLCBhIG5lZ2F0aXZlIGVycm5vIHZhbHVlIG90aGVyd2lzZSBhbmQgcnRlX2Vy cm5vIGlzIHNldC4NCj4gPiArICovDQo+ID4gK2ludA0KPiA+ICttbHg1X2dldF9pZm5hbWUoY29u c3Qgc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIGNoYXINCj4gPiArKCppZm5hbWUpW0lGX05BTUVT SVpFXSkgew0KPiA+ICsJc3RydWN0IHByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRl Ow0KPiA+ICsJaW50IHJldDsNCj4gPiArCWNoYXIgbWFzdGVyW0lGX05BTUVTSVpFXTsNCj4gPiAr CUZJTEUgKmZpbGU7DQo+ID4gKwlESVIgKmRpcjsNCj4gPiArCXVpbnQ2NF90IHBoeXNfc3dpdGNo X2lkOw0KPiA+ICsNCj4gPiArCWlmICghcHJpdi0+cmVwcmVzZW50b3IpDQo+ID4gKwkJcmV0dXJu IG1seDVfZ2V0X21hc3Rlcl9pZm5hbWUoZGV2LCBpZm5hbWUpOw0KPiA+ICsJcmV0ID0gbWx4NV9n ZXRfbWFzdGVyX2lmbmFtZShkZXYsICZtYXN0ZXIpOw0KPiA+ICsJaWYgKHJldCkNCj4gPiArCQly ZXR1cm4gcmV0Ow0KPiA+ICsJew0KPiA+ICsJCU1LU1RSKHBhdGgsICIlcy9kZXZpY2UvbmV0LyVz L3BoeXNfc3dpdGNoX2lkIiwNCj4gPiArCQkgICAgICBwcml2LT5pYmRldl9wYXRoLCBtYXN0ZXIp Ow0KPiA+ICsNCj4gPiArCQlmaWxlID0gZm9wZW4ocGF0aCwgInJiIik7DQo+ID4gKwl9DQo+ID4g KwlpZiAoIWZpbGUpIHsNCj4gPiArCQlydGVfZXJybm8gPSBlcnJubzsNCj4gPiArCQlyZXR1cm4g LXJ0ZV9lcnJubzsNCj4gPiArCX0NCj4gPiArCXJldCA9IGZzY2FuZihmaWxlLCAiJSIgU0NOeDY0 LCAmcGh5c19zd2l0Y2hfaWQpOw0KPiA+ICsJZmNsb3NlKGZpbGUpOw0KPiA+ICsJaWYgKHJldCAh PSAxKSB7DQo+ID4gKwkJcnRlX2Vycm5vID0gRUlOVkFMOw0KPiA+ICsJCXJldHVybiAtcnRlX2Vy cm5vOw0KPiA+ICsJfQ0KPiA+ICsJew0KPiA+ICsJCU1LU1RSKHBhdGgsICIlcy9kZXZpY2UvbmV0 LyVzL3N1YnN5c3RlbSIsDQo+ID4gKwkJICAgICAgcHJpdi0+aWJkZXZfcGF0aCwgbWFzdGVyKTsN Cj4gPiArDQo+ID4gKwkJZGlyID0gb3BlbmRpcihwYXRoKTsNCj4gPiArCX0NCj4gPiArCWlmICgh ZGlyKSB7DQo+ID4gKwkJcnRlX2Vycm5vID0gZXJybm87DQo+ID4gKwkJcmV0dXJuIC1ydGVfZXJy bm87DQo+ID4gKwl9DQo+ID4gKwkvKg0KPiA+ICsJICogU2NhbiBuZXR3b3JrIGludGVyZmFjZXMg dG8gZmluZCBvbmUgd2l0aCBtYXRjaGluZyBwaHlzX3N3aXRjaF9pZA0KPiA+ICsJICogYW5kIHBo eXNfc3dpdGNoX25hbWUuDQo+ID4gKwkgKi8NCj4gPiArCWRvIHsNCj4gPiArCQlzdHJ1Y3QgZGly ZW50ICpkZW50Ow0KPiA+ICsJCXVpbnQ2NF90IHBoeXNfc3dpdGNoX2lkX3JlcDsNCj4gPiArCQlp bnQgcmVwX2lkOw0KPiA+ICsNCj4gPiArCQlyZXQgPSAtRU5PRU5UOw0KPiA+ICsJCWRlbnQgPSBy ZWFkZGlyKGRpcik7DQo+ID4gKwkJaWYgKCFkZW50KQ0KPiA+ICsJCQlicmVhazsNCj4gPiArCQl7 DQo+ID4gKwkJCU1LU1RSKHBhdGgsDQo+ID4gKw0KPiAiJXMvZGV2aWNlL25ldC8lcy9zdWJzeXN0 ZW0vJXMvcGh5c19zd2l0Y2hfaWQiLA0KPiA+ICsJCQkgICAgICBwcml2LT5pYmRldl9wYXRoLCBt YXN0ZXIsIGRlbnQtPmRfbmFtZSk7DQo+ID4gKw0KPiA+ICsJCQlmaWxlID0gZm9wZW4ocGF0aCwg InJiIik7DQo+ID4gKwkJfQ0KPiA+ICsJCWlmICghZmlsZSkNCj4gPiArCQkJY29udGludWU7DQo+ ID4gKwkJcmV0ID0gZnNjYW5mKGZpbGUsICIlIiBTQ054NjQsICZwaHlzX3N3aXRjaF9pZF9yZXAp Ow0KPiA+ICsJCWZjbG9zZShmaWxlKTsNCj4gPiArCQlpZiAocmV0ICE9IDEpDQo+ID4gKwkJCWNv bnRpbnVlOw0KPiA+ICsJCWlmIChwaHlzX3N3aXRjaF9pZF9yZXAgIT0gcGh5c19zd2l0Y2hfaWQp DQo+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ICsJCXsNCj4gPiArCQkJTUtTVFIocGF0aCwNCj4gPiAr DQo+ICIlcy9kZXZpY2UvbmV0LyVzL3N1YnN5c3RlbS8lcy9waHlzX3BvcnRfbmFtZSIsDQo+ID4g KwkJCSAgICAgIHByaXYtPmliZGV2X3BhdGgsIG1hc3RlciwgZGVudC0+ZF9uYW1lKTsNCj4gPiAr DQo+ID4gKwkJCWZpbGUgPSBmb3BlbihwYXRoLCAicmIiKTsNCj4gPiArCQl9DQo+ID4gKwkJaWYg KCFmaWxlKQ0KPiA+ICsJCQljb250aW51ZTsNCj4gPiArCQlyZXQgPSBmc2NhbmYoZmlsZSwgIiVk IiwgJnJlcF9pZCk7DQo+ID4gKwkJZmNsb3NlKGZpbGUpOw0KPiA+ICsJCWlmIChyZXQgIT0gMSkN Cj4gPiArCQkJY29udGludWU7DQo+ID4gKwkJaWYgKHJlcF9pZCA8IDAgfHwgKHVuc2lnbmVkIGlu dClyZXBfaWQgIT0gcHJpdi0+cmVwX2lkKQ0KPiA+ICsJCQljb250aW51ZTsNCj4gPiArCQlzdHJs Y3B5KCppZm5hbWUsIGRlbnQtPmRfbmFtZSwgc2l6ZW9mKCppZm5hbWUpKTsNCj4gPiArCQlyZXQg PSAwOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJfSB3aGlsZSAoMSk7DQo+ID4gKwljbG9zZWRpcihk aXIpOw0KPiA+ICsJaWYgKHJldCkNCj4gPiArCQlydGVfZXJybm8gPSAtcmV0Ow0KPiA+ICsJcmV0 dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gICAqIEdldCB0aGUgaW50ZXJm YWNlIGluZGV4IGZyb20gZGV2aWNlIG5hbWUuDQo+ID4gICAqDQo+ID4gICAqIEBwYXJhbVtpbl0g ZGV2DQo+ID4gQEAgLTIxNCwxMiArMzIyLDE2IEBAIG1seDVfaWZpbmRleChjb25zdCBzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmRldikNCj4gPiAgICogICBSZXF1ZXN0IG51bWJlciB0byBwYXNzIHRvIGlv Y3RsKCkuDQo+ID4gICAqIEBwYXJhbVtvdXRdIGlmcg0KPiA+ICAgKiAgIEludGVyZmFjZSByZXF1 ZXN0IHN0cnVjdHVyZSBvdXRwdXQgYnVmZmVyLg0KPiA+ICsgKiBAcGFyYW0gbWFzdGVyDQo+ID4g KyAqICAgV2hlbiBkZXZpY2UgaXMgYSBwb3J0IHJlcHJlc2VudG9yLCBwZXJmb3JtIHJlcXVlc3Qg b24gbWFzdGVyIGRldmljZQ0KPiA+ICsgKiAgIGluc3RlYWQuDQo+ID4gICAqDQo+ID4gICAqIEBy ZXR1cm4NCj4gPiAgICogICAwIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJybm8gdmFsdWUgb3Ro ZXJ3aXNlIGFuZCBydGVfZXJybm8gaXMgc2V0Lg0KPiA+ICAgKi8NCj4gPiAgaW50DQo+ID4gLW1s eDVfaWZyZXEoY29uc3Qgc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIGludCByZXEsIHN0cnVjdCBp ZnJlcSAqaWZyKQ0KPiA+ICttbHg1X2lmcmVxKGNvbnN0IHN0cnVjdCBydGVfZXRoX2RldiAqZGV2 LCBpbnQgcmVxLCBzdHJ1Y3QgaWZyZXEgKmlmciwNCj4gPiArCSAgIGludCBtYXN0ZXIpDQo+ID4g IHsNCj4gPiAgCWludCBzb2NrID0gc29ja2V0KFBGX0lORVQsIFNPQ0tfREdSQU0sIElQUFJPVE9f SVApOw0KPiA+ICAJaW50IHJldCA9IDA7DQo+ID4gQEAgLTIyOCw3ICszNDAsMTAgQEAgbWx4NV9p ZnJlcShjb25zdCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgaW50IHJlcSwNCj4gc3RydWN0IGlm cmVxICppZnIpDQo+ID4gIAkJcnRlX2Vycm5vID0gZXJybm87DQo+ID4gIAkJcmV0dXJuIC1ydGVf ZXJybm87DQo+ID4gIAl9DQo+ID4gLQlyZXQgPSBtbHg1X2dldF9pZm5hbWUoZGV2LCAmaWZyLT5p ZnJfbmFtZSk7DQo+ID4gKwlpZiAobWFzdGVyKQ0KPiA+ICsJCXJldCA9IG1seDVfZ2V0X21hc3Rl cl9pZm5hbWUoZGV2LCAmaWZyLT5pZnJfbmFtZSk7DQo+ID4gKwllbHNlDQo+ID4gKwkJcmV0ID0g bWx4NV9nZXRfaWZuYW1lKGRldiwgJmlmci0+aWZyX25hbWUpOw0KPiA+ICAJaWYgKHJldCkNCj4g PiAgCQlnb3RvIGVycm9yOw0KPiA+ICAJcmV0ID0gaW9jdGwoc29jaywgcmVxLCBpZnIpOw0KPiA+ IEBAIC0yNTgsNyArMzczLDcgQEAgaW50DQo+ID4gIG1seDVfZ2V0X210dShzdHJ1Y3QgcnRlX2V0 aF9kZXYgKmRldiwgdWludDE2X3QgKm10dSkgIHsNCj4gPiAgCXN0cnVjdCBpZnJlcSByZXF1ZXN0 Ow0KPiA+IC0JaW50IHJldCA9IG1seDVfaWZyZXEoZGV2LCBTSU9DR0lGTVRVLCAmcmVxdWVzdCk7 DQo+ID4gKwlpbnQgcmV0ID0gbWx4NV9pZnJlcShkZXYsIFNJT0NHSUZNVFUsICZyZXF1ZXN0LCAw KTsNCj4gPg0KPiA+ICAJaWYgKHJldCkNCj4gPiAgCQlyZXR1cm4gcmV0Ow0KPiA+IEBAIC0yODIs NyArMzk3LDcgQEAgbWx4NV9zZXRfbXR1KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MTZf dA0KPiBtdHUpICB7DQo+ID4gIAlzdHJ1Y3QgaWZyZXEgcmVxdWVzdCA9IHsgLmlmcl9tdHUgPSBt dHUsIH07DQo+ID4NCj4gPiAtCXJldHVybiBtbHg1X2lmcmVxKGRldiwgU0lPQ1NJRk1UVSwgJnJl cXVlc3QpOw0KPiA+ICsJcmV0dXJuIG1seDVfaWZyZXEoZGV2LCBTSU9DU0lGTVRVLCAmcmVxdWVz dCwgMCk7DQo+ID4gIH0NCj4gPg0KPiA+ICAvKioNCj4gPiBAQCAtMzAyLDEzICs0MTcsMTMgQEAg aW50DQo+ID4gIG1seDVfc2V0X2ZsYWdzKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1bnNpZ25l ZCBpbnQga2VlcCwgdW5zaWduZWQgaW50DQo+IGZsYWdzKSAgew0KPiA+ICAJc3RydWN0IGlmcmVx IHJlcXVlc3Q7DQo+ID4gLQlpbnQgcmV0ID0gbWx4NV9pZnJlcShkZXYsIFNJT0NHSUZGTEFHUywg JnJlcXVlc3QpOw0KPiA+ICsJaW50IHJldCA9IG1seDVfaWZyZXEoZGV2LCBTSU9DR0lGRkxBR1Ms ICZyZXF1ZXN0LCAwKTsNCj4gPg0KPiA+ICAJaWYgKHJldCkNCj4gPiAgCQlyZXR1cm4gcmV0Ow0K PiA+ICAJcmVxdWVzdC5pZnJfZmxhZ3MgJj0ga2VlcDsNCj4gPiAgCXJlcXVlc3QuaWZyX2ZsYWdz IHw9IGZsYWdzICYgfmtlZXA7DQo+ID4gLQlyZXR1cm4gbWx4NV9pZnJlcShkZXYsIFNJT0NTSUZG TEFHUywgJnJlcXVlc3QpOw0KPiA+ICsJcmV0dXJuIG1seDVfaWZyZXEoZGV2LCBTSU9DU0lGRkxB R1MsICZyZXF1ZXN0LCAwKTsNCj4gPiAgfQ0KPiA+DQo+ID4gIC8qKg0KPiA+IEBAIC00NzcsNiAr NTkyLDEyIEBAIG1seDVfZGV2X2luZm9zX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4g c3RydWN0IHJ0ZV9ldGhfZGV2X2luZm8gKmluZm8pDQo+ID4gIAlpbmZvLT5zcGVlZF9jYXBhID0g cHJpdi0+bGlua19zcGVlZF9jYXBhOw0KPiA+ICAJaW5mby0+Zmxvd190eXBlX3Jzc19vZmZsb2Fk cyA9IH5NTFg1X1JTU19IRl9NQVNLOw0KPiA+ICAJbWx4NV9zZXRfZGVmYXVsdF9wYXJhbXMoZGV2 LCBpbmZvKTsNCj4gPiArCWlmIChydGVfZXRoX2Rldl9pc192YWxpZF9wb3J0KHByaXYtPm1hc3Rl cl9pZCkpIHsNCj4gPiArCQlpbmZvLT5zd2l0Y2hfaW5mby5uYW1lID0NCj4gPiArCQkJcnRlX2V0 aF9kZXZpY2VzW3ByaXYtPm1hc3Rlcl9pZF0uZGF0YS0+bmFtZTsNCj4gPiArCQlpbmZvLT5zd2l0 Y2hfaW5mby5kb21haW5faWQgPSBwcml2LT5kb21haW5faWQ7DQo+ID4gKwkJaW5mby0+c3dpdGNo X2luZm8ucG9ydF9pZCA9IHByaXYtPnJlcF9pZDsNCj4gPiArCX0NCj4gPiAgfQ0KPiA+DQo+ID4g IC8qKg0KPiA+IEBAIC01NDAsNyArNjYxLDcgQEAgbWx4NV9saW5rX3VwZGF0ZV91bmxvY2tlZF9n c2V0KHN0cnVjdA0KPiBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAJaW50IGxpbmtfc3BlZWQgPSAw Ow0KPiA+ICAJaW50IHJldDsNCj4gPg0KPiA+IC0JcmV0ID0gbWx4NV9pZnJlcShkZXYsIFNJT0NH SUZGTEFHUywgJmlmcik7DQo+ID4gKwlyZXQgPSBtbHg1X2lmcmVxKGRldiwgU0lPQ0dJRkZMQUdT LCAmaWZyLCAxKTsNCj4gPiAgCWlmIChyZXQpIHsNCj4gPiAgCQlEUlZfTE9HKFdBUk5JTkcsICJw b3J0ICV1IGlvY3RsKFNJT0NHSUZGTEFHUykgZmFpbGVkOg0KPiAlcyIsDQo+ID4gIAkJCWRldi0+ ZGF0YS0+cG9ydF9pZCwgc3RyZXJyb3IocnRlX2Vycm5vKSk7IEBAIC01NTAsNw0KPiArNjcxLDcg QEANCj4gPiBtbHg1X2xpbmtfdXBkYXRlX3VubG9ja2VkX2dzZXQoc3RydWN0IHJ0ZV9ldGhfZGV2 ICpkZXYsDQo+ID4gIAlkZXZfbGluay5saW5rX3N0YXR1cyA9ICgoaWZyLmlmcl9mbGFncyAmIElG Rl9VUCkgJiYNCj4gPiAgCQkJCShpZnIuaWZyX2ZsYWdzICYgSUZGX1JVTk5JTkcpKTsNCj4gPiAg CWlmci5pZnJfZGF0YSA9ICh2b2lkICopJmVkYXRhOw0KPiA+IC0JcmV0ID0gbWx4NV9pZnJlcShk ZXYsIFNJT0NFVEhUT09MLCAmaWZyKTsNCj4gPiArCXJldCA9IG1seDVfaWZyZXEoZGV2LCBTSU9D RVRIVE9PTCwgJmlmciwgMSk7DQo+ID4gIAlpZiAocmV0KSB7DQo+ID4gIAkJRFJWX0xPRyhXQVJO SU5HLA0KPiA+ICAJCQkicG9ydCAldSBpb2N0bChTSU9DRVRIVE9PTCwgRVRIVE9PTF9HU0VUKSBm YWlsZWQ6DQo+ICVzIiwgQEAgLTYxMSw3DQo+ID4gKzczMiw3IEBAIG1seDVfbGlua191cGRhdGVf dW5sb2NrZWRfZ3Moc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gIAl1aW50NjRfdCBzYzsN Cj4gPiAgCWludCByZXQ7DQo+ID4NCj4gPiAtCXJldCA9IG1seDVfaWZyZXEoZGV2LCBTSU9DR0lG RkxBR1MsICZpZnIpOw0KPiA+ICsJcmV0ID0gbWx4NV9pZnJlcShkZXYsIFNJT0NHSUZGTEFHUywg JmlmciwgMSk7DQo+ID4gIAlpZiAocmV0KSB7DQo+ID4gIAkJRFJWX0xPRyhXQVJOSU5HLCAicG9y dCAldSBpb2N0bChTSU9DR0lGRkxBR1MpIGZhaWxlZDoNCj4gJXMiLA0KPiA+ICAJCQlkZXYtPmRh dGEtPnBvcnRfaWQsIHN0cmVycm9yKHJ0ZV9lcnJubykpOyBAQCAtNjIxLDcNCj4gKzc0Miw3IEBA DQo+ID4gbWx4NV9saW5rX3VwZGF0ZV91bmxvY2tlZF9ncyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl diwNCj4gPiAgCWRldl9saW5rLmxpbmtfc3RhdHVzID0gKChpZnIuaWZyX2ZsYWdzICYgSUZGX1VQ KSAmJg0KPiA+ICAJCQkJKGlmci5pZnJfZmxhZ3MgJiBJRkZfUlVOTklORykpOw0KPiA+ICAJaWZy Lmlmcl9kYXRhID0gKHZvaWQgKikmZ2NtZDsNCj4gPiAtCXJldCA9IG1seDVfaWZyZXEoZGV2LCBT SU9DRVRIVE9PTCwgJmlmcik7DQo+ID4gKwlyZXQgPSBtbHg1X2lmcmVxKGRldiwgU0lPQ0VUSFRP T0wsICZpZnIsIDEpOw0KPiA+ICAJaWYgKHJldCkgew0KPiA+ICAJCURSVl9MT0coREVCVUcsDQo+ ID4gIAkJCSJwb3J0ICV1IGlvY3RsKFNJT0NFVEhUT09MLA0KPiBFVEhUT09MX0dMSU5LU0VUVElO R1MpIg0KPiA+IEBAIC02MzgsNyArNzU5LDcgQEAgbWx4NV9saW5rX3VwZGF0ZV91bmxvY2tlZF9n cyhzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gPiAqZGV2LA0KPiA+DQo+ID4gIAkqZWNtZCA9IGdjbWQ7 DQo+ID4gIAlpZnIuaWZyX2RhdGEgPSAodm9pZCAqKWVjbWQ7DQo+ID4gLQlyZXQgPSBtbHg1X2lm cmVxKGRldiwgU0lPQ0VUSFRPT0wsICZpZnIpOw0KPiA+ICsJcmV0ID0gbWx4NV9pZnJlcShkZXYs IFNJT0NFVEhUT09MLCAmaWZyLCAxKTsNCj4gPiAgCWlmIChyZXQpIHsNCj4gPiAgCQlEUlZfTE9H KERFQlVHLA0KPiA+ICAJCQkicG9ydCAldSBpb2N0bChTSU9DRVRIVE9PTCwNCj4gRVRIVE9PTF9H TElOS1NFVFRJTkdTKSINCj4gPiBAQCAtODAxLDcgKzkyMiw3IEBAIG1seDVfZGV2X2dldF9mbG93 X2N0cmwoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+IHN0cnVjdCBydGVfZXRoX2ZjX2NvbmYg KmZjX2NvbmYpDQo+ID4gIAlpbnQgcmV0Ow0KPiA+DQo+ID4gIAlpZnIuaWZyX2RhdGEgPSAodm9p ZCAqKSZldGhwYXVzZTsNCj4gPiAtCXJldCA9IG1seDVfaWZyZXEoZGV2LCBTSU9DRVRIVE9PTCwg Jmlmcik7DQo+ID4gKwlyZXQgPSBtbHg1X2lmcmVxKGRldiwgU0lPQ0VUSFRPT0wsICZpZnIsIDEp Ow0KPiA+ICAJaWYgKHJldCkgew0KPiA+ICAJCURSVl9MT0coV0FSTklORywNCj4gPiAgCQkJInBv cnQgJXUgaW9jdGwoU0lPQ0VUSFRPT0wsDQo+IEVUSFRPT0xfR1BBVVNFUEFSQU0pIGZhaWxlZDoi DQo+ID4gQEAgLTg1NCw3ICs5NzUsNyBAQCBtbHg1X2Rldl9zZXRfZmxvd19jdHJsKHN0cnVjdCBy dGVfZXRoX2RldiAqZGV2LA0KPiBzdHJ1Y3QgcnRlX2V0aF9mY19jb25mICpmY19jb25mKQ0KPiA+ ICAJCWV0aHBhdXNlLnR4X3BhdXNlID0gMTsNCj4gPiAgCWVsc2UNCj4gPiAgCQlldGhwYXVzZS50 eF9wYXVzZSA9IDA7DQo+ID4gLQlyZXQgPSBtbHg1X2lmcmVxKGRldiwgU0lPQ0VUSFRPT0wsICZp ZnIpOw0KPiA+ICsJcmV0ID0gbWx4NV9pZnJlcShkZXYsIFNJT0NFVEhUT09MLCAmaWZyLCAwKTsN Cj4gPiAgCWlmIChyZXQpIHsNCj4gPiAgCQlEUlZfTE9HKFdBUk5JTkcsDQo+ID4gIAkJCSJwb3J0 ICV1IGlvY3RsKFNJT0NFVEhUT09MLA0KPiBFVEhUT09MX1NQQVVTRVBBUkFNKSINCj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X21hYy5jIGIvZHJpdmVycy9uZXQvbWx4NS9t bHg1X21hYy5jDQo+ID4gaW5kZXggNjcyYTQ3NjE5Li4xMmVlMzdmNTUNCj4gPiAxMDA2NDQNCj4g PiAtLS0gYS9kcml2ZXJzL25ldC9tbHg1L21seDVfbWFjLmMNCj4gPiArKysgYi9kcml2ZXJzL25l dC9tbHg1L21seDVfbWFjLmMNCj4gPiBAQCAtNDksNyArNDksNyBAQCBtbHg1X2dldF9tYWMoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQ4X3QNCj4gKCptYWMpW0VUSEVSX0FERFJfTEVOXSkN Cj4gPiAgCXN0cnVjdCBpZnJlcSByZXF1ZXN0Ow0KPiA+ICAJaW50IHJldDsNCj4gPg0KPiA+IC0J cmV0ID0gbWx4NV9pZnJlcShkZXYsIFNJT0NHSUZIV0FERFIsICZyZXF1ZXN0KTsNCj4gPiArCXJl dCA9IG1seDVfaWZyZXEoZGV2LCBTSU9DR0lGSFdBRERSLCAmcmVxdWVzdCwgMCk7DQo+ID4gIAlp ZiAocmV0KQ0KPiA+ICAJCXJldHVybiByZXQ7DQo+ID4gIAltZW1jcHkobWFjLCByZXF1ZXN0Lmlm cl9od2FkZHIuc2FfZGF0YSwgRVRIRVJfQUREUl9MRU4pOyBkaWZmIC0NCj4gLWdpdA0KPiA+IGEv ZHJpdmVycy9uZXQvbWx4NS9tbHg1X3N0YXRzLmMgYi9kcml2ZXJzL25ldC9tbHg1L21seDVfc3Rh dHMuYyBpbmRleA0KPiA+IDg3NWRkMTAyNy4uOTFmM2Q0NzRhIDEwMDY0NA0KPiA+IC0tLSBhL2Ry aXZlcnMvbmV0L21seDUvbWx4NV9zdGF0cy5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9t bHg1X3N0YXRzLmMNCj4gPiBAQCAtMTQ2LDcgKzE0Niw3IEBAIG1seDVfcmVhZF9kZXZfY291bnRl cnMoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+IHVpbnQ2NF90ICpzdGF0cykNCj4gPiAgCWV0 X3N0YXRzLT5jbWQgPSBFVEhUT09MX0dTVEFUUzsNCj4gPiAgCWV0X3N0YXRzLT5uX3N0YXRzID0g eHN0YXRzX2N0cmwtPnN0YXRzX247DQo+ID4gIAlpZnIuaWZyX2RhdGEgPSAoY2FkZHJfdClldF9z dGF0czsNCj4gPiAtCXJldCA9IG1seDVfaWZyZXEoZGV2LCBTSU9DRVRIVE9PTCwgJmlmcik7DQo+ ID4gKwlyZXQgPSBtbHg1X2lmcmVxKGRldiwgU0lPQ0VUSFRPT0wsICZpZnIsIDEpOw0KPiA+ICAJ aWYgKHJldCkgew0KPiA+ICAJCURSVl9MT0coV0FSTklORywNCj4gPiAgCQkJInBvcnQgJXUgdW5h YmxlIHRvIHJlYWQgc3RhdGlzdGljIHZhbHVlcyBmcm9tIGRldmljZSIsDQo+IEBAIC0xOTQsNw0K PiA+ICsxOTQsNyBAQCBtbHg1X2V0aHRvb2xfZ2V0X3N0YXRzX24oc3RydWN0IHJ0ZV9ldGhfZGV2 ICpkZXYpIHsNCj4gPg0KPiA+ICAJZHJ2aW5mby5jbWQgPSBFVEhUT09MX0dEUlZJTkZPOw0KPiA+ ICAJaWZyLmlmcl9kYXRhID0gKGNhZGRyX3QpJmRydmluZm87DQo+ID4gLQlyZXQgPSBtbHg1X2lm cmVxKGRldiwgU0lPQ0VUSFRPT0wsICZpZnIpOw0KPiA+ICsJcmV0ID0gbWx4NV9pZnJlcShkZXYs IFNJT0NFVEhUT09MLCAmaWZyLCAxKTsNCj4gPiAgCWlmIChyZXQpIHsNCj4gPiAgCQlEUlZfTE9H KFdBUk5JTkcsICJwb3J0ICV1IHVuYWJsZSB0byBxdWVyeSBudW1iZXIgb2YNCj4gc3RhdGlzdGlj cyIsDQo+ID4gIAkJCWRldi0+ZGF0YS0+cG9ydF9pZCk7DQo+ID4gQEAgLTI0NCw3ICsyNDQsNyBA QCBtbHg1X3hzdGF0c19pbml0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQ0KPiA+ICAJc3RyaW5n cy0+c3RyaW5nX3NldCA9IEVUSF9TU19TVEFUUzsNCj4gPiAgCXN0cmluZ3MtPmxlbiA9IGRldl9z dGF0c19uOw0KPiA+ICAJaWZyLmlmcl9kYXRhID0gKGNhZGRyX3Qpc3RyaW5nczsNCj4gPiAtCXJl dCA9IG1seDVfaWZyZXEoZGV2LCBTSU9DRVRIVE9PTCwgJmlmcik7DQo+ID4gKwlyZXQgPSBtbHg1 X2lmcmVxKGRldiwgU0lPQ0VUSFRPT0wsICZpZnIsIDEpOw0KPiA+ICAJaWYgKHJldCkgew0KPiA+ ICAJCURSVl9MT0coV0FSTklORywgInBvcnQgJXUgdW5hYmxlIHRvIGdldCBzdGF0aXN0aWMNCj4g bmFtZXMiLA0KPiA+ICAJCQlkZXYtPmRhdGEtPnBvcnRfaWQpOw0KPiA+IC0tDQo+ID4gMi4xMS4w DQo=