Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp10369905imu; Wed, 5 Dec 2018 23:04:37 -0800 (PST) X-Google-Smtp-Source: AFSGD/VH/hdENWH+SRCjh+0W/3u6rzkI6TPaatTz2+BPhQkR8VpiGG0Qzv6dp/onKT+XdDC66TFh X-Received: by 2002:aa7:83c6:: with SMTP id j6mr27377154pfn.91.1544079877106; Wed, 05 Dec 2018 23:04:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544079877; cv=none; d=google.com; s=arc-20160816; b=CoUv3iY7/2UNEkkje31Zdhs/mPKEQyiqOm7BpdKSSs2WKwYE6qceUY72vVqYCfkdIT YCkjTEhk3gejJ0hEvCR9D9Ez0ksHqxMRY7aT/0tot1/QDk4vly0gUprzFqPjCfri/FNv nVow74MwZ/yZz8SFSn3+ab27AHXd1VjqemsXUaMLF2c4EPKBkFS3HxE8WzeMPtnyg1Je 9/wVxI1M2QuMxCzGhjqoP1t75UvC69yl/e3fCh6rm69SHJdDfdb3K/oT6MdEiRA3/D0O duNjBM6t9WyTG+2WC50SffsLJa9uRMQN20dSN/wJ5PlKhDoK1ll3C9ElDjtTBhBSl7Uv HiPQ== 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 :spamdiagnosticmetadata:spamdiagnosticoutput:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from:dkim-signature:dkim-signature; bh=rvMYlkmica17qjBZFV4IPvlM5hBNWfYgRjpmLAYmrJA=; b=DVoRvDrckT7z4YiU1sr01KcdtSTade0TT+vU4Ouk1EKLUXUOrFKg0jtj08T/r7Y4po V6cYWETVr8/kTNHe6153t1WdFLex0+G4xxey9ZWjzBCyQkwWlMHAtPzXLz0llaGMHNU8 bY5aPJl1fqLwppznLCfEmkIEVGNs/j+Q9uhHX6i1NdvQvAhib3kE/GAzWApLHyUc4Tzc lIM1SgslmwCroWOrd/mDNaT4XFeKD/mEYnAG5Vggw+v9j4kmWRZ/UyIsiCVbtFeDMmpy efATcZuv23c/bL/7nWGaXMLAH53j1iiyNYarl15gdJXop+BOx4eeWv7czmARpRX8IG5D Jbxg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cadence.com header.s=proofpoint header.b=ODmNDNf7; dkim=pass header.i=@cadence.com header.s=selector1 header.b=MjnZFhA5; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cadence.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i198si23260310pfe.289.2018.12.05.23.04.06; Wed, 05 Dec 2018 23:04:37 -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; dkim=pass header.i=@cadence.com header.s=proofpoint header.b=ODmNDNf7; dkim=pass header.i=@cadence.com header.s=selector1 header.b=MjnZFhA5; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cadence.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729127AbeLFHAV (ORCPT + 99 others); Thu, 6 Dec 2018 02:00:21 -0500 Received: from mx0b-0014ca01.pphosted.com ([208.86.201.193]:33110 "EHLO mx0a-0014ca01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729090AbeLFHAU (ORCPT ); Thu, 6 Dec 2018 02:00:20 -0500 Received: from pps.filterd (m0042333.ppops.net [127.0.0.1]) by mx0b-0014ca01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id wB66wa0f021996; Wed, 5 Dec 2018 23:00:10 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=proofpoint; bh=rvMYlkmica17qjBZFV4IPvlM5hBNWfYgRjpmLAYmrJA=; b=ODmNDNf7IQjezq7rkechKskVzaPvI5fsTMGlibmBkM5QAeyenBx6jFq9SQaGBw4nBMvD dXrkPLU1JJKu46KJAao+Gof5D1Q8KQPzv/yrlgWwLWeFTmPGOzWpZAKV8gifgw+wuyJc uwfB0YcbuGnDhbtKpKM92My3kctOviEqxY3TDwcsCe3IhHDxF2QcRv2nTJ6yMjMwN8vq sQiw269WxHXP85rlRau38pF9HPXAJWaVVFYgTZo+tr3yOprOukq5M0PH6JmJFWkpI75a mrRmKhJpz2aK2gEsqNf77vhfd4JKY0wQoHXmzpIdyo/+koa9bx6g6KrKiejbaOK84C69 HQ== Authentication-Results: cadence.com; spf=pass smtp.mailfrom=pawell@cadence.com Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1nam02lp2056.outbound.protection.outlook.com [104.47.36.56]) by mx0b-0014ca01.pphosted.com with ESMTP id 2p6w7hrfq2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 05 Dec 2018 23:00:09 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rvMYlkmica17qjBZFV4IPvlM5hBNWfYgRjpmLAYmrJA=; b=MjnZFhA5t0+61zyENpRnx18a0TCPUgCnnELjIQ+wnfAYrOnNdcd7gHn3qZVUu3Iimh7sudxOj3VZKDSsuwX0h55RwYo/WMSTNyptnky/YoGl2RmoCEbDSsUSgAUjWjouArU4ubV+QwpCsElK68dmh2p4eqEggyjLwBZIHWE+cXI= Received: from BYAPR07MB4709.namprd07.prod.outlook.com (52.135.204.159) by BYAPR07MB4487.namprd07.prod.outlook.com (52.135.225.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.19; Thu, 6 Dec 2018 07:00:06 +0000 Received: from BYAPR07MB4709.namprd07.prod.outlook.com ([fe80::e0dc:ebd5:e248:d644]) by BYAPR07MB4709.namprd07.prod.outlook.com ([fe80::e0dc:ebd5:e248:d644%6]) with mapi id 15.20.1382.023; Thu, 6 Dec 2018 07:00:06 +0000 From: Pawel Laszczak To: Peter Chen CC: "rogerq@ti.com" , "devicetree@vger.kernel.org" , Greg Kroah-Hartman , "linux-usb@vger.kernel.org" , lkml , Alan Douglas , "jbergsagel@ti.com" , "nsekhar@ti.com" , "nm@ti.com" , Suresh Punnoose , "peter.chen@nxp.com" , Pawel Jez , Rahul Kumar Subject: RE: [RFC PATCH v2 04/15] usb:cdns3: Driver initialization code. Thread-Topic: [RFC PATCH v2 04/15] usb:cdns3: Driver initialization code. Thread-Index: AQHUfycKfg2nmnNwYkGzkCY+37gGkqVdQtkAgAMQ/7CADg/fgIACSlJQ Date: Thu, 6 Dec 2018 07:00:06 +0000 Message-ID: References: <1542535751-16079-1-git-send-email-pawell@cadence.com> <1542535751-16079-5-git-send-email-pawell@cadence.com> <5BF7E5E8.3090406@ti.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-ref: PG1ldGE+PGF0IG5tPSJib2R5LnR4dCIgcD0iYzpcdXNlcnNccGF3ZWxsXGFwcGRhdGFccm9hbWluZ1wwOWQ4NDliNi0zMmQzLTRhNDAtODVlZS02Yjg0YmEyOWUzNWJcbXNnc1xtc2ctOGU3YmU4Y2QtZjkyNC0xMWU4LTg3MjYtMWM0ZDcwMWRmYmE0XGFtZS10ZXN0XDhlN2JlOGNlLWY5MjQtMTFlOC04NzI2LTFjNGQ3MDFkZmJhNGJvZHkudHh0IiBzej0iMjYwMTciIHQ9IjEzMTg4NTUzMjA1MDk4OTg0MSIgaD0iR2R4a2VSc3dsV0JkRFhQOWVEdDZIcFNUSTlNPSIgaWQ9IiIgYmw9IjAiIGJvPSIxIi8+PC9tZXRhPg== x-dg-rorf: x-originating-ip: [185.217.253.59] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;BYAPR07MB4487;20:DjOTxOXQigsLEjD57oStNkNELvXYybX6hvUuTyna1rJ3PfDzglURN4hSh7DUaPDqc8MZboxK0S66MhfVsPegfk+0+8wbiusJadRg0bwoBVqA/s2xXoiRy6hD8gvqQOOGpvRlsZVo1hDZ5ls+01aFfZoYjHJ79HLYwwPYiMpF/31Ir+7tUI9XpdQSnjaGgGskJyZOjyHWQM1wVjJPyZTN8DzdScGKUeQKc0MVne8CeUPf8dKEE9YtkmdzzGw+yrUo x-ms-office365-filtering-correlation-id: 2fbbf80c-3e22-464b-cd69-08d65b487438 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020);SRVR:BYAPR07MB4487; x-ms-traffictypediagnostic: BYAPR07MB4487: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3231455)(999002)(944501520)(52105112)(3002001)(93006095)(93001095)(148016)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(201708071742011)(7699051)(76991095);SRVR:BYAPR07MB4487;BCL:0;PCL:0;RULEID:;SRVR:BYAPR07MB4487; x-forefront-prvs: 087894CD3C x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(366004)(346002)(396003)(376002)(136003)(51444003)(36092001)(199004)(189003)(446003)(486006)(11346002)(2906002)(6916009)(476003)(6246003)(86362001)(33656002)(14454004)(6436002)(106356001)(53946003)(102836004)(7416002)(55016002)(107886003)(1411001)(9686003)(97736004)(5660300001)(6506007)(229853002)(71200400001)(105586002)(53936002)(71190400001)(4744004)(217873002)(66066001)(7696005)(4326008)(54906003)(26005)(68736007)(8936002)(8676002)(478600001)(186003)(345774005)(305945005)(93886005)(81166006)(316002)(7736002)(99286004)(81156014)(25786009)(6116002)(3846002)(39060400002)(14444005)(76176011)(256004)(74316002)(559001)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:BYAPR07MB4487;H:BYAPR07MB4709.namprd07.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: cadence.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: NMdG39cyzqN9i+BZ36dlUPhsBfL+5oJbCwi7kDXQAAeeuljW/Ga3cAgtu9EsNmhGtxl6p5mWgDMwCwz0eKjr7M8Z1gERmI8Vt0hdUmP7NCDlTi04sxo9ihBexTdb0bBf1cv5pdJ31YnhNXZzXZNK4RpjPIgz62ZQixquQfBBbUsLtLGlKP6vSxtqrbbDssLDUglkFnz6miU/R+AsySSiBlfyY8ilLZs9cBQfNzMKUUkRfeY7/3VSO4+wrPEIGKAOBR7ep2J50aFL7gWw8JWVZCwlPWO4f1jXkWdr3CZ595tfOerw8Qil+ayMjofKD+QEQJ2mikCRZi18uJmvaCNXo6Emc6oFOGOSH9J8KCOLZB0= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cadence.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2fbbf80c-3e22-464b-cd69-08d65b487438 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Dec 2018 07:00:06.3315 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d36035c5-6ce6-4662-a3dc-e762e61ae4c9 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4487 X-Proofpoint-SPF-Result: pass X-Proofpoint-SPF-Record: v=spf1 include:_spf.salesforce.com include:mktomail.com include:spf-0014ca01.pphosted.com include:spf.protection.outlook.com include:auth.msgapp.com include:spf.mandrillapp.com ~all X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-12-06_01:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_check_notspam policy=outbound_check score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1812060064 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Pg0KPj4gSGkgUm9nZXINCj4+DQo+PiA+T24gMTgvMTEvMTggMTI6MDksIFBhd2VsIExhc3pjemFr IHdyb3RlOg0KPj4gPj4gUGF0Y2ggYWRkcyBjb3JlLmMgYW5kIGNvcmUuaCBmaWxlIHRoYXQgaW1w bGVtZW50cyBpbml0aWFsaXphdGlvbg0KPj4gPj4gb2YgcGxhdGZvcm0gZHJpdmVyIGFuZCBhZGRz IGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBzZWxlY3RpbmcsDQo+PiA+PiBzd2l0Y2hpbmcgYW5k IHJ1bm5pbmcgYXBwcm9wcmlhdGUgRGV2aWNlL0hvc3QgbW9kZS4NCj4+ID4+DQo+PiA+PiBTaWdu ZWQtb2ZmLWJ5OiBQYXdlbCBMYXN6Y3phayA8cGF3ZWxsQGNhZGVuY2UuY29tPg0KPj4gPj4gLS0t DQo+PiA+PiAgZHJpdmVycy91c2IvY2RuczMvTWFrZWZpbGUgfCAgIDIgKw0KPj4gPj4gIGRyaXZl cnMvdXNiL2NkbnMzL2NvcmUuYyAgIHwgNDEzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysNCj4+ID4+ICBkcml2ZXJzL3VzYi9jZG5zMy9jb3JlLmggICB8IDEwMCArKysrKysr KysNCj4+ID4+ICAzIGZpbGVzIGNoYW5nZWQsIDUxNSBpbnNlcnRpb25zKCspDQo+PiA+PiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdXNiL2NkbnMzL2NvcmUuYw0KPj4gPj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL3VzYi9jZG5zMy9jb3JlLmgNCj4+ID4+DQo+PiA+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy91c2IvY2RuczMvTWFrZWZpbGUgYi9kcml2ZXJzL3VzYi9jZG5zMy9NYWtl ZmlsZQ0KPj4gPj4gaW5kZXggZGNkZDYyMDAzYzZhLi4wMmQyNWIyM2M1ZDMgMTAwNjQ0DQo+PiA+ PiAtLS0gYS9kcml2ZXJzL3VzYi9jZG5zMy9NYWtlZmlsZQ0KPj4gPj4gKysrIGIvZHJpdmVycy91 c2IvY2RuczMvTWFrZWZpbGUNCj4+ID4+IEBAIC0xLDMgKzEsNSBAQA0KPj4gPj4gK29iai0kKENP TkZJR19VU0JfQ0ROUzMpICAgICAgICAgICAgICAgICAgICAgKz0gY2RuczMubw0KPj4gPj4gIG9i ai0kKENPTkZJR19VU0JfQ0ROUzNfUENJX1dSQVApICAgICs9IGNkbnMzLXBjaS5vDQo+PiA+Pg0K Pj4gPj4gK2NkbnMzLXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOj0gY29y ZS5vDQo+PiA+PiAgY2RuczMtcGNpLXkgICAgICAgICAgICAgICAgICAgICAgICAgOj0gY2RuczMt cGNpLXdyYXAubw0KPj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NkbnMzL2NvcmUuYyBi L2RyaXZlcnMvdXNiL2NkbnMzL2NvcmUuYw0KPj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+ ID4+IGluZGV4IDAwMDAwMDAwMDAwMC4uZjkwNTVkNGRhNjdmDQo+PiA+PiAtLS0gL2Rldi9udWxs DQo+PiA+PiArKysgYi9kcml2ZXJzL3VzYi9jZG5zMy9jb3JlLmMNCj4+ID4+IEBAIC0wLDAgKzEs NDEzIEBADQo+PiA+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4+ID4+ ICsvKg0KPj4gPj4gKyAqIENhZGVuY2UgVVNCU1MgRFJEIERyaXZlci4NCj4+ID4+ICsgKg0KPj4g Pj4gKyAqIENvcHlyaWdodCAoQykgMjAxOCBDYWRlbmNlLg0KPj4gPj4gKyAqDQo+PiA+PiArICog QXV0aG9yOiBQZXRlciBDaGVuIDxwZXRlci5jaGVuQG54cC5jb20+DQo+PiA+PiArICogICAgICAg ICBQYXdlbCBMYXN6Y3phayA8cGF3ZWxsQGNhZGVuY2UuY29tPg0KPj4gPj4gKyAqLw0KPj4gPj4g Kw0KPj4gPj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4+ID4+ICsjaW5jbHVkZSA8bGlu dXgva2VybmVsLmg+DQo+PiA+PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0K Pj4gPj4gKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4NCj4+ID4+ICsjaW5jbHVkZSA8bGlu dXgvaW8uaD4NCj4+ID4+ICsjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPg0KPj4gPj4gKw0K Pj4gPj4gKyNpbmNsdWRlICJnYWRnZXQuaCINCj4+ID4+ICsjaW5jbHVkZSAiY29yZS5oIg0KPj4g Pj4gKw0KPj4gPj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGNkbnMzX3JvbGVfZHJpdmVyICpjZG5z M19nZXRfY3VycmVudF9yb2xlX2RyaXZlcihzdHJ1Y3QgY2RuczMgKmNkbnMpDQo+PiA+PiArew0K Pj4gPj4gKyAgICBXQVJOX09OKGNkbnMtPnJvbGUgPj0gQ0ROUzNfUk9MRV9FTkQgfHwgIWNkbnMt PnJvbGVzW2NkbnMtPnJvbGVdKTsNCj4+ID4+ICsgICAgcmV0dXJuIGNkbnMtPnJvbGVzW2NkbnMt PnJvbGVdOw0KPj4gPj4gK30NCj4+ID4+ICsNCj4+ID4+ICtzdGF0aWMgaW5saW5lIGludCBjZG5z M19yb2xlX3N0YXJ0KHN0cnVjdCBjZG5zMyAqY2RucywgZW51bSBjZG5zM19yb2xlcyByb2xlKQ0K Pj4gPj4gK3sNCj4+ID4+ICsgICAgaW50IHJldDsNCj4+ID4+ICsNCj4+ID4+ICsgICAgaWYgKHJv bGUgPj0gQ0ROUzNfUk9MRV9FTkQpDQo+PiA+DQo+PiA+V0FSTl9PTigpPw0KPj4gSSBhZ3JlZS4N Cj4+ID4NCj4+ID4+ICsgICAgICAgICAgICByZXR1cm4gMDsNCj4+ID4+ICsNCj4+ID4+ICsgICAg aWYgKCFjZG5zLT5yb2xlc1tyb2xlXSkNCj4+ID4+ICsgICAgICAgICAgICByZXR1cm4gLUVOWElP Ow0KPj4gPj4gKw0KPj4gPj4gKyAgICBtdXRleF9sb2NrKCZjZG5zLT5tdXRleCk7DQo+PiA+PiAr ICAgIGNkbnMtPnJvbGUgPSByb2xlOw0KPj4gPj4gKyAgICByZXQgPSBjZG5zLT5yb2xlc1tyb2xl XS0+c3RhcnQoY2Rucyk7DQo+PiA+PiArICAgIG11dGV4X3VubG9jaygmY2Rucy0+bXV0ZXgpOw0K Pj4gPj4gKyAgICByZXR1cm4gcmV0Ow0KPj4gPj4gK30NCj4+ID4+ICsNCj4+ID4+ICtzdGF0aWMg aW5saW5lIHZvaWQgY2RuczNfcm9sZV9zdG9wKHN0cnVjdCBjZG5zMyAqY2RucykNCj4+ID4+ICt7 DQo+PiA+PiArICAgIGVudW0gY2RuczNfcm9sZXMgcm9sZSA9IGNkbnMtPnJvbGU7DQo+PiA+PiAr DQo+PiA+PiArICAgIGlmIChyb2xlID09IENETlMzX1JPTEVfRU5EKQ0KPj4gPg0KPj4gPldBUk5f T04ocm9sZSA+PSBDTkRTM19ST0xFX0VORCkgPw0KPj4gSSBhZ3JlZQ0KPj4gPg0KPj4gPj4gKyAg ICAgICAgICAgIHJldHVybjsNCj4+ID4+ICsNCj4+ID4+ICsgICAgbXV0ZXhfbG9jaygmY2Rucy0+ bXV0ZXgpOw0KPj4gPj4gKyAgICBjZG5zLT5yb2xlc1tyb2xlXS0+c3RvcChjZG5zKTsNCj4+ID4+ ICsgICAgY2Rucy0+cm9sZSA9IENETlMzX1JPTEVfRU5EOw0KPj4gPg0KPj4gPldoeSBjaGFuZ2Ug dGhlIHJvbGUgaGVyZT8gWW91IGFyZSBqdXN0IHN0b3BwaW5nIHRoZSByb2xlIG5vdCBjaGFuZ2lu ZyBpdC4NCj4+ID5JIHRoaW5rIGNkbnMtPnJvbGUgc2hvdWxkIHJlbWFpbiB1bmNoYW5nZWQsIHNv IHdlIGNhbiBjYWxsIGNkbnMzX3JvbGVfc3RhcnQoKQ0KPj4gPmlmIHJlcXVpcmVkIHdpdGhvdXQg ZXJyb3IuDQo+Pg0KPj4gVGhpcyBsaW5lIGlzIHVubmVjZXNzYXJ5Lg0KPj4NCj4+ID4NCj4+ID4+ ICsgICAgbXV0ZXhfdW5sb2NrKCZjZG5zLT5tdXRleCk7DQo+PiA+PiArfQ0KPj4gPj4gKw0KPj4g Pj4gK3N0YXRpYyBlbnVtIGNkbnMzX3JvbGVzIGNkbnMzX2dldF9yb2xlKHN0cnVjdCBjZG5zMyAq Y2RucykNCj4+ID4+ICt7DQo+PiA+PiArICAgIGlmIChjZG5zLT5yb2xlc1tDRE5TM19ST0xFX0hP U1RdICYmIGNkbnMtPnJvbGVzW0NETlMzX1JPTEVfR0FER0VUXSkgew0KPj4gPj4gKyAgICAgICAg ICAgIC8vVE9ETzogaW1wbGVtZW50cyBzZWxlY3RpbmcgZGV2aWNlL2hvc3QgbW9kZQ0KPj4gPj4g KyAgICAgICAgICAgIHJldHVybiBDRE5TM19ST0xFX0hPU1Q7DQo+PiA+PiArICAgIH0NCj4+ID4+ ICsgICAgcmV0dXJuIGNkbnMtPnJvbGVzW0NETlMzX1JPTEVfSE9TVF0NCj4+ID4+ICsgICAgICAg ICAgICA/IENETlMzX1JPTEVfSE9TVA0KPj4gPj4gKyAgICAgICAgICAgIDogQ0ROUzNfUk9MRV9H QURHRVQ7DQo+PiA+DQo+PiA+V2h5IG5vdCBqdXN0DQo+PiA+ICAgICAgIHJldHVybiBjZG5zLT5y b2xlOw0KPj4gPg0KPj4gPkknbSB3b25kZXJpbmcgaWYgd2UgcmVhbGx5IG5lZWQgdGhpcyBmdW5j dGlvbg0KPj4NCj4+IFRPRE8gd2lsbCBsb29rIGxpa2llOg0KPj4gICAgICAgICAgICAgICAgIGlm IChjZG5zM19pc19ob3N0KGNkbnMpKQ0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IENETlMzX1JPTEVfSE9TVDsNCj4+ICAgICAgICAgICAgICAgICBpZiAoY2RuczNfaXNfZGV2aWNl KGNkbnMpKQ0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENETlMzX1JPTEVfR0FE R0VUOw0KPj4NCj4+IEZ1bmN0aW9uIHNlbGVjdHMgaW5pdGlhbCByb2xlLiBCZWZvcmUgaW52b2tp bmcgaXQgdGhlIHJvbGUgaXMgdW5rbm93bi4NCj4+IEkgdGhpbmsgdGhhdCBmdW5jdGlvbiBuYW1l IHNob3VsZCBiZSAgY2hhbmdlZCBiZWNhdXNlIGN1cnJlbnQgbmFtZSBjYW4gYmUgbWlzbGVhZGlu Zy4NCj4+DQo+PiBJIHdpbGwgY2hhbmdlIGl0IHRvIGNkbnMzX2dldF9pbml0aWFsX3JvbGUuDQo+ PiAuDQo+PiA+PiArfQ0KPj4gPg0KPj4gPj4gKw0KPj4gPj4gKy8qKg0KPj4gPj4gKyAqIGNkbnMz X2NvcmVfaW5pdF9yb2xlIC0gaW5pdGlhbGl6ZSByb2xlIG9mIG9wZXJhdGlvbg0KPj4gPj4gKyAq IEBjZG5zOiBQb2ludGVyIHRvIGNkbnMzIHN0cnVjdHVyZQ0KPj4gPj4gKyAqDQo+PiA+PiArICog UmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3RoZXJ3aXNlIG5lZ2F0aXZlIGVycm5vDQo+PiA+PiArICov DQo+PiA+PiArc3RhdGljIGludCBjZG5zM19jb3JlX2luaXRfcm9sZShzdHJ1Y3QgY2RuczMgKmNk bnMpDQo+PiA+PiArew0KPj4gPj4gKyAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSBjZG5zLT5kZXY7 DQo+PiA+PiArICAgIGVudW0gdXNiX2RyX21vZGUgZHJfbW9kZTsNCj4+ID4+ICsNCj4+ID4+ICsg ICAgZHJfbW9kZSA9IHVzYl9nZXRfZHJfbW9kZShkZXYpOw0KPj4gPj4gKyAgICBjZG5zLT5yb2xl ID0gQ0ROUzNfUk9MRV9FTkQ7DQo+PiA+PiArDQo+PiA+PiArICAgIC8qDQo+PiA+PiArICAgICAq IElmIGRyaXZlciBjYW4ndCByZWFkIG1vZGUgYnkgbWVhbnMgb2YgdXNiX2dldF9kcl9tZG9lIGZ1 bmN0aW9uIHRoZW4NCj4+ID4+ICsgICAgICogY2hvb3NlcyBtb2RlIGFjY29yZGluZyB3aXRoIEtl cm5lbCBjb25maWd1cmF0aW9uLiBUaGlzIHNldHRpbmcNCj4+ID4+ICsgICAgICogY2FuIGJlIHJl c3RyaWN0ZWQgbGF0ZXIgZGVwZW5kaW5nIG9uIHN0cmFwIHBpbiBjb25maWd1cmF0aW9uLg0KPj4g Pj4gKyAgICAgKi8NCj4+ID4+ICsgICAgaWYgKGRyX21vZGUgPT0gVVNCX0RSX01PREVfVU5LTk9X Tikgew0KPj4gPj4gKyAgICAgICAgICAgIGlmIChJU19FTkFCTEVEKENPTkZJR19VU0JfQ0ROUzNf SE9TVCkgJiYNCj4+ID4+ICsgICAgICAgICAgICAgICAgSVNfRU5BQkxFRChDT05GSUdfVVNCX0NE TlMzX0dBREdFVCkpDQo+PiA+PiArICAgICAgICAgICAgICAgICAgICBkcl9tb2RlID0gVVNCX0RS X01PREVfT1RHOw0KPj4gPj4gKyAgICAgICAgICAgIGVsc2UgaWYgKElTX0VOQUJMRUQoQ09ORklH X1VTQl9DRE5TM19IT1NUKSkNCj4+ID4+ICsgICAgICAgICAgICAgICAgICAgIGRyX21vZGUgPSBV U0JfRFJfTU9ERV9IT1NUOw0KPj4gPj4gKyAgICAgICAgICAgIGVsc2UgaWYgKElTX0VOQUJMRUQo Q09ORklHX1VTQl9DRE5TM19HQURHRVQpKQ0KPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgZHJf bW9kZSA9IFVTQl9EUl9NT0RFX1BFUklQSEVSQUw7DQo+PiA+PiArICAgIH0NCj4+ID4+ICsNCj4+ ID4+ICsgICAgaWYgKGRyX21vZGUgPT0gVVNCX0RSX01PREVfT1RHIHx8IGRyX21vZGUgPT0gVVNC X0RSX01PREVfSE9TVCkgew0KPj4gPj4gKyAgICAgICAgICAgIC8vVE9ETzogaW1wbGVtZW50cyBo b3N0IGluaXRpYWxpemF0aW9uDQo+PiA+DQo+PiA+ICAgICAgICAgICAgICAgLyogVE9ETzogQWRk IGhvc3Qgcm9sZSAqLyA/DQo+PiA+DQo+PiA+PiArICAgIH0NCj4+ID4+ICsNCj4+ID4+ICsgICAg aWYgKGRyX21vZGUgPT0gVVNCX0RSX01PREVfT1RHIHx8IGRyX21vZGUgPT0gVVNCX0RSX01PREVf UEVSSVBIRVJBTCkgew0KPj4gPj4gKyAgICAgICAgICAgIC8vVE9ETzogaW1wbGVtZW50cyBkZXZp Y2UgaW5pdGlhbGl6YXRpb24NCj4+ID4NCj4+ID4gICAgICAgICAgICAgICAvKiBUT0RPOiBBZGQg ZGV2aWNlIHJvbGUgKi8gPw0KPj4gPg0KPj4gPj4gKyAgICB9DQo+PiA+PiArDQo+PiA+PiArICAg IGlmICghY2Rucy0+cm9sZXNbQ0ROUzNfUk9MRV9IT1NUXSAmJiAhY2Rucy0+cm9sZXNbQ0ROUzNf Uk9MRV9HQURHRVRdKSB7DQo+PiA+PiArICAgICAgICAgICAgZGV2X2VycihkZXYsICJubyBzdXBw b3J0ZWQgcm9sZXNcbiIpOw0KPj4gPj4gKyAgICAgICAgICAgIHJldHVybiAtRU5PREVWOw0KPj4g Pj4gKyAgICB9DQo+PiA+PiArDQo+PiA+PiArICAgIGNkbnMtPmRyX21vZGUgPSBkcl9tb2RlOw0K Pj4gPj4gKyAgICByZXR1cm4gMDsNCj4+ID4+ICt9DQo+PiA+PiArDQo+PiA+PiArLyoqDQo+PiA+ PiArICogY2RuczNfaXJxIC0gaW50ZXJydXB0IGhhbmRsZXIgZm9yIGNkbnMzIGNvcmUgZGV2aWNl DQo+PiA+PiArICoNCj4+ID4+ICsgKiBAaXJxOiBpcnEgbnVtYmVyIGZvciBjZG5zMyBjb3JlIGRl dmljZQ0KPj4gPj4gKyAqIEBkYXRhOiBzdHJ1Y3R1cmUgb2YgY2RuczMNCj4+ID4+ICsgKg0KPj4g Pj4gKyAqIFJldHVybnMgSVJRX0hBTkRMRUQgb3IgSVJRX05PTkUNCj4+ID4+ICsgKi8NCj4+ID4+ ICtzdGF0aWMgaXJxcmV0dXJuX3QgY2RuczNfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpDQo+PiA+ PiArew0KPj4gPj4gKyAgICBzdHJ1Y3QgY2RuczMgKmNkbnMgPSBkYXRhOw0KPj4gPj4gKyAgICBp cnFyZXR1cm5fdCByZXQgPSBJUlFfTk9ORTsNCj4+ID4+ICsNCj4+ID4+ICsgICAgLyogSGFuZGxl IGRldmljZS9ob3N0IGludGVycnVwdCAqLw0KPj4gPj4gKyAgICBpZiAoY2Rucy0+cm9sZSAhPSBD RE5TM19ST0xFX0VORCkNCj4+ID4NCj4+ID5JcyBpdCBiZWNhdXNlIG9mIHRoaXMgdGhhdCB5b3Ug bmVlZCB0byBzZXQgcm9sZSB0byBFTkQgYXQgcm9sZV9zdG9wPw0KPj4gPkkgdGhpbmsgaXQgaXMg YmV0dGVyIHRvIGFkZCBhIHN0YXRlIHZhcmlhYmxlIHRvIHN0cnVjdCBjZG5zM19yb2xlX2RyaXZl ciwgc28gd2UgY2FuDQo+PiA+Y2hlY2sgaWYgaXQgaXMgYWN0aXZlIG9yIHN0b3BwZWQuDQo+PiA+ DQo+PiA+ZS5nLg0KPj4gPiAgICAgICBpZiAoY2RuczNfZ2V0X2N1cnJlbnRfcm9sZV9kcml2ZXIo Y2RucyktPnN0YXRlID09IENETlMzX1JPTEVfU1RBVEVfQUNUSVZFKQ0KPj4NCj4+IE9rLCBJIHdp bGwgZG8gaXQgaW4gdGhpcyB3YXkuDQo+PiA+PiArICAgICAgICAgICAgcmV0ID0gY2RuczNfZ2V0 X2N1cnJlbnRfcm9sZV9kcml2ZXIoY2RucyktPmlycShjZG5zKTsNCj4+ID4+ICsNCj4+ID4+ICsg ICAgcmV0dXJuIHJldDsNCj4+ID4+ICt9DQo+PiA+PiArDQo+PiA+PiArc3RhdGljIHZvaWQgY2Ru czNfcmVtb3ZlX3JvbGVzKHN0cnVjdCBjZG5zMyAqY2RucykNCj4+ID4NCj4+ID5TaG91bGQgdGhp cyBiZSBjYWxsZWQgY2RuczNfZXhpdF9yb2xlcygpIHRvIGJlIG9wcG9zaXRlIG9mIGNkbnMzX2lu aXRfcm9sZXMoKT8NCj4+DQo+PiBTb3VuZHMgYmV0dGVyLg0KPj4gSSBhbHNvIGNoYW5nZSBjZG5z M19ob3N0X3JlbW92ZSB0byBjZG5zM19ob3N0X2V4aXQgYW5kDQo+PiBjZG5zM19nYWRnZXRfcmVt b3ZlIHRvIGNkbnMzX2dhZGdldF9leGl0Lg0KPj4gPg0KPj4gPj4gK3sNCj4+ID4+ICsgICAgLy9U T0RPOiBpbXBsZW1lbnRzIHRoaXMgZnVuY3Rpb24NCj4+ID4+ICt9DQo+PiA+DQo+PiA+PiArDQo+ PiA+PiArc3RhdGljIGludCBjZG5zM19kb19yb2xlX3N3aXRjaChzdHJ1Y3QgY2RuczMgKmNkbnMs IGVudW0gY2RuczNfcm9sZXMgcm9sZSkNCj4+ID4+ICt7DQo+PiA+PiArICAgIGVudW0gY2RuczNf cm9sZXMgY3VycmVudF9yb2xlOw0KPj4gPj4gKyAgICBpbnQgcmV0ID0gMDsNCj4+ID4+ICsNCj4+ ID4+ICsgICAgY3VycmVudF9yb2xlID0gY2Rucy0+cm9sZTsNCj4+ID4+ICsNCj4+ID4+ICsgICAg aWYgKHJvbGUgPT0gQ0ROUzNfUk9MRV9FTkQpDQo+PiA+PiArICAgICAgICAgICAgcmV0dXJuIDA7 DQo+PiA+DQo+PiA+cm9sZSA9PSBFTkQgbG9va3MgbGlrZSBlcnJvciBzdGF0ZS4gYW5kIGl0IHNo b3VsZCBuZXZlciBoYXBwZW4uDQo+PiA+V0FSTiBoZXJlPw0KPj4NCj4+IE9rLCB3aWxsIGJlIGNo YW5nZWQuDQo+PiA+DQo+DQo+UGxlYXNlIGNvbnNpZGVyIG15IGNvbW1lbnRzIHdoaWNoIHJlcGxp ZWQgdG8gUm9nZXIganVzdCBub3cuDQoNCkkgIHRyeSB0byB0aGluayBhbHNvIGFib3V0IHlvdSBw bGF0Zm9ybS4gUGVyc29uYWxseSBJIHRoaW5rIHRoYXQgc29tZW9uZSBmcm9tIA0KdXMgc2hvdWxk IGhhdmUgYWNjZXNzIHRvIGJvdGggcGxhdGZvcm1zIGluIG9yZGVyIHRvIGNyZWF0ZSBvbmUgY29t bW9uIGRyaXZlci4gICANCkkgdXNlIGRyZC5jICBmaWxlIGZvciBkZXRlY3RpbmcgIElEIHBpbi4g QXMgSSBrbm93ICB5b3UgdXNlIGV4dGVybmFsIGNvbm5lY3Rpb24gY2xhc3MgZm9yDQpEZXRlY3Rp bmcgaG9zdC9kZXZpY2Ugcm9sZS4gDQpNeSBnb2FscyBpcyBub3QgdG8gY3JlYXRlIHRoZSBjb21t b24gZHJpdmVyIGZvciBvdXIgZGlmZmVyZW50IHBsYXRmb3JtcyAgYmVjYXVzZSANCkkgZG9u4oCZ dCBoYXZlIGFjY2VzcyBmb3IgeW91ciB0ZXN0aW5nIHBsYXRmb3JtLiBNeSBnb2FscyBpcyB0byBj cmVhdGUgZHJpdmVyIHRoYXQgeW91IA0KY291bGQgZWFzaWx5ICBhZGFwdCB0byB5b3VyIHBsYXRm b3JtLCBzbyBhbGwgeW91ciBjb21tZW50IGFyZSB2ZXJ5IHZhbHVhYmxlIGZvciBtZS4gDQogDQo+ DQo+PiA+PiArDQo+PiA+PiArICAgIGRldl9kYmcoY2Rucy0+ZGV2LCAiU3dpdGNoaW5nIHJvbGUi KTsNCj4+ID4+ICsNCj4+ID4NCj4+ID5Eb24ndCB5b3UgaGF2ZSB0byBzdG9wIHRoZSBwcmV2aW91 cyByb2xlIGJlZm9yZSBzdGFydGluZyB0aGUgbmV3IHJvbGU/DQo+PiA+DQo+PiA+PiArICAgIHJl dCA9IGNkbnMzX3JvbGVfc3RhcnQoY2Rucywgcm9sZSk7DQo+PiA+PiArICAgIGlmIChyZXQpIHsN Cj4+ID4+ICsgICAgICAgICAgICAvKiBCYWNrIHRvIGN1cnJlbnQgcm9sZSAqLw0KPj4gPj4gKyAg ICAgICAgICAgIGRldl9lcnIoY2Rucy0+ZGV2LCAic2V0ICVkIGhhcyBmYWlsZWQsIGJhY2sgdG8g JWRcbiIsDQo+PiA+PiArICAgICAgICAgICAgICAgICAgICByb2xlLCBjdXJyZW50X3JvbGUpOw0K Pj4gPj4gKyAgICAgICAgICAgIHJldCA9IGNkbnMzX3JvbGVfc3RhcnQoY2RucywgY3VycmVudF9y b2xlKTsNCj4+ID4+ICsgICAgfQ0KPj4gPj4gKw0KPj4gPj4gKyAgICByZXR1cm4gcmV0Ow0KPj4g Pj4gK30NCj4+ID4+ICsNCj4+ID4+ICsvKioNCj4+ID4+ICsgKiBjZG5zM19yb2xlX3N3aXRjaCAt IHdvcmsgcXVldWUgaGFuZGxlciBmb3Igcm9sZSBzd2l0Y2gNCj4+ID4+ICsgKg0KPj4gPj4gKyAq IEB3b3JrOiB3b3JrIHF1ZXVlIGl0ZW0gc3RydWN0dXJlDQo+PiA+PiArICoNCj4+ID4+ICsgKiBI YW5kbGVzIGJlbG93IGV2ZW50czoNCj4+ID4+ICsgKiAtIFJvbGUgc3dpdGNoIGZvciBkdWFsLXJv bGUgZGV2aWNlcw0KPj4gPj4gKyAqIC0gQ0ROUzNfUk9MRV9HQURHRVQgPC0tPiBDRE5TM19ST0xF X0VORCBmb3IgcGVyaXBoZXJhbC1vbmx5IGRldmljZXMNCj4+ID4+ICsgKi8NCj4+ID4+ICtzdGF0 aWMgdm9pZCBjZG5zM19yb2xlX3N3aXRjaChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+PiA+ PiArew0KPj4gPj4gKyAgICBlbnVtIGNkbnMzX3JvbGVzIHJvbGUgPSBDRE5TM19ST0xFX0VORDsN Cj4+ID4+ICsgICAgc3RydWN0IGNkbnMzICpjZG5zOw0KPj4gPj4gKyAgICBib29sIGRldmljZSwg aG9zdDsNCj4+ID4+ICsNCj4+ID4+ICsgICAgY2RucyA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1 Y3QgY2RuczMsIHJvbGVfc3dpdGNoX3dxKTsNCj4+ID4+ICsNCj4+ID4+ICsgICAgLy9UT0RPOiBp bXBsZW1lbnRzIHRoaXMgZnVuY3Rpb25zLg0KPj4gPj4gKyAgICAvL2hvc3QgPSBjZG5zM19pc19o b3N0KGNkbnMpOw0KPj4gPj4gKyAgICAvL2RldmljZSA9IGNkbnMzX2lzX2RldmljZShjZG5zKTsN Cj4+ID4+ICsgICAgaG9zdCA9IDE7DQo+PiA+PiArICAgIGRldmljZSA9IDA7DQo+PiA+PiArDQo+ PiA+PiArICAgIGlmIChob3N0KQ0KPj4gPj4gKyAgICAgICAgICAgIHJvbGUgPSBDRE5TM19ST0xF X0hPU1Q7DQo+PiA+PiArICAgIGVsc2UgaWYgKGRldmljZSkNCj4+ID4+ICsgICAgICAgICAgICBy b2xlID0gQ0ROUzNfUk9MRV9HQURHRVQ7DQo+PiA+PiArDQo+PiA+PiArICAgIGlmIChjZG5zLT5k ZXNpcmVkX2RyX21vZGUgPT0gY2Rucy0+Y3VycmVudF9kcl9tb2RlICYmDQo+PiA+PiArICAgICAg ICBjZG5zLT5yb2xlID09IHJvbGUpDQo+PiA+PiArICAgICAgICAgICAgcmV0dXJuOw0KPj4gPj4g Kw0KPj4gPg0KPj4gPkkgdGhpbmsgYWxsIHRoZSBiZWxvdyBjb2RlIGNhbiBiZSBtb3ZlZCB0byBj ZG5zM19kb19yb2xlX3N3aXRjaCgpLg0KPj4NCj4+IFllcywgSSBhZ3JlZSB3aXRoIHlvdS4gY2Ru czNfcm9sZV9zdG9wICBzaG91bGQgYmUgaW4gY2RuczNfZG9fcm9sZV9zd2l0Y2guDQo+Pg0KPj4g Pj4gKyAgICBwbV9ydW50aW1lX2dldF9zeW5jKGNkbnMtPmRldik7DQo+PiA+PiArICAgIGNkbnMz X3JvbGVfc3RvcChjZG5zKTsNCj4+ID4+ICsNCj4+ID4+ICsgICAgaWYgKGhvc3QpIHsNCj4+ID4+ ICsgICAgICAgICAgICBpZiAoY2Rucy0+cm9sZXNbQ0ROUzNfUk9MRV9IT1NUXSkNCj4+ID4+ICsg ICAgICAgICAgICAgICAgICAgIGNkbnMzX2RvX3JvbGVfc3dpdGNoKGNkbnMsIENETlMzX1JPTEVf SE9TVCk7DQo+PiA+PiArICAgICAgICAgICAgcG1fcnVudGltZV9wdXRfc3luYyhjZG5zLT5kZXYp Ow0KPj4gPj4gKyAgICAgICAgICAgIHJldHVybjsNCj4+ID4+ICsgICAgfQ0KPj4gPj4gKw0KPj4g Pj4gKyAgICBpZiAoZGV2aWNlKQ0KPj4gPj4gKyAgICAgICAgICAgIGNkbnMzX2RvX3JvbGVfc3dp dGNoKGNkbnMsIENETlMzX1JPTEVfR0FER0VUKTsNCj4+ID4+ICsgICAgZWxzZQ0KPj4gPj4gKyAg ICAgICAgICAgIGNkbnMzX2RvX3JvbGVfc3dpdGNoKGNkbnMsIENETlMzX1JPTEVfRU5EKTsNCj4+ ID4+ICsNCj4+ID4+ICsgICAgcG1fcnVudGltZV9wdXRfc3luYyhjZG5zLT5kZXYpOw0KPj4gPj4g K30NCj4+ID4+ICsNCj4+ID4+ICsvKioNCj4+ID4+ICsgKiBjZG5zM19wcm9iZSAtIHByb2JlIGZv ciBjZG5zMyBjb3JlIGRldmljZQ0KPj4gPj4gKyAqIEBwZGV2OiBQb2ludGVyIHRvIGNkbnMzIGNv cmUgcGxhdGZvcm0gZGV2aWNlDQo+PiA+PiArICoNCj4+ID4+ICsgKiBSZXR1cm5zIDAgb24gc3Vj Y2VzcyBvdGhlcndpc2UgbmVnYXRpdmUgZXJybm8NCj4+ID4+ICsgKi8NCj4+ID4+ICtzdGF0aWMg aW50IGNkbnMzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+PiA+PiArew0K Pj4gPj4gKyAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPj4gPj4gKyAgICBz dHJ1Y3QgcmVzb3VyY2UgKnJlczsNCj4+ID4+ICsgICAgc3RydWN0IGNkbnMzICpjZG5zOw0KPj4g Pj4gKyAgICB2b2lkIF9faW9tZW0gKnJlZ3M7DQo+PiA+PiArICAgIGludCByZXQ7DQo+PiA+PiAr DQo+PiA+PiArICAgIGNkbnMgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmNkbnMpLCBHRlBf S0VSTkVMKTsNCj4+ID4+ICsgICAgaWYgKCFjZG5zKQ0KPj4gPj4gKyAgICAgICAgICAgIHJldHVy biAtRU5PTUVNOw0KPj4gPj4gKw0KPj4gPj4gKyAgICBjZG5zLT5kZXYgPSBkZXY7DQo+PiA+PiAr DQo+PiA+PiArICAgIHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGNkbnMpOw0KPj4gPj4gKw0K Pj4gPj4gKyAgICByZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9J UlEsIDApOw0KPj4gPj4gKyAgICBpZiAoIXJlcykgew0KPj4gPj4gKyAgICAgICAgICAgIGRldl9l cnIoZGV2LCAibWlzc2luZyBJUlFcbiIpOw0KPj4gPj4gKyAgICAgICAgICAgIHJldHVybiAtRU5P REVWOw0KPj4gPj4gKyAgICB9DQo+PiA+PiArICAgIGNkbnMtPmlycSA9IHJlcy0+c3RhcnQ7DQo+ PiA+PiArDQo+PiA+PiArICAgIC8qDQo+PiA+PiArICAgICAqIFJlcXVlc3QgbWVtb3J5IHJlZ2lv bg0KPj4gPj4gKyAgICAgKiByZWdpb24tMDogeEhDSQ0KPj4gPj4gKyAgICAgKiByZWdpb24tMTog UGVyaXBoZXJhbA0KPj4gPj4gKyAgICAgKiByZWdpb24tMjogT1RHIHJlZ2lzdGVycw0KPj4gPj4g KyAgICAgKi8NCj4+ID4NCj4+ID5UaGUgbWVtb3J5IHJlZ2lvbiBvcmRlciBpcyBkaWZmZXJlbnQg ZnJvbSB0aGUgZHQtYmluZGluZy4NCj4+ID5UaGVyZSBpdCBpcyBPVEcsIGhvc3QoeGhjaSksIGRl dmljZSAocGVyaXBoZXJhbCkuDQo+Pg0KPj4gSSBjb3JyZWN0ZWQgZHQtYmluZGluZy4NCj4+ID4N Cj4+ID4+ICsgICAgcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0Vf TUVNLCAwKTsNCj4+ID4+ICsgICAgcmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJl cyk7DQo+PiA+PiArDQo+PiA+PiArICAgIGlmIChJU19FUlIocmVncykpDQo+PiA+PiArICAgICAg ICAgICAgcmV0dXJuIFBUUl9FUlIocmVncyk7DQo+PiA+PiArICAgIGNkbnMtPnhoY2lfcmVncyA9 IHJlZ3M7DQo+PiA+PiArICAgIGNkbnMtPnhoY2lfcmVzID0gcmVzOw0KPj4gPj4gKw0KPj4gPj4g KyAgICByZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDEp Ow0KPj4gPj4gKyAgICByZWdzID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTsNCj4+ ID4+ICsgICAgaWYgKElTX0VSUihyZWdzKSkNCj4+ID4+ICsgICAgICAgICAgICByZXR1cm4gUFRS X0VSUihyZWdzKTsNCj4+ID4+ICsgICAgY2Rucy0+ZGV2X3JlZ3MgID0gcmVnczsNCj4+ID4+ICsN Cj4+ID4+ICsgICAgcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0Vf TUVNLCAyKTsNCj4+ID4+ICsgICAgcmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJl cyk7DQo+PiA+PiArICAgIGlmIChJU19FUlIocmVncykpDQo+PiA+PiArICAgICAgICAgICAgcmV0 dXJuIFBUUl9FUlIocmVncyk7DQo+PiA+PiArICAgIGNkbnMtPm90Z19yZWdzID0gcmVnczsNCj4+ ID4+ICsNCj4+ID4+ICsgICAgbXV0ZXhfaW5pdCgmY2Rucy0+bXV0ZXgpOw0KPj4gPj4gKw0KPj4g Pj4gKyAgICBjZG5zLT5waHkgPSBkZXZtX3BoeV9nZXQoZGV2LCAiY2RuczMsdXNicGh5Iik7DQo+ PiA+DQo+PiA+ImNkbnMzLHVzYnBoeSIgaXMgbm90IGRvY3VtZW50ZWQgaW4gZHQtYmluZGluZy4N Cj4+DQo+PiBJIGFzc3VtZSB0aGF0IEkgc2hvdWxkIGFkZCAgdG8gZHQtYmluZGluZyAoY2RuczMt dXNiLnR4dCkgc29tZXRoaW5nIGxpa2U6DQo+PiAgLSBwaHlzOiByZWZlcmVuY2UgdG8gdGhlIFVT QiBQSFkNCj4+ICAtIHBoeS1uYW1lczogbmFtZSBvZiB0aGUgVVNCIFBIWSwgc2hvdWxkIGJlICIg Y2RuczMsdXNicGh5ICINCj4+DQo+PiA+DQo+PiA+PiArICAgIGlmIChJU19FUlIoY2Rucy0+cGh5 KSkgew0KPj4gPj4gKyAgICAgICAgICAgIGRldl9pbmZvKGRldiwgIm5vIGdlbmVyaWMgcGh5IGZv dW5kXG4iKTsNCj4+ID4+ICsgICAgICAgICAgICBjZG5zLT5waHkgPSBOVUxMOw0KPj4gPj4gKyAg ICAgICAgICAgIC8qDQo+PiA+PiArICAgICAgICAgICAgICogZmFsbCB0aHJvdWdoIGhlcmUhDQo+ PiA+PiArICAgICAgICAgICAgICogaWYgbm8gZ2VuZXJpYyBwaHkgZm91bmQsIHBoeSBpbml0DQo+ PiA+PiArICAgICAgICAgICAgICogc2hvdWxkIGJlIGRvbmUgdW5kZXIgYm9vdCENCj4+ID4+ICsg ICAgICAgICAgICAgKi8NCj4+ID4NCj4+ID5ObyB5b3Ugc2hvdWxkbid0IGZhbGwgdGhyb3VnaCBh bHdheXMgaWYgaXQgaXMgYW4gZXJyb3IgY29uZGl0aW9uLg0KPj4gPlNvbWV0aGluZyBsaWtlIHRo aXMgc2hvdWxkIHdvcmsgYmV0dGVyLg0KPj4gPg0KPj4gPiAgICAgICAgaWYgKElTX0VSUihjbmRz LT5waHkpKSB7DQo+PiA+ICAgICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIoY2Rucy0+cGh5KTsN Cj4+ID4gICAgICAgICAgICAgICAgaWYgKHJldCA9PSAtRU5PU1lTIHx8IHJldCA9PSAtRU5PREVW KSB7DQo+PiA+ICAgICAgICAgICAgICAgICAgICAgICAgY2Rucy0+cGh5ID0gTlVMTDsNCj4+ID4g ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXQgPT0gLUVQUk9CRV9ERUZFUikgew0KPj4gPiAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+PiA+ICAgICAgICAgICAgICAgIH0g ZWxzZSB7DQo+PiA+ICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJubyBwaHkg Zm91bmRcbiIpOw0KPj4gPiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyMDsNCj4+ID4g ICAgICAgICAgICAgICAgfQ0KPj4gPiAgICAgICAgfQ0KPj4gPg0KPj4gPlNvIGlmIFBIWSB3YXMg cHJvdmlkZWQgaW4gRFQsIGFuZCBQSFkgc3VwcG9ydC9kcml2ZXJzIGlzIHByZXNlbnQNCj4+ID5h bmQgZXJyb3IgY29uZGl0aW9uIG1lYW5zIHNvbWV0aGluZyBpcyB3cm9uZyBhbmQgd2UgaGF2ZSB0 byBlcnJvciBvdXQuDQo+PiA+DQo+PiA+PiArICAgIH0gZWxzZSB7DQo+PiA+PiArICAgICAgICAg ICAgcGh5X2luaXQoY2Rucy0+cGh5KTsNCj4+ID4+ICsgICAgfQ0KPj4gPg0KPj4gPllvdSBjYW4g ZG8gcGh5X2luaXQoKSBvdXRzaWRlIHRoZSBlbHNlLg0KPj4gPg0KPj4gVGhhbmsgeW91IGZvciBl eHBsYW5hdGlvbi4gSSB3aWxsIGNvcnJlY3QgdGhpcy4NCj4+ID4+ICsNCj4+ID4+ICsgICAgcmV0 ID0gY2RuczNfY29yZV9pbml0X3JvbGUoY2Rucyk7DQo+PiA+PiArICAgIGlmIChyZXQpDQo+PiA+ PiArICAgICAgICAgICAgZ290byBlcnIxOw0KPj4gPj4gKw0KPj4gPj4gKyAgICBJTklUX1dPUkso JmNkbnMtPnJvbGVfc3dpdGNoX3dxLCBjZG5zM19yb2xlX3N3aXRjaCk7DQo+PiA+PiArICAgIGlm IChyZXQpDQo+PiA+PiArICAgICAgICAgICAgZ290byBlcnIyOw0KPj4gPj4gKw0KPj4gPj4gKyAg ICBpZiAocmV0KQ0KPj4gPj4gKyAgICAgICAgICAgIGdvdG8gZXJyMjsNCj4+ID4+ICsNCj4+ID4+ ICsgICAgY2Rucy0+cm9sZSA9IGNkbnMzX2dldF9yb2xlKGNkbnMpOw0KPj4gPg0KPj4gPkkgdGhp bmsgdGhpcyBzaG91bGQgbW92ZSB0byBjZCBJJ2xsIGhhdmUgYSBzb21lIHRob3VnaCBvbiBuczNf Y29yZV9pbml0X3JvbGUoKS4NCj4+DQo+PiBPaywgSSB3aWxsIGRvIGl0Lg0KPj4gPg0KPj4gPj4g Kw0KPj4gPj4gKyAgICByZXQgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgY2Rucy0+aXJxLCBjZG5z M19pcnEsIElSUUZfU0hBUkVELA0KPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl dl9uYW1lKGRldiksIGNkbnMpOw0KPj4gPj4gKw0KPj4gPj4gKyAgICBpZiAocmV0KQ0KPj4gPj4g KyAgICAgICAgICAgIGdvdG8gZXJyMjsNCj4+ID4NCj4+ID5Ib3cgYWJvdXQgbW92aW5nIHJlcXVl c3RfaXJxIHRvIGJlZm9yZSBjZHNuM19jb3JlX2luaXRfcm9sZSgpPw0KPj4gPg0KPj4gPlRoZW4g eW91IGNhbiBtb3ZlIGNkbnMzX3JvbGVfc3RhcnQoKSBhcyB3ZWxsIHRvIGNvcmVfaW5pdF9yb2xl KCkuDQo+PiBJJ2xsIGdpdmUgaXQgIHNvbWUgdGhvdWdoIG9uIGl0LCBidXQgcHJvYmFibHkgSSB3 aWxsIHByb2JhYmx5IGhhdmUgdG8gY2hhbmdlIGxpdHRsZSBvdGhlciBmdW5jdGlvbi4uDQo+PiBT byB0aGUgbmV3IG9yZGVyIHNob3VsZCBsb29rIGxpa2UgdGhpczoNCj4+DQo+PiBjZG5zM19kcmRf aW5pdA0KPj4gZGV2bV9yZXF1ZXN0X2lycQ0KPj4gY2RuczNfY29yZV9pbml0X3JvbGUsIGNkbnMz X2dldF9yb2xlLCBjZG5zM19yb2xlX3N0YXJ0DQo+Pg0KPj4gPg0KPj4gPj4gKw0KPj4gPj4gKyAg ICByZXQgPSBjZG5zM19yb2xlX3N0YXJ0KGNkbnMsIGNkbnMtPnJvbGUpOw0KPj4gPj4gKyAgICBp ZiAocmV0KSB7DQo+PiA+PiArICAgICAgICAgICAgZGV2X2VycihkZXYsICJjYW4ndCBzdGFydCAl cyByb2xlXG4iLA0KPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgY2RuczNfZ2V0X2N1cnJlbnRf cm9sZV9kcml2ZXIoY2RucyktPm5hbWUpOw0KPj4gPj4gKyAgICAgICAgICAgIGdvdG8gZXJyMjsN Cj4+ID4+ICsgICAgfQ0KPj4gPj4gKw0KPj4gPj4gKyAgICBkZXZpY2Vfc2V0X3dha2V1cF9jYXBh YmxlKGRldiwgdHJ1ZSk7DQo+PiA+PiArICAgIHBtX3J1bnRpbWVfc2V0X2FjdGl2ZShkZXYpOw0K Pj4gPj4gKyAgICBwbV9ydW50aW1lX2VuYWJsZShkZXYpOw0KPj4gPj4gKw0KPj4gPj4gKyAgICAv Kg0KPj4gPj4gKyAgICAgKiBUaGUgY29udHJvbGxlciBuZWVkcyBsZXNzIHRpbWUgYmV0d2VlbiBi dXMgYW5kIGNvbnRyb2xsZXIgc3VzcGVuZCwNCj4+ID4+ICsgICAgICogYW5kIHdlIGFsc28gbmVl ZHMgYSBzbWFsbCBkZWxheSB0byBhdm9pZCBmcmVxdWVudGx5IGVudGVyaW5nIGxvdw0KPj4gPj4g KyAgICAgKiBwb3dlciBtb2RlLg0KPj4gPj4gKyAgICAgKi8NCj4+ID4+ICsgICAgcG1fcnVudGlt ZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXkoZGV2LCAyMCk7DQo+PiA+PiArICAgIHBtX3J1bnRpbWVf bWFya19sYXN0X2J1c3koZGV2KTsNCj4+ID4+ICsgICAgcG1fcnVudGltZV91c2VfYXV0b3N1c3Bl bmQoZGV2KTsNCj4+ID4+ICsgICAgZGV2X2RiZyhkZXYsICJDYWRlbmNlIFVTQjMgY29yZTogcHJv YmUgc3VjY2VlZFxuIik7DQo+PiA+PiArDQo+PiA+PiArICAgIHJldHVybiAwOw0KPj4gPj4gKw0K Pj4gPj4gK2VycjI6DQo+PiA+PiArICAgIGNkbnMzX3JlbW92ZV9yb2xlcyhjZG5zKTsNCj4+ID4+ ICtlcnIxOg0KPj4gPg0KPj4gPnBoeV9leGl0KCkgPw0KPj4gSSB3aWxsIGFkZC4NCj4+ID4NCj4+ ID4+ICsgICAgcmV0dXJuIHJldDsNCj4+ID4+ICt9DQo+PiA+PiArDQo+PiA+PiArLyoqDQo+PiA+ PiArICogY2RuczNfcmVtb3ZlIC0gdW5iaW5kIGRyZCBkcml2ZXIgYW5kIGNsZWFuIHVwDQo+PiA+ PiArICogQHBkZXY6IFBvaW50ZXIgdG8gTGludXggcGxhdGZvcm0gZGV2aWNlDQo+PiA+PiArICoN Cj4+ID4+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvdGhlcndpc2UgbmVnYXRpdmUgZXJybm8N Cj4+ID4+ICsgKi8NCj4+ID4+ICtzdGF0aWMgaW50IGNkbnMzX3JlbW92ZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQ0KPj4gPj4gK3sNCj4+ID4+ICsgICAgc3RydWN0IGNkbnMzICpjZG5z ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQo+PiA+PiArDQo+PiA+PiArICAgIHBtX3J1 bnRpbWVfZ2V0X3N5bmMoJnBkZXYtPmRldik7DQo+PiA+PiArICAgIHBtX3J1bnRpbWVfZGlzYWJs ZSgmcGRldi0+ZGV2KTsNCj4+ID4+ICsgICAgcG1fcnVudGltZV9wdXRfbm9pZGxlKCZwZGV2LT5k ZXYpOw0KPj4gPj4gKyAgICBjZG5zM19yZW1vdmVfcm9sZXMoY2Rucyk7DQo+PiA+DQo+PiA+cGh5 X2V4aXQoKSA/DQo+PiBJIHdpbGwgYWRkLg0KPj4gPg0KPj4gPj4gKw0KPj4gPj4gKyAgICByZXR1 cm4gMDsNCj4+ID4+ICt9DQo+PiA+PiArDQo+PiA+PiArI2lmZGVmIENPTkZJR19PRg0KPj4gPj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX2NkbnMzX21hdGNoW10gPSB7DQo+ PiA+PiArICAgIHsgLmNvbXBhdGlibGUgPSAiY2Rucyx1c2IzIiB9LA0KPj4gPj4gKyAgICB7IH0s DQo+PiA+PiArfTsNCj4+ID4+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9jZG5zM19tYXRj aCk7DQo+PiA+PiArI2VuZGlmDQo+PiA+PiArDQo+PiA+PiArI2lmZGVmIENPTkZJR19QTQ0KPj4g Pj4gKw0KPj4gPj4gKyNpZmRlZiBDT05GSUdfUE1fU0xFRVANCj4+ID4+ICtzdGF0aWMgaW50IGNk bnMzX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KPj4gPj4gK3sNCj4+ID4+ICsgICAgLy9U T0RPOiBpbXBsZW1lbnRzIHRoaXMgZnVuY3Rpb24NCj4+ID4+ICsgICAgcmV0dXJuIDA7DQo+PiA+ PiArfQ0KPj4gPj4gKw0KPj4gPj4gK3N0YXRpYyBpbnQgY2RuczNfcmVzdW1lKHN0cnVjdCBkZXZp Y2UgKmRldikNCj4+ID4+ICt7DQo+PiA+PiArICAgIC8vVE9ETzogaW1wbGVtZW50cyB0aGlzIGZ1 bmN0aW9uDQo+PiA+PiArICAgIHJldHVybiAwOw0KPj4gPj4gK30NCj4+ID4+ICsjZW5kaWYgLyog Q09ORklHX1BNX1NMRUVQICovDQo+PiA+PiArc3RhdGljIGludCBjZG5zM19ydW50aW1lX3N1c3Bl bmQoc3RydWN0IGRldmljZSAqZGV2KQ0KPj4gPj4gK3sgICAvL1RPRE86IGltcGxlbWVudHMgdGhp cyBmdW5jdGlvbg0KPj4gPj4gKyAgICByZXR1cm4gMDsNCj4+ID4+ICt9DQo+PiA+PiArDQo+PiA+ PiArc3RhdGljIGludCBjZG5zM19ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ PiA+PiArew0KPj4gPj4gKyAgICAvL1RPRE86IGltcGxlbWVudHMgdGhpcyBmdW5jdGlvbg0KPj4g Pj4gKyAgICByZXR1cm4gMDsNCj4+ID4+ICt9DQo+PiA+PiArI2VuZGlmIC8qIENPTkZJR19QTSAq Lw0KPj4gPj4gKw0KPj4gPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBjZG5zM19w bV9vcHMgPSB7DQo+PiA+PiArICAgIFNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKGNkbnMzX3N1c3Bl bmQsIGNkbnMzX3Jlc3VtZSkNCj4+ID4+ICsgICAgU0VUX1JVTlRJTUVfUE1fT1BTKGNkbnMzX3J1 bnRpbWVfc3VzcGVuZCwgY2RuczNfcnVudGltZV9yZXN1bWUsIE5VTEwpDQo+PiA+PiArfTsNCj4+ ID4+ICsNCj4+ID4+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBjZG5zM19kcml2ZXIg PSB7DQo+PiA+PiArICAgIC5wcm9iZSAgICAgICAgICA9IGNkbnMzX3Byb2JlLA0KPj4gPj4gKyAg ICAucmVtb3ZlICAgICAgICAgPSBjZG5zM19yZW1vdmUsDQo+PiA+PiArICAgIC5kcml2ZXIgICAg ICAgICA9IHsNCj4+ID4+ICsgICAgICAgICAgICAubmFtZSAgID0gImNkbnMtdXNiMyIsDQo+PiA+ PiArICAgICAgICAgICAgLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKG9mX2NkbnMzX21h dGNoKSwNCj4+ID4+ICsgICAgICAgICAgICAucG0gICAgID0gJmNkbnMzX3BtX29wcywNCj4+ID4+ ICsgICAgfSwNCj4+ID4+ICt9Ow0KPj4gPj4gKw0KPj4gPj4gK3N0YXRpYyBpbnQgX19pbml0IGNk bnMzX2RyaXZlcl9wbGF0Zm9ybV9yZWdpc3Rlcih2b2lkKQ0KPj4gPj4gK3sNCj4+ID4+ICsgICAg cmV0dXJuIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmY2RuczNfZHJpdmVyKTsNCj4+ID4+ICt9 DQo+PiA+PiArbW9kdWxlX2luaXQoY2RuczNfZHJpdmVyX3BsYXRmb3JtX3JlZ2lzdGVyKTsNCj4+ ID4+ICsNCj4+ID4+ICtzdGF0aWMgdm9pZCBfX2V4aXQgY2RuczNfZHJpdmVyX3BsYXRmb3JtX3Vu cmVnaXN0ZXIodm9pZCkNCj4+ID4+ICt7DQo+PiA+PiArICAgIHBsYXRmb3JtX2RyaXZlcl91bnJl Z2lzdGVyKCZjZG5zM19kcml2ZXIpOw0KPj4gPj4gK30NCj4+ID4+ICttb2R1bGVfZXhpdChjZG5z M19kcml2ZXJfcGxhdGZvcm1fdW5yZWdpc3Rlcik7DQo+PiA+PiArDQo+PiA+PiArTU9EVUxFX0FM SUFTKCJwbGF0Zm9ybTpjZG5zMyIpOw0KPj4gPj4gK01PRFVMRV9BVVRIT1IoIlBhd2VsIExhc3pj emFrIDxwYXdlbGxAY2FkZW5jZS5jb20+Iik7DQo+PiA+PiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2 MiIpOw0KPj4gPj4gK01PRFVMRV9ERVNDUklQVElPTigiQ2FkZW5jZSBVU0IzIERSRCBDb250cm9s bGVyIERyaXZlciIpOw0KPj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NkbnMzL2NvcmUu aCBiL2RyaXZlcnMvdXNiL2NkbnMzL2NvcmUuaA0KPj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4+ID4+IGluZGV4IDAwMDAwMDAwMDAwMC4uN2M4MjA0ZmU0ZDNkDQo+PiA+PiAtLS0gL2Rldi9u dWxsDQo+PiA+PiArKysgYi9kcml2ZXJzL3VzYi9jZG5zMy9jb3JlLmgNCj4+ID4+IEBAIC0wLDAg KzEsMTAwIEBADQo+PiA+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8N Cj4+ID4+ICsvKg0KPj4gPj4gKyAqIENhZGVuY2UgVVNCU1MgRFJEIERyaXZlci4NCj4+ID4+ICsg Kg0KPj4gPj4gKyAqIENvcHlyaWdodCAoQykgMjAxNyBOWFANCj4+ID4+ICsgKiBDb3B5cmlnaHQg KEMpIDIwMTggQ2FkZW5jZS4NCj4+ID4+ICsgKg0KPj4gPj4gKyAqIEF1dGhvcnM6IFBldGVyIENo ZW4gPHBldGVyLmNoZW5AbnhwLmNvbT4NCj4+ID4+ICsgKiAgICAgICAgICBQYXdlbCBMYXN6Y3ph ayA8cGF3ZWxsQGNhZGVuY2UuY29tPg0KPj4gPj4gKyAqLw0KPj4gPj4gKyNpbmNsdWRlIDxsaW51 eC91c2Ivb3RnLmg+DQo+PiA+PiArDQo+PiA+PiArI2lmbmRlZiBfX0xJTlVYX0NETlMzX0NPUkVf SA0KPj4gPj4gKyNkZWZpbmUgX19MSU5VWF9DRE5TM19DT1JFX0gNCj4+ID4+ICsNCj4+ID4+ICtz dHJ1Y3QgY2RuczM7DQo+PiA+PiArZW51bSBjZG5zM19yb2xlcyB7DQo+PiA+PiArICAgIENETlMz X1JPTEVfSE9TVCA9IDAsDQo+PiA+PiArICAgIENETlMzX1JPTEVfR0FER0VULA0KPj4gPj4gKyAg ICBDRE5TM19ST0xFX0VORCwNCj4+ID4+ICt9Ow0KPj4gPj4gKw0KPj4gPj4gKy8qKg0KPj4gPj4g KyAqIHN0cnVjdCBjZG5zM19yb2xlX2RyaXZlciAtIGhvc3QvZ2FkZ2V0IHJvbGUgZHJpdmVyDQo+ PiA+PiArICogQHN0YXJ0OiBzdGFydCB0aGlzIHJvbGUNCj4+ID4+ICsgKiBAc3RvcDogc3RvcCB0 aGlzIHJvbGUNCj4+ID4+ICsgKiBAc3VzcGVuZDogc3VzcGVuZCBjYWxsYmFjayBmb3IgdGhpcyBy b2xlDQo+PiA+PiArICogQHJlc3VtZTogcmVzdW1lIGNhbGxiYWNrIGZvciB0aGlzIHJvbGUNCj4+ ID4+ICsgKiBAaXJxOiBpcnEgaGFuZGxlciBmb3IgdGhpcyByb2xlDQo+PiA+PiArICogQG5hbWU6 IHJvbGUgbmFtZSBzdHJpbmcgKGhvc3QvZ2FkZ2V0KQ0KPj4gPj4gKyAqLw0KPj4gPj4gK3N0cnVj dCBjZG5zM19yb2xlX2RyaXZlciB7DQo+PiA+PiArICAgIGludCAoKnN0YXJ0KShzdHJ1Y3QgY2Ru czMgKmNkbnMpOw0KPj4gPj4gKyAgICB2b2lkICgqc3RvcCkoc3RydWN0IGNkbnMzICpjZG5zKTsN Cj4+ID4+ICsgICAgaW50ICgqc3VzcGVuZCkoc3RydWN0IGNkbnMzICpjZG5zLCBib29sIGRvX3dh a2V1cCk7DQo+PiA+PiArICAgIGludCAoKnJlc3VtZSkoc3RydWN0IGNkbnMzICpjZG5zLCBib29s IGhpYmVybmF0ZWQpOw0KPj4gPj4gKyAgICBpcnFyZXR1cm5fdCAoKmlycSkoc3RydWN0IGNkbnMz ICpjZG5zKTsNCj4+ID4+ICsgICAgY29uc3QgY2hhciAqbmFtZTsNCj4+ID4+ICt9Ow0KPj4gPj4g Kw0KPj4gPj4gKyNkZWZpbmUgQ0ROUzNfTlVNX09GX0NMS1MgICA1DQo+PiA+PiArLyoqDQo+PiA+ PiArICogc3RydWN0IGNkbnMzIC0gUmVwcmVzZW50YXRpb24gb2YgQ2FkZW5jZSBVU0IzIERSRCBj b250cm9sbGVyLg0KPj4gPj4gKyAqIEBkZXY6IHBvaW50ZXIgdG8gQ2FkZW5jZSBkZXZpY2Ugc3Ry dWN0DQo+PiA+PiArICogQHhoY2lfcmVnczogcG9pbnRlciB0byBiYXNlIG9mIHhoY2kgcmVnaXN0 ZXJzDQo+PiA+PiArICogQHhoY2lfcmVzOiB0aGUgcmVzb3VyY2UgZm9yIHhoY2kNCj4+ID4+ICsg KiBAZGV2X3JlZ3M6IHBvaW50ZXIgdG8gYmFzZSBvZiBkZXYgcmVnaXN0ZXJzDQo+PiA+PiArICog QG90Z19yZWdzOiBwb2ludGVyIHRvIGJhc2Ugb2Ygb3RnIHJlZ2lzdGVycw0KPj4gPj4gKyAqIEBp cnE6IGlycSBudW1iZXIgZm9yIGNvbnRyb2xsZXINCj4+ID4+ICsgKiBAcm9sZXM6IGFycmF5IG9m IHN1cHBvcnRlZCByb2xlcyBmb3IgdGhpcyBjb250cm9sbGVyDQo+PiA+PiArICogQHJvbGU6IGN1 cnJlbnQgcm9sZQ0KPj4gPj4gKyAqIEBob3N0X2RldjogdGhlIGNoaWxkIGhvc3QgZGV2aWNlIHBv aW50ZXIgZm9yIGNkbnMzIGNvcmUNCj4+ID4+ICsgKiBAZ2FkZ2V0X2RldjogdGhlIGNoaWxkIGdh ZGdldCBkZXZpY2UgcG9pbnRlciBmb3IgY2RuczMgY29yZQ0KPj4gPj4gKyAqIEB1c2I6IHBoeSBm b3IgdGhpcyBjb250cm9sbGVyDQo+PiA+PiArICogQHJvbGVfc3dpdGNoX3dxOiB3b3JrIHF1ZXVl IGl0ZW0gZm9yIHJvbGUgc3dpdGNoDQo+PiA+PiArICogQGluX2xwbTogdGhlIGNvbnRyb2xsZXIg aW4gbG93IHBvd2VyIG1vZGUNCj4+ID4+ICsgKiBAd2FrZXVwX2ludDogdGhlIHdha2V1cCBpbnRl cnJ1cHQNCj4+ID4+ICsgKiBAbXV0ZXg6IHRoZSBtdXRleCBmb3IgY29uY3VycmVudCBjb2RlIGF0 IGRyaXZlcg0KPj4gPj4gKyAqIEBkcl9tb2RlOiBzdXBwb3J0ZWQgbW9kZSBvZiBvcGVyYXRpb24g aXQgY2FuIGJlIG9ubHkgSG9zdCwgb25seSBEZXZpY2UNCj4+ID4+ICsgKiAgICAgICAgICAgb3Ig T1RHIG1vZGUgdGhhdCBhbGxvdyB0byBzd2l0Y2ggYmV0d2VlbiBEZXZpY2UgYW5kIEhvc3QgbW9k ZS4NCj4+ID4+ICsgKiAgICAgICAgICAgVGhpcyBmaWVsZCBiYXNlZCBvbiBoYXJkd2FyZSBjb25m aWd1cmF0aW9uIGFuZCBjYW50J3QgYmUgY2hhbmdlZC4NCj4+ID4NCj4+ID5CdXQgZHJfbW9kZSBj YW4gYmUgZm9yY2VkIGluIGRldmljZS10cmVlLiBTbyBpdCBpc24ndCByZWFsbHkgb25seSBoYXJk d2FyZSBjb25maWd1cmF0aW9uLg0KPj4gUmlnaHQsIEkgYWRkZWQgZHJfbW9kZSB0byBkdC1iaW5k aW5nICwgc28gd2UgaGF2ZSBTVFJBUCBiaXRzIGluIHJlZ2lzdGVycyBhbmQgYWRkaXRpb25hbGx5 DQo+PiBvcHRpb25hbCBkcl9tb2RlIGluIGRldmljZS10cmVlLiBEcml2ZXIgc2hvdWxkIHRha2Ug aW50byBhY2NvdW50IHRoaXMgdHdvIG9wdGlvbnMuDQo+PiBJIHdpbGwgcmVtb3ZlIHRoaXMgbGlu ZS4NCj4+DQo+PiA+DQo+PiA+PiArICogQGN1cnJlbnRfZHJfcm9sZTogY3VycmVudCBtb2RlIG9m IG9wZXJhdGlvbiB3aGVuIGluIGR1YWwtcm9sZSBtb2RlDQo+PiA+PiArICogQGRlc2lyZWRfZHJf cm9sZTogZGVzaXJlZCBtb2RlIG9mIG9wZXJhdGlvbiB3aGVuIGluIGR1YWwtcm9sZSBtb2RlLg0K Pj4gPj4gKyAqICAgICAgICAgICBUaGlzIHZhbHVlIGNhbiBiZSBjaGFuZ2VkIGR1cmluZyBydW50 aW1lLg0KPj4gPj4gKyAqICAgICAgICAgICBBdmFpbGFibGUgb3B0aW9ucyBkZXBlbmRzIG9uICBk cl9tb2RlOg0KPj4gPj4gKyAqICAgICAgICAgICBkcl9tb2RlICAgICAgICAgICAgICAgICB8ICBk ZXNpcmVkX2RyX3JvbGUgYW5kIGN1cnJlbnRfZHJfcm9sZQ0KPj4gPj4gKyAqICAgICAgICAgICAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+PiA+PiArICogICAgICAgICAgIFVTQl9EUl9NT0RFX0hPU1QgICAgICAgIHwgb25s eSBVU0JfRFJfTU9ERV9IT1NUDQo+PiA+PiArICogICAgICAgICAgIFVTQl9EUl9NT0RFX1BFUklQ SEVSQUwgIHwgb25seSBVU0JfRFJfTU9ERV9QRVJJUEhFUkFMDQo+PiA+PiArICogICAgICAgICAg IFVTQl9EUl9NT0RFX09URyAgICAgICAgIHwgb25seSBVU0JfRFJfTU9ERV9IT1NUDQo+PiA+PiAr ICogICAgICAgICAgIFVTQl9EUl9NT0RFX09URyAgICAgICAgIHwgb25seSBVU0JfRFJfTU9ERV9Q RVJJUEhFUkFMDQo+PiA+PiArICogICAgICAgICAgIFVTQl9EUl9NT0RFX09URyAgICAgICAgIHwg VVNCX0RSX01PREVfT1RHDQo+PiA+DQo+PiA+RG8geW91IG5lZWQgdG8gdXBkYXRlIHRoZSByaWdo dCBoYW5kIHNpZGUgdG8gcmVmbGVjdCBST0xFcyBpbnN0ZWFkIG9mIE1PREU/DQo+Pg0KPj4gSSBz ZWUgdGhhdCB0aGVyZSBhcmUgaW5jb3JyZWN0IG5hbWUuIFRoZXJlIHNob3VsZCBiZSBtb2RlIGlu c3RlYWQgcm9sZS4NCj4+IEluIHN0cnVjdHVyZSBiZWxvdyB0aGUgbmFtZXMgYXJlIGNvcnJlY3Qu DQo+PiA+DQo+DQo+VXN1YWxseSwgd2UgaGF2ZSB0d28gdHlwZSBvZiByb2xlczogaW5pdCByb2xl IGFuZCBjdXJyZW50IHJvbGUNCj5pbml0IHJvbGUgaXMgZGVjaWRlZCBieSBkcl9tb2RlIGZyb20g ZmlybXdhcmUsIGhhcmR3YXJlIHNldHRpbmcgYW5kDQo+a2VybmVsIGNvbmZpZ3VyYXRpb24gdG9n ZXRoZXIuDQo+SXQgaXMgZGVjaWRlZCBhdCAtPnByb2JlLCBpZiBhYm92ZSB0aHJlZSBzZXR0aW5n cyBoYXZlY29uZmxpY3QsIHdlDQo+bmVlZCBzaG93IGFuIGVycm9yLg0KPmN1cnJlbnQgcm9sZSBp cyBkZWNpZGVkIGF0IHJ1biB0aW1lLCBhbmQgb25seSB1c2VkIGF0IGR1YWwtcm9sZSBtb2RlLg0K PkZvciBwZXJpcGhlcmFsLW9ubHkgYW5kIGhvc3Qtb25seSBhcHBsaWNhdGlvbiwgdGhlIGN1cnJl bnQgcm9sZSBlcXVhbHMNCj50byBpbml0IHJvbGUuDQo+DQoNCkkgYWdyZWUuIA0KDQpCdXQgYnkg Y29uZmxpY3QgSSB1bmRlcnN0YW5kIHRoYXQgd2UgY2FuJ3QgY2hvc2UgYW55b25lIG9wdGlvbi4g DQoNCmUuZy4gIA0KRmlybXdhcmU6ICAgT1RHDQpIYXJkd2FyZSA6ICBvbmx5IGRldmljZQ0KS2Vy bmVsIDogICBvbmx5IGhvc3QgDQpXZSBjYW4ndCBjaG9vc2UgdGhlIG9wdGlvbi4gDQoNCkJ1dCBp biBjYXNlIA0KRmlybXdhcmU6ICAgT1RHDQpIYXJkd2FyZSA6ICBvbmx5IGRldmljZQ0KS2VybmVs IDogICBvbmx5IGRldmljZSANClRoZW4gd2UgY2FuIHNldCBkcl9tb2RlIHRvIEhPU1QgZGV2aWNl IG1vZGUgYW5kIGluaXQgcm9sZSB3aWxsIGJlIEhvc3Qgcm9sZS4NCg0KDQo+UGV0ZXINCj4NCj4+ ID4+ICsgKg0KPj4gPj4gKyAqICAgICAgICAgICBEZXNpcmVkX2RyX3JvbGUgY2FuIGJlIGNoYW5n ZWQgYnkgbWVhbnMgb2YgZGVidWdmcy4NCj4+ID4+ICsgKiBAcm9vdDogZGVidWdmcyByb290IGZv bGRlciBwb2ludGVyDQo+PiA+PiArICovDQo+PiA+PiArc3RydWN0IGNkbnMzIHsNCj4+ID4+ICsg ICAgc3RydWN0IGRldmljZSAgICAgICAgICAgICAgICAgICAqZGV2Ow0KPj4gPj4gKyAgICB2b2lk IF9faW9tZW0gICAgICAgICAgICAgICAgICAgICp4aGNpX3JlZ3M7DQo+PiA+PiArICAgIHN0cnVj dCByZXNvdXJjZSAgICAgICAgICAgICAgICAgKnhoY2lfcmVzOw0KPj4gPj4gKyAgICBzdHJ1Y3Qg Y2RuczNfdXNiX3JlZ3MgX19pb21lbSAgICpkZXZfcmVnczsNCj4+ID4+ICsgICAgc3RydWN0IGNk bnMzX290Z19yZWdzICAgICAgICAgICAqb3RnX3JlZ3M7DQo+PiA+PiArICAgIGludCBpcnE7DQo+ PiA+PiArICAgIHN0cnVjdCBjZG5zM19yb2xlX2RyaXZlciAgICAgICAgKnJvbGVzW0NETlMzX1JP TEVfRU5EXTsNCj4+ID4+ICsgICAgZW51bSBjZG5zM19yb2xlcyAgICAgICAgICAgICAgICByb2xl Ow0KPj4gPj4gKyAgICBzdHJ1Y3QgZGV2aWNlICAgICAgICAgICAgICAgICAgICpob3N0X2RldjsN Cj4+ID4+ICsgICAgc3RydWN0IGRldmljZSAgICAgICAgICAgICAgICAgICAqZ2FkZ2V0X2RldjsN Cj4+ID4+ICsgICAgc3RydWN0IHBoeSAgICAgICAgICAgICAgICAgICAgICAqcGh5Ow0KPj4gPj4g KyAgICBzdHJ1Y3Qgd29ya19zdHJ1Y3QgICAgICAgICAgICAgIHJvbGVfc3dpdGNoX3dxOw0KPj4g Pj4gKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2xwbToxOw0KPj4gPj4g KyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdha2V1cF9pbnQ6MTsNCj4+ID4+ ICsgICAgLyogbXV0ZXh0IHVzZWQgaW4gd29ya3F1ZXVlKi8NCj4+ID4+ICsgICAgc3RydWN0IG11 dGV4ICAgICAgICAgICAgICAgICAgICBtdXRleDsNCj4+ID4+ICsgICAgZW51bSB1c2JfZHJfbW9k ZSAgICAgICAgICAgICAgICBkcl9tb2RlOw0KPj4gPj4gKyAgICBlbnVtIHVzYl9kcl9tb2RlICAg ICAgICAgICAgICAgIGN1cnJlbnRfZHJfbW9kZTsNCj4+ID4+ICsgICAgZW51bSB1c2JfZHJfbW9k ZSAgICAgICAgICAgICAgICBkZXNpcmVkX2RyX21vZGU7DQo+PiA+PiArICAgIHN0cnVjdCBkZW50 cnkgICAgICAgICAgICAgICAgICAgKnJvb3Q7DQo+PiA+PiArfTsNCj4+ID4+ICsNCj4+ID4+ICsj ZW5kaWYgLyogX19MSU5VWF9DRE5TM19DT1JFX0ggKi8NCj4+ID4+DQo+PiA+DQo+PiA+Y2hlZXJz LA0KPj4gPi1yb2dlcg0KPj4gPi0tDQo+PiA+VGV4YXMgSW5zdHJ1bWVudHMgRmlubGFuZCBPeSwg UG9ya2thbGFua2F0dSAyMiwgMDAxODAgSGVsc2lua2kuDQo+PiA+WS10dW5udXMvQnVzaW5lc3Mg SUQ6IDA2MTU1MjEtNC4gS290aXBhaWtrYS9Eb21pY2lsZTogSGVsc2lua2kNCj4+DQo+PiBUaGFu ayBmb3IgYWxsIHlvdXIgY29tbWVudHMsDQo+PiBDaGVlcnMsDQo+PiBQYXdlbA0K