From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50048.outbound.protection.outlook.com [40.107.5.48]) by dpdk.org (Postfix) with ESMTP id 2A2821B5BA for ; Sat, 16 Jun 2018 10:57:54 +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=LFhp0J0UYcrijd1f6UM7surgD3BxsZCiMtKaPGZElgM=; b=ECZ4macwtgPRtqZnx5W2oPI76Fbetn73XpdF6iMKT7IagpodBhjGyYSXq6jni9vbVWZP+jLEmCe/CbyE6ssdSD1VydRLWUVmw4moy+fRLP3yhzQU0u28S6QcR7uvXW34SGaLplHOwu/5eTCHHb57revcyUTKXusUKNoY50JkgnI= Received: from AM5PR0501MB2420.eurprd05.prod.outlook.com (10.169.149.146) by AM5PR0501MB2065.eurprd05.prod.outlook.com (10.167.214.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.863.16; Sat, 16 Jun 2018 08:57:51 +0000 Received: from AM5PR0501MB2420.eurprd05.prod.outlook.com ([fe80::e852:af25:231c:79c1]) by AM5PR0501MB2420.eurprd05.prod.outlook.com ([fe80::e852:af25:231c:79c1%10]) with mapi id 15.20.0863.016; Sat, 16 Jun 2018 08:57:51 +0000 From: "Xueming(Steven) Li" To: Adrien Mazarguil , Shahaf Shuler CC: "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v2 6/7] net/mlx5: probe all port representors Thread-Index: AQHUA7rGdM+oRnB4PEakQeDw1NaAzKRik83A Date: Sat, 16 Jun 2018 08:57:51 +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: <20180614083047.10812-7-adrien.mazarguil@6wind.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=xuemingl@mellanox.com; x-originating-ip: [180.174.142.249] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM5PR0501MB2065; 7:EOPkk3bzfZ2URTuyfCuniH60dDJlLWnY/4R8g+zUqOSLJigDK7tr05AtqrKgCOEQ+Y41sPZq+G+Wa7AVvXdLuhJj0v0srEvRjlcQzeryuImJywjV/SbUWyLsS66+Rg6Q6r/cKoNWFbW/u6RI+gyiNEqc/BFcid/pRcfCtHQ1bYm2bIWa7VyVpYsCBnxAOufl6BBxApvi5XwhKg/oKxzQTa1hIgFMsPJ+XGPSeVmVtjyEaFaeyLdbTuWiEqpWM1e8 x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: a1bd2ea4-60e3-4b13-e962-08d5d3673da9 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(711020)(2017052603328)(7153060)(7193020); SRVR:AM5PR0501MB2065; x-ms-traffictypediagnostic: AM5PR0501MB2065: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(17755550239193); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3231254)(944501410)(52105095)(3002001)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:AM5PR0501MB2065; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0501MB2065; x-forefront-prvs: 0705EB1700 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(346002)(39380400002)(39860400002)(366004)(376002)(199004)(13464003)(189003)(76176011)(81166006)(97736004)(478600001)(81156014)(186003)(305945005)(6636002)(110136005)(4326008)(5890100001)(105586002)(3280700002)(66066001)(8936002)(106356001)(6246003)(33656002)(229853002)(74316002)(3660700001)(446003)(14454004)(25786009)(59450400001)(68736007)(86362001)(8676002)(102836004)(2900100001)(486006)(55016002)(2906002)(9686003)(53546011)(99286004)(7696005)(6506007)(6436002)(53946003)(5660300001)(3846002)(26005)(53936002)(6116002)(476003)(7736002)(316002)(11346002)(5250100002)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0501MB2065; H:AM5PR0501MB2420.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: rZ1LYMEt7q1YBr1D5Ds9giF4hzVFuZPHBYOCGa12AaloYBVcGepmv2vUiJfVAzLAj8vVMz7IcK9LBaeYZSBqhUvfE2LoUh2REgptJE97s6S1l4Pqjg4Er8l2KWBTgVNPk1NYlhjnn5gLO1SJqltPkjoArNHzEqSsZ7/knBzYTotGUC4mMCGz0ONbMcGZiVcq 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: a1bd2ea4-60e3-4b13-e962-08d5d3673da9 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Jun 2018 08:57:51.1740 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0501MB2065 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: Sat, 16 Jun 2018 08:57:54 -0000 UmV2aWV3ZWQtYnk6IFh1ZW1pbmcgTGkgPHh1ZW1pbmdsQG1lbGxhbm94LmNvbT4NCg0KTWlub3Ig Y29tbWVudHMgaW5zaWRlOg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206 IGRldiA8ZGV2LWJvdW5jZXNAZHBkay5vcmc+IE9uIEJlaGFsZiBPZiBBZHJpZW4gTWF6YXJndWls DQo+IFNlbnQ6IFRodXJzZGF5LCBKdW5lIDE0LCAyMDE4IDQ6MzUgUE0NCj4gVG86IFNoYWhhZiBT aHVsZXIgPHNoYWhhZnNAbWVsbGFub3guY29tPg0KPiBDYzogZGV2QGRwZGsub3JnDQo+IFN1Ympl Y3Q6IFtkcGRrLWRldl0gW1BBVENIIHYyIDYvN10gbmV0L21seDU6IHByb2JlIGFsbCBwb3J0IHJl cHJlc2VudG9ycw0KPiANCj4gUHJvYmUgZXhpc3RpbmcgcG9ydCByZXByZXNlbnRvcnMgaW4gYWRk aXRpb24gdG8gdGhlaXIgbWFzdGVyIGRldmljZSBhbmQgYXNzb2NpYXRlIHRoZW0gYXV0b21hdGlj YWxseS4NCj4gDQo+IFRvIGF2b2lkIG5hbWUgY29sbGlzaW9uIGJldHdlZW4gRXRoZXJuZXQgZGV2 aWNlcywgdGhlaXIgbmFtZXMgdXNlIHRoZSBzYW1lIGNvbnZlbnRpb24gYXMgaXhnYmUgYW5kDQo+ IGk0MGUgUE1EcywgdGhhdCBpcywgaW5zdGVhZCBvZiBvbmx5IGEgUENJIGFkZHJlc3MgaW4gREJE RiBub3RhdGlvbjoNCj4gDQo+IC0gIm5ldF97REJERn1fMCIgZm9yIG1hc3Rlci9zd2l0Y2ggZGV2 aWNlcy4NCj4gLSAibmV0X3tEQkRGfV9yZXByZXNlbnRvcl97cmVwfSIgd2l0aCAicmVwIiBzdGFy dGluZyBmcm9tIDAgZm9yIHBvcnQNCj4gICByZXByZXNlbnRvcnMuDQo+IA0KPiBCb3RoIG9wdGlv bmFsbHkgc3VmZml4ZWQgd2l0aCAiX3BvcnRfe251bX0iIGluc3RlYWQgb2YgIiBwb3J0IHtudW19 IiBmb3IgZGV2aWNlcyB0aGF0IGV4cG9zZSBzZXZlcmFsDQo+IFZlcmJzIHBvcnRzIChub3RlIHRo aXMgaXMgbmV2ZXIgdGhlIGNhc2Ugb24gbWx4NSwgYnV0IGtlcHQgZm9yIGhpc3RvcmljYWwgcmVh c29ucyBmb3IgdGhlIHRpbWUgYmVpbmcpLg0KPiANCj4gKFBhdGNoIGJhc2VkIG9uIHByaW9yIHdv cmsgZnJvbSBZdWFuaGFuIExpdSkNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEFkcmllbiBNYXphcmd1 aWwgPGFkcmllbi5tYXphcmd1aWxANndpbmQuY29tPg0KPiAtLQ0KPiB2MiBjaGFuZ2VzOg0KPiAN Cj4gLSBBZGRlZCByZXByZXNlbnRvciBpbmZvcm1hdGlvbiB0byBkZXZfaW5mb3NfZ2V0KCkuIERQ REsgcG9ydCBJRCBvZiBtYXN0ZXINCj4gICBkZXZpY2UgaXMgbm93IHN0b3JlZCBpbiB0aGUgcHJp dmF0ZSBzdHJ1Y3R1cmUgdG8gcmV0cmlldmUgaXQNCj4gICBjb252ZW5pZW50bHkuDQo+IC0gTWFz dGVyIGRldmljZSBpcyBhc3NpZ25lZCBkdW1teSByZXByZXNlbnRvciBJRCB2YWx1ZSAtMSB0byBi ZXR0ZXINCj4gICBkaXN0aW5ndWlzaCBmcm9tIHRoZSB0aGUgZmlyc3QgYWN0dWFsIHJlcHJlc2Vu dG9yIHJlcG9ydGVkIGJ5DQo+ICAgZGV2X2luZm9zX2dldCgpIGFzIHRob3NlIGFyZSBpbmRleGVk IGZyb20gMC4NCj4gLSBBZGRlZCBSVEVfRVRIX0RFVl9SRVBSRVNFTlRPUiBkZXZpY2UgZmxhZy4N Cj4gLS0tDQo+ICBkcml2ZXJzL25ldC9tbHg1L21seDUuYyAgICAgICAgfCAxMzggKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0NCj4gIGRyaXZlcnMvbmV0L21seDUvbWx4NS5oICAgICAg ICB8ICAgOSArKy0NCj4gIGRyaXZlcnMvbmV0L21seDUvbWx4NV9ldGhkZXYuYyB8IDE1MSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0NCj4gIGRyaXZlcnMvbmV0L21seDUvbWx4 NV9tYWMuYyAgICB8ICAgMiArLQ0KPiAgZHJpdmVycy9uZXQvbWx4NS9tbHg1X3N0YXRzLmMgIHwg ICA2ICstDQo+ICA1IGZpbGVzIGNoYW5nZWQsIDI1MiBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlv bnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg1L21seDUuYyBiL2RyaXZl cnMvbmV0L21seDUvbWx4NS5jIGluZGV4IDQ5OGY4MGM4OS4uNzE2YzlkOWE1IDEwMDY0NA0KPiAt LS0gYS9kcml2ZXJzL25ldC9tbHg1L21seDUuYw0KPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L21s eDUuYw0KPiBAQCAtMzA0LDYgKzMwNCw5IEBAIG1seDVfZGV2X2Nsb3NlKHN0cnVjdCBydGVfZXRo X2RldiAqZGV2KQ0KPiAgCWlmIChyZXQpDQo+ICAJCURSVl9MT0coV0FSTklORywgInBvcnQgJXUg c29tZSBmbG93cyBzdGlsbCByZW1haW4iLA0KPiAgCQkJZGV2LT5kYXRhLT5wb3J0X2lkKTsNCj4g KwlpZiAoIXByaXYtPnJlcHJlc2VudG9yICYmDQo+ICsJICAgIHByaXYtPmRvbWFpbl9pZCAhPSBS VEVfRVRIX0RFVl9TV0lUQ0hfRE9NQUlOX0lEX0lOVkFMSUQpDQo+ICsJCWNsYWltX3plcm8ocnRl X2V0aF9zd2l0Y2hfZG9tYWluX2ZyZWUocHJpdi0+ZG9tYWluX2lkKSk7DQo+ICAJbWVtc2V0KHBy aXYsIDAsIHNpemVvZigqcHJpdikpOw0KPiAgfQ0KPiANCj4gQEAgLTY0OCw2ICs2NTEsMTAgQEAg bWx4NV91YXJfaW5pdF9zZWNvbmRhcnkoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpDQo+ICAgKiAg IFZlcmJzIGRldmljZSBhdHRyaWJ1dGVzLg0KPiAgICogQHBhcmFtIHBvcnQNCj4gICAqICAgVmVy YnMgcG9ydCB0byB1c2UgKGluZGV4ZWQgZnJvbSAxKS4NCj4gKyAqIEBwYXJhbSBtYXN0ZXINCj4g KyAqICAgTWFzdGVyIGRldmljZSBpbiBjYXNlIEBwIGlidl9kZXYgaXMgYSBwb3J0IHJlcHJlc2Vu dG9yLg0KPiArICogQHBhcmFtIHJlcF9pZA0KPiArICogICBSZXByZXNlbnRvciBpZGVudGlmaWVy IHdoZW4gQHAgbWFzdGVyIGlzIG5vbi1OVUxMLg0KPiAgICoNCj4gICAqIEByZXR1cm4NCj4gICAq ICAgQSB2YWxpZCBFdGhlcm5ldCBkZXZpY2Ugb2JqZWN0IG9uIHN1Y2Nlc3MsIE5VTEwgb3RoZXJ3 aXNlIGFuZCBydGVfZXJybm8NCj4gQEAgLTY1OCw3ICs2NjUsOSBAQCBtbHg1X2Rldl9zcGF3bl9v bmUoc3RydWN0IHJ0ZV9kZXZpY2UgKmRwZGtfZGV2LA0KPiAgCQkgICBzdHJ1Y3QgaWJ2X2Rldmlj ZSAqaWJ2X2RldiwNCj4gIAkJICAgaW50IHZmLA0KPiAgCQkgICBjb25zdCBzdHJ1Y3QgaWJ2X2Rl dmljZV9hdHRyX2V4ICphdHRyLA0KPiAtCQkgICB1bnNpZ25lZCBpbnQgcG9ydCkNCj4gKwkJICAg dW5zaWduZWQgaW50IHBvcnQsDQo+ICsJCSAgIHN0cnVjdCBydGVfZXRoX2RldiAqbWFzdGVyLA0K PiArCQkgICB1bnNpZ25lZCBpbnQgcmVwX2lkKQ0KPiAgew0KPiAgCXN0cnVjdCBpYnZfY29udGV4 dCAqY3R4Ow0KPiAgCXN0cnVjdCBpYnZfcG9ydF9hdHRyIHBvcnRfYXR0cjsNCj4gQEAgLTgwMiwx MSArODExLDE0IEBAIG1seDVfZGV2X3NwYXduX29uZShzdHJ1Y3QgcnRlX2RldmljZSAqZHBka19k ZXYsDQo+ICAJCSIgb2xkIE9GRUQvcmRtYS1jb3JlIHZlcnNpb24gb3IgZmlybXdhcmUgY29uZmln dXJhdGlvbiIpOyAgI2VuZGlmDQo+ICAJY29uZmlnLm1wbHNfZW4gPSBtcGxzX2VuOw0KPiAtCWlm IChhdHRyLT5vcmlnX2F0dHIucGh5c19wb3J0X2NudCA+IDEpDQo+IC0JCXNucHJpbnRmKG5hbWUs IHNpemVvZihuYW1lKSwgIiVzIHBvcnQgJXUiLA0KPiAtCQkJIGRwZGtfZGV2LT5uYW1lLCBwb3J0 KTsNCj4gKwlpZiAoIW1hc3RlcikNCj4gKwkJc25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCAi bmV0XyVzXzAiLCBkcGRrX2Rldi0+bmFtZSk7DQo+ICAJZWxzZQ0KPiAtCQlzbnByaW50ZihuYW1l LCBzaXplb2YobmFtZSksICIlcyIsIGRwZGtfZGV2LT5uYW1lKTsNCj4gKwkJc25wcmludGYobmFt ZSwgc2l6ZW9mKG5hbWUpLCAibmV0XyVzX3JlcHJlc2VudG9yXyV1IiwNCj4gKwkJCSBkcGRrX2Rl di0+bmFtZSwgcmVwX2lkKTsNCj4gKwlpZiAoYXR0ci0+b3JpZ19hdHRyLnBoeXNfcG9ydF9jbnQg PiAxKQ0KPiArCQlzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksICIlc19wb3J0XyV1IiwgbmFt ZSwgcG9ydCk7DQo+ICsJRFJWX0xPRyhERUJVRywgIm5hbWluZyBFdGhlcm5ldCBkZXZpY2UgXCIl c1wiIiwgbmFtZSk7DQo+ICAJaWYgKHJ0ZV9lYWxfcHJvY2Vzc190eXBlKCkgPT0gUlRFX1BST0Nf U0VDT05EQVJZKSB7DQo+ICAJCWV0aF9kZXYgPSBydGVfZXRoX2Rldl9hdHRhY2hfc2Vjb25kYXJ5 KG5hbWUpOw0KPiAgCQlpZiAoZXRoX2RldiA9PSBOVUxMKSB7DQo+IEBAIC04ODMsNiArODk1LDMw IEBAIG1seDVfZGV2X3NwYXduX29uZShzdHJ1Y3QgcnRlX2RldmljZSAqZHBka19kZXYsDQo+ICAJ cHJpdi0+cG9ydCA9IHBvcnQ7DQo+ICAJcHJpdi0+cGQgPSBwZDsNCj4gIAlwcml2LT5tdHUgPSBF VEhFUl9NVFU7DQo+ICsJLyoNCj4gKwkgKiBBbGxvY2F0ZSBhIHN3aXRjaCBkb21haW4gZm9yIG1h c3RlciBkZXZpY2VzIGFuZCBzaGFyZSBpdCB3aXRoDQo+ICsJICogcG9ydCByZXByZXNlbnRvcnMu DQo+ICsJICovDQo+ICsJaWYgKCFtYXN0ZXIpIHsNCj4gKwkJcHJpdi0+cmVwcmVzZW50b3IgPSAw Ow0KPiArCQlwcml2LT5tYXN0ZXJfaWQgPSAtMTsgLyogVXBkYXRlZCBvbmNlIGtub3duLiAqLw0K PiArCQlwcml2LT5kb21haW5faWQgPSBSVEVfRVRIX0RFVl9TV0lUQ0hfRE9NQUlOX0lEX0lOVkFM SUQ7DQoNCkRvbWFpbl9pZCB3aWxsIG92ZXJyaWRlIGJlbG93Lg0KDQo+ICsJCXByaXYtPnJlcF9p ZCA9IC0xOyAvKiBEdW1teSB1bmlxdWUgdmFsdWUuICovDQo+ICsJCWVyciA9IHJ0ZV9ldGhfc3dp dGNoX2RvbWFpbl9hbGxvYygmcHJpdi0+ZG9tYWluX2lkKTsNCj4gKwkJaWYgKGVycikgew0KPiAr CQkJZXJyID0gcnRlX2Vycm5vOw0KPiArCQkJRFJWX0xPRyhFUlIsICJ1bmFibGUgdG8gYWxsb2Nh dGUgc3dpdGNoIGRvbWFpbjogJXMiLA0KPiArCQkJCXN0cmVycm9yKHJ0ZV9lcnJubykpOw0KPiAr CQkJZ290byBlcnJvcjsNCj4gKwkJfQ0KPiArCX0gZWxzZSB7DQo+ICsJCXByaXYtPnJlcHJlc2Vu dG9yID0gMTsNCj4gKwkJcHJpdi0+bWFzdGVyX2lkID0NCj4gKwkJCSgoc3RydWN0IHByaXYgKilt YXN0ZXItPmRhdGEtPmRldl9wcml2YXRlKS0+bWFzdGVyX2lkOw0KPiArCQlwcml2LT5kb21haW5f aWQgPQ0KPiArCQkJKChzdHJ1Y3QgcHJpdiAqKW1hc3Rlci0+ZGF0YS0+ZGV2X3ByaXZhdGUpLT5k b21haW5faWQ7DQo+ICsJCXByaXYtPnJlcF9pZCA9IHJlcF9pZDsNCj4gKwl9DQoNCkRvIHlvdSB0 aGluayBzdWNoIGluZm9ybWF0aW9uIHNob3VsZCBiZSBzZXQgYXMgd2VsbCBpbiBzZWNvbmRhcnkg cHJvY2Vzcz8NCg0KPiAgCWVyciA9IG1seDVfYXJncygmY29uZmlnLCBkcGRrX2Rldi0+ZGV2YXJn cyk7DQo+ICAJaWYgKGVycikgew0KPiAgCQllcnIgPSBydGVfZXJybm87DQo+IEBAIC05NjQsNiAr MTAwMCwxOCBAQCBtbHg1X2Rldl9zcGF3bl9vbmUoc3RydWN0IHJ0ZV9kZXZpY2UgKmRwZGtfZGV2 LA0KPiAgCQllcnIgPSBFTk9NRU07DQo+ICAJCWdvdG8gZXJyb3I7DQo+ICAJfQ0KPiArCS8qDQo+ ICsJICogTm93IHRoYXQgZXRoX2RldiBpcyBhbGxvY2F0ZWQgYW5kIGl0cyBwb3J0IElEIGlzIGtu b3duLCBtYWtlDQo+ICsJICogbm9uLXJlcHJlc2VudG9yIHBvcnRzIHRhcmdldCB0aGVpciBvd24g cG9ydCBJRCBhcyBtYXN0ZXIgZm9yDQo+ICsJICogY29udmVuaWVuY2UuDQo+ICsJICoNCj4gKwkg KiBNYXN0ZXIgcG9ydCBJRCBpcyBhbHJlYWR5IHNldCBmb3IgYWN0dWFsIHJlcHJlc2VudG9ycy4g VGhvc2Ugb25seQ0KPiArCSAqIG5lZWQgdGhlIHJpZ2h0IGRldmljZSBmbGFnLg0KPiArCSAqLw0K PiArCWlmICghbWFzdGVyKQ0KPiArCQlwcml2LT5tYXN0ZXJfaWQgPSBldGhfZGV2LT5kYXRhLT5w b3J0X2lkOw0KPiArCWVsc2UNCj4gKwkJZXRoX2Rldi0+ZGF0YS0+ZGV2X2ZsYWdzIHw9IFJURV9F VEhfREVWX1JFUFJFU0VOVE9SOw0KPiAgCWV0aF9kZXYtPmRhdGEtPmRldl9wcml2YXRlID0gcHJp djsNCj4gIAlwcml2LT5kZXZfZGF0YSA9IGV0aF9kZXYtPmRhdGE7DQo+ICAJZXRoX2Rldi0+ZGF0 YS0+bWFjX2FkZHJzID0gcHJpdi0+bWFjOw0KPiBAQCAtMTA4Myw4ICsxMTMxLDEyIEBAIG1seDVf ZGV2X3NwYXduX29uZShzdHJ1Y3QgcnRlX2RldmljZSAqZHBka19kZXYsDQo+ICAJcnRlX3J3bG9j a193cml0ZV91bmxvY2soJm1seDVfc2hhcmVkX2RhdGEtPm1lbV9ldmVudF9yd2xvY2spOw0KPiAg CXJldHVybiBldGhfZGV2Ow0KPiAgZXJyb3I6DQo+IC0JaWYgKHByaXYpDQo+ICsJaWYgKHByaXYp IHsNCj4gKwkJaWYgKCFwcml2LT5yZXByZXNlbnRvciAmJg0KPiArCQkgICAgcHJpdi0+ZG9tYWlu X2lkICE9IFJURV9FVEhfREVWX1NXSVRDSF9ET01BSU5fSURfSU5WQUxJRCkNCj4gKwkJCWNsYWlt X3plcm8ocnRlX2V0aF9zd2l0Y2hfZG9tYWluX2ZyZWUocHJpdi0+ZG9tYWluX2lkKSk7DQo+ICAJ CXJ0ZV9mcmVlKHByaXYpOw0KPiArCX0NCj4gIAlpZiAocGQpDQo+ICAJCWNsYWltX3plcm8obWx4 NV9nbHVlLT5kZWFsbG9jX3BkKHBkKSk7DQo+ICAJaWYgKGV0aF9kZXYpDQo+IEBAIC0xMDk3LDEy ICsxMTQ5LDE0IEBAIG1seDVfZGV2X3NwYXduX29uZShzdHJ1Y3QgcnRlX2RldmljZSAqZHBka19k ZXYsICB9DQo+IA0KPiAgLyoqDQo+IC0gKiBTcGF3biBFdGhlcm5ldCBkZXZpY2VzIGZyb20gVmVy YnMgaW5mb3JtYXRpb24sIG9uZSBwZXIgZGV0ZWN0ZWQgcG9ydC4NCj4gKyAqIFNwYXduIEV0aGVy bmV0IGRldmljZXMgZnJvbSBWZXJicyBpbmZvcm1hdGlvbiwgb25lIHBlciBkZXRlY3RlZCBwb3J0 DQo+ICsgYW5kDQo+ICsgKiBwb3J0IHJlcHJlc2VudG9yLg0KPiAgICoNCj4gICAqIEBwYXJhbSBk cGRrX2Rldg0KPiAgICogICBCYWNraW5nIERQREsgZGV2aWNlLg0KPiAgICogQHBhcmFtIGlidl9k ZXYNCj4gLSAqICAgVmVyYnMgZGV2aWNlLg0KPiArICogICBOVUxMLXRlcm1pbmF0ZWQgbGlzdCBv ZiBWZXJicyBkZXZpY2VzLiBGaXJzdCBlbnRyeSBpcyB0aGUgbWFzdGVyIGRldmljZQ0KPiArICog ICAobWFuZGF0b3J5KSwgZm9sbG93ZWQgYnkgb3B0aW9uYWwgcmVwcmVzZW50b3JzLg0KPiAgICog QHBhcmFtIHZmDQo+ICAgKiAgIElmIG5vbnplcm8sIGVuYWJsZSBWRi1zcGVjaWZpYyBmZWF0dXJl cy4NCj4gICAqDQo+IEBAIC0xMTEzLDE3ICsxMTY3LDIxIEBAIG1seDVfZGV2X3NwYXduX29uZShz dHJ1Y3QgcnRlX2RldmljZSAqZHBka19kZXYsDQo+ICAgKi8NCj4gIHN0YXRpYyBzdHJ1Y3QgcnRl X2V0aF9kZXYgKioNCj4gIG1seDVfZGV2X3NwYXduKHN0cnVjdCBydGVfZGV2aWNlICpkcGRrX2Rl diwNCj4gLQkgICAgICAgc3RydWN0IGlidl9kZXZpY2UgKmlidl9kZXYsDQo+ICsJICAgICAgIHN0 cnVjdCBpYnZfZGV2aWNlICoqaWJ2X2RldiwNCj4gIAkgICAgICAgaW50IHZmKQ0KPiAgew0KPiAg CXN0cnVjdCBydGVfZXRoX2RldiAqKmV0aF9saXN0ID0gTlVMTDsNCj4gIAlzdHJ1Y3QgaWJ2X2Nv bnRleHQgKmN0eDsNCj4gIAlzdHJ1Y3QgaWJ2X2RldmljZV9hdHRyX2V4IGF0dHI7DQo+ICsJdm9p ZCAqdG1wOw0KPiAgCXVuc2lnbmVkIGludCBpOw0KPiArCXVuc2lnbmVkIGludCBqID0gMDsNCj4g Kwl1bnNpZ25lZCBpbnQgbiA9IDA7DQo+ICAJaW50IHJldDsNCj4gDQo+ICtuZXh0Og0KPiAgCWVy cm5vID0gMDsNCj4gLQljdHggPSBtbHg1X2dsdWUtPm9wZW5fZGV2aWNlKGlidl9kZXYpOw0KPiAr CWN0eCA9IG1seDVfZ2x1ZS0+b3Blbl9kZXZpY2UoaWJ2X2RldltqXSk7DQo+ICAJaWYgKCFjdHgp IHsNCj4gIAkJcnRlX2Vycm5vID0gZXJybm8gPyBlcnJubyA6IEVOT0RFVjsNCj4gIAkJaWYgKHJ0 ZV9lcnJubyA9PSBFTk9ERVYpDQo+IEBAIC0xMTMyLDcgKzExOTAsNyBAQCBtbHg1X2Rldl9zcGF3 bihzdHJ1Y3QgcnRlX2RldmljZSAqZHBka19kZXYsDQo+ICAJCWVsc2UNCj4gIAkJCURSVl9MT0co RVJSLA0KPiAgCQkJCSJjYW5ub3QgdXNlIGRldmljZSwgYXJlIGRyaXZlcnMgdXAgdG8gZGF0ZT8i KTsNCj4gLQkJcmV0dXJuIE5VTEw7DQo+ICsJCWdvdG8gZXJyb3I7DQo+ICAJfQ0KPiAgCXJldCA9 IG1seDVfZ2x1ZS0+cXVlcnlfZGV2aWNlX2V4KGN0eCwgTlVMTCwgJmF0dHIpOw0KPiAgCW1seDVf Z2x1ZS0+Y2xvc2VfZGV2aWNlKGN0eCk7DQo+IEBAIC0xMTQwLDM0ICsxMTk4LDQyIEBAIG1seDVf ZGV2X3NwYXduKHN0cnVjdCBydGVfZGV2aWNlICpkcGRrX2RldiwNCj4gIAkJcnRlX2Vycm5vID0g cmV0Ow0KPiAgCQlEUlZfTE9HKEVSUiwgInVuYWJsZSB0byBxdWVyeSBkZXZpY2UgaW5mb3JtYXRp b246ICVzIiwNCj4gIAkJCXN0cmVycm9yKHJ0ZV9lcnJubykpOw0KPiAtCQlyZXR1cm4gTlVMTDsN Cj4gKwkJZ290byBlcnJvcjsNCj4gIAl9DQo+IC0JRFJWX0xPRyhJTkZPLCAiJXUgcG9ydChzKSBk ZXRlY3RlZCIsIGF0dHIub3JpZ19hdHRyLnBoeXNfcG9ydF9jbnQpOw0KPiAtCWV0aF9saXN0ID0g bWFsbG9jKHNpemVvZigqZXRoX2xpc3QpICoNCj4gLQkJCSAgKGF0dHIub3JpZ19hdHRyLnBoeXNf cG9ydF9jbnQgKyAxKSk7DQo+IC0JaWYgKCFldGhfbGlzdCkgew0KPiArCURSVl9MT0coSU5GTywg IiV1IHBvcnQocykgZGV0ZWN0ZWQgb24gXCIlc1wiIiwNCj4gKwkJYXR0ci5vcmlnX2F0dHIucGh5 c19wb3J0X2NudCwgaWJ2X2RldltqXS0+bmFtZSk7DQo+ICsJdG1wID0gcmVhbGxvYyhldGhfbGlz dCwgc2l6ZW9mKCpldGhfbGlzdCkgKg0KPiArCQkgICAgICAobiArIGF0dHIub3JpZ19hdHRyLnBo eXNfcG9ydF9jbnQgKyAxKSk7DQo+ICsJaWYgKCF0bXApIHsNCj4gIAkJcnRlX2Vycm5vID0gZXJy bm87DQo+IC0JCXJldHVybiBOVUxMOw0KPiArCQlnb3RvIGVycm9yOw0KPiAgCX0NCj4gKwlldGhf bGlzdCA9IHRtcDsNCj4gIAlmb3IgKGkgPSAwOyBpIDwgYXR0ci5vcmlnX2F0dHIucGh5c19wb3J0 X2NudDsgKytpKSB7DQo+IC0JCWV0aF9saXN0W2ldID0gbWx4NV9kZXZfc3Bhd25fb25lKGRwZGtf ZGV2LCBpYnZfZGV2LCB2ZiwNCj4gLQkJCQkJCSAmYXR0ciwgaSArIDEpOw0KPiAtCQlpZiAoZXRo X2xpc3RbaV0pDQo+IC0JCQljb250aW51ZTsNCj4gLQkJLyogU2F2ZSBydGVfZXJybm8gYW5kIHJv bGwgYmFjayBpbiBjYXNlIG9mIGZhaWx1cmUuICovDQo+IC0JCXJldCA9IHJ0ZV9lcnJubzsNCj4g LQkJd2hpbGUgKGktLSkgew0KPiAtCQkJbWx4NV9kZXZfY2xvc2UoZXRoX2xpc3RbaV0pOw0KPiAt CQkJaWYgKHJ0ZV9lYWxfcHJvY2Vzc190eXBlKCkgPT0gUlRFX1BST0NfUFJJTUFSWSkNCj4gLQkJ CQlydGVfZnJlZShldGhfbGlzdFtpXS0+ZGF0YS0+ZGV2X3ByaXZhdGUpOw0KPiAtCQkJY2xhaW1f emVybyhydGVfZXRoX2Rldl9yZWxlYXNlX3BvcnQoZXRoX2xpc3RbaV0pKTsNCj4gLQkJfQ0KPiAt CQlmcmVlKGV0aF9saXN0KTsNCj4gLQkJcnRlX2Vycm5vID0gcmV0Ow0KPiAtCQlyZXR1cm4gTlVM TDsNCj4gKwkJZXRoX2xpc3Rbbl0gPSBtbHg1X2Rldl9zcGF3bl9vbmUoZHBka19kZXYsIGlidl9k ZXZbal0sIHZmLA0KPiArCQkJCQkJICZhdHRyLCBpICsgMSwNCj4gKwkJCQkJCSBqID8gZXRoX2xp c3RbMF0gOiBOVUxMLA0KPiArCQkJCQkJIGogLSAxKTsNCj4gKwkJaWYgKCFldGhfbGlzdFtuXSkN Cj4gKwkJCWdvdG8gZXJyb3I7DQo+ICsJCSsrbjsNCj4gIAl9DQo+IC0JZXRoX2xpc3RbaV0gPSBO VUxMOw0KPiArCWlmIChpYnZfZGV2Wysral0pDQo+ICsJCWdvdG8gbmV4dDsNCj4gKwlldGhfbGlz dFtuXSA9IE5VTEw7DQo+ICAJcmV0dXJuIGV0aF9saXN0Ow0KPiArZXJyb3I6DQo+ICsJLyogU2F2 ZSBydGVfZXJybm8gYW5kIHJvbGwgYmFjayBpbiBjYXNlIG9mIGZhaWx1cmUuICovDQo+ICsJcmV0 ID0gcnRlX2Vycm5vOw0KPiArCXdoaWxlIChuLS0pIHsNCj4gKwkJbWx4NV9kZXZfY2xvc2UoZXRo X2xpc3Rbbl0pOw0KPiArCQlpZiAocnRlX2VhbF9wcm9jZXNzX3R5cGUoKSA9PSBSVEVfUFJPQ19Q UklNQVJZKQ0KPiArCQkJcnRlX2ZyZWUoZXRoX2xpc3Rbbl0tPmRhdGEtPmRldl9wcml2YXRlKTsN Cj4gKwkJY2xhaW1femVybyhydGVfZXRoX2Rldl9yZWxlYXNlX3BvcnQoZXRoX2xpc3Rbbl0pKTsN Cj4gKwl9DQo+ICsJZnJlZShldGhfbGlzdCk7DQo+ICsJcnRlX2Vycm5vID0gcmV0Ow0KPiArCXJl dHVybiBOVUxMOw0KPiAgfQ0KPiANCj4gIC8qKg0KPiBAQCAtMTI4Miw3ICsxMzQ4LDcgQEAgbWx4 NV9wY2lfcHJvYmUoc3RydWN0IHJ0ZV9wY2lfZHJpdmVyICpwY2lfZHJ2IF9fcnRlX3VudXNlZCwN Cj4gIAkJCQlpYnZfbWF0Y2hbcmV0XS0+bmFtZSwgcmV0IC0gMSk7DQo+ICAJfQ0KPiAgCWlmIChu KQ0KPiAtCQlldGhfbGlzdCA9IG1seDVfZGV2X3NwYXduKCZwY2lfZGV2LT5kZXZpY2UsIGlidl9t YXRjaFswXSwgdmYpOw0KPiArCQlldGhfbGlzdCA9IG1seDVfZGV2X3NwYXduKCZwY2lfZGV2LT5k ZXZpY2UsIGlidl9tYXRjaCwgdmYpOw0KPiAgCW1seDVfZ2x1ZS0+ZnJlZV9kZXZpY2VfbGlzdChp YnZfbGlzdCk7DQo+ICAJaWYgKCFuKSB7DQo+ICAJCURSVl9MT0coV0FSTklORywNCj4gQEAgLTEz MDIsNyArMTM2OCwxMSBAQCBtbHg1X3BjaV9wcm9iZShzdHJ1Y3QgcnRlX3BjaV9kcml2ZXIgKnBj aV9kcnYgX19ydGVfdW51c2VkLA0KPiAgCQlyZXQgPSAtcnRlX2Vycm5vOw0KPiAgCX0gZWxzZSB7 DQo+ICAJCWZvciAocmV0ID0gMDsgZXRoX2xpc3RbcmV0XTsgKytyZXQpIHsNCj4gKwkJCXVpbnQz Ml90IHJlc3RvcmUgPSBldGhfbGlzdFtyZXRdLT5kYXRhLT5kZXZfZmxhZ3M7DQo+ICsNCj4gIAkJ CXJ0ZV9ldGhfY29weV9wY2lfaW5mbyhldGhfbGlzdFtyZXRdLCBwY2lfZGV2KTsNCj4gKwkJCS8q IFJlc3RvcmUgbm9uLVBDSSBmbGFncyBjbGVhcmVkIGJ5IHRoZSBhYm92ZSBjYWxsLiAqLw0KPiAr CQkJZXRoX2xpc3RbcmV0XS0+ZGF0YS0+ZGV2X2ZsYWdzIHw9IHJlc3RvcmU7DQo+ICAJCQlydGVf ZXRoX2Rldl9wcm9iaW5nX2ZpbmlzaChldGhfbGlzdFtyZXRdKTsNCj4gIAkJfQ0KPiAgCQlyZXQg PSAwOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1LmggYi9kcml2ZXJzL25l dC9tbHg1L21seDUuaCBpbmRleCA5OTdiMDRhMzMuLjBmZTQ2NzE0MCAxMDA2NDQNCj4gLS0tIGEv ZHJpdmVycy9uZXQvbWx4NS9tbHg1LmgNCj4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1LmgN Cj4gQEAgLTE2MSw2ICsxNjEsMTAgQEAgc3RydWN0IHByaXYgew0KPiAgCXVpbnQxNl90IG10dTsg LyogQ29uZmlndXJlZCBNVFUuICovDQo+ICAJdWludDhfdCBwb3J0OyAvKiBQaHlzaWNhbCBwb3J0 IG51bWJlci4gKi8NCj4gIAl1bnNpZ25lZCBpbnQgaXNvbGF0ZWQ6MTsgLyogV2hldGhlciBpc29s YXRlZCBtb2RlIGlzIGVuYWJsZWQuICovDQo+ICsJdW5zaWduZWQgaW50IHJlcHJlc2VudG9yOjE7 IC8qIERldmljZSBpcyBhIHBvcnQgcmVwcmVzZW50b3IuICovDQo+ICsJdWludDE2X3QgbWFzdGVy X2lkOyAvKiBEUERLIHBvcnQgSUQgb2Ygc3dpdGNoIGRvbWFpbiBtYXN0ZXIuICovDQo+ICsJdWlu dDE2X3QgZG9tYWluX2lkOyAvKiBTd2l0Y2ggZG9tYWluIGlkZW50aWZpZXIuICovDQo+ICsJdW5z aWduZWQgaW50IHJlcF9pZDsgLyogUG9ydCByZXByZXNlbnRvciBpZGVudGlmaWVyLiAqLw0KPiAg CS8qIFJYL1RYIHF1ZXVlcy4gKi8NCj4gIAl1bnNpZ25lZCBpbnQgcnhxc19uOyAvKiBSWCBxdWV1 ZXMgYXJyYXkgc2l6ZS4gKi8NCj4gIAl1bnNpZ25lZCBpbnQgdHhxc19uOyAvKiBUWCBxdWV1ZXMg YXJyYXkgc2l6ZS4gKi8gQEAgLTIwOSw5ICsyMTMsMTIgQEAgaW50IG1seDVfZ2V0ZW52X2ludChj b25zdA0KPiBjaGFyICopOw0KPiANCj4gIC8qIG1seDVfZXRoZGV2LmMgKi8NCj4gDQo+ICtpbnQg bWx4NV9nZXRfbWFzdGVyX2lmbmFtZShjb25zdCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4g KwkJCSAgIGNoYXIgKCppZm5hbWUpW0lGX05BTUVTSVpFXSk7DQo+ICBpbnQgbWx4NV9nZXRfaWZu YW1lKGNvbnN0IHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBjaGFyICgqaWZuYW1lKVtJRl9OQU1F U0laRV0pOyAgaW50DQo+IG1seDVfaWZpbmRleChjb25zdCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl dik7IC1pbnQgbWx4NV9pZnJlcShjb25zdCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgaW50IHJl cSwNCj4gc3RydWN0IGlmcmVxICppZnIpOw0KPiAraW50IG1seDVfaWZyZXEoY29uc3Qgc3RydWN0 IHJ0ZV9ldGhfZGV2ICpkZXYsIGludCByZXEsIHN0cnVjdCBpZnJlcSAqaWZyLA0KPiArCSAgICAg ICBpbnQgbWFzdGVyKTsNCj4gIGludCBtbHg1X2dldF9tdHUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpk ZXYsIHVpbnQxNl90ICptdHUpOyAgaW50IG1seDVfc2V0X2ZsYWdzKHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2LA0KPiB1bnNpZ25lZCBpbnQga2VlcCwNCj4gIAkJICAgdW5zaWduZWQgaW50IGZsYWdz KTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9ldGhkZXYuYyBiL2RyaXZl cnMvbmV0L21seDUvbWx4NV9ldGhkZXYuYyBpbmRleA0KPiA5MDQ4OGFmMzMuLjlkNTc5NjU5ZSAx MDA2NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2V0aGRldi5jDQo+ICsrKyBiL2Ry aXZlcnMvbmV0L21seDUvbWx4NV9ldGhkZXYuYw0KPiBAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3Qg ZXRodG9vbF9saW5rX3NldHRpbmdzIHsgICNlbmRpZg0KPiANCj4gIC8qKg0KPiAtICogR2V0IGlu dGVyZmFjZSBuYW1lIGZyb20gcHJpdmF0ZSBzdHJ1Y3R1cmUuDQo+ICsgKiBHZXQgbWFzdGVyIGlu dGVyZmFjZSBuYW1lIGZyb20gcHJpdmF0ZSBzdHJ1Y3R1cmUuDQo+ICAgKg0KPiAgICogQHBhcmFt W2luXSBkZXYNCj4gICAqICAgUG9pbnRlciB0byBFdGhlcm5ldCBkZXZpY2UuDQo+IEBAIC0xMDQs NyArMTA0LDggQEAgc3RydWN0IGV0aHRvb2xfbGlua19zZXR0aW5ncyB7DQo+ICAgKiAgIDAgb24g c3VjY2VzcywgYSBuZWdhdGl2ZSBlcnJubyB2YWx1ZSBvdGhlcndpc2UgYW5kIHJ0ZV9lcnJubyBp cyBzZXQuDQo+ICAgKi8NCj4gIGludA0KPiAtbWx4NV9nZXRfaWZuYW1lKGNvbnN0IHN0cnVjdCBy dGVfZXRoX2RldiAqZGV2LCBjaGFyICgqaWZuYW1lKVtJRl9OQU1FU0laRV0pDQo+ICttbHg1X2dl dF9tYXN0ZXJfaWZuYW1lKGNvbnN0IHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiArCQkgICAg ICAgY2hhciAoKmlmbmFtZSlbSUZfTkFNRVNJWkVdKQ0KPiAgew0KPiAgCXN0cnVjdCBwcml2ICpw cml2ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4gIAlESVIgKmRpcjsNCj4gQEAgLTE3OSw2 ICsxODAsMTEzIEBAIG1seDVfZ2V0X2lmbmFtZShjb25zdCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl diwgY2hhciAoKmlmbmFtZSlbSUZfTkFNRVNJWkVdKSAgfQ0KPiANCj4gIC8qKg0KPiArICogR2V0 IGludGVyZmFjZSBuYW1lIGZyb20gcHJpdmF0ZSBzdHJ1Y3R1cmUuDQo+ICsgKg0KPiArICogVGhp cyBpcyBhIHBvcnQgcmVwcmVzZW50b3ItYXdhcmUgdmVyc2lvbiBvZiBtbHg1X2dldF9tYXN0ZXJf aWZuYW1lKCkuDQo+ICsgKg0KPiArICogQHBhcmFtW2luXSBkZXYNCj4gKyAqICAgUG9pbnRlciB0 byBFdGhlcm5ldCBkZXZpY2UuDQo+ICsgKiBAcGFyYW1bb3V0XSBpZm5hbWUNCj4gKyAqICAgSW50 ZXJmYWNlIG5hbWUgb3V0cHV0IGJ1ZmZlci4NCj4gKyAqDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAg IDAgb24gc3VjY2VzcywgYSBuZWdhdGl2ZSBlcnJubyB2YWx1ZSBvdGhlcndpc2UgYW5kIHJ0ZV9l cnJubyBpcyBzZXQuDQo+ICsgKi8NCj4gK2ludA0KPiArbWx4NV9nZXRfaWZuYW1lKGNvbnN0IHN0 cnVjdCBydGVfZXRoX2RldiAqZGV2LCBjaGFyDQo+ICsoKmlmbmFtZSlbSUZfTkFNRVNJWkVdKSB7 DQo+ICsJc3RydWN0IHByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiArCWlu dCByZXQ7DQo+ICsJY2hhciBtYXN0ZXJbSUZfTkFNRVNJWkVdOw0KPiArCUZJTEUgKmZpbGU7DQo+ ICsJRElSICpkaXI7DQo+ICsJdWludDY0X3QgcGh5c19zd2l0Y2hfaWQ7DQo+ICsNCj4gKwlpZiAo IXByaXYtPnJlcHJlc2VudG9yKQ0KPiArCQlyZXR1cm4gbWx4NV9nZXRfbWFzdGVyX2lmbmFtZShk ZXYsIGlmbmFtZSk7DQo+ICsJcmV0ID0gbWx4NV9nZXRfbWFzdGVyX2lmbmFtZShkZXYsICZtYXN0 ZXIpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsJew0KPiArCQlNS1NUUihw YXRoLCAiJXMvZGV2aWNlL25ldC8lcy9waHlzX3N3aXRjaF9pZCIsDQo+ICsJCSAgICAgIHByaXYt PmliZGV2X3BhdGgsIG1hc3Rlcik7DQo+ICsNCj4gKwkJZmlsZSA9IGZvcGVuKHBhdGgsICJyYiIp Ow0KPiArCX0NCj4gKwlpZiAoIWZpbGUpIHsNCj4gKwkJcnRlX2Vycm5vID0gZXJybm87DQo+ICsJ CXJldHVybiAtcnRlX2Vycm5vOw0KPiArCX0NCj4gKwlyZXQgPSBmc2NhbmYoZmlsZSwgIiUiIFND Tng2NCwgJnBoeXNfc3dpdGNoX2lkKTsNCj4gKwlmY2xvc2UoZmlsZSk7DQo+ICsJaWYgKHJldCAh PSAxKSB7DQo+ICsJCXJ0ZV9lcnJubyA9IEVJTlZBTDsNCj4gKwkJcmV0dXJuIC1ydGVfZXJybm87 DQo+ICsJfQ0KPiArCXsNCj4gKwkJTUtTVFIocGF0aCwgIiVzL2RldmljZS9uZXQvJXMvc3Vic3lz dGVtIiwNCj4gKwkJICAgICAgcHJpdi0+aWJkZXZfcGF0aCwgbWFzdGVyKTsNCj4gKw0KPiArCQlk aXIgPSBvcGVuZGlyKHBhdGgpOw0KPiArCX0NCj4gKwlpZiAoIWRpcikgew0KPiArCQlydGVfZXJy bm8gPSBlcnJubzsNCj4gKwkJcmV0dXJuIC1ydGVfZXJybm87DQo+ICsJfQ0KPiArCS8qDQo+ICsJ ICogU2NhbiBuZXR3b3JrIGludGVyZmFjZXMgdG8gZmluZCBvbmUgd2l0aCBtYXRjaGluZyBwaHlz X3N3aXRjaF9pZA0KPiArCSAqIGFuZCBwaHlzX3N3aXRjaF9uYW1lLg0KPiArCSAqLw0KPiArCWRv IHsNCj4gKwkJc3RydWN0IGRpcmVudCAqZGVudDsNCj4gKwkJdWludDY0X3QgcGh5c19zd2l0Y2hf aWRfcmVwOw0KPiArCQlpbnQgcmVwX2lkOw0KPiArDQo+ICsJCXJldCA9IC1FTk9FTlQ7DQo+ICsJ CWRlbnQgPSByZWFkZGlyKGRpcik7DQo+ICsJCWlmICghZGVudCkNCj4gKwkJCWJyZWFrOw0KPiAr CQl7DQo+ICsJCQlNS1NUUihwYXRoLA0KPiArCQkJICAgICAgIiVzL2RldmljZS9uZXQvJXMvc3Vi c3lzdGVtLyVzL3BoeXNfc3dpdGNoX2lkIiwNCj4gKwkJCSAgICAgIHByaXYtPmliZGV2X3BhdGgs IG1hc3RlciwgZGVudC0+ZF9uYW1lKTsNCj4gKw0KPiArCQkJZmlsZSA9IGZvcGVuKHBhdGgsICJy YiIpOw0KPiArCQl9DQo+ICsJCWlmICghZmlsZSkNCj4gKwkJCWNvbnRpbnVlOw0KPiArCQlyZXQg PSBmc2NhbmYoZmlsZSwgIiUiIFNDTng2NCwgJnBoeXNfc3dpdGNoX2lkX3JlcCk7DQo+ICsJCWZj bG9zZShmaWxlKTsNCj4gKwkJaWYgKHJldCAhPSAxKQ0KPiArCQkJY29udGludWU7DQo+ICsJCWlm IChwaHlzX3N3aXRjaF9pZF9yZXAgIT0gcGh5c19zd2l0Y2hfaWQpDQo+ICsJCQljb250aW51ZTsN Cj4gKwkJew0KPiArCQkJTUtTVFIocGF0aCwNCj4gKwkJCSAgICAgICIlcy9kZXZpY2UvbmV0LyVz L3N1YnN5c3RlbS8lcy9waHlzX3BvcnRfbmFtZSIsDQo+ICsJCQkgICAgICBwcml2LT5pYmRldl9w YXRoLCBtYXN0ZXIsIGRlbnQtPmRfbmFtZSk7DQo+ICsNCj4gKwkJCWZpbGUgPSBmb3BlbihwYXRo LCAicmIiKTsNCj4gKwkJfQ0KPiArCQlpZiAoIWZpbGUpDQo+ICsJCQljb250aW51ZTsNCj4gKwkJ cmV0ID0gZnNjYW5mKGZpbGUsICIlZCIsICZyZXBfaWQpOw0KPiArCQlmY2xvc2UoZmlsZSk7DQo+ ICsJCWlmIChyZXQgIT0gMSkNCj4gKwkJCWNvbnRpbnVlOw0KPiArCQlpZiAocmVwX2lkIDwgMCB8 fCAodW5zaWduZWQgaW50KXJlcF9pZCAhPSBwcml2LT5yZXBfaWQpDQo+ICsJCQljb250aW51ZTsN Cj4gKwkJc3RybGNweSgqaWZuYW1lLCBkZW50LT5kX25hbWUsIHNpemVvZigqaWZuYW1lKSk7DQo+ ICsJCXJldCA9IDA7DQo+ICsJCWJyZWFrOw0KPiArCX0gd2hpbGUgKDEpOw0KPiArCWNsb3NlZGly KGRpcik7DQo+ICsJaWYgKHJldCkNCj4gKwkJcnRlX2Vycm5vID0gLXJldDsNCj4gKwlyZXR1cm4g cmV0Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gICAqIEdldCB0aGUgaW50ZXJmYWNlIGluZGV4IGZy b20gZGV2aWNlIG5hbWUuDQo+ICAgKg0KPiAgICogQHBhcmFtW2luXSBkZXYNCj4gQEAgLTIxNCwx MiArMzIyLDE2IEBAIG1seDVfaWZpbmRleChjb25zdCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikN Cj4gICAqICAgUmVxdWVzdCBudW1iZXIgdG8gcGFzcyB0byBpb2N0bCgpLg0KPiAgICogQHBhcmFt W291dF0gaWZyDQo+ICAgKiAgIEludGVyZmFjZSByZXF1ZXN0IHN0cnVjdHVyZSBvdXRwdXQgYnVm ZmVyLg0KPiArICogQHBhcmFtIG1hc3Rlcg0KPiArICogICBXaGVuIGRldmljZSBpcyBhIHBvcnQg cmVwcmVzZW50b3IsIHBlcmZvcm0gcmVxdWVzdCBvbiBtYXN0ZXIgZGV2aWNlDQo+ICsgKiAgIGlu c3RlYWQuDQo+ICAgKg0KPiAgICogQHJldHVybg0KPiAgICogICAwIG9uIHN1Y2Nlc3MsIGEgbmVn YXRpdmUgZXJybm8gdmFsdWUgb3RoZXJ3aXNlIGFuZCBydGVfZXJybm8gaXMgc2V0Lg0KPiAgICov DQo+ICBpbnQNCj4gLW1seDVfaWZyZXEoY29uc3Qgc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIGlu dCByZXEsIHN0cnVjdCBpZnJlcSAqaWZyKQ0KPiArbWx4NV9pZnJlcShjb25zdCBzdHJ1Y3QgcnRl X2V0aF9kZXYgKmRldiwgaW50IHJlcSwgc3RydWN0IGlmcmVxICppZnIsDQo+ICsJICAgaW50IG1h c3RlcikNCj4gIHsNCj4gIAlpbnQgc29jayA9IHNvY2tldChQRl9JTkVULCBTT0NLX0RHUkFNLCBJ UFBST1RPX0lQKTsNCj4gIAlpbnQgcmV0ID0gMDsNCj4gQEAgLTIyOCw3ICszNDAsMTAgQEAgbWx4 NV9pZnJlcShjb25zdCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgaW50IHJlcSwgc3RydWN0IGlm cmVxICppZnIpDQo+ICAJCXJ0ZV9lcnJubyA9IGVycm5vOw0KPiAgCQlyZXR1cm4gLXJ0ZV9lcnJu bzsNCj4gIAl9DQo+IC0JcmV0ID0gbWx4NV9nZXRfaWZuYW1lKGRldiwgJmlmci0+aWZyX25hbWUp Ow0KPiArCWlmIChtYXN0ZXIpDQo+ICsJCXJldCA9IG1seDVfZ2V0X21hc3Rlcl9pZm5hbWUoZGV2 LCAmaWZyLT5pZnJfbmFtZSk7DQo+ICsJZWxzZQ0KPiArCQlyZXQgPSBtbHg1X2dldF9pZm5hbWUo ZGV2LCAmaWZyLT5pZnJfbmFtZSk7DQo+ICAJaWYgKHJldCkNCj4gIAkJZ290byBlcnJvcjsNCj4g IAlyZXQgPSBpb2N0bChzb2NrLCByZXEsIGlmcik7DQo+IEBAIC0yNTgsNyArMzczLDcgQEAgaW50 DQo+ICBtbHg1X2dldF9tdHUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90ICptdHUp ICB7DQo+ICAJc3RydWN0IGlmcmVxIHJlcXVlc3Q7DQo+IC0JaW50IHJldCA9IG1seDVfaWZyZXEo ZGV2LCBTSU9DR0lGTVRVLCAmcmVxdWVzdCk7DQo+ICsJaW50IHJldCA9IG1seDVfaWZyZXEoZGV2 LCBTSU9DR0lGTVRVLCAmcmVxdWVzdCwgMCk7DQo+IA0KPiAgCWlmIChyZXQpDQo+ICAJCXJldHVy biByZXQ7DQo+IEBAIC0yODIsNyArMzk3LDcgQEAgbWx4NV9zZXRfbXR1KHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LCB1aW50MTZfdCBtdHUpICB7DQo+ICAJc3RydWN0IGlmcmVxIHJlcXVlc3QgPSB7 IC5pZnJfbXR1ID0gbXR1LCB9Ow0KPiANCj4gLQlyZXR1cm4gbWx4NV9pZnJlcShkZXYsIFNJT0NT SUZNVFUsICZyZXF1ZXN0KTsNCj4gKwlyZXR1cm4gbWx4NV9pZnJlcShkZXYsIFNJT0NTSUZNVFUs ICZyZXF1ZXN0LCAwKTsNCj4gIH0NCj4gDQo+ICAvKioNCj4gQEAgLTMwMiwxMyArNDE3LDEzIEBA IGludA0KPiAgbWx4NV9zZXRfZmxhZ3Moc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVuc2lnbmVk IGludCBrZWVwLCB1bnNpZ25lZCBpbnQgZmxhZ3MpICB7DQo+ICAJc3RydWN0IGlmcmVxIHJlcXVl c3Q7DQo+IC0JaW50IHJldCA9IG1seDVfaWZyZXEoZGV2LCBTSU9DR0lGRkxBR1MsICZyZXF1ZXN0 KTsNCj4gKwlpbnQgcmV0ID0gbWx4NV9pZnJlcShkZXYsIFNJT0NHSUZGTEFHUywgJnJlcXVlc3Qs IDApOw0KPiANCj4gIAlpZiAocmV0KQ0KPiAgCQlyZXR1cm4gcmV0Ow0KPiAgCXJlcXVlc3QuaWZy X2ZsYWdzICY9IGtlZXA7DQo+ICAJcmVxdWVzdC5pZnJfZmxhZ3MgfD0gZmxhZ3MgJiB+a2VlcDsN Cj4gLQlyZXR1cm4gbWx4NV9pZnJlcShkZXYsIFNJT0NTSUZGTEFHUywgJnJlcXVlc3QpOw0KPiAr CXJldHVybiBtbHg1X2lmcmVxKGRldiwgU0lPQ1NJRkZMQUdTLCAmcmVxdWVzdCwgMCk7DQo+ICB9 DQo+IA0KPiAgLyoqDQo+IEBAIC00NzcsNiArNTkyLDEyIEBAIG1seDVfZGV2X2luZm9zX2dldChz dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IHJ0ZV9ldGhfZGV2X2luZm8gKmluZm8pDQo+ ICAJaW5mby0+c3BlZWRfY2FwYSA9IHByaXYtPmxpbmtfc3BlZWRfY2FwYTsNCj4gIAlpbmZvLT5m bG93X3R5cGVfcnNzX29mZmxvYWRzID0gfk1MWDVfUlNTX0hGX01BU0s7DQo+ICAJbWx4NV9zZXRf ZGVmYXVsdF9wYXJhbXMoZGV2LCBpbmZvKTsNCj4gKwlpZiAocnRlX2V0aF9kZXZfaXNfdmFsaWRf cG9ydChwcml2LT5tYXN0ZXJfaWQpKSB7DQo+ICsJCWluZm8tPnN3aXRjaF9pbmZvLm5hbWUgPQ0K PiArCQkJcnRlX2V0aF9kZXZpY2VzW3ByaXYtPm1hc3Rlcl9pZF0uZGF0YS0+bmFtZTsNCj4gKwkJ aW5mby0+c3dpdGNoX2luZm8uZG9tYWluX2lkID0gcHJpdi0+ZG9tYWluX2lkOw0KPiArCQlpbmZv LT5zd2l0Y2hfaW5mby5wb3J0X2lkID0gcHJpdi0+cmVwX2lkOw0KPiArCX0NCj4gIH0NCj4gDQo+ ICAvKioNCj4gQEAgLTU0MCw3ICs2NjEsNyBAQCBtbHg1X2xpbmtfdXBkYXRlX3VubG9ja2VkX2dz ZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ICAJaW50IGxpbmtfc3BlZWQgPSAwOw0KPiAg CWludCByZXQ7DQo+IA0KPiAtCXJldCA9IG1seDVfaWZyZXEoZGV2LCBTSU9DR0lGRkxBR1MsICZp ZnIpOw0KPiArCXJldCA9IG1seDVfaWZyZXEoZGV2LCBTSU9DR0lGRkxBR1MsICZpZnIsIDEpOw0K PiAgCWlmIChyZXQpIHsNCj4gIAkJRFJWX0xPRyhXQVJOSU5HLCAicG9ydCAldSBpb2N0bChTSU9D R0lGRkxBR1MpIGZhaWxlZDogJXMiLA0KPiAgCQkJZGV2LT5kYXRhLT5wb3J0X2lkLCBzdHJlcnJv cihydGVfZXJybm8pKTsgQEAgLTU1MCw3ICs2NzEsNyBAQA0KPiBtbHg1X2xpbmtfdXBkYXRlX3Vu bG9ja2VkX2dzZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ICAJZGV2X2xpbmsubGlua19z dGF0dXMgPSAoKGlmci5pZnJfZmxhZ3MgJiBJRkZfVVApICYmDQo+ICAJCQkJKGlmci5pZnJfZmxh Z3MgJiBJRkZfUlVOTklORykpOw0KPiAgCWlmci5pZnJfZGF0YSA9ICh2b2lkICopJmVkYXRhOw0K PiAtCXJldCA9IG1seDVfaWZyZXEoZGV2LCBTSU9DRVRIVE9PTCwgJmlmcik7DQo+ICsJcmV0ID0g bWx4NV9pZnJlcShkZXYsIFNJT0NFVEhUT09MLCAmaWZyLCAxKTsNCj4gIAlpZiAocmV0KSB7DQo+ ICAJCURSVl9MT0coV0FSTklORywNCj4gIAkJCSJwb3J0ICV1IGlvY3RsKFNJT0NFVEhUT09MLCBF VEhUT09MX0dTRVQpIGZhaWxlZDogJXMiLCBAQCAtNjExLDcgKzczMiw3IEBADQo+IG1seDVfbGlu a191cGRhdGVfdW5sb2NrZWRfZ3Moc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ICAJdWludDY0 X3Qgc2M7DQo+ICAJaW50IHJldDsNCj4gDQo+IC0JcmV0ID0gbWx4NV9pZnJlcShkZXYsIFNJT0NH SUZGTEFHUywgJmlmcik7DQo+ICsJcmV0ID0gbWx4NV9pZnJlcShkZXYsIFNJT0NHSUZGTEFHUywg JmlmciwgMSk7DQo+ICAJaWYgKHJldCkgew0KPiAgCQlEUlZfTE9HKFdBUk5JTkcsICJwb3J0ICV1 IGlvY3RsKFNJT0NHSUZGTEFHUykgZmFpbGVkOiAlcyIsDQo+ICAJCQlkZXYtPmRhdGEtPnBvcnRf aWQsIHN0cmVycm9yKHJ0ZV9lcnJubykpOyBAQCAtNjIxLDcgKzc0Miw3IEBADQo+IG1seDVfbGlu a191cGRhdGVfdW5sb2NrZWRfZ3Moc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ICAJZGV2X2xp bmsubGlua19zdGF0dXMgPSAoKGlmci5pZnJfZmxhZ3MgJiBJRkZfVVApICYmDQo+ICAJCQkJKGlm ci5pZnJfZmxhZ3MgJiBJRkZfUlVOTklORykpOw0KPiAgCWlmci5pZnJfZGF0YSA9ICh2b2lkICop JmdjbWQ7DQo+IC0JcmV0ID0gbWx4NV9pZnJlcShkZXYsIFNJT0NFVEhUT09MLCAmaWZyKTsNCj4g KwlyZXQgPSBtbHg1X2lmcmVxKGRldiwgU0lPQ0VUSFRPT0wsICZpZnIsIDEpOw0KPiAgCWlmIChy ZXQpIHsNCj4gIAkJRFJWX0xPRyhERUJVRywNCj4gIAkJCSJwb3J0ICV1IGlvY3RsKFNJT0NFVEhU T09MLCBFVEhUT09MX0dMSU5LU0VUVElOR1MpIg0KPiBAQCAtNjM4LDcgKzc1OSw3IEBAIG1seDVf bGlua191cGRhdGVfdW5sb2NrZWRfZ3Moc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+IA0KPiAg CSplY21kID0gZ2NtZDsNCj4gIAlpZnIuaWZyX2RhdGEgPSAodm9pZCAqKWVjbWQ7DQo+IC0JcmV0 ID0gbWx4NV9pZnJlcShkZXYsIFNJT0NFVEhUT09MLCAmaWZyKTsNCj4gKwlyZXQgPSBtbHg1X2lm cmVxKGRldiwgU0lPQ0VUSFRPT0wsICZpZnIsIDEpOw0KPiAgCWlmIChyZXQpIHsNCj4gIAkJRFJW X0xPRyhERUJVRywNCj4gIAkJCSJwb3J0ICV1IGlvY3RsKFNJT0NFVEhUT09MLCBFVEhUT09MX0dM SU5LU0VUVElOR1MpIg0KPiBAQCAtODAxLDcgKzkyMiw3IEBAIG1seDVfZGV2X2dldF9mbG93X2N0 cmwoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBydGVfZXRoX2ZjX2NvbmYgKmZjX2Nv bmYpDQo+ICAJaW50IHJldDsNCj4gDQo+ICAJaWZyLmlmcl9kYXRhID0gKHZvaWQgKikmZXRocGF1 c2U7DQo+IC0JcmV0ID0gbWx4NV9pZnJlcShkZXYsIFNJT0NFVEhUT09MLCAmaWZyKTsNCj4gKwly ZXQgPSBtbHg1X2lmcmVxKGRldiwgU0lPQ0VUSFRPT0wsICZpZnIsIDEpOw0KPiAgCWlmIChyZXQp IHsNCj4gIAkJRFJWX0xPRyhXQVJOSU5HLA0KPiAgCQkJInBvcnQgJXUgaW9jdGwoU0lPQ0VUSFRP T0wsIEVUSFRPT0xfR1BBVVNFUEFSQU0pIGZhaWxlZDoiDQo+IEBAIC04NTQsNyArOTc1LDcgQEAg bWx4NV9kZXZfc2V0X2Zsb3dfY3RybChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IHJ0 ZV9ldGhfZmNfY29uZiAqZmNfY29uZikNCj4gIAkJZXRocGF1c2UudHhfcGF1c2UgPSAxOw0KPiAg CWVsc2UNCj4gIAkJZXRocGF1c2UudHhfcGF1c2UgPSAwOw0KPiAtCXJldCA9IG1seDVfaWZyZXEo ZGV2LCBTSU9DRVRIVE9PTCwgJmlmcik7DQo+ICsJcmV0ID0gbWx4NV9pZnJlcShkZXYsIFNJT0NF VEhUT09MLCAmaWZyLCAwKTsNCj4gIAlpZiAocmV0KSB7DQo+ICAJCURSVl9MT0coV0FSTklORywN Cj4gIAkJCSJwb3J0ICV1IGlvY3RsKFNJT0NFVEhUT09MLCBFVEhUT09MX1NQQVVTRVBBUkFNKSIN Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9tYWMuYyBiL2RyaXZlcnMvbmV0 L21seDUvbWx4NV9tYWMuYyBpbmRleCA2NzJhNDc2MTkuLjEyZWUzN2Y1NQ0KPiAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X21hYy5jDQo+ICsrKyBiL2RyaXZlcnMvbmV0L21s eDUvbWx4NV9tYWMuYw0KPiBAQCAtNDksNyArNDksNyBAQCBtbHg1X2dldF9tYWMoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsIHVpbnQ4X3QgKCptYWMpW0VUSEVSX0FERFJfTEVOXSkNCj4gIAlzdHJ1 Y3QgaWZyZXEgcmVxdWVzdDsNCj4gIAlpbnQgcmV0Ow0KPiANCj4gLQlyZXQgPSBtbHg1X2lmcmVx KGRldiwgU0lPQ0dJRkhXQUREUiwgJnJlcXVlc3QpOw0KPiArCXJldCA9IG1seDVfaWZyZXEoZGV2 LCBTSU9DR0lGSFdBRERSLCAmcmVxdWVzdCwgMCk7DQo+ICAJaWYgKHJldCkNCj4gIAkJcmV0dXJu IHJldDsNCj4gIAltZW1jcHkobWFjLCByZXF1ZXN0Lmlmcl9od2FkZHIuc2FfZGF0YSwgRVRIRVJf QUREUl9MRU4pOyBkaWZmIC0tZ2l0DQo+IGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3N0YXRzLmMg Yi9kcml2ZXJzL25ldC9tbHg1L21seDVfc3RhdHMuYyBpbmRleCA4NzVkZDEwMjcuLjkxZjNkNDc0 YSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3N0YXRzLmMNCj4gKysrIGIv ZHJpdmVycy9uZXQvbWx4NS9tbHg1X3N0YXRzLmMNCj4gQEAgLTE0Niw3ICsxNDYsNyBAQCBtbHg1 X3JlYWRfZGV2X2NvdW50ZXJzKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50NjRfdCAqc3Rh dHMpDQo+ICAJZXRfc3RhdHMtPmNtZCA9IEVUSFRPT0xfR1NUQVRTOw0KPiAgCWV0X3N0YXRzLT5u X3N0YXRzID0geHN0YXRzX2N0cmwtPnN0YXRzX247DQo+ICAJaWZyLmlmcl9kYXRhID0gKGNhZGRy X3QpZXRfc3RhdHM7DQo+IC0JcmV0ID0gbWx4NV9pZnJlcShkZXYsIFNJT0NFVEhUT09MLCAmaWZy KTsNCj4gKwlyZXQgPSBtbHg1X2lmcmVxKGRldiwgU0lPQ0VUSFRPT0wsICZpZnIsIDEpOw0KPiAg CWlmIChyZXQpIHsNCj4gIAkJRFJWX0xPRyhXQVJOSU5HLA0KPiAgCQkJInBvcnQgJXUgdW5hYmxl IHRvIHJlYWQgc3RhdGlzdGljIHZhbHVlcyBmcm9tIGRldmljZSIsIEBAIC0xOTQsNyArMTk0LDcg QEANCj4gbWx4NV9ldGh0b29sX2dldF9zdGF0c19uKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KSB7 DQo+IA0KPiAgCWRydmluZm8uY21kID0gRVRIVE9PTF9HRFJWSU5GTzsNCj4gIAlpZnIuaWZyX2Rh dGEgPSAoY2FkZHJfdCkmZHJ2aW5mbzsNCj4gLQlyZXQgPSBtbHg1X2lmcmVxKGRldiwgU0lPQ0VU SFRPT0wsICZpZnIpOw0KPiArCXJldCA9IG1seDVfaWZyZXEoZGV2LCBTSU9DRVRIVE9PTCwgJmlm ciwgMSk7DQo+ICAJaWYgKHJldCkgew0KPiAgCQlEUlZfTE9HKFdBUk5JTkcsICJwb3J0ICV1IHVu YWJsZSB0byBxdWVyeSBudW1iZXIgb2Ygc3RhdGlzdGljcyIsDQo+ICAJCQlkZXYtPmRhdGEtPnBv cnRfaWQpOw0KPiBAQCAtMjQ0LDcgKzI0NCw3IEBAIG1seDVfeHN0YXRzX2luaXQoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYpDQo+ICAJc3RyaW5ncy0+c3RyaW5nX3NldCA9IEVUSF9TU19TVEFUUzsN Cj4gIAlzdHJpbmdzLT5sZW4gPSBkZXZfc3RhdHNfbjsNCj4gIAlpZnIuaWZyX2RhdGEgPSAoY2Fk ZHJfdClzdHJpbmdzOw0KPiAtCXJldCA9IG1seDVfaWZyZXEoZGV2LCBTSU9DRVRIVE9PTCwgJmlm cik7DQo+ICsJcmV0ID0gbWx4NV9pZnJlcShkZXYsIFNJT0NFVEhUT09MLCAmaWZyLCAxKTsNCj4g IAlpZiAocmV0KSB7DQo+ICAJCURSVl9MT0coV0FSTklORywgInBvcnQgJXUgdW5hYmxlIHRvIGdl dCBzdGF0aXN0aWMgbmFtZXMiLA0KPiAgCQkJZGV2LT5kYXRhLT5wb3J0X2lkKTsNCj4gLS0NCj4g Mi4xMS4wDQo=