Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752137AbeAJUFf (ORCPT + 1 other); Wed, 10 Jan 2018 15:05:35 -0500 Received: from mail-sn1nam02on0099.outbound.protection.outlook.com ([104.47.36.99]:9920 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752065AbeAJUFd (ORCPT ); Wed, 10 Jan 2018 15:05:33 -0500 From: "Shirley Her (SC)" To: Craig Bergstrom , Adrian Hunter CC: LinuxPatchCommit , "ulf.hansson@linaro.org" , "linux-mmc@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH 1/3] mmc: sdhci-pci-o2micro: Add hardware tuning for eMMC Thread-Topic: [PATCH 1/3] mmc: sdhci-pci-o2micro: Add hardware tuning for eMMC Thread-Index: AQHTbOLONuG0CMs0hEyL31zwpiucrKMy7DfggAABDJCAF4nxgIADrnIAgB+bfuA= Date: Wed, 10 Jan 2018 20:05:21 +0000 Message-ID: References: <64a8b6a8-ba1b-a298-5115-d8379f121cab@intel.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=shirley.her@bayhubtech.com; x-originating-ip: [209.36.105.162] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;CY1PR0401MB1535;7:IqLolWTIfig+GVTnEoiKTz8brZu87gyvMsGzCG2dDWL0NzlENsejX2GvUifJlKFu8Z/GRBgTmHkx1/qmpcSlexobVL2gqc9RoU3ALRhNOLXqOo37BjbXHRkNGr7d4mswtGsGNE7VLUwspqNQiwYmHO2CbSap8OvhFqfja5miQ8qM+O52FTq+8UAesnLCo4cjAcjdVZYiaI8IXirJpMx1sL38o7X2uWWLhlAewOGbSCNqOdVCcCgCrL6djw5FGQVD x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI;SCL:-1;SFV:NSPM;SFS:(10019020)(39380400002)(346002)(39830400003)(396003)(366004)(376002)(199004)(189003)(13464003)(24454002)(110136005)(76176011)(102836004)(59450400001)(81166006)(3660700001)(53546011)(6506007)(229853002)(74316002)(97736004)(5660300001)(3846002)(68736007)(6116002)(106356001)(316002)(54906003)(8936002)(3280700002)(14454004)(2950100002)(2906002)(86362001)(66066001)(305945005)(2900100001)(53946003)(25786009)(53936002)(478600001)(7696005)(9686003)(99286004)(6436002)(77096006)(55016002)(4326008)(81156014)(8676002)(105586002)(33656002)(6246003)(7736002)(230783001)(579004);DIR:OUT;SFP:1102;SCL:1;SRVR:CY1PR0401MB1535;H:BN6PR04MB0900.namprd04.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; x-ms-office365-filtering-correlation-id: 0aa550b0-a007-4dd0-704b-08d558657af6 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(4534020)(4602075)(4603075)(4627115)(201702281549075)(5600026)(4604075)(3008032)(2017052603307)(7153060)(7193020);SRVR:CY1PR0401MB1535; x-ms-traffictypediagnostic: CY1PR0401MB1535: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(9452136761055)(211936372134217)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(10201501046)(3002001)(93006095)(93001095)(6041268)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(2016111802025)(20161123558120)(20161123562045)(20161123560045)(6043046)(6072148)(201708071742011);SRVR:CY1PR0401MB1535;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:CY1PR0401MB1535; x-forefront-prvs: 0548586081 x-microsoft-antispam-message-info: IE3yoJC/6fX2YKfKa06dbPyrxSVNU/F8E6lbVCzcFIupl65vUnO8z5bVjvhHYRK2aWxc3hALcHDBafFSkkyUIA== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: bayhubtech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0aa550b0-a007-4dd0-704b-08d558657af6 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jan 2018 20:05:21.8674 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 0a7aae2b-8f2e-44df-ba2f-42de7f93c642 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0401MB1535 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: SGksIENyYWlnOg0KDQpBcyB0aGUgbWVzc2FnZSBzYWlkIGR1cmluZyBzaWduIG9mZiBhcyBiZWxv dy4gQklPUyBuZWVkcyB0byBzZXQgeDAzMDggYml0IDQgdG8gMSBzbyB0aGUgZHJpdmVyIHdpbGwg c2tpcCAzLjNWIGluIGVNTUMgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gSXQgbWVhbnMgZGVwdGhj aGFyZ2UgbmVlZHMgdG8gc2V0IDB4MzA4IGJpdCA0IHRvIDEgZmlyc3QgaW4gb3JkZXIgZm9yIGRy aXZlciB0byB1c2UgZU1NQyAxLjhWLg0KDQpJbiBzb21lIGNhc2Ugb2YgZU1NQyB1c2VkIGFzIGJv b3QgZGV2aWNlLCB0aGUgZU1NQyBzaWduYWxpbmcgdm9sdGFnZSANCj4gaXMgZml4ZWQgdG8gMS44 diwgYmlvcyBjYW4gc2V0IG8yIHNkIGhvc3QgY29udHJvbGxlciByZWdpc3RlciAweDMwOCANCj4g Yml0NCB0byBsZXQgaG9zdCBjb250cm9sbGVyIHNraXAgdHJ5IDMuMy52IHNpZ25hbGluZyB2b2x0 YWdlIGluIGVNTUMgDQo+IGluaXRpYWxpemUgcHJvY2Vzcy4NCg0KVGhhbmtzLA0KU2hpcmxleQ0K DQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogQ3JhaWcgQmVyZ3N0cm9tIFttYWls dG86Y3JhaWdiQGdvb2dsZS5jb21dIA0KU2VudDogVGh1cnNkYXksIERlY2VtYmVyIDIxLCAyMDE3 IDk6MTggQU0NClRvOiBBZHJpYW4gSHVudGVyDQpDYzogTGludXhQYXRjaENvbW1pdDsgdWxmLmhh bnNzb25AbGluYXJvLm9yZzsgbGludXgtbW1jQHZnZXIua2VybmVsLm9yZzsgbGludXgta2VybmVs QHZnZXIua2VybmVsLm9yZzsgU2hpcmxleSBIZXIgKFNDKQ0KU3ViamVjdDogUmU6IFtQQVRDSCAx LzNdIG1tYzogc2RoY2ktcGNpLW8ybWljcm86IEFkZCBoYXJkd2FyZSB0dW5pbmcgZm9yIGVNTUMN Cg0KVGhhbmtzIGZvciBzZW5kaW5nIHRoZXNlIHBhdGNoZXMgb3V0LCBJIHdvdWxkIGJlIHZlcnkg ZXhjaXRlZCB0byBzZWUgdGhlc2UgZGV2aWNlcyBzdXBwb3J0ZWQgYnkgTGludXguDQoNCkknbSB0 cnlpbmcgdGhlbSBvdXQgd2l0aCBhIFNFQUJJUkQgZGV2aWNlIChwY2kgZGV2aWNlIDEyMTc6ODYy MCkuDQpXaGVuIEkgYm9vdCB1cCBhbmQgbG9hZCB0aGUgZHJpdmVyLCBpdCBkb24ndCBzZWUgYW55 IGluZGljYXRpb24gb2YgdGhlIGV4aXN0ZW5jZSBvZiBibG9jayBkZXZpY2UgYW5kIEkgc2VlIHRo ZXNlIG1lc3NhZ2VzIHJlcGVhdGVkbHkgc3BhbW1lZCB0byB0aGUga2VybmVsIGxvZ3M6DQoNClsg ICAgMC44NTUxNjNdIG1tYzE6IFVua25vd24gY29udHJvbGxlciB2ZXJzaW9uICgzKS4gWW91IG1h eQ0KZXhwZXJpZW5jZSBwcm9ibGVtcy4NClsgICAgMC44NjI1MTldIG1tYzE6IFNESENJIGNvbnRy b2xsZXIgb24gUENJIFswMDAwOjAxOjAwLjBdIHVzaW5nIEFETUENClsgICA5My4xNTIxNjNdIG1t YzE6IFRpbWVvdXQgd2FpdGluZyBmb3IgaGFyZHdhcmUgY21kIGludGVycnVwdC4NClsgICA5My4x NTc5MTFdIG1tYzE6IHNkaGNpOiA9PT09PT09PT09PT0gU0RIQ0kgUkVHSVNURVIgRFVNUCA9PT09 PT09PT09PQ0KWyAgIDkzLjE2NDM0N10gbW1jMTogc2RoY2k6IFN5cyBhZGRyOiAgMHgwMDAwMDAw MCB8IFZlcnNpb246ICAweDAwMDAwNjAzDQpbICAgOTMuMTcwNzgyXSBtbWMxOiBzZGhjaTogQmxr IHNpemU6ICAweDAwMDAwMDAwIHwgQmxrIGNudDogIDB4MDAwMDAwMDANClsgICA5My4xNzcyMThd IG1tYzE6IHNkaGNpOiBBcmd1bWVudDogIDB4MDAwMDAwMDAgfCBUcm4gbW9kZTogMHgwMDAwMDAw MA0KWyAgIDkzLjE4MzY1Ml0gbW1jMTogc2RoY2k6IFByZXNlbnQ6ICAgMHgwMWZmMDAwMCB8IEhv c3QgY3RsOiAweDAwMDAwMDAxDQpbICAgOTMuMTkwMDg4XSBtbWMxOiBzZGhjaTogUG93ZXI6ICAg ICAweDAwMDAwMDBmIHwgQmxrIGdhcDogIDB4MDAwMDAwMDANClsgICA5My4xOTY1MjNdIG1tYzE6 IHNkaGNpOiBXYWtlLXVwOiAgIDB4MDAwMDAwMDAgfCBDbG9jazogICAgMHgwMDAwZmEwNw0KWyAg IDkzLjIwMjk1Nl0gbW1jMTogc2RoY2k6IFRpbWVvdXQ6ICAgMHgwMDAwMDAwMCB8IEludCBzdGF0 OiAweDAwMDE4MDAwDQpbICAgOTMuMjA5MzkyXSBtbWMxOiBzZGhjaTogSW50IGVuYWI6ICAweDAw ZmYwMDgzIHwgU2lnIGVuYWI6IDB4MDBmZjAwODMNClsgICA5My4yMTU4MjZdIG1tYzE6IHNkaGNp OiBBQzEyIGVycjogIDB4MDAwMDAwMDAgfCBTbG90IGludDogMHgwMDAwMDAwMQ0KWyAgIDkzLjIy MjI2MF0gbW1jMTogc2RoY2k6IENhcHM6ICAgICAgMHgyNWZjYzhiZiB8IENhcHNfMTogICAweDAw MDAyMDc3DQpbICAgOTMuMjI4Njk0XSBtbWMxOiBzZGhjaTogQ21kOiAgICAgICAweDAwMDAzNzFh IHwgTWF4IGN1cnI6IDB4MDA1ODAwYzgNClsgICA5My4yMzUxMjddIG1tYzE6IHNkaGNpOiBSZXNw WzBdOiAgIDB4MDAwMDAwMDAgfCBSZXNwWzFdOiAgMHgwMDAwMDAwMA0KWyAgIDkzLjI0MTU2Ml0g bW1jMTogc2RoY2k6IFJlc3BbMl06ICAgMHgwMDAwMDAwMCB8IFJlc3BbM106ICAweDAwMDAwMDAw DQpbICAgOTMuMjQ3OTk0XSBtbWMxOiBzZGhjaTogSG9zdCBjdGwyOiAweDAwMDAwMDAwDQpbICAg OTMuMjUyNDM1XSBtbWMxOiBzZGhjaTogQURNQSBFcnI6ICAweDAwMDAwMDAwIHwgQURNQSBQdHI6 IDB4MDAwMDAwMDANClsgICA5My4yNTg4NjNdIG1tYzE6IHNkaGNpOiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KWyAgMTAzLjM5MjE2NF0gbW1jMTogVGltZW91 dCB3YWl0aW5nIGZvciBoYXJkd2FyZSBjbWQgaW50ZXJydXB0Lg0KWyAgMTAzLjM5NzkxM10gbW1j MTogc2RoY2k6ID09PT09PT09PT09PSBTREhDSSBSRUdJU1RFUiBEVU1QID09PT09PT09PT09IFsg IDEwMy40MDQzNTBdIG1tYzE6IHNkaGNpOiBTeXMgYWRkcjogIDB4MDAwMDAwMDAgfCBWZXJzaW9u OiAgMHgwMDAwMDYwMyBbICAxMDMuNDEwNzg2XSBtbWMxOiBzZGhjaTogQmxrIHNpemU6ICAweDAw MDAwMDAwIHwgQmxrIGNudDogIDB4MDAwMDAwMDAgWyAgMTAzLjQxNzIyMV0gbW1jMTogc2RoY2k6 IEFyZ3VtZW50OiAgMHgwMDAwMDAwMCB8IFRybiBtb2RlOiAweDAwMDAwMDAwDQpbICAxMDMuNDIz NjU0XSBtbWMxOiBzZGhjaTogUHJlc2VudDogICAweDAxZmYwMDAwIHwgSG9zdCBjdGw6IDB4MDAw MDAwMDENClsgIDEwMy40MzAwODldIG1tYzE6IHNkaGNpOiBQb3dlcjogICAgIDB4MDAwMDAwMGYg fCBCbGsgZ2FwOiAgMHgwMDAwMDAwMA0KWyAgMTAzLjQzNjUyM10gbW1jMTogc2RoY2k6IFdha2Ut dXA6ICAgMHgwMDAwMDAwMCB8IENsb2NrOiAgICAweDAwMDBmYTA3DQpbICAxMDMuNDQyOTU1XSBt bWMxOiBzZGhjaTogVGltZW91dDogICAweDAwMDAwMDAwIHwgSW50IHN0YXQ6IDB4MDAwMTgwMDAN ClsgIDEwMy40NDkzOTBdIG1tYzE6IHNkaGNpOiBJbnQgZW5hYjogIDB4MDBmZjAwODMgfCBTaWcg ZW5hYjogMHgwMGZmMDA4MyBbICAxMDMuNDU1ODIzXSBtbWMxOiBzZGhjaTogQUMxMiBlcnI6ICAw eDAwMDAwMDAwIHwgU2xvdCBpbnQ6IDB4MDAwMDAwMDENClsgIDEwMy40NjIyNTVdIG1tYzE6IHNk aGNpOiBDYXBzOiAgICAgIDB4MjVmY2M4YmYgfCBDYXBzXzE6ICAgMHgwMDAwMjA3Nw0KWyAgMTAz LjQ2ODY4OV0gbW1jMTogc2RoY2k6IENtZDogICAgICAgMHgwMDAwMzcxYSB8IE1heCBjdXJyOiAw eDAwNTgwMGM4DQpbICAxMDMuNDc1MTI2XSBtbWMxOiBzZGhjaTogUmVzcFswXTogICAweDAwMDAw MDAwIHwgUmVzcFsxXTogIDB4MDAwMDAwMDANClsgIDEwMy40ODE1NjBdIG1tYzE6IHNkaGNpOiBS ZXNwWzJdOiAgIDB4MDAwMDAwMDAgfCBSZXNwWzNdOiAgMHgwMDAwMDAwMA0KWyAgMTAzLjQ4Nzk5 NF0gbW1jMTogc2RoY2k6IEhvc3QgY3RsMjogMHgwMDAwMDAwMCBbICAxMDMuNDkyNDM1XSBtbWMx OiBzZGhjaTogQURNQSBFcnI6ICAweDAwMDAwMDAwIHwgQURNQSBQdHI6IDB4MDAwMDAwMDAgWyAg MTAzLjQ5ODg2N10gbW1jMTogc2RoY2k6ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQoNCklzIGl0IGV4cGVjdGVkIHRoYXQgdGhpcyBzaG91bGQgImp1c3Qgd29y ayIsIG9yIGFtIEkgZG9pbmcgc29tZXRoaW5nIHdyb25nPyAgTXkgcGF0Y2hlZCBrZXJuZWwgaXMg YmFzZWQgb24gNC4xNC4yLg0KDQpPbiBUdWUsIERlYyAxOSwgMjAxNyBhdCAyOjA1IEFNLCBBZHJp YW4gSHVudGVyIDxhZHJpYW4uaHVudGVyQGludGVsLmNvbT4gd3JvdGU6DQo+IE9uIDA0LzEyLzE3 IDExOjM5LCBMaW51eFBhdGNoQ29tbWl0IHdyb3RlOg0KPj4gRGVhciBBbGwsDQo+Pg0KPj4gRm9y IE8ybWljcm8vQmF5aHVidGVjaCBTRCBIb3N0IERldmljZUlEIDg2MjAsIGVNTUMgSFMyMDAgbW9k ZSBpcyB3b3JraW5nIGF0IDEuOHYgYW5kIGl0IHVzZXMgaGFyZHdhcmUgdHVuaW5nLiBUaGUgaGFy ZHdhcmUgdHVuaW5nIG9ubHkgbmVlZHMgdG8gc2VuZCBvbmUgdHVuaW5nIGNvbW1hbmQgaW5zdGVh ZCBvZiBtdWx0aXBsZSB0dW5pbmcgY29tbWFuZHMgd2l0aCBzb2Z0d2FyZSB0dW5pbmcuDQo+Pg0K Pj4gU2lnbmVkLW9mZi1ieTogZXJuZXN0LnpoYW5nIDxlcm5lc3QuemhhbmdAYmF5aHVidGVjaC5j b20+DQo+PiAtLS0NCj4+ICBkcml2ZXJzL21tYy9ob3N0L3NkaGNpLXBjaS1vMm1pY3JvLmMgfCAy NzYgDQo+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQ0KPj4gIDEgZmlsZSBj aGFuZ2VkLCAyMzkgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pDQo+Pg0KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcGNpLW8ybWljcm8uYyANCj4+IGIvZHJpdmVy cy9tbWMvaG9zdC9zZGhjaS1wY2ktbzJtaWNyby5jDQo+PiBpbmRleCAxNDI3M2NhMDA2NDEuLjJh N2ZmZDI0MDQ5NyAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcGNpLW8y bWljcm8uYw0KPj4gKysrIGIvZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1wY2ktbzJtaWNyby5jDQo+ PiBAQCAtMTYsMjIgKzE2LDIyMyBAQA0KPj4gICAqLw0KPj4NCj4+ICAjaW5jbHVkZSA8bGludXgv cGNpLmg+DQo+PiAtDQo+PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPj4g KyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvZml4ZWQuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgv cmVndWxhdG9yL21hY2hpbmUuaD4gI2luY2x1ZGUgPGxpbnV4L21tYy9ob3N0Lmg+IA0KPj4gKyNp bmNsdWRlIDxsaW51eC9tbWMvbW1jLmg+ICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KPj4gICNp bmNsdWRlICJzZGhjaS5oIg0KPj4gICNpbmNsdWRlICJzZGhjaS1wY2kuaCINCj4+ICAjaW5jbHVk ZSAic2RoY2ktcGNpLW8ybWljcm8uaCINCj4+DQo+PiArc3RhdGljIHZvaWQgc2RoY2lfbzJfc3Rh cnRfdHVuaW5nKHN0cnVjdCBzZGhjaV9ob3N0ICpob3N0KSB7DQo+PiArICAgICB1MTYgY3RybDsN Cj4+ICsNCj4+ICsgICAgIGN0cmwgPSBzZGhjaV9yZWFkdyhob3N0LCBTREhDSV9IT1NUX0NPTlRS T0wyKTsNCj4+ICsgICAgIGN0cmwgfD0gU0RIQ0lfQ1RSTF9FWEVDX1RVTklORzsNCj4+ICsgICAg IGlmIChob3N0LT5xdWlya3MyICYgU0RIQ0lfUVVJUksyX1RVTklOR19XT1JLX0FST1VORCkNCj4+ ICsgICAgICAgICAgICAgY3RybCB8PSBTREhDSV9DVFJMX1RVTkVEX0NMSzsNCj4+ICsgICAgIHNk aGNpX3dyaXRldyhob3N0LCBjdHJsLCBTREhDSV9IT1NUX0NPTlRST0wyKTsNCj4+ICsNCj4+ICsg ICAgIC8qDQo+PiArICAgICAgKiBBcyBwZXIgdGhlIEhvc3QgQ29udHJvbGxlciBzcGVjIHYzLjAw LCB0dW5pbmcgY29tbWFuZA0KPj4gKyAgICAgICogZ2VuZXJhdGVzIEJ1ZmZlciBSZWFkIFJlYWR5 IGludGVycnVwdCwgc28gZW5hYmxlIHRoYXQuDQo+PiArICAgICAgKg0KPj4gKyAgICAgICogTm90 ZTogVGhlIHNwZWMgY2xlYXJseSBzYXlzIHRoYXQgd2hlbiB0dW5pbmcgc2VxdWVuY2UNCj4+ICsg ICAgICAqIGlzIGJlaW5nIHBlcmZvcm1lZCwgdGhlIGNvbnRyb2xsZXIgZG9lcyBub3QgZ2VuZXJh dGUNCj4+ICsgICAgICAqIGludGVycnVwdHMgb3RoZXIgdGhhbiBCdWZmZXIgUmVhZCBSZWFkeSBp bnRlcnJ1cHQuIEJ1dA0KPj4gKyAgICAgICogdG8gbWFrZSBzdXJlIHdlIGRvbid0IGhpdCBhIGNv bnRyb2xsZXIgYnVnLCB3ZSBfb25seV8NCj4+ICsgICAgICAqIGVuYWJsZSBCdWZmZXIgUmVhZCBS ZWFkeSBpbnRlcnJ1cHQgaGVyZS4NCj4+ICsgICAgICAqLw0KPj4gKyAgICAgc2RoY2lfd3JpdGVs KGhvc3QsIFNESENJX0lOVF9EQVRBX0FWQUlMLCBTREhDSV9JTlRfRU5BQkxFKTsNCj4+ICsgICAg IHNkaGNpX3dyaXRlbChob3N0LCBTREhDSV9JTlRfREFUQV9BVkFJTCwgU0RIQ0lfU0lHTkFMX0VO QUJMRSk7IA0KPj4gKyB9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgc2RoY2lfbzJfZW5kX3R1bmlu ZyhzdHJ1Y3Qgc2RoY2lfaG9zdCAqaG9zdCkgew0KPj4gKyAgICAgc2RoY2lfd3JpdGVsKGhvc3Qs IGhvc3QtPmllciwgU0RIQ0lfSU5UX0VOQUJMRSk7DQo+PiArICAgICBzZGhjaV93cml0ZWwoaG9z dCwgaG9zdC0+aWVyLCBTREhDSV9TSUdOQUxfRU5BQkxFKTsgfQ0KPj4gKw0KPj4gK3N0YXRpYyBp bmxpbmUgYm9vbCBzZGhjaV9kYXRhX2xpbmVfY21kKHN0cnVjdCBtbWNfY29tbWFuZCAqY21kKSB7 DQo+PiArICAgICByZXR1cm4gY21kLT5kYXRhIHx8IGNtZC0+ZmxhZ3MgJiBNTUNfUlNQX0JVU1k7 IH0NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBzZGhjaV9kZWxfdGltZXIoc3RydWN0IHNkaGNpX2hv c3QgKmhvc3QsIHN0cnVjdCANCj4+ICttbWNfcmVxdWVzdA0KPj4gKyptcnEpIHsNCj4+ICsgICAg IGlmIChzZGhjaV9kYXRhX2xpbmVfY21kKG1ycS0+Y21kKSkNCj4+ICsgICAgICAgICAgICAgZGVs X3RpbWVyKCZob3N0LT5kYXRhX3RpbWVyKTsNCj4+ICsgICAgIGVsc2UNCj4+ICsgICAgICAgICAg ICAgZGVsX3RpbWVyKCZob3N0LT50aW1lcik7IH0NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBzZGhj aV9vMl9zZXRfdHVuaW5nX21vZGUoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsIGJvb2wgDQo+PiAr aHcpIHsNCj4+ICsgICAgIHUxNiByZWc7DQo+PiArDQo+PiArICAgICBpZiAoaHcpIHsNCj4+ICsg ICAgICAgICAgICAgLy8gZW5hYmxlIGhhcmR3YXJlIHR1bmluZw0KPj4gKyAgICAgICAgICAgICBy ZWcgPSBzZGhjaV9yZWFkdyhob3N0LCBPMl9TRF9WRU5ET1JfU0VUVElORyk7DQo+PiArICAgICAg ICAgICAgIHJlZyAmPSAofk8yX1NEX0hXX1RVTklOR19FTkFCTEUpOw0KPj4gKyAgICAgICAgICAg ICBzZGhjaV93cml0ZXcoaG9zdCwgcmVnLCBPMl9TRF9WRU5ET1JfU0VUVElORyk7DQo+PiArICAg ICB9IGVsc2Ugew0KPj4gKyAgICAgICAgICAgICByZWcgPSBzZGhjaV9yZWFkdyhob3N0LCBPMl9T RF9WRU5ET1JfU0VUVElORyk7DQo+PiArICAgICAgICAgICAgIHJlZyB8PSBPMl9TRF9IV19UVU5J TkdfRU5BQkxFOw0KPj4gKyAgICAgICAgICAgICBzZGhjaV93cml0ZXcoaG9zdCwgcmVnLCBPMl9T RF9WRU5ET1JfU0VUVElORyk7DQo+PiArICAgICB9DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB1 OCBkYXRhX2J1Zls2NF07DQo+PiArDQo+PiArc3RhdGljIHZvaWQgc2RoY2lfbzJfc2VuZF90dW5p bmcoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsIHUzMiBvcGNvZGUpIHsNCj4+ICsgICAgIHN0cnVj dCBtbWNfY29tbWFuZCBjbWQgPSB7IH07DQo+PiArICAgICBzdHJ1Y3QgbW1jX2RhdGEgZGF0YSA9 IHsgfTsNCj4+ICsgICAgIHN0cnVjdCBzY2F0dGVybGlzdCBzZzsNCj4+ICsgICAgIHN0cnVjdCBt bWNfcmVxdWVzdCBtcnEgPSB7IH07DQo+PiArICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOw0KPj4g KyAgICAgdTMyIGIgPSBob3N0LT5zZG1hX2JvdW5kYXJ5Ow0KPj4gKyAgICAgaW50IHNpemUgPSBz aXplb2YoZGF0YV9idWYpOw0KPj4gKw0KPj4gKyAgICAgY21kLm9wY29kZSA9IG9wY29kZTsNCj4+ ICsgICAgIGNtZC5mbGFncyA9IE1NQ19SU1BfUFJFU0VOVCB8IE1NQ19SU1BfT1BDT0RFIHwgTU1D X1JTUF9DUkM7DQo+PiArICAgICBjbWQubXJxID0gJm1ycTsNCj4+ICsgICAgIG1ycS5jbWQgPSAm Y21kOw0KPj4gKyAgICAgbXJxLmRhdGEgPSAmZGF0YTsNCj4+ICsgICAgIGRhdGEuYmxrc3ogPSBz aXplOw0KPj4gKyAgICAgZGF0YS5ibG9ja3MgPSAxOw0KPj4gKyAgICAgZGF0YS5mbGFncyA9IE1N Q19EQVRBX1JFQUQ7DQo+PiArDQo+PiArICAgICBkYXRhLnRpbWVvdXRfbnMgPSAxNTAgKiBOU0VD X1BFUl9NU0VDOw0KPj4gKw0KPj4gKyAgICAgZGF0YS5zZyA9ICZzZzsNCj4+ICsgICAgIGRhdGEu c2dfbGVuID0gMTsNCj4+ICsgICAgIHNnX2luaXRfb25lKCZzZywgZGF0YV9idWYsIHNpemUpOw0K Pj4gKw0KPj4gKyAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmhvc3QtPmxvY2ssIGZsYWdzKTsNCj4+ ICsNCj4+ICsgICAgIHNkaGNpX3dyaXRldyhob3N0LCBTREhDSV9NQUtFX0JMS1NaKGIsIDY0KSwg U0RIQ0lfQkxPQ0tfU0laRSk7DQo+PiArDQo+PiArICAgICAvKg0KPj4gKyAgICAgICogVGhlIHR1 bmluZyBibG9jayBpcyBzZW50IGJ5IHRoZSBjYXJkIHRvIHRoZSBob3N0IGNvbnRyb2xsZXIuDQo+ PiArICAgICAgKiBTbyB3ZSBzZXQgdGhlIFRSTlNfUkVBRCBiaXQgaW4gdGhlIFRyYW5zZmVyIE1v ZGUgcmVnaXN0ZXIuDQo+PiArICAgICAgKiBUaGlzIGFsc28gdGFrZXMgY2FyZSBvZiBzZXR0aW5n IERNQSBFbmFibGUgYW5kIE11bHRpIEJsb2NrDQo+PiArICAgICAgKiBTZWxlY3QgaW4gdGhlIHNh bWUgcmVnaXN0ZXIgdG8gMC4NCj4+ICsgICAgICAqLw0KPj4gKyAgICAgc2RoY2lfd3JpdGV3KGhv c3QsIFNESENJX1RSTlNfUkVBRCwgU0RIQ0lfVFJBTlNGRVJfTU9ERSk7DQo+PiArDQo+PiArICAg ICBzZGhjaV9zZW5kX2NvbW1hbmQoaG9zdCwgJmNtZCk7DQo+PiArDQo+PiArICAgICBob3N0LT5j bWQgPSBOVUxMOw0KPj4gKw0KPj4gKyAgICAgc2RoY2lfZGVsX3RpbWVyKGhvc3QsICZtcnEpOw0K Pj4gKw0KPj4gKyAgICAgaG9zdC0+dHVuaW5nX2RvbmUgPSAwOw0KPj4gKw0KPj4gKyAgICAgbW1p b3diKCk7DQo+PiArICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZob3N0LT5sb2NrLCBmbGFn cyk7DQo+PiArDQo+PiArICAgICAvKiBXYWl0IGZvciBCdWZmZXIgUmVhZCBSZWFkeSBpbnRlcnJ1 cHQgKi8NCj4+ICsgICAgIHdhaXRfZXZlbnRfdGltZW91dChob3N0LT5idWZfcmVhZHlfaW50LCAo aG9zdC0+dHVuaW5nX2RvbmUgPT0gMSksDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgbXNl Y3NfdG9famlmZmllcyg1MCkpOw0KPj4gKw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBz ZGhjaV9vMl9yZXNldF90dW5pbmcoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QpIHsNCj4+ICsgICAg IHUxNiBjdHJsOw0KPj4gKw0KPj4gKyAgICAgY3RybCA9IHNkaGNpX3JlYWR3KGhvc3QsIFNESENJ X0hPU1RfQ09OVFJPTDIpOw0KPj4gKyAgICAgY3RybCAmPSB+U0RIQ0lfQ1RSTF9UVU5FRF9DTEs7 DQo+PiArICAgICBjdHJsICY9IH5TREhDSV9DVFJMX0VYRUNfVFVOSU5HOw0KPj4gKyAgICAgc2Ro Y2lfd3JpdGV3KGhvc3QsIGN0cmwsIFNESENJX0hPU1RfQ09OVFJPTDIpOyB9DQo+PiArDQo+PiAr c3RhdGljIHZvaWQgX19zZGhjaV9vMl9leGVjdXRlX3R1bmluZyhzdHJ1Y3Qgc2RoY2lfaG9zdCAq aG9zdCwgdTMyDQo+PiArb3Bjb2RlKSB7DQo+PiArDQo+PiArICAgICBpbnQgaTsNCj4+ICsNCj4+ ICsgICAgIHNkaGNpX28yX3NlbmRfdHVuaW5nKGhvc3QsIE1NQ19TRU5EX1RVTklOR19CTE9DS19I UzIwMCk7DQo+DQo+IFNvIGl0IGxvb2tzIGxpa2UgeW91IHNlbmQgdGhlIHR1bmluZyBjb21tYW5k IG9ubHkgb25jZS4gIElzIHRoYXQgcmlnaHQ/DQo+IE1heWJlIHlvdSBjb3VsZCBicmllZmx5IG91 dGxpbmUgd2hhdCB0aGUgdHVuaW5nIHByb2NlZHVyZSBpcywgYW5kIGhvdyANCj4gaXQgZGlmZmVy cyBmcm9tIHNkaGNpX2V4ZWN1dGVfdHVuaW5nKCkuDQo+DQo+PiArDQo+PiArICAgICBmb3IgKGkg PSAwOyBpIDwgMTUwOyBpKyspIHsNCj4+ICsgICAgICAgICAgICAgdTE2IGN0cmwgPSBzZGhjaV9y ZWFkdyhob3N0LCBTREhDSV9IT1NUX0NPTlRST0wyKTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAg aWYgKCEoY3RybCAmIFNESENJX0NUUkxfRVhFQ19UVU5JTkcpKSB7DQo+PiArICAgICAgICAgICAg ICAgICAgICAgaWYgKGN0cmwgJiBTREhDSV9DVFJMX1RVTkVEX0NMSykgew0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHJfaW5mbygiJXM6IEhXIHR1bmluZyBvayAhXG4iLA0KPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtbWNfaG9zdG5hbWUoaG9zdC0+ bW1jKSk7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0LT50dW5pbmdfZG9u ZSA9IHRydWU7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47DQo+PiAr ICAgICAgICAgICAgICAgICAgICAgfQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgIHByX3dhcm4o IiVzOiBIVyB0dW5pbmcgZmFpbGVkICFcbiIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtbWNfaG9zdG5hbWUoaG9zdC0+bW1jKSk7DQo+PiArDQo+PiArICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+PiArICAgICAgICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgICAgICAg bWRlbGF5KDEpOw0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgcHJfaW5mbygiJXM6IFR1bmlu ZyBmYWlsZWQsIGZhbGxpbmcgYmFjayB0byBmaXhlZCBzYW1wbGluZyBjbG9ja1xuIiwNCj4+ICsg ICAgICAgICAgICAgbW1jX2hvc3RuYW1lKGhvc3QtPm1tYykpOw0KPj4gKyAgICAgc2RoY2lfbzJf cmVzZXRfdHVuaW5nKGhvc3QpOw0KPj4gKw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IHNk aGNpX28yX2V4ZWN1dGVfdHVuaW5nKHN0cnVjdCBtbWNfaG9zdCAqbW1jLCB1MzIgb3Bjb2RlKSB7 DQo+PiArICAgICBzdHJ1Y3Qgc2RoY2lfaG9zdCAqaG9zdCA9IG1tY19wcml2KG1tYyk7DQo+PiAr ICAgICBpbnQgY3VycmVudF9idXNfd2lkdGggPSAwOw0KPj4gKw0KPj4gKyAgICAgLyoNCj4+ICsg ICAgICAqIFRoaXMgaGFuZGxlciBvbmx5IGltcGxlbWVudHMgdGhlIGVNTUMgdHVuaW5nIHRoYXQg aXMgc3BlY2lmaWMgdG8NCj4+ICsgICAgICAqIHRoaXMgY29udHJvbGxlci4gIEZhbGwgYmFjayB0 byB0aGUgc3RhbmRhcmQgbWV0aG9kIGZvciBvdGhlciBUSU5NSU5HLg0KPj4gKyAgICAgICovDQo+ PiArICAgICBpZiAoaG9zdC0+dGltaW5nICE9IE1NQ19USU1JTkdfTU1DX0hTMjAwKQ0KPj4gKyAg ICAgICAgICAgICByZXR1cm4gc2RoY2lfZXhlY3V0ZV90dW5pbmcobW1jLCBvcGNvZGUpOw0KPj4g Kw0KPj4gKyAgICAgaWYgKFdBUk5fT04ob3Bjb2RlICE9IE1NQ19TRU5EX1RVTklOR19CTE9DS19I UzIwMCkpDQo+PiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPj4gKw0KPj4gKyAgICAg LyoNCj4+ICsgICAgICAqIG8yIHNkaGNpIGhvc3QgZGlkbid0IHN1cHBvcnQgOGJpdCBlbW1jIHR1 bmluZw0KPj4gKyAgICAgICovDQo+PiArICAgICBpZiAobW1jLT5pb3MuYnVzX3dpZHRoID09IE1N Q19CVVNfV0lEVEhfOCkgew0KPj4gKyAgICAgICAgICAgICBjdXJyZW50X2J1c193aWR0aCA9IG1t Yy0+aW9zLmJ1c193aWR0aDsNCj4+ICsgICAgICAgICAgICAgbW1jLT5pb3MuYnVzX3dpZHRoID0g TU1DX0JVU19XSURUSF80Ow0KPj4gKyAgICAgICAgICAgICBtbWMtPm9wcy0+c2V0X2lvcyhtbWMs ICZtbWMtPmlvcyk7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICBzZGhjaV9vMl9zZXRfdHVu aW5nX21vZGUoaG9zdCwgdHJ1ZSk7DQo+PiArDQo+PiArICAgICBzZGhjaV9vMl9zdGFydF90dW5p bmcoaG9zdCk7DQo+PiArDQo+PiArICAgICBfX3NkaGNpX28yX2V4ZWN1dGVfdHVuaW5nKGhvc3Qs IG9wY29kZSk7DQo+PiArDQo+PiArICAgICBzZGhjaV9vMl9lbmRfdHVuaW5nKGhvc3QpOw0KPj4g Kw0KPj4gKyAgICAgaWYgKGN1cnJlbnRfYnVzX3dpZHRoID09IE1NQ19CVVNfV0lEVEhfOCkgew0K Pj4gKyAgICAgICAgICAgICBtbWMtPmlvcy5idXNfd2lkdGggPSBjdXJyZW50X2J1c193aWR0aDsN Cj4+ICsgICAgICAgICAgICAgbW1jLT5vcHMtPnNldF9pb3MobW1jLCAmbW1jLT5pb3MpOw0KPj4g KyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgaG9zdC0+ZmxhZ3MgJj0gflNESENJX0hTNDAwX1RVTklO RzsNCj4+ICsgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICBzdGF0aWMgdm9pZCBvMl9w Y2lfc2V0X2Jhc2VjbGsoc3RydWN0IHNkaGNpX3BjaV9jaGlwICpjaGlwLCB1MzIgdmFsdWUpICB7 DQo+PiAgICAgICB1MzIgc2NyYXRjaF8zMjsNCj4+IC0gICAgIHBjaV9yZWFkX2NvbmZpZ19kd29y ZChjaGlwLT5wZGV2LA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE8yX1NEX1BMTF9T RVRUSU5HLCAmc2NyYXRjaF8zMik7DQo+PiArICAgICBwY2lfcmVhZF9jb25maWdfZHdvcmQoY2hp cC0+cGRldiwgTzJfU0RfUExMX1NFVFRJTkcsIA0KPj4gKyAmc2NyYXRjaF8zMik7DQo+Pg0KPj4g ICAgICAgc2NyYXRjaF8zMiAmPSAweDAwMDBGRkZGOw0KPj4gICAgICAgc2NyYXRjaF8zMiB8PSB2 YWx1ZTsNCj4+DQo+PiAtICAgICBwY2lfd3JpdGVfY29uZmlnX2R3b3JkKGNoaXAtPnBkZXYsDQo+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8yX1NEX1BMTF9TRVRUSU5HLCBzY3JhdGNo XzMyKTsNCj4+ICsgICAgIHBjaV93cml0ZV9jb25maWdfZHdvcmQoY2hpcC0+cGRldiwgTzJfU0Rf UExMX1NFVFRJTkcsIA0KPj4gKyBzY3JhdGNoXzMyKTsNCj4+ICB9DQo+Pg0KPj4gIHN0YXRpYyB2 b2lkIG8yX3BjaV9sZWRfZW5hYmxlKHN0cnVjdCBzZGhjaV9wY2lfY2hpcCAqY2hpcCkgQEAgLTQw LDIzICsyNDEsMTkgQEAgc3RhdGljIHZvaWQgbzJfcGNpX2xlZF9lbmFibGUoc3RydWN0IHNkaGNp X3BjaV9jaGlwICpjaGlwKQ0KPj4gICAgICAgdTMyIHNjcmF0Y2hfMzI7DQo+Pg0KPj4gICAgICAg LyogU2V0IGxlZCBvZiBTRCBob3N0IGZ1bmN0aW9uIGVuYWJsZSAqLw0KPj4gLSAgICAgcmV0ID0g cGNpX3JlYWRfY29uZmlnX2R3b3JkKGNoaXAtPnBkZXYsDQo+PiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTzJfU0RfRlVOQ19SRUcwLCAmc2NyYXRjaF8zMik7DQo+PiArICAgICBy ZXQgPSBwY2lfcmVhZF9jb25maWdfZHdvcmQoY2hpcC0+cGRldiwgTzJfU0RfRlVOQ19SRUcwLCAN Cj4+ICsgJnNjcmF0Y2hfMzIpOw0KPj4gICAgICAgaWYgKHJldCkNCj4+ICAgICAgICAgICAgICAg cmV0dXJuOw0KPj4NCj4+ICAgICAgIHNjcmF0Y2hfMzIgJj0gfk8yX1NEX0ZSRUcwX0xFRE9GRjsN Cj4+IC0gICAgIHBjaV93cml0ZV9jb25maWdfZHdvcmQoY2hpcC0+cGRldiwNCj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgTzJfU0RfRlVOQ19SRUcwLCBzY3JhdGNoXzMyKTsNCj4+ICsg ICAgIHBjaV93cml0ZV9jb25maWdfZHdvcmQoY2hpcC0+cGRldiwgTzJfU0RfRlVOQ19SRUcwLCAN Cj4+ICsgc2NyYXRjaF8zMik7DQo+Pg0KPj4gLSAgICAgcmV0ID0gcGNpX3JlYWRfY29uZmlnX2R3 b3JkKGNoaXAtPnBkZXYsDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTzJf U0RfVEVTVF9SRUcsICZzY3JhdGNoXzMyKTsNCj4+ICsgICAgIHJldCA9IHBjaV9yZWFkX2NvbmZp Z19kd29yZChjaGlwLT5wZGV2LCBPMl9TRF9URVNUX1JFRywgDQo+PiArICZzY3JhdGNoXzMyKTsN Cj4+ICAgICAgIGlmIChyZXQpDQo+PiAgICAgICAgICAgICAgIHJldHVybjsNCj4+DQo+PiAgICAg ICBzY3JhdGNoXzMyIHw9IE8yX1NEX0xFRF9FTkFCTEU7DQo+PiAtICAgICBwY2lfd3JpdGVfY29u ZmlnX2R3b3JkKGNoaXAtPnBkZXYsDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8y X1NEX1RFU1RfUkVHLCBzY3JhdGNoXzMyKTsNCj4+ICsgICAgIHBjaV93cml0ZV9jb25maWdfZHdv cmQoY2hpcC0+cGRldiwgTzJfU0RfVEVTVF9SRUcsIHNjcmF0Y2hfMzIpOw0KPj4NCj4+ICB9DQo+ Pg0KPj4gQEAgLTEwNCw4ICszMDEsNyBAQCBzdGF0aWMgdm9pZCBzZGhjaV9wY2lfbzJfZnVqaW4y X3BjaV9pbml0KHN0cnVjdCBzZGhjaV9wY2lfY2hpcCAqY2hpcCkNCj4+ICAgICAgIHNjcmF0Y2hf MzIgfD0gMHgwMENDOw0KPj4gICAgICAgcGNpX3dyaXRlX2NvbmZpZ19kd29yZChjaGlwLT5wZGV2 LCBPMl9TRF9DQVBfUkVHMCwgc2NyYXRjaF8zMik7DQo+PiAgICAgICAvKiBTZXQgRExMIFR1bmlu ZyBXaW5kb3cgKi8NCj4+IC0gICAgIHJldCA9IHBjaV9yZWFkX2NvbmZpZ19kd29yZChjaGlwLT5w ZGV2LA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8yX1NEX1RVTklOR19D VFJMLCAmc2NyYXRjaF8zMik7DQo+PiArICAgICByZXQgPSBwY2lfcmVhZF9jb25maWdfZHdvcmQo Y2hpcC0+cGRldiwgTzJfU0RfVFVOSU5HX0NUUkwsIA0KPj4gKyZzY3JhdGNoXzMyKTsNCj4+ICAg ICAgIGlmIChyZXQpDQo+PiAgICAgICAgICAgICAgIHJldHVybjsNCj4+ICAgICAgIHNjcmF0Y2hf MzIgJj0gfigweDAwMDAwMEZGKTsNCj4+IEBAIC0xMzcsOCArMzMzLDcgQEAgc3RhdGljIHZvaWQg c2RoY2lfcGNpX28yX2Z1amluMl9wY2lfaW5pdChzdHJ1Y3Qgc2RoY2lfcGNpX2NoaXAgKmNoaXAp DQo+PiAgICAgICBzY3JhdGNoXzMyIHw9IDB4MzAwMDAwMDA7DQo+PiAgICAgICBwY2lfd3JpdGVf Y29uZmlnX2R3b3JkKGNoaXAtPnBkZXYsIE8yX1NEX0NBUFMsIHNjcmF0Y2hfMzIpOw0KPj4NCj4+ IC0gICAgIHJldCA9IHBjaV9yZWFkX2NvbmZpZ19kd29yZChjaGlwLT5wZGV2LA0KPj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8yX1NEX01JU0NfQ1RSTDQsICZzY3JhdGNoXzMy KTsNCj4+ICsgICAgIHJldCA9IHBjaV9yZWFkX2NvbmZpZ19kd29yZChjaGlwLT5wZGV2LCBPMl9T RF9NSVNDX0NUUkw0LCANCj4+ICsmc2NyYXRjaF8zMik7DQo+PiAgICAgICBpZiAocmV0KQ0KPj4g ICAgICAgICAgICAgICByZXR1cm47DQo+PiAgICAgICBzY3JhdGNoXzMyICY9IH4oMHgwMDBmMDAw MCk7DQo+PiBAQCAtMTUxLDYgKzM0Niw3IEBAIGludCBzZGhjaV9wY2lfbzJfcHJvYmVfc2xvdChz dHJ1Y3Qgc2RoY2lfcGNpX3Nsb3QgKnNsb3QpDQo+PiAgICAgICBzdHJ1Y3Qgc2RoY2lfcGNpX2No aXAgKmNoaXA7DQo+PiAgICAgICBzdHJ1Y3Qgc2RoY2lfaG9zdCAqaG9zdDsNCj4+ICAgICAgIHUz MiByZWc7DQo+PiArICAgICBpbnQgcmV0Ow0KPj4NCj4+ICAgICAgIGNoaXAgPSBzbG90LT5jaGlw Ow0KPj4gICAgICAgaG9zdCA9IHNsb3QtPmhvc3Q7DQo+PiBAQCAtMTY0LDYgKzM2MCwyMiBAQCBp bnQgc2RoY2lfcGNpX28yX3Byb2JlX3Nsb3Qoc3RydWN0IHNkaGNpX3BjaV9zbG90ICpzbG90KQ0K Pj4gICAgICAgICAgICAgICBpZiAocmVnICYgMHgxKQ0KPj4gICAgICAgICAgICAgICAgICAgICAg IGhvc3QtPnF1aXJrcyB8PSANCj4+IFNESENJX1FVSVJLX01VTFRJQkxPQ0tfUkVBRF9BQ01EMTI7 DQo+Pg0KPj4gKyAgICAgICAgICAgICBpZiAoY2hpcC0+cGRldi0+ZGV2aWNlID09IFBDSV9ERVZJ Q0VfSURfTzJfU0VBQklSRDApIHsNCj4+ICsgICAgICAgICAgICAgICAgICAgICByZXQgPSBwY2lf cmVhZF9jb25maWdfZHdvcmQoY2hpcC0+cGRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTzJfU0RfTUlTQ19TRVRUSU5HLCAmcmVnKTsNCj4+ ICsgICAgICAgICAgICAgICAgICAgICBpZiAocmV0KQ0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIC1FSU87DQo+PiArICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZyAm ICgxIDw8IDQpKSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcl9pbmZvKCIl czogZW1tYyAxLjh2IGZsYWcgaXMgc2V0LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmb3JjZSAxLjh2IHNpZ25hbGluZyB2b2x0YWdlXG4iLA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtbWNfaG9zdG5hbWUoaG9zdC0+bW1jKSk7DQo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0LT5mbGFncyAmPSB+KFNESENJX1NJ R05BTElOR18zMzApOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdC0+Zmxh Z3MgfD0gU0RIQ0lfU0lHTkFMSU5HXzE4MDsNCj4+ICsgICAgICAgICAgICAgICAgICAgICB9DQo+ PiArICAgICAgICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgICAgICAgaG9zdC0+bW1jX2hvc3Rf b3BzLmV4ZWN1dGVfdHVuaW5nID0gDQo+PiArIHNkaGNpX28yX2V4ZWN1dGVfdHVuaW5nOw0KPj4g Kw0KPj4gICAgICAgICAgICAgICBpZiAoY2hpcC0+cGRldi0+ZGV2aWNlICE9IFBDSV9ERVZJQ0Vf SURfTzJfRlVKSU4yKQ0KPj4gICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPj4gICAgICAg ICAgICAgICAvKiBzZXQgZGxsIHdhdGNoIGRvZyB0aW1lciAqLyBAQCAtMTkxLDggKzQwMyw3IEBA IGludCANCj4+IHNkaGNpX3BjaV9vMl9wcm9iZShzdHJ1Y3Qgc2RoY2lfcGNpX2NoaXAgKmNoaXAp DQo+PiAgICAgICBjYXNlIFBDSV9ERVZJQ0VfSURfTzJfODMyMDoNCj4+ICAgICAgIGNhc2UgUENJ X0RFVklDRV9JRF9PMl84MzIxOg0KPj4gICAgICAgICAgICAgICAvKiBUaGlzIGV4dHJhIHNldHVw IGlzIHJlcXVpcmVkIGR1ZSB0byBicm9rZW4gQURNQS4gKi8NCj4+IC0gICAgICAgICAgICAgcmV0 ID0gcGNpX3JlYWRfY29uZmlnX2J5dGUoY2hpcC0+cGRldiwNCj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE8yX1NEX0xPQ0tfV1AsICZzY3JhdGNoKTsNCj4+ICsgICAgICAgICAgICAg cmV0ID0gcGNpX3JlYWRfY29uZmlnX2J5dGUoY2hpcC0+cGRldiwgTzJfU0RfTE9DS19XUCwgDQo+ PiArICZzY3JhdGNoKTsNCj4+ICAgICAgICAgICAgICAgaWYgKHJldCkNCj4+ICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4gICAgICAgICAgICAgICBzY3JhdGNoICY9IDB4N2Y7 DQo+PiBAQCAtMjAyLDggKzQxMyw3IEBAIGludCBzZGhjaV9wY2lfbzJfcHJvYmUoc3RydWN0IHNk aGNpX3BjaV9jaGlwICpjaGlwKQ0KPj4gICAgICAgICAgICAgICBwY2lfd3JpdGVfY29uZmlnX2J5 dGUoY2hpcC0+cGRldiwgTzJfU0RfTVVMVElfVkNDM1YsIA0KPj4gMHgwOCk7DQo+Pg0KPj4gICAg ICAgICAgICAgICAvKiBEaXNhYmxlIENMS19SRVEjIHN1cHBvcnQgYWZ0ZXIgbWVkaWEgREVUICov DQo+PiAtICAgICAgICAgICAgIHJldCA9IHBjaV9yZWFkX2NvbmZpZ19ieXRlKGNoaXAtPnBkZXYs DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPMl9TRF9DTEtSRVEsICZzY3JhdGNo KTsNCj4+ICsgICAgICAgICAgICAgcmV0ID0gcGNpX3JlYWRfY29uZmlnX2J5dGUoY2hpcC0+cGRl diwgTzJfU0RfQ0xLUkVRLCANCj4+ICsgJnNjcmF0Y2gpOw0KPj4gICAgICAgICAgICAgICBpZiAo cmV0KQ0KPj4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+PiAgICAgICAgICAg ICAgIHNjcmF0Y2ggfD0gMHgyMDsNCj4+IEBAIC0yMjQsMTYgKzQzNCwxNCBAQCBpbnQgc2RoY2lf cGNpX28yX3Byb2JlKHN0cnVjdCBzZGhjaV9wY2lfY2hpcCAqY2hpcCkNCj4+ICAgICAgICAgICAg ICAgcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGNoaXAtPnBkZXYsIE8yX1NEX0FETUEyLCAweDA4KTsN Cj4+DQo+PiAgICAgICAgICAgICAgIC8qIERpc2FibGUgdGhlIGluZmluaXRlIHRyYW5zZmVyIG1v ZGUgKi8NCj4+IC0gICAgICAgICAgICAgcmV0ID0gcGNpX3JlYWRfY29uZmlnX2J5dGUoY2hpcC0+ cGRldiwNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8yX1NEX0lORl9NT0QsICZz Y3JhdGNoKTsNCj4+ICsgICAgICAgICAgICAgcmV0ID0gcGNpX3JlYWRfY29uZmlnX2J5dGUoY2hp cC0+cGRldiwgTzJfU0RfSU5GX01PRCwgDQo+PiArICZzY3JhdGNoKTsNCj4+ICAgICAgICAgICAg ICAgaWYgKHJldCkNCj4+ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4gICAg ICAgICAgICAgICBzY3JhdGNoIHw9IDB4MDg7DQo+PiAgICAgICAgICAgICAgIHBjaV93cml0ZV9j b25maWdfYnl0ZShjaGlwLT5wZGV2LCBPMl9TRF9JTkZfTU9ELCANCj4+IHNjcmF0Y2gpOw0KPj4N Cj4+ICAgICAgICAgICAgICAgLyogTG9jayBXUCAqLw0KPj4gLSAgICAgICAgICAgICByZXQgPSBw Y2lfcmVhZF9jb25maWdfYnl0ZShjaGlwLT5wZGV2LA0KPj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTzJfU0RfTE9DS19XUCwgJnNjcmF0Y2gpOw0KPj4gKyAgICAgICAgICAgICByZXQg PSBwY2lfcmVhZF9jb25maWdfYnl0ZShjaGlwLT5wZGV2LCBPMl9TRF9MT0NLX1dQLCANCj4+ICsg JnNjcmF0Y2gpOw0KPj4gICAgICAgICAgICAgICBpZiAocmV0KQ0KPj4gICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiByZXQ7DQo+PiAgICAgICAgICAgICAgIHNjcmF0Y2ggfD0gMHg4MDsNCj4+ IEBAIC0yNDMsOCArNDUxLDcgQEAgaW50IHNkaGNpX3BjaV9vMl9wcm9iZShzdHJ1Y3Qgc2RoY2lf cGNpX2NoaXAgKmNoaXApDQo+PiAgICAgICBjYXNlIFBDSV9ERVZJQ0VfSURfTzJfU0RTMToNCj4+ ICAgICAgIGNhc2UgUENJX0RFVklDRV9JRF9PMl9GVUpJTjI6DQo+PiAgICAgICAgICAgICAgIC8q IFVuTG9jayBXUCAqLw0KPj4gLSAgICAgICAgICAgICByZXQgPSBwY2lfcmVhZF9jb25maWdfYnl0 ZShjaGlwLT5wZGV2LA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTzJfU0RfTE9D S19XUCwgJnNjcmF0Y2gpOw0KPj4gKyAgICAgICAgICAgICByZXQgPSBwY2lfcmVhZF9jb25maWdf Ynl0ZShjaGlwLT5wZGV2LCBPMl9TRF9MT0NLX1dQLCANCj4+ICsgJnNjcmF0Y2gpOw0KPj4gICAg ICAgICAgICAgICBpZiAocmV0KQ0KPj4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7 DQo+Pg0KPj4gQEAgLTMxOSwxNSArNTI2LDEzIEBAIGludCBzZGhjaV9wY2lfbzJfcHJvYmUoc3Ry dWN0IHNkaGNpX3BjaV9jaGlwICpjaGlwKQ0KPj4gICAgICAgICAgICAgICBpZiAocmV0KQ0KPj4g ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+PiAgICAgICAgICAgICAgIHNjcmF0 Y2hfMzIgJj0gfigweEUwKTsNCj4+IC0gICAgICAgICAgICAgcGNpX3dyaXRlX2NvbmZpZ19kd29y ZChjaGlwLT5wZGV2LA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8y X1NEX0NBUF9SRUcyLCBzY3JhdGNoXzMyKTsNCj4+ICsgICAgICAgICAgICAgcGNpX3dyaXRlX2Nv bmZpZ19kd29yZChjaGlwLT5wZGV2LCBPMl9TRF9DQVBfUkVHMiwgDQo+PiArIHNjcmF0Y2hfMzIp Ow0KPj4NCj4+ICAgICAgICAgICAgICAgaWYgKGNoaXAtPnBkZXYtPmRldmljZSA9PSBQQ0lfREVW SUNFX0lEX08yX0ZVSklOMikNCj4+ICAgICAgICAgICAgICAgICAgICAgICBzZGhjaV9wY2lfbzJf ZnVqaW4yX3BjaV9pbml0KGNoaXApOw0KPj4NCj4+ICAgICAgICAgICAgICAgLyogTG9jayBXUCAq Lw0KPj4gLSAgICAgICAgICAgICByZXQgPSBwY2lfcmVhZF9jb25maWdfYnl0ZShjaGlwLT5wZGV2 LA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPMl9TRF9MT0NL X1dQLCAmc2NyYXRjaCk7DQo+PiArICAgICAgICAgICAgIHJldCA9IHBjaV9yZWFkX2NvbmZpZ19i eXRlKGNoaXAtPnBkZXYsIE8yX1NEX0xPQ0tfV1AsIA0KPj4gKyAmc2NyYXRjaCk7DQo+PiAgICAg ICAgICAgICAgIGlmIChyZXQpDQo+PiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsN Cj4+ICAgICAgICAgICAgICAgc2NyYXRjaCB8PSAweDgwOw0KPj4gQEAgLTMzNiw4ICs1NDEsNyBA QCBpbnQgc2RoY2lfcGNpX28yX3Byb2JlKHN0cnVjdCBzZGhjaV9wY2lfY2hpcCAqY2hpcCkNCj4+ ICAgICAgIGNhc2UgUENJX0RFVklDRV9JRF9PMl9TRUFCSVJEMDoNCj4+ICAgICAgIGNhc2UgUENJ X0RFVklDRV9JRF9PMl9TRUFCSVJEMToNCj4+ICAgICAgICAgICAgICAgLyogVW5Mb2NrIFdQICov DQo+PiAtICAgICAgICAgICAgIHJldCA9IHBjaV9yZWFkX2NvbmZpZ19ieXRlKGNoaXAtPnBkZXYs DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPMl9TRF9MT0NLX1dQLCAmc2NyYXRj aCk7DQo+PiArICAgICAgICAgICAgIHJldCA9IHBjaV9yZWFkX2NvbmZpZ19ieXRlKGNoaXAtPnBk ZXYsIE8yX1NEX0xPQ0tfV1AsIA0KPj4gKyAmc2NyYXRjaCk7DQo+PiAgICAgICAgICAgICAgIGlm IChyZXQpDQo+PiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+DQo+PiBAQCAt MzY5LDExICs1NzMsOSBAQCBpbnQgc2RoY2lfcGNpX28yX3Byb2JlKHN0cnVjdCBzZGhjaV9wY2lf Y2hpcCAqY2hpcCkNCj4+ICAgICAgICAgICAgICAgfQ0KPj4NCj4+ICAgICAgICAgICAgICAgLyog U2V0IFR1bmluZyBXaW5kb3dzIHRvIDUgKi8NCj4+IC0gICAgICAgICAgICAgcGNpX3dyaXRlX2Nv bmZpZ19ieXRlKGNoaXAtPnBkZXYsDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP Ml9TRF9UVU5JTkdfQ1RSTCwgMHg1NSk7DQo+PiArICAgICAgICAgICAgIHBjaV93cml0ZV9jb25m aWdfYnl0ZShjaGlwLT5wZGV2LCBPMl9TRF9UVU5JTkdfQ1RSTCwgDQo+PiArIDB4NTUpOw0KPj4g ICAgICAgICAgICAgICAvKiBMb2NrIFdQICovDQo+PiAtICAgICAgICAgICAgIHJldCA9IHBjaV9y ZWFkX2NvbmZpZ19ieXRlKGNoaXAtPnBkZXYsDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE8yX1NEX0xPQ0tfV1AsICZzY3JhdGNoKTsNCj4+ICsgICAgICAgICAg ICAgcmV0ID0gcGNpX3JlYWRfY29uZmlnX2J5dGUoY2hpcC0+cGRldiwgTzJfU0RfTE9DS19XUCwg DQo+PiArICZzY3JhdGNoKTsNCj4+ICAgICAgICAgICAgICAgaWYgKHJldCkNCj4+ICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4gICAgICAgICAgICAgICBzY3JhdGNoIHw9IDB4 ODA7DQo+PiAtLQ0KPj4gMi4xNC4xDQo+Pg0KPg0K