Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp602805ybc; Tue, 19 Nov 2019 06:27:19 -0800 (PST) X-Google-Smtp-Source: APXvYqzYEN5huorxsEU3Onn3ReghHD6pn+8KimNP84YGNK6bjiIwfCH9ZwneV643n5fsd3EsFH0u X-Received: by 2002:a2e:2419:: with SMTP id k25mr4143268ljk.59.1574173639440; Tue, 19 Nov 2019 06:27:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574173639; cv=none; d=google.com; s=arc-20160816; b=lfd7u+GgxI+W7NHPVFM0qlil0C2h/Jz1wDfDIYzrBOQuPVuwSvl+j3BorJQdnuatNA kh8yXI2+C6xVci8/dki2SdXYTPpjcKjfnCVmhTM8qjdMC/JdJfg6WqkJLbzgGjHuuO/p XAMlqrG1t39TET2eExA3sUtyM+MRCpUbyWxUqEPtQ1TDGW/69cxxPoyj3CAFWkudlKFN yfAal9ucR8ZYVZKuZDKzWP2doOsFGpfLcpeOQmx48fUlhhcVgjEP2l7XS2oCQgMv9k4L BGH60S159ten4CXSOY962rvV8LYFk6PWTHBd5oh5/Lmt003mXhh0BwaIlbJozZFlqUsm krhA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from; bh=beYV3IdQlBuf/aL7/knVkp/zePMeCLU9IAx5tnduS+w=; b=Wvc7kVcpJSGSseg+rEmQEI/QE57WvLQ1aEVBZFsIvCEUt5WEDuEDhDvofd+6nv0xkt 7JeJIOPc4jMO2DsjwZpW0KRMYf4JcY0bzqd0Uu55uRx97EKa2KJ+N5vSRobWX9BWoKLp LnXX2H7C42A8FA4HsKkdOE1mDy9txDIRw44rcj+lrCldaCz1qRaltbySUAC/F4Jmxla0 EHVFW63/U/jFo5D60gNFBX+zz9ULia2RLUg+TPVzT0cUKbP8M3nyQnnbFBc6z37BFCBY MCkTpUO9hzE2Xi6qQwvW9RigGPyrAPYS8ZRODcoGTI2V58hULhfnQxuhnatZEL+T6hK/ sGmw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f3si13842338edx.449.2019.11.19.06.26.53; Tue, 19 Nov 2019 06:27:19 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727912AbfKSOXX (ORCPT + 99 others); Tue, 19 Nov 2019 09:23:23 -0500 Received: from mailgate1.rohmeurope.com ([178.15.145.194]:53070 "EHLO mailgate1.rohmeurope.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726409AbfKSOXW (ORCPT ); Tue, 19 Nov 2019 09:23:22 -0500 X-AuditID: c0a8fbf4-183ff70000001fa6-a8-5dd3fad42ace Received: from smtp.reu.rohmeu.com (will-cas001.reu.rohmeu.com [192.168.251.177]) by mailgate1.rohmeurope.com (Symantec Messaging Gateway) with SMTP id 6C.2E.08102.4DAF3DD5; Tue, 19 Nov 2019 15:23:16 +0100 (CET) Received: from WILL-MAIL002.REu.RohmEu.com ([fe80::e0c3:e88c:5f22:d174]) by WILL-CAS001.REu.RohmEu.com ([fe80::d57e:33d0:7a5d:f0a6%16]) with mapi id 14.03.0439.000; Tue, 19 Nov 2019 15:23:09 +0100 From: "Vaittinen, Matti" To: "mazziesaccount@gmail.com" CC: "corbet@lwn.net" , "linux-doc@vger.kernel.org" , "phil.edworthy@renesas.com" , "linux-rtc@vger.kernel.org" , "dmurphy@ti.com" , "linux-leds@vger.kernel.org" , "devicetree@vger.kernel.org" , "jeffrey.t.kirsher@intel.com" , "linux-gpio@vger.kernel.org" , "mchehab+samsung@kernel.org" , "alexandre.belloni@bootlin.com" , "linux-kernel@vger.kernel.org" , "mturquette@baylibre.com" , "lgirdwood@gmail.com" , "jacek.anaszewski@gmail.com" , "wsa+renesas@sang-engineering.com" , "a.zummo@towertech.it" , "linus.walleij@linaro.org" , "m.szyprowski@samsung.com" , "mark.rutland@arm.com" , "robh+dt@kernel.org" , "linux-clk@vger.kernel.org" , "hkallweit1@gmail.com" , "bgolaszewski@baylibre.com" , "hofrat@osadl.org" , "lee.jones@linaro.org" , "pavel@ucw.cz" , "broonie@kernel.org" , "sboyd@kernel.org" Subject: Re: [PATCH v5 15/16] leds: Add common LED binding parsing support to LED class/core Thread-Topic: [PATCH v5 15/16] leds: Add common LED binding parsing support to LED class/core Thread-Index: AQHVnd45T/Y1eQ/PZ0CqzoQf+9hag6eSfT6A Date: Tue, 19 Nov 2019 14:23:09 +0000 Message-ID: <93aea8553f7ee96d699792b05892df991d2fe2dc.camel@fi.rohmeurope.com> References: <258b5c9934e2b31a5f433a7dbb908dfe5da3d30c.1574059625.git.matti.vaittinen@fi.rohmeurope.com> In-Reply-To: <258b5c9934e2b31a5f433a7dbb908dfe5da3d30c.1574059625.git.matti.vaittinen@fi.rohmeurope.com> Accept-Language: en-US, de-DE Content-Language: de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [213.255.186.46] Content-Type: text/plain; charset="utf-8" Content-ID: <319D2B4EED39364FB99797BC2229122C@de.rohmeurope.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA02Tb0xTVxjGc+5/oNdcShlnsJmtRs2WTHFZsmPiFrNk23Uf3KLxy0zHLnLX NsAtuW0X6z6smXNSUIQN3dYBKn8mw6JSaMZImymWSTvH1gGKwU7rGFCmMERUGMPd26rw5dzn vs/5vc/74T0Mru2ksxmzZBNlSSjSU6nE2eZ/214YmO835FbXp6DGyCCN9k9+S6M7tWECHY6N UGjk7H6Ajgb7SFT+cweJ6qe+IpHLVUqiYd8ZAvW2XwPo2mwPQHcHSjFUvXACQ9MH/iDR8c8a CdR+dAGg/q4aCvlungLop5MDFGoNRmnUdDmCoZqmXgJN3XZhKBJ+HUXDPRTaGxnC0b5AkEaL l9oIVNH35uaVvKfOA/ipoX00X+f5iP/BHaX5Bn8c470tLoq/eslP8Q0VX5D8+IHzBH/3YhXB V3S0AH70+GmCvzD0PcZ/WTeH8c0n79H8jHflO9y7aZvyBduH281Gaf2r76eZrp7wkCVHZsHu seuluBP8MwnKQAoDuZfgg/H/FJ3KaLlBAMcuVlHJn14Ab90fJMoAw1DcJlh2hValjtsI2yLp 6hWcO6iB8xfKabVRBvcejN48R6lax+XBGn+ITuoXoTfyS6INwa2GzlucWma5rbBmJvIwqgFA X+x8YqAUzgQbDroSLOCehi7nJKZqnMuC3tF7ZHJoDjb6f8WTOhPG/1x8WNfDwFwskYVzz8HT XeuT6GYY8HwHkvpZWF0eo5MzpMPQ1yNEJXjCvSzBvUS7l9HuZbR7GX0MkC0AFgvmIqNgEzes k0X7OtliKlY+uyzFXpDcvjud4EH3lm6AMaAbPMlg+ky21d9v0K7ItxQ4TILVlCfbi0RrN4AM rtexW2/8ZtCyBYJjjyhbHlk5DKHPYtfGqgxaTs0qFMUSUX7kPsUweshOzilN02XRKO7+wFxk W7IxJkVtnpqts4pSgSgLdpspT12QPKuyIaqlUXJzVZy1lgjFSjWJhsHLTGW8th5n2mublDOY OC9PBZpwLSFZJDE7i92mYpyKmezS49AJkMUAfQbbcl9xNcpzfNxzQonDlLi21t/VOJuwZGU7 geObxaq3r7wSL1wxfzvDSpjNBdeNro+nuzSZvlXhvatCwTX2cHSPLzdzIo27cfhcYaDS8AxL T/TV6zrmtsi7mJnFTwI7d7iMzjdCpWv/QrP5HUekba+ZHW9VjI/ulKUccseh3r+bQ+T0mc7h Q58PDXqH48fGehzuHzfmWNYsaD7VE1aTsOF5XLYK/wPnlCd5SwQAAA== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQpPbiBNb24sIDIwMTktMTEtMTggYXQgMDk6MDMgKzAyMDAsIE1hdHRpIFZhaXR0aW5lbiB3cm90 ZToNCj4gUXVjaWsgZ3JlcCBmb3IgJ2Zvcl9lYWNoJyBvciAnbGludXgsZGVmYXVsdC10cmlnZ2Vy JyBvcg0KPiAnZGVmYXVsdC1zdGF0ZScgdW5kZXIgZHJpdmVycy9sZWRzIGNhbiB0ZWxsIHF1aXRl IGEgbG90LiBJdCBzZWVtcw0KPiBtdWx0aXBsZSBMRUQgY29udHJvbGxlciBkcml2ZXJzIGltcGxl bWVudCB0aGUgdmVyeSBzaW1pbGFyIGxvb3BpbmcNCj4gdGhyb3VnaCB0aGUgY2hpbGQgbm9kZXMg aW4gb3JkZXIgdG8gbG9jYXRlIHRoZSBMRUQgbm9kZXMgYW5kIHJlYWQNCj4gYW5kIHN1cHBvcnQg dGhlIGNvbW1vbiBMRUQgZHQgYmluZGluZ3MuIEltcGxlbWVudGluZyB0aGlzIHNhbWUNCj4gc3R1 ZmYgZm9yIGFsbCBMRUQgY29udHJvbGxlcnMgZ2V0cyBvbGQgcHJldHR5IGZhc3QuDQo+IA0KPiBU aGlzIGNvbW1pdCBhZGRzIHN1cHBvcnQgZm9yIGxvY2F0aW5nIHRoZSBMRUQgbm9kZSAoYmFzZWQg b24ga25vd24NCj4gbm9kZSBuYW1lcyAtIG9yIGxpbnV4LGxlZC1jb21wYXRpYmxlIHByb3BlcnR5 KSBhbmQgaGFuZGxpbmcgb2YNCj4gZmV3IGNvbW1vbiBMRUQgcHJvcGVydGllcy4NCg0KVGhpcyBp cyBhY3R1YWxseSBub3QgY29tcGxldGVseSB0cnVlLiBJIG9yaWdpbmFsbHkgdGhvdWdodCBvZiBh ZGRpbmcNCmxlZC1jb21wYXRpYmxlIC0gYnV0IEkgY2hhbmdlZCBteSBtaW5kIGFmdGVyIEkgc2F3 IHRoYXQgYXQgbGVhc3Qgc29tZQ0Kb2YgdGhlIGV4aXN0aW5nIGRyaXZlcnMgdXNlZCB2YWx1ZSBv ZiAicmVnIi1wcm9wZXJ0eSB0byBkbyB0aGUgbWF0Y2hpbmcNCmluLWRyaXZlci4gU28sIHRvIG1h a2UgaXQgc2ltcGxlIGZvciB0aGVtLCBJIGRpZCBhZGQgcHJvcGVydHkNCm5hbWUvdmFsdWUgcGFp ciBpbiBpbml0IGRhdGEgZm9yIG1hdGNoaW5nLiBUaGlzIGFsbG93cyBvbmUgdG8gZG8gbGVkLQ0K Y29tcGF0aWJsZSwgb3IgdG8gdXNlIGV4aXN0aW5nIGZpeGVkIHJlZyAob3Igb3RoZXIpIHByb3Bl cnR5IHZhbHVlLiBJJ2QNCmJldHRlciB0byBjaGFuZ2UgdGhlIGNvbW1pdCBtZXNzYWdlIHRvIHJl ZmxlY3QgdGhpcyB0b28uDQoNCj4gDQo+IGxpbnV4LGRlZmF1bHQtdHJpZ2dlciwNCj4gZGVmYXVs dC1zdGF0ZSAod2l0aCB0aGUgZXhjZXB0aW9uIG9mIGtlZXApLA0KPiANCj4gKGluIGFkZGl0aW9u IHRvIGFscmVhZHkgaGFuZGxlZA0KPiBmdW5jdGlvbi1lbnVtZXJhdG9yLA0KPiBmdW5jdGlvbiwN Cj4gY29sb3INCj4gYW5kIGxhYmVsKS4NCj4gDQo+IFJlZ2FyZGluZyB0aGUgbm9kZSBsb29rLXVw OiBJZiBubyBpbml0X2RhdGEgaXMgZ2l2ZW4sIHRoZW4gbm8NCj4gbm9kZS1sb29rdXAgaXMgZG9u ZSBhbmQgY2RldiBuYW1lIGlzIHVzZWQgYXMgc3VjaC4NCj4gDQo+IElmIGluaXRfZGF0YSBpcyBn b3ZlbiBidXQgbm8gc3RhcnRpbmcgcG9pbnQgZm9yIG5vZGUgbG9va3VwIC0gdGhlbg0KPiAocGFy ZW50KSBkZXZpY2UncyBvd24gRFQgbm9kZSBpcyB1c2VkLiBJZiBubyBsZWQtY29tcGF0aWJsZSBp cyBnaXZlbiwNCj4gdGhlbiBvZl9tYXRjaCBpcyBzZWFyY2hlZCBmb3IuIElmIG5laXRoZXIgbGVk LWNvbXBhdGlibGUgbm90IG9mX21hdGNoDQo+IGlzIGdpdmVuIHRoZW4gZGV2aWNlJ3Mgb3duIG5v ZGUgb3IgcGFzc2VkIHN0YXJ0aW5nIHBvaW50IGFyZSB1c2VkIGFzDQo+IHN1Y2guDQoNCkFuZCBz YW1lIGhlcmUuDQoNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE1hdHRpIFZhaXR0aW5lbiA8bWF0dGku dmFpdHRpbmVuQGZpLnJvaG1ldXJvcGUuY29tPg0KPiAtLS0NCj4gDQo+IENoYW5nZXMgZnJvbSB2 NDoNCj4gRml4ZWQgaXNzdWVzIHJlcG9ydGVkIGJ5IERhbiBDYXJwZW50ZXIgYW5kIGtidWlsZC1i b3QuDQo+IChsZWZ0b3ZlciBrZnJlZSBhbmQgdW5pbml0aWFsaXplZCByZXR1cm4gdmFsdWUpDQo+ IA0KPiAgZHJpdmVycy9sZWRzL2xlZC1jbGFzcy5jIHwgIDg4ICsrKysrKysrKysrKy0tDQo+ICBk cml2ZXJzL2xlZHMvbGVkLWNvcmUuYyAgfCAyNDYgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0NCj4gLS0tLQ0KPiAgaW5jbHVkZS9saW51eC9sZWRzLmggICAgIHwgIDkwICsrKysr KysrKysrKy0tDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDM1OSBpbnNlcnRpb25zKCspLCA2NSBkZWxl dGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkLWNsYXNzLmMgYi9k cml2ZXJzL2xlZHMvbGVkLWNsYXNzLmMNCj4gaW5kZXggNjQ3YjEyNjNjNTc5Li45ODE3M2I2NGE1 OTcgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbGVkcy9sZWQtY2xhc3MuYw0KPiArKysgYi9kcml2 ZXJzL2xlZHMvbGVkLWNsYXNzLmMNCj4gQEAgLTIzNSw2ICsyMzUsMjkgQEAgc3RhdGljIGludCBs ZWRfY2xhc3NkZXZfbmV4dF9uYW1lKGNvbnN0IGNoYXINCj4gKmluaXRfbmFtZSwgY2hhciAqbmFt ZSwNCj4gIAlyZXR1cm4gaTsNCj4gIH0NCj4gIA0KPiArc3RhdGljIHZvaWQgbGVkX2FkZF9wcm9w cyhzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZCwgc3RydWN0DQo+IGxlZF9wcm9wZXJ0aWVzICpwcm9w cykNCj4gK3sNCj4gKwlpZiAocHJvcHMtPmRlZmF1bHRfdHJpZ2dlcikNCj4gKwkJbGQtPmRlZmF1 bHRfdHJpZ2dlciA9IHByb3BzLT5kZWZhdWx0X3RyaWdnZXI7DQo+ICsJLyoNCj4gKwkgKiBBY2Nv cmRpbmcgdG8gYmluZGluZyBkb2NzIHRoZSBMRUQgaXMgYnktZGVmYXVsdCB0dXJuZWQgT0ZGDQo+ IHVubGVzcw0KPiArCSAqIGRlZmF1bHRfc3RhdGUgaXMgdXNlZCB0byBpbmRpY2F0ZSBpdCBzaG91 bGQgYmUgT04gb3IgdGhhdA0KPiBzdGF0ZQ0KPiArCSAqIHNob3VsZCBiZSBrZXB0IGFzIGlzDQo+ ICsJICovDQo+ICsJaWYgKHByb3BzLT5kZWZhdWx0X3N0YXRlKSB7DQo+ICsJCWxkLT5icmlnaHRu ZXNzID0gTEVEX09GRjsNCj4gKwkJaWYgKCFzdHJjbXAocHJvcHMtPmRlZmF1bHRfc3RhdGUsICJv biIpKQ0KPiArCQkJbGQtPmJyaWdodG5lc3MgPSBMRURfRlVMTDsNCj4gKwkvKg0KPiArCSAqIFdl IHByb2JhYmx5IHNob3VsZCBub3QgY2FsbCB0aGUgYnJpZ2h0bmVzc19nZXQgcHJpb3IgY2FsbGlu Zw0KPiArCSAqIHRoZSBvZl9wYXJzZV9jYiBpZiBvbmUgaXMgcHJvdmlkZWQuDQo+ICsJICogQWRk IGEgZmxhZyB0byBhZHZlcnRpY2UgdGhhdCBzdGF0ZSBzaG91bGQgYmUgcXVlcmllZCBhbmQNCj4g a2VwdCBhcy1pcy4NCj4gKwkgKi8NCj4gKwkJZWxzZSBpZiAoIXN0cmNtcChwcm9wcy0+ZGVmYXVs dF9zdGF0ZSwgImtlZXAiKSkNCj4gKwkJCXByb3BzLT5icmlnaHRuZXNzX2tlZXAgPSB0cnVlOw0K PiArCX0NCj4gK30NCj4gKw0KPiAgLyoqDQo+ICAgKiBsZWRfY2xhc3NkZXZfcmVnaXN0ZXJfZXh0 IC0gcmVnaXN0ZXIgYSBuZXcgb2JqZWN0IG9mIGxlZF9jbGFzc2Rldg0KPiBjbGFzcw0KPiAgICoJ CQkgICAgICAgd2l0aCBpbml0IGRhdGEuDQo+IEBAIC0yNTEsMjIgKzI3NCw1OCBAQCBpbnQgbGVk X2NsYXNzZGV2X3JlZ2lzdGVyX2V4dChzdHJ1Y3QgZGV2aWNlDQo+ICpwYXJlbnQsDQo+ICAJY2hh ciBmaW5hbF9uYW1lW0xFRF9NQVhfTkFNRV9TSVpFXTsNCj4gIAljb25zdCBjaGFyICpwcm9wb3Nl ZF9uYW1lID0gY29tcG9zZWRfbmFtZTsNCj4gIAlpbnQgcmV0Ow0KPiAtDQo+ICsJc3RydWN0IGxl ZF9wcm9wZXJ0aWVzIHByb3BzID0gezB9Ow0KPiArCXN0cnVjdCBmd25vZGVfaGFuZGxlICpmdzsN Cj4gKw0KPiArCS8qDQo+ICsJICogV2UgZG9uJ3QgdHJ5IGdldHRpbmcgdGhlIG5hbWUgYmFzZWQg b24gRFQgbm9kZSBpZiBpbml0LWRhdGENCj4gaXMgbm90DQo+ICsJICogZ2l2ZW4uIFdlIGNvdWxk IHNlZSBpZiB3ZSBmaW5kIExFRCBwcm9wZXJ0aWVzIGZyb20gdGhlDQo+IGRldmljZSdzIG5vZGUN Cj4gKwkgKiBidXQgdGhhdCBtaWdodCBjaGFuZ2UgTEVEIG5hbWVzIGZvciBvbGQgdXNlcnMgb2YN Cj4gKwkgKiBsZWRfY2xhc3NkZXZfcmVnaXN0ZXIgd2hvIGhhdmUgYmVlbiBwcm92aWRpbmcgdGhl IExFRCBuYW1lDQo+IGluDQo+ICsJICogY2Rldi0+bmFtZS4gU28gd2Ugc2VlayBmd25vZGUgZm9y IG5hbWVzIG9ubHkgaWYgaW5pdF9kYXRhIGlzDQo+IGdpdmVuDQo+ICsJICovDQo+ICAJaWYgKGlu aXRfZGF0YSkgew0KPiArCQlsZWRfY2Rldi0+aW5pdF9kYXRhID0gaW5pdF9kYXRhOw0KPiAgCQlp ZiAoaW5pdF9kYXRhLT5kZXZuYW1lX21hbmRhdG9yeSAmJiAhaW5pdF9kYXRhLQ0KPiA+ZGV2aWNl bmFtZSkgew0KPiAgCQkJZGV2X2VycihwYXJlbnQsICJNYW5kYXRvcnkgZGV2aWNlIG5hbWUgaXMN Cj4gbWlzc2luZyIpOw0KPiAgCQkJcmV0dXJuIC1FSU5WQUw7DQo+ICAJCX0NCj4gLQkJcmV0ID0g bGVkX2NvbXBvc2VfbmFtZShwYXJlbnQsIGluaXRfZGF0YSwNCj4gY29tcG9zZWRfbmFtZSk7DQo+ ICsNCj4gKwkJZncgPSBsZWRfZmluZF9md25vZGUocGFyZW50LCBpbml0X2RhdGEpOw0KPiArCQlp ZiAoIWZ3KSB7DQo+ICsJCQlkZXZfZXJyKHBhcmVudCwgIk5vIGZ3bm9kZSBmb3VuZFxuIik7DQo+ ICsJCQlyZXR1cm4gLUVOT0VOVDsNCj4gKwkJfQ0KPiArCQkvKg0KPiArCQkgKiBXZSBkaWQgaW5j cmVhc2UgcmVmY291bnQgZm9yIGZ3bm9kZS4gTGV0J3Mgc2V0IGENCj4gZmxhZyBzbyB3ZQ0KPiAr CQkgKiBjYW4gZGVjcmVhc2UgaXQgZHVyaW5nIGRlcmVnaXN0cmF0aW9uDQo+ICsJCSAqLw0KPiAr CQlsZWRfY2Rldi0+Zndub2RlX293bmVkID0gdHJ1ZTsNCj4gKw0KPiArCQlyZXQgPSBsZWRfcGFy c2VfZndub2RlX3Byb3BzKHBhcmVudCwgZncsICZwcm9wcyk7DQo+ICsJCWlmIChyZXQpDQo+ICsJ CQlnb3RvIGVycl9vdXQ7DQo+ICsNCj4gKwkJaWYgKGluaXRfZGF0YS0+b2ZfcGFyc2VfY2IpDQo+ ICsJCQlyZXQgPSBpbml0X2RhdGEtPm9mX3BhcnNlX2NiKGxlZF9jZGV2LCBmdywNCj4gJnByb3Bz KTsNCj4gIAkJaWYgKHJldCA8IDApDQo+IC0JCQlyZXR1cm4gcmV0Ow0KPiArCQkJZ290byBlcnJf b3V0Ow0KPiArDQo+ICsJCWxlZF9hZGRfcHJvcHMobGVkX2NkZXYsICZwcm9wcyk7DQo+ICsNCj4g KwkJcmV0ID0gbGVkX2NvbXBvc2VfbmFtZShwYXJlbnQsIGluaXRfZGF0YSwgJnByb3BzLA0KPiAr CQkJCSAgICAgICBjb21wb3NlZF9uYW1lKTsNCj4gKwkJaWYgKHJldCA8IDApDQo+ICsJCQlnb3Rv IGVycl9vdXQ7DQo+ICAJfSBlbHNlIHsNCj4gIAkJcHJvcG9zZWRfbmFtZSA9IGxlZF9jZGV2LT5u YW1lOw0KPiArCQlsZWRfY2Rldi0+Zndub2RlX293bmVkID0gZmFsc2U7DQo+ICsJCWZ3ID0gTlVM TDsNCj4gIAl9DQo+ICANCj4gIAlyZXQgPSBsZWRfY2xhc3NkZXZfbmV4dF9uYW1lKHByb3Bvc2Vk X25hbWUsIGZpbmFsX25hbWUsDQo+IHNpemVvZihmaW5hbF9uYW1lKSk7DQo+ICAJaWYgKHJldCA8 IDApDQo+IC0JCXJldHVybiByZXQ7DQo+ICsJCWdvdG8gZXJyX291dDsNCj4gIA0KPiAgCW11dGV4 X2luaXQoJmxlZF9jZGV2LT5sZWRfYWNjZXNzKTsNCj4gIAltdXRleF9sb2NrKCZsZWRfY2Rldi0+ bGVkX2FjY2Vzcyk7DQo+IEBAIC0yNzQsMjIgKzMzMywyOCBAQCBpbnQgbGVkX2NsYXNzZGV2X3Jl Z2lzdGVyX2V4dChzdHJ1Y3QgZGV2aWNlDQo+ICpwYXJlbnQsDQo+ICAJCQkJbGVkX2NkZXYsIGxl ZF9jZGV2LT5ncm91cHMsICIlcyIsDQo+IGZpbmFsX25hbWUpOw0KPiAgCWlmIChJU19FUlIobGVk X2NkZXYtPmRldikpIHsNCj4gIAkJbXV0ZXhfdW5sb2NrKCZsZWRfY2Rldi0+bGVkX2FjY2Vzcyk7 DQo+IC0JCXJldHVybiBQVFJfRVJSKGxlZF9jZGV2LT5kZXYpOw0KPiArCQlyZXQgPSBQVFJfRVJS KGxlZF9jZGV2LT5kZXYpOw0KPiArCQlnb3RvIGVycl9vdXQ7DQo+ICAJfQ0KPiAtCWlmIChpbml0 X2RhdGEgJiYgaW5pdF9kYXRhLT5md25vZGUpDQo+IC0JCWxlZF9jZGV2LT5kZXYtPmZ3bm9kZSA9 IGluaXRfZGF0YS0+Zndub2RlOw0KPiArCWlmIChmdykNCj4gKwkJbGVkX2NkZXYtPmRldi0+Zndu b2RlID0gZnc7DQo+ICANCj4gIAlpZiAocmV0KQ0KPiAgCQlkZXZfd2FybihwYXJlbnQsICJMZWQg JXMgcmVuYW1lZCB0byAlcyBkdWUgdG8gbmFtZQ0KPiBjb2xsaXNpb24iLA0KPiAgCQkJCWxlZF9j ZGV2LT5uYW1lLCBkZXZfbmFtZShsZWRfY2Rldi0NCj4gPmRldikpOw0KPiAgDQo+ICsJaWYgKHBy b3BzLmJyaWdodG5lc3Nfa2VlcCkNCj4gKwkJaWYgKGxlZF9jZGV2LT5icmlnaHRuZXNzX2dldCkN Cj4gKwkJCWxlZF9jZGV2LT5icmlnaHRuZXNzID0NCj4gKwkJCQkgbGVkX2NkZXYtPmJyaWdodG5l c3NfZ2V0KGxlZF9jZGV2KTsNCj4gKw0KPiAgCWlmIChsZWRfY2Rldi0+ZmxhZ3MgJiBMRURfQlJJ R0hUX0hXX0NIQU5HRUQpIHsNCj4gIAkJcmV0ID0gbGVkX2FkZF9icmlnaHRuZXNzX2h3X2NoYW5n ZWQobGVkX2NkZXYpOw0KPiAgCQlpZiAocmV0KSB7DQo+ICAJCQlkZXZpY2VfdW5yZWdpc3Rlcihs ZWRfY2Rldi0+ZGV2KTsNCj4gIAkJCWxlZF9jZGV2LT5kZXYgPSBOVUxMOw0KPiAgCQkJbXV0ZXhf dW5sb2NrKCZsZWRfY2Rldi0+bGVkX2FjY2Vzcyk7DQo+IC0JCQlyZXR1cm4gcmV0Ow0KPiArCQkJ Z290byBlcnJfb3V0Ow0KPiAgCQl9DQo+ICAJfQ0KPiAgDQo+IEBAIC0zMjIsNiArMzg3LDEwIEBA IGludCBsZWRfY2xhc3NkZXZfcmVnaXN0ZXJfZXh0KHN0cnVjdCBkZXZpY2UNCj4gKnBhcmVudCwN Cj4gIAkJCWxlZF9jZGV2LT5uYW1lKTsNCj4gIA0KPiAgCXJldHVybiAwOw0KPiArZXJyX291dDoN Cj4gKwlpZiAobGVkX2NkZXYtPmZ3bm9kZV9vd25lZCkNCj4gKwkJZndub2RlX2hhbmRsZV9wdXQo ZncpOw0KPiArCXJldHVybiByZXQ7DQo+ICB9DQo+ICBFWFBPUlRfU1lNQk9MX0dQTChsZWRfY2xh c3NkZXZfcmVnaXN0ZXJfZXh0KTsNCj4gIA0KPiBAQCAtMzU1LDYgKzQyNCw5IEBAIHZvaWQgbGVk X2NsYXNzZGV2X3VucmVnaXN0ZXIoc3RydWN0IGxlZF9jbGFzc2Rldg0KPiAqbGVkX2NkZXYpDQo+ ICAJaWYgKGxlZF9jZGV2LT5mbGFncyAmIExFRF9CUklHSFRfSFdfQ0hBTkdFRCkNCj4gIAkJbGVk X3JlbW92ZV9icmlnaHRuZXNzX2h3X2NoYW5nZWQobGVkX2NkZXYpOw0KPiAgDQo+ICsJaWYgKGxl ZF9jZGV2LT5md25vZGVfb3duZWQpDQo+ICsJCWZ3bm9kZV9oYW5kbGVfcHV0KGxlZF9jZGV2LT5k ZXYtPmZ3bm9kZSk7DQo+ICsNCj4gIAlkZXZpY2VfdW5yZWdpc3RlcihsZWRfY2Rldi0+ZGV2KTsN Cj4gIA0KPiAgCWRvd25fd3JpdGUoJmxlZHNfbGlzdF9sb2NrKTsNCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbGVkcy9sZWQtY29yZS5jIGIvZHJpdmVycy9sZWRzL2xlZC1jb3JlLmMNCj4gaW5kZXgg ZjFmNzE4ZGJlMGY4Li45MzY5ZjAzZWU1NDAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbGVkcy9s ZWQtY29yZS5jDQo+ICsrKyBiL2RyaXZlcnMvbGVkcy9sZWQtY29yZS5jDQo+IEBAIC0zNjUsNzAg KzM2NSwyMTQgQEAgdm9pZCBsZWRfc3lzZnNfZW5hYmxlKHN0cnVjdCBsZWRfY2xhc3NkZXYNCj4g KmxlZF9jZGV2KQ0KPiAgfQ0KPiAgRVhQT1JUX1NZTUJPTF9HUEwobGVkX3N5c2ZzX2VuYWJsZSk7 DQo+ICANCj4gLXN0YXRpYyB2b2lkIGxlZF9wYXJzZV9md25vZGVfcHJvcHMoc3RydWN0IGRldmlj ZSAqZGV2LA0KPiAtCQkJCSAgIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsDQo+IC0JCQkJ ICAgc3RydWN0IGxlZF9wcm9wZXJ0aWVzICpwcm9wcykNCj4gK3N0YXRpYyBpbnQgZndfaXNfbWF0 Y2goc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3LA0KPiArCQkgICAgICAgc3RydWN0IGxlZF9md19t YXRjaF9wcm9wZXJ0eSAqbXAsIHZvaWQgKnZhbCkNCj4gIHsNCj4gLQlpbnQgcmV0Ow0KPiArCXZv aWQgKmNtcCA9IG1wLT5yYXdfdmFsOw0KPiArCWludCByZXQgPSAtRUlOVkFMOw0KPiArDQo+ICsJ aWYgKG1wLT5yYXdfdmFsKSB7DQo+ICsJCXJldCA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3U4X2Fy cmF5KGZ3LCBtcC0+bmFtZSwgdmFsLA0KPiArCQkJCQkJICAgIG1wLT5zaXplKTsNCj4gKwl9IGVs c2UgaWYgKG1wLT5pbnR2YWwpIHsNCj4gKwkJY21wID0gbXAtPmludHZhbDsNCj4gKwkJc3dpdGNo IChtcC0+c2l6ZSkgew0KPiArCQljYXNlIDE6DQo+ICsJCQlyZXQgPSBmd25vZGVfcHJvcGVydHlf cmVhZF91OF9hcnJheShmdywgbXAtDQo+ID5uYW1lLCB2YWwsDQo+ICsJCQkJCQkgICAgbXAtPnNp emUpOw0KPiArCQkJYnJlYWs7DQo+ICsJCWNhc2UgMjoNCj4gKwkJCXJldCA9IGZ3bm9kZV9wcm9w ZXJ0eV9yZWFkX3UxNl9hcnJheShmdywgbXAtDQo+ID5uYW1lLCB2YWwsDQo+ICsJCQkJCQkgICAg bXAtPnNpemUpOw0KPiArCQkJYnJlYWs7DQo+ICsJCWNhc2UgNDoNCj4gKwkJCXJldCA9IGZ3bm9k ZV9wcm9wZXJ0eV9yZWFkX3UzMl9hcnJheShmdywgbXAtDQo+ID5uYW1lLCB2YWwsDQo+ICsJCQkJ CQkgICAgbXAtPnNpemUpOw0KPiArCQkJYnJlYWs7DQo+ICsJCWNhc2UgODoNCj4gKwkJCXJldCA9 IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3U2NF9hcnJheShmdywgbXAtDQo+ID5uYW1lLCB2YWwsDQo+ ICsJCQkJCQkgICAgbXAtPnNpemUpOw0KPiArCQkJYnJlYWs7DQo+ICsJCWRlZmF1bHQ6DQo+ICsJ CQlyZXR1cm4gLUVJTlZBTDsNCj4gKwkJfQ0KPiArCX0NCj4gKwlpZiAoIXJldCAmJiBjbXApDQo+ ICsJCWlmICghbWVtY21wKHZhbCwgY21wLCBtcC0+c2l6ZSkpDQo+ICsJCQlyZXR1cm4gMTsNCj4g Kw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArLyoqDQo+ICsgKiBsZWRfZmluZF9md25vZGUgLSBm aW5kIGZ3bm9kZSBmb3IgbGVkDQo+ICsgKiBAcGFyZW50CUxFRCBjb250cm9sbGVyIGRldmljZQ0K PiArICogQGluaXRfZGF0YQlsZWQgaW5pdCBkYXRhIHdpdGggbWF0Y2ggaW5mb3JtYXRpb24NCj4g KyAqDQo+ICsgKiBTY2FucyB0aGUgZmlybXdhcmUgbm9kZXMgYW5kIHJldHVybnMgbm9kZSBtYXRj aGluZyB0aGUgZ2l2ZW4NCj4gaW5pdF9kYXRhLg0KPiArICogTk9URTogRnVuY3Rpb24gaW5jcmVh c2VzIHJlZmNvdW50IGZvciBmb3VuZCBub2RlLiBDYWxsZXIgbXVzdA0KPiBkZWNyZWFzZQ0KPiAr ICogcmVmY291bnQgdXNpbmcgZndub2RlX2hhbmRsZV9wdXQgd2hlbiBmaW5pc2hlZCB3aXRoIG5v ZGUuDQo+ICsgKi8NCj4gK3N0cnVjdCBmd25vZGVfaGFuZGxlICpsZWRfZmluZF9md25vZGUoc3Ry dWN0IGRldmljZSAqcGFyZW50LA0KPiArCQkJCSAgICAgIHN0cnVjdCBsZWRfaW5pdF9kYXRhICpp bml0X2RhdGEpDQo+ICt7DQo+ICsJc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3Ow0KPiArDQo+ICsJ LyoNCj4gKwkgKiBUaGlzIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgVy9PIGluaXQgZGF0YS4gV2Ug Y291bGQgYWx3YXlzDQo+IHJldHVybg0KPiArCSAqIGRldl9md25vZGUoKSAtIGJ1dCB0aGVuIHdl IHNob3VsZCBwdW1wLXVwIHRoZSByZWZjb3VudA0KPiArCSAqLw0KPiArCWlmICghaW5pdF9kYXRh KQ0KPiArCQlyZXR1cm4gTlVMTDsNCj4gKw0KPiArCWlmICghaW5pdF9kYXRhLT5md25vZGUpDQo+ ICsJCWZ3ID0gZGV2X2Z3bm9kZShwYXJlbnQpOw0KPiArCWVsc2UNCj4gKwkJZncgPSBpbml0X2Rh dGEtPmZ3bm9kZTsNCj4gKw0KPiArCWlmICghZncpDQo+ICsJCXJldHVybiBOVUxMOw0KPiArDQo+ ICsJLyoNCj4gKwkgKiBTaW1wbGUgdGhpbmdzIGFyZSBwcmV0dHkuIEkgdGhpbmsgc2ltcGxlc3Qg aXMgdG8gdXNlIERUDQo+IG5vZGUtbmFtZQ0KPiArCSAqIGZvciBtYXRjaGluZyB0aGUgbm9kZSB3 aXRoIExFRCAtIHNhbWUgd2F5IHJlZ3VsYXRvcnMgdXNlIHRoZQ0KPiBub2RlDQo+ICsJICogbmFt ZSB0byBtYXRjaCB3aXRoIGRlc2MuDQo+ICsJICoNCj4gKwkgKiBUaGlzIG1heSBub3Qgd29yayB3 aXRoIGV4aXN0aW5nIExFRCBEVCBlbnRyaWVzIGlmIHRoZSBub2RlDQo+IG5hbWUgaGFzDQo+ICsJ ICogYmVlbiBmcmVlbHkgc2VsZWN0aWJsZS4gSW4gb3JkZXIgdG8gdGhpcyB0byB3b3JrIHRoZSBi aW5kaW5nDQo+IGRvYw0KPiArCSAqIGZvciBMRUQgZHJpdmVyIHNob3VsZCBkZWZpbmUgdXNhYmxl IG5vZGUgbmFtZXMuDQo+ICsJICoNCj4gKwkgKiBJZiB0aGlzIGlzIG5vdCB3b3JraW5nIHdlIGNh biBkZWZpbmUgc3BlY2lmaWMgbWF0Y2ggcHJvcGVydHkNCj4gd2hpY2gNCj4gKwkgKiB2YWx1ZSB3 ZSBzY2FuIGFuZCB1c2UgZm9yIG1hdGNoaW5nIGZvciBMRURzIGNvbm5lY3RlZCB0byB0aGUNCj4g KwkgKiBjb250cm9sbGVyLg0KPiArCSAqLw0KPiArCWlmIChpbml0X2RhdGEtPm1hdGNoX3Byb3Bl cnR5Lm5hbWUgJiYgaW5pdF9kYXRhLQ0KPiA+bWF0Y2hfcHJvcGVydHkuc2l6ZSkgew0KPiArCQl1 OCAqdmFsOw0KPiArCQlpbnQgcmV0Ow0KPiArCQlzdHJ1Y3QgZndub2RlX2hhbmRsZSAqY2hpbGQ7 DQo+ICsJCXN0cnVjdCBsZWRfZndfbWF0Y2hfcHJvcGVydHkgKm1wOw0KPiArDQo+ICsJCW1wID0g JmluaXRfZGF0YS0+bWF0Y2hfcHJvcGVydHk7DQo+ICsNCj4gKwkJdmFsID0ga3phbGxvYyhtcC0+ c2l6ZSwgR0ZQX0tFUk5FTCk7DQo+ICsJCWlmICghdmFsKQ0KPiArCQkJcmV0dXJuIEVSUl9QVFIo LUVOT01FTSk7DQo+ICsNCj4gKwkJZndub2RlX2Zvcl9lYWNoX2NoaWxkX25vZGUoZncsIGNoaWxk KSB7DQo+ICsJCQlyZXQgPSBmd19pc19tYXRjaChjaGlsZCwgbXAsIHZhbCk7DQo+ICsJCQlpZiAo cmV0ID4gMCkgew0KPiArCQkJCWtmcmVlKHZhbCk7DQo+ICsJCQkJcmV0dXJuIGNoaWxkOw0KPiAr CQkJfQ0KPiArCQkJaWYgKHJldCA8IDApIHsNCj4gKwkJCQlkZXZfZXJyKHBhcmVudCwNCj4gKwkJ CQkJImludmFsaWQgZncgbWF0Y2guIFVzZQ0KPiByYXdfdmFsP1xuIik7DQo+ICsJCQkJZndub2Rl X2hhbmRsZV9wdXQoY2hpbGQpOw0KPiArCQkJCWJyZWFrOw0KPiArCQkJfQ0KPiArCQl9DQo+ICsJ CWtmcmVlKHZhbCk7DQo+ICsJfQ0KPiArCWlmIChpbml0X2RhdGEtPm9mX21hdGNoKQ0KPiArCQlm dyA9IGZ3bm9kZV9nZXRfbmFtZWRfY2hpbGRfbm9kZShmdywgaW5pdF9kYXRhLQ0KPiA+b2ZfbWF0 Y2gpOw0KPiArCWVsc2UNCj4gKwkJZncgPSBmd25vZGVfaGFuZGxlX2dldChmdyk7DQo+ICsNCj4g KwlyZXR1cm4gZnc7DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MKGxlZF9maW5kX2Z3bm9kZSk7DQo+ ICsNCj4gK2ludCBsZWRfcGFyc2VfZndub2RlX3Byb3BzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry dWN0IGZ3bm9kZV9oYW5kbGUNCj4gKmZ3bm9kZSwNCj4gKwkJCSAgIHN0cnVjdCBsZWRfcHJvcGVy dGllcyAqcHJvcHMpDQo+ICt7DQo+ICsJaW50IHJldCA9IDA7DQo+ICANCj4gIAlpZiAoIWZ3bm9k ZSkNCj4gLQkJcmV0dXJuOw0KPiArCQlyZXR1cm4gMDsNCj4gIA0KPiAgCWlmIChmd25vZGVfcHJv cGVydHlfcHJlc2VudChmd25vZGUsICJsYWJlbCIpKSB7DQo+ICAJCXJldCA9IGZ3bm9kZV9wcm9w ZXJ0eV9yZWFkX3N0cmluZyhmd25vZGUsICJsYWJlbCIsDQo+ICZwcm9wcy0+bGFiZWwpOw0KPiAg CQlpZiAocmV0KQ0KPiAgCQkJZGV2X2VycihkZXYsICJFcnJvciBwYXJzaW5nICdsYWJlbCcgcHJv cGVydHkNCj4gKCVkKVxuIiwgcmV0KTsNCj4gLQkJcmV0dXJuOw0KPiArCQlyZXR1cm4gcmV0Ow0K PiAgCX0NCj4gIA0KPiArCS8qKg0KPiArCSAqIFBsZWFzZSBub3RlLCBsb2dpYyBjaGFuZ2VkIC0g aWYgaW52YWxpZCBwcm9wZXJ0eSBpcyBmb3VuZCB3ZQ0KPiBiYWlsDQo+ICsJICogZWFybHkgb3V0 IHdpdGhvdXQgcGFyc2luZyB0aGUgcmVzdCBvZiB0aGUgcHJvcGVydGllcy4NCj4gT3JpZ2luYWxs eQ0KPiArCSAqIHRoaXMgd2FzIHRoZSBjYXNlIG9ubHkgZm9yICdsYWJlbCcgcHJvcGVydHkuIEkg ZG9uJ3Qga25vdw0KPiB0aGUNCj4gKwkgKiByYXRpb25hbGUgYmVoaW5kIG9yaWdpbmFsIGxvZ2lj IGFsbG93aW5nIGludmFsaWQgcHJvcGVydGllcw0KPiB0byBiZQ0KPiArCSAqIGdpdmVuLiBJZiB0 aGVyZSBpcyBhIHJlYXNvbiB0aGVuIHdlIHNob3VsZCByZWNvbnNpZGVyIHRoaXMuDQo+ICsJICog SW50dWl0aXZlbHkgaXQgZmVlbHMgY29ycmVjdCB0byBqdXN0IHllbGwgYW5kIHF1aXQgaWYgd2Ug aGl0DQo+IHZhbHVlIHdlDQo+ICsJICogZG9uJ3QgdW5kZXJzdGFuZCAtIGJ1dCBpbnR1aXRpb24g bWF5IGJlIHdyb25nIGF0IHRpbWVzIDopDQo+ICsJICovDQo+ICAJaWYgKGZ3bm9kZV9wcm9wZXJ0 eV9wcmVzZW50KGZ3bm9kZSwgImNvbG9yIikpIHsNCj4gIAkJcmV0ID0gZndub2RlX3Byb3BlcnR5 X3JlYWRfdTMyKGZ3bm9kZSwgImNvbG9yIiwgJnByb3BzLQ0KPiA+Y29sb3IpOw0KPiAtCQlpZiAo cmV0KQ0KPiArCQlpZiAocmV0KSB7DQo+ICAJCQlkZXZfZXJyKGRldiwgIkVycm9yIHBhcnNpbmcg J2NvbG9yJyBwcm9wZXJ0eQ0KPiAoJWQpXG4iLCByZXQpOw0KPiAtCQllbHNlIGlmIChwcm9wcy0+ Y29sb3IgPj0gTEVEX0NPTE9SX0lEX01BWCkNCj4gKwkJCXJldHVybiByZXQ7DQo+ICsJCX0gZWxz ZSBpZiAocHJvcHMtPmNvbG9yID49IExFRF9DT0xPUl9JRF9NQVgpIHsNCj4gIAkJCWRldl9lcnIo ZGV2LCAiTEVEIGNvbG9yIGlkZW50aWZpZXIgb3V0IG9mDQo+IHJhbmdlXG4iKTsNCj4gLQkJZWxz ZQ0KPiAtCQkJcHJvcHMtPmNvbG9yX3ByZXNlbnQgPSB0cnVlOw0KPiArCQkJcmV0dXJuIHJldDsN Cj4gKwkJfQ0KPiArCQlwcm9wcy0+Y29sb3JfcHJlc2VudCA9IHRydWU7DQo+ICAJfQ0KPiAgDQo+ ICsJaWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGZ3bm9kZSwgImZ1bmN0aW9uIikpIHsNCj4g KwkJcmV0ID0gZndub2RlX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGZ3bm9kZSwgImZ1bmN0aW9uIiwN Cj4gKwkJCQkJCSAgJnByb3BzLT5mdW5jdGlvbik7DQo+ICsJCWlmIChyZXQpIHsNCj4gKwkJCWRl dl9lcnIoZGV2LA0KPiArCQkJCSJFcnJvciBwYXJzaW5nICdmdW5jdGlvbicgcHJvcGVydHkNCj4g KCVkKVxuIiwNCj4gKwkJCQlyZXQpOw0KPiArCQkJcmV0dXJuIHJldDsNCj4gKwkJfQ0KPiArCX0N Cj4gIA0KPiAtCWlmICghZndub2RlX3Byb3BlcnR5X3ByZXNlbnQoZndub2RlLCAiZnVuY3Rpb24i KSkNCj4gLQkJcmV0dXJuOw0KPiAtDQo+IC0JcmV0ID0gZndub2RlX3Byb3BlcnR5X3JlYWRfc3Ry aW5nKGZ3bm9kZSwgImZ1bmN0aW9uIiwgJnByb3BzLQ0KPiA+ZnVuY3Rpb24pOw0KPiAtCWlmIChy ZXQpIHsNCj4gLQkJZGV2X2VycihkZXYsDQo+IC0JCQkiRXJyb3IgcGFyc2luZyAnZnVuY3Rpb24n IHByb3BlcnR5ICglZClcbiIsDQo+IC0JCQlyZXQpOw0KPiArCWlmIChmd25vZGVfcHJvcGVydHlf cHJlc2VudChmd25vZGUsICJmdW5jdGlvbi1lbnVtZXJhdG9yIikpIHsNCj4gKwkJcmV0ID0gZndu b2RlX3Byb3BlcnR5X3JlYWRfdTMyKGZ3bm9kZSwgImZ1bmN0aW9uLQ0KPiBlbnVtZXJhdG9yIiwN Cj4gKwkJCQkJICAgICAgICZwcm9wcy0+ZnVuY19lbnVtKTsNCj4gKwkJaWYgKHJldCkgew0KPiAr CQkJZGV2X2VycihkZXYsDQo+ICsJCQkJIkVycm9yIHBhcnNpbmcgJ2Z1bmN0aW9uLWVudW1lcmF0 b3InDQo+IHByb3BlcnR5ICglZClcbiIsDQo+ICsJCQkJcmV0KTsNCj4gKwkJCXJldHVybiByZXQ7 DQo+ICsJCX0NCj4gKwkJcHJvcHMtPmZ1bmNfZW51bV9wcmVzZW50ID0gdHJ1ZTsNCj4gIAl9DQo+ ICANCj4gLQlpZiAoIWZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGZ3bm9kZSwgImZ1bmN0aW9uLWVu dW1lcmF0b3IiKSkNCj4gLQkJcmV0dXJuOw0KPiArCWlmIChmd25vZGVfcHJvcGVydHlfcHJlc2Vu dChmd25vZGUsICJkZWZhdWx0LXN0YXRlIikpIHsNCj4gKwkJcmV0ID0gZndub2RlX3Byb3BlcnR5 X3JlYWRfc3RyaW5nKGZ3bm9kZSwgImRlZmF1bHQtDQo+IHN0YXRlIiwNCj4gKwkJCQkJCSAgJnBy b3BzLQ0KPiA+ZGVmYXVsdF9zdGF0ZSk7DQo+ICsJCWlmIChyZXQpIHsNCj4gKwkJCWRldl9lcnIo ZGV2LA0KPiArCQkJCSJFcnJvciBwYXJzaW5nICdkZWZhdWx0LXN0YXRlJyBwcm9wZXJ0eQ0KPiAo JWQpXG4iLA0KPiArCQkJCXJldCk7DQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiArCQl9DQo+ICsJfQ0K PiAgDQo+IC0JcmV0ID0gZndub2RlX3Byb3BlcnR5X3JlYWRfdTMyKGZ3bm9kZSwgImZ1bmN0aW9u LWVudW1lcmF0b3IiLA0KPiAtCQkJCSAgICAgICAmcHJvcHMtPmZ1bmNfZW51bSk7DQo+IC0JaWYg KHJldCkgew0KPiAtCQlkZXZfZXJyKGRldiwNCj4gLQkJCSJFcnJvciBwYXJzaW5nICdmdW5jdGlv bi1lbnVtZXJhdG9yJyBwcm9wZXJ0eQ0KPiAoJWQpXG4iLA0KPiAtCQkJcmV0KTsNCj4gLQl9IGVs c2Ugew0KPiAtCQlwcm9wcy0+ZnVuY19lbnVtX3ByZXNlbnQgPSB0cnVlOw0KPiArCWlmIChmd25v ZGVfcHJvcGVydHlfcHJlc2VudChmd25vZGUsICJsaW51eCxkZWZhdWx0LXRyaWdnZXIiKSkgew0K PiArCQlyZXQgPSBmd25vZGVfcHJvcGVydHlfcmVhZF9zdHJpbmcoZndub2RlLA0KPiArCQkJCQkJ ICAibGludXgsZGVmYXVsdC0NCj4gdHJpZ2dlciIsDQo+ICsJCQkJCQkgICZwcm9wcy0NCj4gPmRl ZmF1bHRfdHJpZ2dlcik7DQo+ICsJCWlmIChyZXQpDQo+ICsJCQlkZXZfZXJyKGRldiwNCj4gKwkJ CQkiRXJyb3IgcGFyc2luZyAnbGludXgsZGVmYXVsdC10cmlnZ2VyJw0KPiBwcm9wZXJ0eSAoJWQp XG4iLA0KPiArCQkJCXJldCk7DQo+ICAJfQ0KPiArCXJldHVybiByZXQ7DQo+ICB9DQo+ICtFWFBP UlRfU1lNQk9MX0dQTChsZWRfcGFyc2VfZndub2RlX3Byb3BzKTsNCj4gIA0KPiAgaW50IGxlZF9j b21wb3NlX25hbWUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbGVkX2luaXRfZGF0YQ0KPiAq aW5pdF9kYXRhLA0KPiAtCQkgICAgIGNoYXIgKmxlZF9jbGFzc2Rldl9uYW1lKQ0KPiArCQkgICAg IHN0cnVjdCBsZWRfcHJvcGVydGllcyAqcHJvcHMsIGNoYXINCj4gKmxlZF9jbGFzc2Rldl9uYW1l KQ0KPiAgew0KPiAtCXN0cnVjdCBsZWRfcHJvcGVydGllcyBwcm9wcyA9IHt9Ow0KPiAtCXN0cnVj dCBmd25vZGVfaGFuZGxlICpmd25vZGUgPSBpbml0X2RhdGEtPmZ3bm9kZTsNCj4gIAljb25zdCBj aGFyICpkZXZpY2VuYW1lID0gaW5pdF9kYXRhLT5kZXZpY2VuYW1lOw0KPiAgDQo+ICAJaWYgKCFs ZWRfY2xhc3NkZXZfbmFtZSkNCj4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+ICANCj4gLQlsZWRfcGFy c2VfZndub2RlX3Byb3BzKGRldiwgZndub2RlLCAmcHJvcHMpOw0KPiAtDQo+IC0JaWYgKHByb3Bz LmxhYmVsKSB7DQo+ICsJaWYgKHByb3BzLT5sYWJlbCkgew0KPiAgCQkvKg0KPiAgCQkgKiBJZiBp bml0X2RhdGEuZGV2aWNlbmFtZSBpcyBOVUxMLCB0aGVuIGl0IGluZGljYXRlcw0KPiB0aGF0DQo+ ICAJCSAqIERUIGxhYmVsIHNob3VsZCBiZSB1c2VkIGFzLWlzIGZvciBMRUQgY2xhc3MgZGV2aWNl DQo+IG5hbWUuDQo+IEBAIC00MzYsMjMgKzU4MCwyMyBAQCBpbnQgbGVkX2NvbXBvc2VfbmFtZShz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdA0KPiBsZWRfaW5pdF9kYXRhICppbml0X2RhdGEsDQo+ ICAJCSAqIHRoZSBmaW5hbCBMRUQgY2xhc3MgZGV2aWNlIG5hbWUuDQo+ICAJCSAqLw0KPiAgCQlp ZiAoIWRldmljZW5hbWUpIHsNCj4gLQkJCXN0cnNjcHkobGVkX2NsYXNzZGV2X25hbWUsIHByb3Bz LmxhYmVsLA0KPiArCQkJc3Ryc2NweShsZWRfY2xhc3NkZXZfbmFtZSwgcHJvcHMtPmxhYmVsLA0K PiAgCQkJCUxFRF9NQVhfTkFNRV9TSVpFKTsNCj4gIAkJfSBlbHNlIHsNCj4gIAkJCXNucHJpbnRm KGxlZF9jbGFzc2Rldl9uYW1lLCBMRURfTUFYX05BTUVfU0laRSwNCj4gIiVzOiVzIiwNCj4gLQkJ CQkgZGV2aWNlbmFtZSwgcHJvcHMubGFiZWwpOw0KPiArCQkJCSBkZXZpY2VuYW1lLCBwcm9wcy0+ bGFiZWwpOw0KPiAgCQl9DQo+IC0JfSBlbHNlIGlmIChwcm9wcy5mdW5jdGlvbiB8fCBwcm9wcy5j b2xvcl9wcmVzZW50KSB7DQo+ICsJfSBlbHNlIGlmIChwcm9wcy0+ZnVuY3Rpb24gfHwgcHJvcHMt PmNvbG9yX3ByZXNlbnQpIHsNCj4gIAkJY2hhciB0bXBfYnVmW0xFRF9NQVhfTkFNRV9TSVpFXTsN Cj4gIA0KPiAtCQlpZiAocHJvcHMuZnVuY19lbnVtX3ByZXNlbnQpIHsNCj4gKwkJaWYgKHByb3Bz LT5mdW5jX2VudW1fcHJlc2VudCkgew0KPiAgCQkJc25wcmludGYodG1wX2J1ZiwgTEVEX01BWF9O QU1FX1NJWkUsICIlczolcy0NCj4gJWQiLA0KPiAtCQkJCSBwcm9wcy5jb2xvcl9wcmVzZW50ID8N Cj4gbGVkX2NvbG9yc1twcm9wcy5jb2xvcl0gOiAiIiwNCj4gLQkJCQkgcHJvcHMuZnVuY3Rpb24g PzogIiIsDQo+IHByb3BzLmZ1bmNfZW51bSk7DQo+ICsJCQkJIHByb3BzLT5jb2xvcl9wcmVzZW50 ID8NCj4gbGVkX2NvbG9yc1twcm9wcy0+Y29sb3JdIDogIiIsDQo+ICsJCQkJIHByb3BzLT5mdW5j dGlvbiA/OiAiIiwgcHJvcHMtDQo+ID5mdW5jX2VudW0pOw0KPiAgCQl9IGVsc2Ugew0KPiAgCQkJ c25wcmludGYodG1wX2J1ZiwgTEVEX01BWF9OQU1FX1NJWkUsICIlczolcyIsDQo+IC0JCQkJIHBy b3BzLmNvbG9yX3ByZXNlbnQgPw0KPiBsZWRfY29sb3JzW3Byb3BzLmNvbG9yXSA6ICIiLA0KPiAt CQkJCSBwcm9wcy5mdW5jdGlvbiA/OiAiIik7DQo+ICsJCQkJIHByb3BzLT5jb2xvcl9wcmVzZW50 ID8NCj4gbGVkX2NvbG9yc1twcm9wcy0+Y29sb3JdIDogIiIsDQo+ICsJCQkJIHByb3BzLT5mdW5j dGlvbiA/OiAiIik7DQo+ICAJCX0NCj4gIAkJaWYgKGluaXRfZGF0YS0+ZGV2bmFtZV9tYW5kYXRv cnkpIHsNCj4gIAkJCXNucHJpbnRmKGxlZF9jbGFzc2Rldl9uYW1lLCBMRURfTUFYX05BTUVfU0la RSwNCj4gIiVzOiVzIiwNCj4gQEAgLTQ2OCwxMSArNjEyLDE5IEBAIGludCBsZWRfY29tcG9zZV9u YW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0DQo+IGxlZF9pbml0X2RhdGEgKmluaXRfZGF0 YSwNCj4gIAkJfQ0KPiAgCQlzbnByaW50ZihsZWRfY2xhc3NkZXZfbmFtZSwgTEVEX01BWF9OQU1F X1NJWkUsICIlczolcyIsDQo+ICAJCQkgZGV2aWNlbmFtZSwgaW5pdF9kYXRhLT5kZWZhdWx0X2xh YmVsKTsNCj4gLQl9IGVsc2UgaWYgKGlzX29mX25vZGUoZndub2RlKSkgew0KPiAtCQlzdHJzY3B5 KGxlZF9jbGFzc2Rldl9uYW1lLCB0b19vZl9ub2RlKGZ3bm9kZSktPm5hbWUsDQo+IC0JCQlMRURf TUFYX05BTUVfU0laRSk7DQo+IC0JfSBlbHNlDQo+IC0JCXJldHVybiAtRUlOVkFMOw0KPiArCX0g ZWxzZSB7DQo+ICsJCXN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUgPSBsZWRfZmluZF9md25v ZGUoZGV2LA0KPiBpbml0X2RhdGEpOw0KPiArCQlpbnQgcmV0ID0gLUVJTlZBTDsNCj4gKw0KPiAr CQlpZiAoaXNfb2Zfbm9kZShmd25vZGUpKSB7DQo+ICsJCQlyZXQgPSAwOw0KPiArCQkJc3Ryc2Nw eShsZWRfY2xhc3NkZXZfbmFtZSwgdG9fb2Zfbm9kZShmd25vZGUpLQ0KPiA+bmFtZSwNCj4gKwkJ CQlMRURfTUFYX05BTUVfU0laRSk7DQo+ICsJCX0NCj4gKwkJZndub2RlX2hhbmRsZV9wdXQoZndu b2RlKTsNCj4gKw0KPiArCQlyZXR1cm4gcmV0Ow0KPiArCX0NCj4gIA0KPiAgCXJldHVybiAwOw0K PiAgfQ0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9sZWRzLmggYi9pbmNsdWRlL2xpbnV4 L2xlZHMuaA0KPiBpbmRleCBlZmIzMDlkYmE5MTQuLmFlYTdkNmJjNzI5NCAxMDA2NDQNCj4gLS0t IGEvaW5jbHVkZS9saW51eC9sZWRzLmgNCj4gKysrIGIvaW5jbHVkZS9saW51eC9sZWRzLmgNCj4g QEAgLTEzLDYgKzEzLDcgQEANCj4gICNpbmNsdWRlIDxsaW51eC9rZXJuZnMuaD4NCj4gICNpbmNs dWRlIDxsaW51eC9saXN0Lmg+DQo+ICAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4NCj4gKyNpbmNs dWRlIDxsaW51eC9wcm9wZXJ0eS5oPg0KPiAgI2luY2x1ZGUgPGxpbnV4L3J3c2VtLmg+DQo+ICAj aW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4NCj4gICNpbmNsdWRlIDxsaW51eC90aW1lci5oPg0K PiBAQCAtMjAsNiArMjEsNyBAQA0KPiAgDQo+ICBzdHJ1Y3QgZGV2aWNlOw0KPiAgc3RydWN0IGxl ZF9wYXR0ZXJuOw0KPiArc3RydWN0IGxlZF9jbGFzc2RldjsNCj4gIC8qDQo+ICAgKiBMRUQgQ29y ZQ0KPiAgICovDQo+IEBAIC0zMSw4ICszMyw0NyBAQCBlbnVtIGxlZF9icmlnaHRuZXNzIHsNCj4g IAlMRURfRlVMTAk9IDI1NSwNCj4gIH07DQo+ICANCj4gK3N0cnVjdCBsZWRfcHJvcGVydGllcyB7 DQo+ICsJdTMyCQljb2xvcjsNCj4gKwlib29sCQljb2xvcl9wcmVzZW50Ow0KPiArCWNvbnN0IGNo YXIJKmZ1bmN0aW9uOw0KPiArCXUzMgkJZnVuY19lbnVtOw0KPiArCWJvb2wJCWZ1bmNfZW51bV9w cmVzZW50Ow0KPiArCWNvbnN0IGNoYXIJKmxhYmVsOw0KPiArCWNvbnN0IGNoYXIJKmRlZmF1bHRf dHJpZ2dlcjsNCj4gKwljb25zdCBjaGFyCSpkZWZhdWx0X3N0YXRlOw0KPiArCWJvb2wJCWJyaWdo dG5lc3Nfa2VlcDsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBsZWRfZndfbWF0Y2hfcHJvcGVydHkg ew0KPiArCWNvbnN0IGNoYXIgKm5hbWU7CS8qIE5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIG1hdGNo ICovDQo+ICsJdm9pZCAqcmF3X3ZhbDsJCS8qIFJhdyBwcm9wZXJ0eSB2YWx1ZSBhcyBwcmVzZW50 IGluDQo+IGZ3bm9kZSAqLw0KPiArCXZvaWQgKmludHZhbDsJCS8qIFByb3BlcnR5IHZhbHVlIGlm IDgsMTYsMzIgb3IgNjRiaXQNCj4gaW50ZWdlciAqLw0KPiArCXNpemVfdCBzaXplOwkJLyogU2l6 ZSBvZiB2YWx1ZSBpbiBieXRlcyAqLw0KPiArfTsNCj4gKw0KPiAgc3RydWN0IGxlZF9pbml0X2Rh dGEgew0KPiAtCS8qIGRldmljZSBmd25vZGUgaGFuZGxlICovDQo+ICsJLyoNCj4gKwkgKiBJZiBE VCBiaW5kaW5nIGRpY3RhdGVzIHRoZSBub2RlIG5hbWUgdGhlIGRyaXZlciBjYW4gZmlsbA0KPiBv Zl9tYXRjaA0KPiArCSAqIGNvcnJlc3BvbmRpbmcgdG8gbm9kZSBuYW1lIGRlc2NyaWJpbmcgdGhp cyBMRUQuIElmIGZ3bm9kZSBpcw0KPiBnaXZlbg0KPiArCSAqIHRoZSBtYXRjaCBpcyBzZWFyY2hl ZCBmcm9tIGl0J3MgY2hpbGQgbm9kZXMuIElmIG5vdCwgdGhlDQo+IG1hdGNoIGlzDQo+ICsJICog c2VhcmNoZWQgZnJvbSBkZXZpY2UncyBvd24gY2hpbGQgbm9kZXMuDQo+ICsJICovDQo+ICsJY29u c3QgY2hhciAqb2ZfbWF0Y2g7DQo+ICsJLyoNCj4gKwkgKiBJZiBmd25vZGUgY29udGFpbnMgcHJv cGVydHkgd2l0aCBrbm93biB2YWx1ZSB0aGUgZHJpdmVyIGNhbg0KPiBzcGVjaWZ5DQo+ICsJICog Y29ycmVjdCBwcm9wZXJ0dHktdmFsdWUgcGFpciBoZXJlIHRvIGRvIHRoZSBtYXRjaGluZy4gVGhp cw0KPiBoYXMgaGlnaGVyDQo+ICsJICogcHJpb3JpdHkgdGhhbiBvZl9tYXRjaC4gSWYgZndub2Rl IGlzIGdpdmVuIHRoZSBtYXRjaCBpcw0KPiBzZWFyY2hlZA0KPiArCSAqIGZyb20gaXQncyBjaGls ZCBub2Rlcy4gSWYgbm90IG1hdGNoIGlzIHNlYXJjaGVkIGZyb20NCj4gZGV2aWNlJ3MNCj4gKwkg KiBvd24gY2hpbGQgbm9kZXMuDQo+ICsJICovDQo+ICsJc3RydWN0IGxlZF9md19tYXRjaF9wcm9w ZXJ0eSBtYXRjaF9wcm9wZXJ0eTsNCj4gKwkvKg0KPiArCSAqIGRldmljZSBmd25vZGUgaGFuZGxl LiBJZiBvZl9tYXRjaCBvciBsZWRfY29tcGF0aWJsZSBhcmUgbm90DQo+IGdpdmVuDQo+ICsJICog dGhpcyBpcyB1c2VkIGZvciBMRUQgYXMgZ2l2ZW4uIElmIG9mX21hdGNoIG9yIGxlZF9jb21wYXRp YmxlDQo+IGFyZQ0KPiArCSAqIGdpdmVuIHRoZW4gdGhpcyBpcyB1c2VkIGFzIGEgcGFyZW50IG5v ZGUgd2hvc2UgY2hpbGQgbm9kZXMNCj4gYXJlDQo+ICsJICogc2Nhbm5lZCBmb3IgZ2l2ZW4gbWF0 Y2guDQo+ICsJICovDQo+ICAJc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZTsNCj4gIAkvKg0K PiAgCSAqIGRlZmF1bHQgPGNvbG9yOmZ1bmN0aW9uPiB0dXBsZSwgZm9yIGJhY2t3YXJkIGNvbXBh dGliaWxpdHkNCj4gQEAgLTUzLDkgKzk0LDE3IEBAIHN0cnVjdCBsZWRfaW5pdF9kYXRhIHsNCj4g IAkgKiBzZXQgaXQgdG8gdHJ1ZQ0KPiAgCSAqLw0KPiAgCWJvb2wgZGV2bmFtZV9tYW5kYXRvcnk7 DQo+ICsJLyoNCj4gKwkgKiBDYWxsYmFjayB3aGljaCBhIExFRCBkcml2ZXIgY2FuIHJlZ2lzdGVy IGlmIGl0IGhhcyBvd24gbm9uLQ0KPiBzdGFuZGFyZA0KPiArCSAqIERUIHByb3BlcnRpZXMuIENv cmUgY2FsbHMgdGhpcyB3aXRoIHRoZSBsb2NhdGVkIERUIG5vZGUNCj4gZHVyaW5nDQo+ICsJICog Y2xhc3NfZGV2aWNlIHJlZ2lzdHJhdGlvbg0KPiArCSAqLw0KPiArCWludCAoKm9mX3BhcnNlX2Ni KShzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZCwgc3RydWN0DQo+IGZ3bm9kZV9oYW5kbGUgKmZ3LA0K PiArCQkJICAgIHN0cnVjdCBsZWRfcHJvcGVydGllcyAqcHJvcHMpOw0KPiAgfTsNCj4gIA0KPiAg c3RydWN0IGxlZF9jbGFzc2RldiB7DQo+ICsJc3RydWN0IGxlZF9pbml0X2RhdGEJKmluaXRfZGF0 YTsNCj4gIAljb25zdCBjaGFyCQkqbmFtZTsNCj4gIAllbnVtIGxlZF9icmlnaHRuZXNzCSBicmln aHRuZXNzOw0KPiAgCWVudW0gbGVkX2JyaWdodG5lc3MJIG1heF9icmlnaHRuZXNzOw0KPiBAQCAt MTQ4LDYgKzE5Nyw3IEBAIHN0cnVjdCBsZWRfY2xhc3NkZXYgew0KPiAgDQo+ICAJLyogRW5zdXJl cyBjb25zaXN0ZW50IGFjY2VzcyB0byB0aGUgTEVEIEZsYXNoIENsYXNzIGRldmljZSAqLw0KPiAg CXN0cnVjdCBtdXRleAkJbGVkX2FjY2VzczsNCj4gKwlib29sCQkJZndub2RlX293bmVkOw0KPiAg fTsNCj4gIA0KPiAgLyoqDQo+IEBAIC0zMDIsNiArMzUyLDcgQEAgZXh0ZXJuIHZvaWQgbGVkX3N5 c2ZzX2VuYWJsZShzdHJ1Y3QgbGVkX2NsYXNzZGV2DQo+ICpsZWRfY2Rldik7DQo+ICAgKiBsZWRf Y29tcG9zZV9uYW1lIC0gY29tcG9zZSBMRUQgY2xhc3MgZGV2aWNlIG5hbWUNCj4gICAqIEBkZXY6 IExFRCBjb250cm9sbGVyIGRldmljZSBvYmplY3QNCj4gICAqIEBpbml0X2RhdGE6IHRoZSBMRUQg Y2xhc3MgZGV2aWNlIGluaXRpYWxpemF0aW9uIGRhdGENCj4gKyAqIEBwcm9wczogTEVEIHByb3Bl cnRpZXMgYXMgcGFyc2VkIGZyb20gZndub2RlLg0KPiAgICogQGxlZF9jbGFzc2Rldl9uYW1lOiBj b21wb3NlZCBMRUQgY2xhc3MgZGV2aWNlIG5hbWUNCj4gICAqDQo+ICAgKiBDcmVhdGUgTEVEIGNs YXNzIGRldmljZSBuYW1lIGJhc2luZyBvbiB0aGUgcHJvdmlkZWQgaW5pdF9kYXRhDQo+IGFyZ3Vt ZW50Lg0KPiBAQCAtMzExLDYgKzM2Miw3IEBAIGV4dGVybiB2b2lkIGxlZF9zeXNmc19lbmFibGUo c3RydWN0IGxlZF9jbGFzc2Rldg0KPiAqbGVkX2NkZXYpOw0KPiAgICogUmV0dXJuczogMCBvbiBz dWNjZXNzIG9yIG5lZ2F0aXZlIGVycm9yIHZhbHVlIG9uIGZhaWx1cmUNCj4gICAqLw0KPiAgZXh0 ZXJuIGludCBsZWRfY29tcG9zZV9uYW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGxlZF9p bml0X2RhdGENCj4gKmluaXRfZGF0YSwNCj4gKwkJCSAgICBzdHJ1Y3QgbGVkX3Byb3BlcnRpZXMg KnByb3BzLA0KPiAgCQkJICAgIGNoYXIgKmxlZF9jbGFzc2Rldl9uYW1lKTsNCj4gIA0KPiAgLyoq DQo+IEBAIC0zMjQsNiArMzc2LDMzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBsZWRfc3lzZnNfaXNf ZGlzYWJsZWQoc3RydWN0DQo+IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYpDQo+ICAJcmV0dXJuIGxl ZF9jZGV2LT5mbGFncyAmIExFRF9TWVNGU19ESVNBQkxFOw0KPiAgfQ0KPiAgDQo+ICsvKioNCj4g KyAqIGxlZF9maW5kX2Z3bm9kZSAtIGZpbmQgZndub2RlIG1hdGNoaW5nIGdpdmVuIExFRCBpbml0 IGRhdGENCj4gKyAqIEBwYXJlbnQ6IExFRCBjb250cm9sbGVyIGRldmljZSB0aGlzIExFRCBpcyBk cml2ZW4gYnkNCj4gKyAqIEBpbml0X2RhdGE6IHRoZSBMRUQgY2xhc3MgZGV2aWNlIGluaXRpYWxp emF0aW9uIGRhdGENCj4gKyAqDQo+ICsgKiBGaW5kIHRoZSBmdyBub2RlIG1hdGNoaW5nIGdpdmVu IExFRCBpbml0IGRhdGEuDQo+ICsgKiBOT1RFOiBGdW5jdGlvbiBpbmNyZWFzZXMgcmVmY291bnQg Zm9yIGZvdW5kIG5vZGUuIENhbGxlciBtdXN0DQo+IGRlY3JlYXNlDQo+ICsgKiByZWZjb3VudCB1 c2luZyBmd25vZGVfaGFuZGxlX3B1dCB3aGVuIGZpbmlzaGVkIHdpdGggbm9kZS4NCj4gKyAqDQo+ ICsgKiBSZXR1cm5zOiBub2RlIGhhbmRsZSBvciBOVUxMIGlmIG1hdGNoaW5nIGZ3IG5vZGUgd2Fz IG5vdCBmb3VuZA0KPiArICovDQo+ICtzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbGVkX2ZpbmRfZndu b2RlKHN0cnVjdCBkZXZpY2UgKnBhcmVudCwNCj4gKwkJCQkgICAgICBzdHJ1Y3QgbGVkX2luaXRf ZGF0YSAqaW5pdF9kYXRhKTsNCj4gKw0KPiArLyoqDQo+ICsgKiBsZWRfcGFyc2VfZndub2RlX3By b3BzIC0gcGFyc2UgTEVEIGNvbW1vbiBwcm9wZXJ0aWVzIGZyb20gZndub2RlDQo+ICsgKiBAZGV2 OiBwb2ludGVyIHRvIExFRCBkZXZpY2UuDQo+ICsgKiBAZndub2RlOiBMRUQgbm9kZSBjb250YWlu aW5nIHRoZSBwcm9wZXJ0aWVzDQo+ICsgKiBAcHJvcHM6IHN0cnVjdHVyZSB3aGVyZSBmb3VuZCBw cm9wZXJ0eSBkYXRhIGlzIHN0b3JlZC4NCj4gKyAqDQo+ICsgKiBQYXJzZSB0aGUgY29tbW9uIExF RCBwcm9wZXJ0aWVzIGZyb20gZndub2RlLg0KPiArICoNCj4gKyAqIFJldHVybnM6IDAgb24gc3Vj Y2VzcyBvciBuZWdhdGl2ZSBlcnJvciB2YWx1ZSBvbiBmYWlsdXJlDQo+ICsgKi8NCj4gK2ludCBs ZWRfcGFyc2VfZndub2RlX3Byb3BzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGZ3bm9kZV9o YW5kbGUNCj4gKmZ3bm9kZSwNCj4gKwkJCSAgIHN0cnVjdCBsZWRfcHJvcGVydGllcyAqcHJvcHMp Ow0KPiArDQo+ICAvKg0KPiAgICogTEVEIFRyaWdnZXJzDQo+ICAgKi8NCj4gQEAgLTQ5MCwxNSAr NTY5LDYgQEAgc3RydWN0IGxlZF9wbGF0Zm9ybV9kYXRhIHsNCj4gIAlzdHJ1Y3QgbGVkX2luZm8J KmxlZHM7DQo+ICB9Ow0KPiAgDQo+IC1zdHJ1Y3QgbGVkX3Byb3BlcnRpZXMgew0KPiAtCXUzMgkJ Y29sb3I7DQo+IC0JYm9vbAkJY29sb3JfcHJlc2VudDsNCj4gLQljb25zdCBjaGFyCSpmdW5jdGlv bjsNCj4gLQl1MzIJCWZ1bmNfZW51bTsNCj4gLQlib29sCQlmdW5jX2VudW1fcHJlc2VudDsNCj4g LQljb25zdCBjaGFyCSpsYWJlbDsNCj4gLX07DQo+IC0NCj4gIHN0cnVjdCBncGlvX2Rlc2M7DQo+ ICB0eXBlZGVmIGludCAoKmdwaW9fYmxpbmtfc2V0X3QpKHN0cnVjdCBncGlvX2Rlc2MgKmRlc2Ms IGludCBzdGF0ZSwNCj4gIAkJCQl1bnNpZ25lZCBsb25nICpkZWxheV9vbiwNCj4gLS0gDQo+IDIu MjEuMA0KPiANCj4gDQoNCg==