From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5AD23C04EB9 for ; Wed, 5 Dec 2018 19:25:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 008B6208E7 for ; Wed, 5 Dec 2018 19:25:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=cadence.com header.i=@cadence.com header.b="Nl/KceN/"; dkim=pass (1024-bit key) header.d=cadence.com header.i=@cadence.com header.b="R/jSpMLl" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 008B6208E7 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=cadence.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728276AbeLETZX (ORCPT ); Wed, 5 Dec 2018 14:25:23 -0500 Received: from mx0b-0014ca01.pphosted.com ([208.86.201.193]:43388 "EHLO mx0a-0014ca01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727257AbeLETZX (ORCPT ); Wed, 5 Dec 2018 14:25:23 -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 wB5JJgnt020471; Wed, 5 Dec 2018 11:25:04 -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=RKKTB8tbwPiDKNCoJoDC2QCkgvf1WwFdy8iyoOgg3C0=; b=Nl/KceN/cEWCz+Fe8F68QSsVyH6QRH3t6Z3f7a95NKIefMVkboeLquQ0bn2kzjEDXIYw WmZ6YYkN53YbHEO9auOVAMSZM+kiR5wVybubb32n199c8KxenvO1+KaYu0kfYREyGJ+Y PT8jF6CmZ3EUEpnro+XMcYtaWKk5dgvOEzkX6lB+H0BraxfJxBXixap656gMYCL5aldp yxV213yLvOrHsHQdKE003pulFG0vkDH/8erlX7HfQwO0tBDj7fpq0wpEv85hmZBadVAn cwBUPq+op3N9AxgW/TGFHukdDtXOFjbGaFZNkDIHCeIyiJGx69n84uey4MZDON+T6JKE 3A== Authentication-Results: cadence.com; spf=pass smtp.mailfrom=pawell@cadence.com Received: from nam04-sn1-obe.outbound.protection.outlook.com (mail-sn1nam04lp2053.outbound.protection.outlook.com [104.47.44.53]) by mx0b-0014ca01.pphosted.com with ESMTP id 2p3ps31k8m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 05 Dec 2018 11:25:04 -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=RKKTB8tbwPiDKNCoJoDC2QCkgvf1WwFdy8iyoOgg3C0=; b=R/jSpMLlQl7bdMzTrU++ZA0qWfQ1nbUlEmjAUmAQW8PANyRdcIdLU//EdTt61IS1dKQgWrD7PfyJImkFvad5UnPkA251UIZOGO59A9K+03KCNbA9Kl+fiVVRSylWLMPQ7QPQLLjCx4Ntv1U/gzzBgWHC7F7A1ZF2DmxlCRhJ7uw= Received: from BYAPR07MB4709.namprd07.prod.outlook.com (52.135.204.159) by BYAPR07MB4901.namprd07.prod.outlook.com (52.135.205.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.19; Wed, 5 Dec 2018 19:25:00 +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; Wed, 5 Dec 2018 19:25:00 +0000 From: Pawel Laszczak To: Peter Chen , "rogerq@ti.com" CC: "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+37gGkqVdQtkAgBEbpICAAjfCoA== Date: Wed, 5 Dec 2018 19:24:59 +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+PGF0IG5tPSJib2R5LnR4dCIgcD0iYzpcdXNlcnNccGF3ZWxsXGFwcGRhdGFccm9hbWluZ1wwOWQ4NDliNi0zMmQzLTRhNDAtODVlZS02Yjg0YmEyOWUzNWJcbXNnc1xtc2ctNzMxMzIyNWItZjhjMy0xMWU4LTg3MjYtMWM0ZDcwMWRmYmE0XGFtZS10ZXN0XDczMTMyMjVjLWY4YzMtMTFlOC04NzI2LTFjNGQ3MDFkZmJhNGJvZHkudHh0IiBzej0iMjM5MDEiIHQ9IjEzMTg4NTExNDk3OTEzNzY4OSIgaD0iNFNHQk1xajI5MlBXOEk5ZU51c0hoUEJnM2JRPSIgaWQ9IiIgYmw9IjAiIGJvPSIxIi8+PC9tZXRhPg== x-dg-rorf: x-originating-ip: [185.217.253.59] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;BYAPR07MB4901;20:TYCJwfH2N249381zBorI23VY+qNihk73DSE3yspQuHaanakbbFTsFhDrbJywXTwCPyHlD3WyfMvBRVO4AvBbxf0ZOIXDVbPPDehV+Moz4MNrt5ahr2DH3gm7hzuTwdrqsnYMsJEmyq7VZl41ZRv+LXv2QEF0uMWBKDZCj4SYu0ydLcoxT8f6KvDzvMrmXH4rJrkalsY4H4kv/H8xysJ4O3Ore9kO3MdZt/24OVyrZd/uBAdSFAogcBy+egpFAkuD x-ms-office365-filtering-correlation-id: b6c42381-c686-449b-7bab-08d65ae75967 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020);SRVR:BYAPR07MB4901; x-ms-traffictypediagnostic: BYAPR07MB4901: 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)(3231455)(999002)(944501520)(52105112)(3002001)(93006095)(93001095)(10201501046)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(20161123562045)(201708071742011)(7699051)(76991095);SRVR:BYAPR07MB4901;BCL:0;PCL:0;RULEID:;SRVR:BYAPR07MB4901; x-forefront-prvs: 08770259B4 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(39860400002)(376002)(346002)(396003)(366004)(36092001)(199004)(189003)(39060400002)(7736002)(107886003)(4744004)(4326008)(305945005)(486006)(71190400001)(71200400001)(217873002)(6246003)(105586002)(106356001)(68736007)(7416002)(11346002)(2501003)(476003)(446003)(86362001)(256004)(5660300001)(14444005)(99286004)(6116002)(7696005)(6436002)(3846002)(97736004)(186003)(102836004)(54906003)(6506007)(25786009)(478600001)(76176011)(9686003)(8936002)(81166006)(81156014)(8676002)(26005)(110136005)(53936002)(66066001)(53946003)(55016002)(229853002)(74316002)(2906002)(93886005)(14454004)(33656002)(316002)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:BYAPR07MB4901;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: eauQMOhJxSknhY2pX+zBFeRGEoAjQwH/lrUKbZrx/CuUlDd/nHUu9w4qrd51VBWy00xrs78m1XCcmfp/JFoiF1whseW+FG4SMhPSZ2mnB+a8NKvtzZh1+wrNIfmnLa/6A0uS2U2Uq2KYz2DEMqRl5YhYSjTlDUp7eWMjLmvLWzrkfNKw17aWlz9dzInqtJcvGS84UK8i9H2wazIufxX6bOONvvtzlYRwBnHt9AJrgKT4hz5MzEguDEC1RLVln0NRP/umaTLEQ36w0qup9OnAAfWOt7c87kUr65GbPmHkgWbCG7RGHlSkLRWDtYBkI5LIZSmwCAVNA7yuTcgS2YSd4rbFOdSrTf71T7gIUOVo8N8= 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: b6c42381-c686-449b-7bab-08d65ae75967 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Dec 2018 19:25:00.0841 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d36035c5-6ce6-4662-a3dc-e762e61ae4c9 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4901 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-05_08:,, 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-1812050169 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkNCg0KKyBUb21law0KDQo+PiA+ICsgKiBDYWRlbmNlIFVTQlNTIERSRCBEcml2ZXIuDQo+PiA+ ICsgKg0KPj4gPiArICogQ29weXJpZ2h0IChDKSAyMDE4IENhZGVuY2UuDQo+PiA+ICsgKg0KPj4g PiArICogQXV0aG9yOiBQZXRlciBDaGVuIDxwZXRlci5jaGVuQG54cC5jb20+DQo+PiA+ICsgKiAg ICAgICAgIFBhd2VsIExhc3pjemFrIDxwYXdlbGxAY2FkZW5jZS5jb20+DQo+PiA+ICsgKi8NCj4+ ID4gKw0KPj4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPj4gPiArI2luY2x1ZGUgPGxp bnV4L2tlcm5lbC5oPg0KPj4gPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0K Pj4gPiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KPj4gPiArI2luY2x1ZGUgPGxpbnV4 L2lvLmg+DQo+PiA+ICsjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPg0KPj4gPiArDQo+PiA+ ICsjaW5jbHVkZSAiZ2FkZ2V0LmgiDQo+PiA+ICsjaW5jbHVkZSAiY29yZS5oIg0KPj4gPiArDQo+ PiA+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBjZG5zM19yb2xlX2RyaXZlciAqY2RuczNfZ2V0X2N1 cnJlbnRfcm9sZV9kcml2ZXIoc3RydWN0IGNkbnMzICpjZG5zKQ0KPj4gPiArew0KPj4gPiArICAg ICBXQVJOX09OKGNkbnMtPnJvbGUgPj0gQ0ROUzNfUk9MRV9FTkQgfHwgIWNkbnMtPnJvbGVzW2Nk bnMtPnJvbGVdKTsNCj4+ID4gKyAgICAgcmV0dXJuIGNkbnMtPnJvbGVzW2NkbnMtPnJvbGVdOw0K Pj4gPiArfQ0KPj4gPiArDQo+PiA+ICtzdGF0aWMgaW5saW5lIGludCBjZG5zM19yb2xlX3N0YXJ0 KHN0cnVjdCBjZG5zMyAqY2RucywgZW51bSBjZG5zM19yb2xlcyByb2xlKQ0KPj4gPiArew0KPj4g PiArICAgICBpbnQgcmV0Ow0KPj4gPiArDQo+PiA+ICsgICAgIGlmIChyb2xlID49IENETlMzX1JP TEVfRU5EKQ0KPj4NCj4+IFdBUk5fT04oKT8NCj4+DQo+PiA+ICsgICAgICAgICAgICAgcmV0dXJu IDA7DQo+PiA+ICsNCj4+ID4gKyAgICAgaWYgKCFjZG5zLT5yb2xlc1tyb2xlXSkNCj4+ID4gKyAg ICAgICAgICAgICByZXR1cm4gLUVOWElPOw0KPj4gPiArDQo+PiA+ICsgICAgIG11dGV4X2xvY2so JmNkbnMtPm11dGV4KTsNCj4+ID4gKyAgICAgY2Rucy0+cm9sZSA9IHJvbGU7DQo+PiA+ICsgICAg IHJldCA9IGNkbnMtPnJvbGVzW3JvbGVdLT5zdGFydChjZG5zKTsNCj4+ID4gKyAgICAgbXV0ZXhf dW5sb2NrKCZjZG5zLT5tdXRleCk7DQo+PiA+ICsgICAgIHJldHVybiByZXQ7DQo+PiA+ICt9DQo+ PiA+ICsNCj4+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCBjZG5zM19yb2xlX3N0b3Aoc3RydWN0IGNk bnMzICpjZG5zKQ0KPj4gPiArew0KPj4gPiArICAgICBlbnVtIGNkbnMzX3JvbGVzIHJvbGUgPSBj ZG5zLT5yb2xlOw0KPj4gPiArDQo+PiA+ICsgICAgIGlmIChyb2xlID09IENETlMzX1JPTEVfRU5E KQ0KPj4NCj4+IFdBUk5fT04ocm9sZSA+PSBDTkRTM19ST0xFX0VORCkgPw0KPj4NCj4+ID4gKyAg ICAgICAgICAgICByZXR1cm47DQo+PiA+ICsNCj4+ID4gKyAgICAgbXV0ZXhfbG9jaygmY2Rucy0+ bXV0ZXgpOw0KPj4gPiArICAgICBjZG5zLT5yb2xlc1tyb2xlXS0+c3RvcChjZG5zKTsNCj4+ID4g KyAgICAgY2Rucy0+cm9sZSA9IENETlMzX1JPTEVfRU5EOw0KPj4NCj4+IFdoeSBjaGFuZ2UgdGhl IHJvbGUgaGVyZT8gWW91IGFyZSBqdXN0IHN0b3BwaW5nIHRoZSByb2xlIG5vdCBjaGFuZ2luZyBp dC4NCj4+IEkgdGhpbmsgY2Rucy0+cm9sZSBzaG91bGQgcmVtYWluIHVuY2hhbmdlZCwgc28gd2Ug Y2FuIGNhbGwgY2RuczNfcm9sZV9zdGFydCgpDQo+PiBpZiByZXF1aXJlZCB3aXRob3V0IGVycm9y Lg0KPj4NCj4NCj5UaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoaXMgSVAgaGFzIHNvbWUgaXNzdWVz IHRvIGRldGVjdCB2YnVzIHN0YXR1cyBjb3JyZWN0bHksDQo+d2UgaGF2ZSB0byBmb3JjZSB2YnVz IHN0YXR1cyBhY2NvcmRpbmdseSwgc28gd2UgbmVlZCBhIHN0YXR1cyB0byBpbmRpY2F0ZQ0KPnZi dXMgZGlzY29ubmVjdGlvbiwgYW5kIGFkZCBzb21lIGNvZGUgdG8gbGV0IGNvbnRyb2xsZXIga25v dyB2YnVzDQo+cmVtb3ZhbCwgaW4gdGhhdCBjYXNlLCB0aGUgY29udHJvbGxlcidzIHN0YXRlIG1h Y2hpbmUgY2FuIGJlIGNvcnJlY3QuDQo+U28sIHdlIGluY3JlYXNlIG9uZSByb2xlICdDRE5TM19S T0xFX0VORCcgdG8gZm9yIHRoaXMgcHVycG9zZS4NCj4NCj5DRE5TM19ST0xFX0dBREdFVDogZ2Fk Z2V0IG1vZGUgYW5kIFZCVVMgb24NCj5DRE5TM19ST0xFX0hPU1Q6IGhvc3QgbW9kZSBhbmQgVkJV UyBvbg0KPkNETlMzX1JPTEVfRU5EOiBWQlVTIG9mZiwgZWcgZWl0aGVyIGhvc3Qgb3IgZGV2aWNl IGNhYmxlIG9uIHRoZSBwb3J0Lg0KDQo+DQo+U28sIHdlIG1heSBzdGFydCByb2xlIGZyb20gQ0RO UzNfUk9MRV9FTkQgYXQgcHJvYmUgd2hlbiBub3RoaW5nIGlzIGNvbm5lY3RlZCwNCj5hbmQgbmVl ZCB0byBzZXQgcm9sZSBhcyBDRE5TM19ST0xFX0VORCBhdCAtPnN0b3AgZm9yIGZ1cnRoZXIgaGFu ZGxpbmcgYXQNCj5yb2xlIHN3aXRjaCByb3V0aW5lLg0KPg0KPj4gPiArICAgICBtdXRleF91bmxv Y2soJmNkbnMtPm11dGV4KTsNCj4+ID4gK30NCj4+ID4gKw0KPj4gPiArc3RhdGljIGVudW0gY2Ru czNfcm9sZXMgY2RuczNfZ2V0X3JvbGUoc3RydWN0IGNkbnMzICpjZG5zKQ0KPj4gPiArew0KPj4g PiArICAgICBpZiAoY2Rucy0+cm9sZXNbQ0ROUzNfUk9MRV9IT1NUXSAmJiBjZG5zLT5yb2xlc1tD RE5TM19ST0xFX0dBREdFVF0pIHsNCj4+ID4gKyAgICAgICAgICAgICAvL1RPRE86IGltcGxlbWVu dHMgc2VsZWN0aW5nIGRldmljZS9ob3N0IG1vZGUNCj4+ID4gKyAgICAgICAgICAgICByZXR1cm4g Q0ROUzNfUk9MRV9IT1NUOw0KPj4gPiArICAgICB9DQo+PiA+ICsgICAgIHJldHVybiBjZG5zLT5y b2xlc1tDRE5TM19ST0xFX0hPU1RdDQo+PiA+ICsgICAgICAgICAgICAgPyBDRE5TM19ST0xFX0hP U1QNCj4+ID4gKyAgICAgICAgICAgICA6IENETlMzX1JPTEVfR0FER0VUOw0KPj4NCj4+IFdoeSBu b3QganVzdA0KPj4gICAgICAgICByZXR1cm4gY2Rucy0+cm9sZTsNCj4+DQo+PiBJJ20gd29uZGVy aW5nIGlmIHdlIHJlYWxseSBuZWVkIHRoaXMgZnVuY3Rpb24uDQo+DQo+Y2Rucy0+cm9sZSBnZXRz IGZyb20gY2RuczNfZ2V0X3JvbGUsIGFuZCB0aGlzIEFQSSB0ZWxscyByb2xlIGF0IHRoZSBydW50 aW1lLg0KPklmIGJvdGggcm9sZXMgYXJlIHN1cHBvcnRlZCwgdGhlIHJvbGUgaXMgZGVjaWRlZCBi eSBleHRlcm5hbA0KPmNvbmRpdGlvbnMsIGVnLCB2YnVzL2lkDQo+b3IgZXh0ZXJuYWwgY29ubmVj dG9yLiBJZiBvbmx5IHNpbmdsZSByb2xlIGlzIHN1cHBvcnRlZCwgb25seSBvbmUgcm9sZSBzdHJ1 Y3R1cmUNCj5pcyBhbGxvY2F0ZWQsIGNkbnMtPnJvbGVzW0NETlMzX1JPTEVfSE9TVF0gb3IgY2Ru cy0+cm9sZXNbQ0ROUzNfUk9MRV9HQURHRVRdDQo+DQo+PiA+ICt9DQo+Pg0KPj4gPiArDQo+PiA+ ICsvKioNCj4+ID4gKyAqIGNkbnMzX2NvcmVfaW5pdF9yb2xlIC0gaW5pdGlhbGl6ZSByb2xlIG9m IG9wZXJhdGlvbg0KPj4gPiArICogQGNkbnM6IFBvaW50ZXIgdG8gY2RuczMgc3RydWN0dXJlDQo+ PiA+ICsgKg0KPj4gPiArICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3RoZXJ3aXNlIG5lZ2F0aXZl IGVycm5vDQo+PiA+ICsgKi8NCj4+ID4gK3N0YXRpYyBpbnQgY2RuczNfY29yZV9pbml0X3JvbGUo c3RydWN0IGNkbnMzICpjZG5zKQ0KPj4gPiArew0KPj4gPiArICAgICBzdHJ1Y3QgZGV2aWNlICpk ZXYgPSBjZG5zLT5kZXY7DQo+PiA+ICsgICAgIGVudW0gdXNiX2RyX21vZGUgZHJfbW9kZTsNCj4+ ID4gKw0KPj4gPiArICAgICBkcl9tb2RlID0gdXNiX2dldF9kcl9tb2RlKGRldik7DQo+PiA+ICsg ICAgIGNkbnMtPnJvbGUgPSBDRE5TM19ST0xFX0VORDsNCj4+ID4gKw0KPj4gPiArICAgICAvKg0K Pj4gPiArICAgICAgKiBJZiBkcml2ZXIgY2FuJ3QgcmVhZCBtb2RlIGJ5IG1lYW5zIG9mIHVzYl9n ZXRfZHJfbWRvZSBmdW5jdGlvbiB0aGVuDQo+PiA+ICsgICAgICAqIGNob29zZXMgbW9kZSBhY2Nv cmRpbmcgd2l0aCBLZXJuZWwgY29uZmlndXJhdGlvbi4gVGhpcyBzZXR0aW5nDQo+PiA+ICsgICAg ICAqIGNhbiBiZSByZXN0cmljdGVkIGxhdGVyIGRlcGVuZGluZyBvbiBzdHJhcCBwaW4gY29uZmln dXJhdGlvbi4NCj4+ID4gKyAgICAgICovDQo+PiA+ICsgICAgIGlmIChkcl9tb2RlID09IFVTQl9E Ul9NT0RFX1VOS05PV04pIHsNCj4+ID4gKyAgICAgICAgICAgICBpZiAoSVNfRU5BQkxFRChDT05G SUdfVVNCX0NETlMzX0hPU1QpICYmDQo+PiA+ICsgICAgICAgICAgICAgICAgIElTX0VOQUJMRUQo Q09ORklHX1VTQl9DRE5TM19HQURHRVQpKQ0KPj4gPiArICAgICAgICAgICAgICAgICAgICAgZHJf bW9kZSA9IFVTQl9EUl9NT0RFX09URzsNCj4+ID4gKyAgICAgICAgICAgICBlbHNlIGlmIChJU19F TkFCTEVEKENPTkZJR19VU0JfQ0ROUzNfSE9TVCkpDQo+PiA+ICsgICAgICAgICAgICAgICAgICAg ICBkcl9tb2RlID0gVVNCX0RSX01PREVfSE9TVDsNCj4+ID4gKyAgICAgICAgICAgICBlbHNlIGlm IChJU19FTkFCTEVEKENPTkZJR19VU0JfQ0ROUzNfR0FER0VUKSkNCj4+ID4gKyAgICAgICAgICAg ICAgICAgICAgIGRyX21vZGUgPSBVU0JfRFJfTU9ERV9QRVJJUEhFUkFMOw0KPj4gPiArICAgICB9 DQo+PiA+ICsNCj4+ID4gKyAgICAgaWYgKGRyX21vZGUgPT0gVVNCX0RSX01PREVfT1RHIHx8IGRy X21vZGUgPT0gVVNCX0RSX01PREVfSE9TVCkgew0KPj4gPiArICAgICAgICAgICAgIC8vVE9ETzog aW1wbGVtZW50cyBob3N0IGluaXRpYWxpemF0aW9uDQo+Pg0KPj4gICAgICAgICAgICAgICAgIC8q IFRPRE86IEFkZCBob3N0IHJvbGUgKi8gPw0KPj4NCj4+ID4gKyAgICAgfQ0KPj4gPiArDQo+PiA+ ICsgICAgIGlmIChkcl9tb2RlID09IFVTQl9EUl9NT0RFX09URyB8fCBkcl9tb2RlID09IFVTQl9E Ul9NT0RFX1BFUklQSEVSQUwpIHsNCj4+ID4gKyAgICAgICAgICAgICAvL1RPRE86IGltcGxlbWVu dHMgZGV2aWNlIGluaXRpYWxpemF0aW9uDQo+Pg0KPj4gICAgICAgICAgICAgICAgIC8qIFRPRE86 IEFkZCBkZXZpY2Ugcm9sZSAqLyA/DQo+Pg0KPg0KPlllcywgaXQgbmVlZHMgdG8gYWxsb2NhdGUg Y2Rucy0+cm9sZXNbQ0ROUzNfUk9MRV9IT1NUXSBhbmQNCj5jZG5zLT5yb2xlc1tDRE5TM19ST0xF X0dBREdFVF0uDQo+DQo+PiA+ICsgICAgIH0NCj4+ID4gKw0KPj4gPiArICAgICBpZiAoIWNkbnMt PnJvbGVzW0NETlMzX1JPTEVfSE9TVF0gJiYgIWNkbnMtPnJvbGVzW0NETlMzX1JPTEVfR0FER0VU XSkgew0KPj4gPiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAibm8gc3VwcG9ydGVkIHJvbGVz XG4iKTsNCj4+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVOT0RFVjsNCj4+ID4gKyAgICAgfQ0K Pj4gPiArDQo+PiA+ICsgICAgIGNkbnMtPmRyX21vZGUgPSBkcl9tb2RlOw0KPg0KPlBhd2VsLCB3 aHkgZHJfbW9kZSBuZWVkcyB0byBiZSBpbnRyb2R1Y2VkPw0KDQpjZG5zLT5kcl9tb2RlIC0gaXQn cyB0aGUgbW9kZSBkZXBlbmRpbmcgb24gY29uZmlndXJhdGlvbi4gDQpXZSBoYXZlIGRldmljZSB0 cmVlIGZyb20gd2hpY2ggd2UgY2FuIHJlYWQgZHJfbW9kZS4gSXQgY2FuIGJlIEhvc3QsIERldmlj ZSBvciBPVEcgLSB0aGUgbWF4aW11bSBpcyBPVEcuDQpBZGRpdGlvbmFsbHkgd2UgaGF2ZSAgc3Ry YXAgcGluIHRoYXQgYWxsb3cgdG8gZm9yY2Ugc2VsZWN0ZWQgbW9kZS4gDQpBZGRpdGlvbmFsbHkg bW9kZSBjYW4gYmUgbGltaXRlZCBieSBrZXJuZWwgY29uZmlndXJhdGlvbi4gDQoNClNvLCBJIGFz c3VtZSB0aGF0IGNvbnRyb2xsZXIgY2FuIHN1cHBvcnQgT1RHIChIT1NUK0RFVklDRSkgLCBidXQg aXQgY2FuIGJlIHJlc3RyaWN0ZWQgYnkga2VybmVsIGNvbmZpZ3VyYXRpb24sIHN0cmFwIHBpbiBv ciBEVFMgKGRyX21vZGUgcHJvcGVydHkpLiANCg0KV2hlbiB0aGlzIGNvbmZpZ3VyYXRpb24gaXMg cmVzdHJpY3RlZCBieSBvbmUgb2YgdGhlc2UgdGhlbiBpZiBkcl9tb2RlIGlzIDoNCkhvc3QgLSB3 ZSBzaW1wbHkgbG9hZCBYSENJIGRyaXZlcg0KRGV2aWNlICAtIHdlIHN0YXJ0IERldmljZSBwYXJ0 DQpPVEcgLSB3ZSBiYXNlZCBvbiBJRCBwaW4NCg0KRWcuIA0KQ29udHJvbGxlciBzdXBwb3J0IE9U RyBtb2RlIGJ1dCBTVFJBUCAgaXMgc2V0IHRvIEhvc3Qgb25seSB0aGVuICBkcl9tb2RlIGlzIHNl dCB0byAgaG9zdA0KQ29udHJvbGxlciBzdXBwb3J0IE9URyBtb2RlIGJ1dCBTVFJBUCAgaXMgc2V0 IHRvIERldmljZSBvbmx5IHRoZW4gIGRyX21vZGUgaXMgc2V0ICB0byBkZXZpY2UgDQpDb250cm9s bGVyIHN1cHBvcnQgT1RHIG1vZGUgYW5kIFNUUkFQICBpcyBzZXQgdG8gT1RHIHRoZW4gIGRyX21v ZGUgaXMgc2V0ICB0byBPVEcgYW5kICBpdCBjYW4gc3VwcG9ydCBEZXZpY2Ugb25seSwgSG9zdCBv bmx5IG9yIE9URyBtb2RlLg0KDQpBZGRpdGlvbmFsbHkgSSdtIGludHJvZHVjZSBkcl9tb2RlIHRo YXQgY2FuIGJlIGNoYW5nZWQgZnJvbSB1c2VyIHNwYWNlLiBJdCBjYW4gdXNlIGZvciB0ZXN0aW5n IHB1cnBvc2UuIA0KU28gZXZlbiBkcl9tb2RlICA9IE9URyB0aGVuIHdlIGNhbiBmb3JjZSBzd2l0 Y2hpbmcgcm9sZSBmcm9tIHVzZXIgc3BhY2UuIA0KDQpJJ20gdXNpbmcgaXQgZm9yIHRlc3Rpbmcu IA0KDQpTbyBhZGRpdGlvbmFsbHkgaW4gY2RuczMgb2JqZWN0IHdlIGhhdmUgZGVzaXJlZF9kcl9t b2RlIGFuZCBjdXJyZW50X2RyX21vZGUuIA0KDQo+DQo+PiA+ICsgICAgIHJldHVybiAwOw0KPj4g PiArfQ0KPj4gPiArDQo+PiA+ICsvKioNCj4+ID4gKyAqIGNkbnMzX2lycSAtIGludGVycnVwdCBo YW5kbGVyIGZvciBjZG5zMyBjb3JlIGRldmljZQ0KPj4gPiArICoNCj4+ID4gKyAqIEBpcnE6IGly cSBudW1iZXIgZm9yIGNkbnMzIGNvcmUgZGV2aWNlDQo+PiA+ICsgKiBAZGF0YTogc3RydWN0dXJl IG9mIGNkbnMzDQo+PiA+ICsgKg0KPj4gPiArICogUmV0dXJucyBJUlFfSEFORExFRCBvciBJUlFf Tk9ORQ0KPj4gPiArICovDQo+PiA+ICtzdGF0aWMgaXJxcmV0dXJuX3QgY2RuczNfaXJxKGludCBp cnEsIHZvaWQgKmRhdGEpDQo+PiA+ICt7DQo+PiA+ICsgICAgIHN0cnVjdCBjZG5zMyAqY2RucyA9 IGRhdGE7DQo+PiA+ICsgICAgIGlycXJldHVybl90IHJldCA9IElSUV9OT05FOw0KPj4gPiArDQo+ PiA+ICsgICAgIC8qIEhhbmRsZSBkZXZpY2UvaG9zdCBpbnRlcnJ1cHQgKi8NCj4+ID4gKyAgICAg aWYgKGNkbnMtPnJvbGUgIT0gQ0ROUzNfUk9MRV9FTkQpDQo+Pg0KPj4gSXMgaXQgYmVjYXVzZSBv ZiB0aGlzIHRoYXQgeW91IG5lZWQgdG8gc2V0IHJvbGUgdG8gRU5EIGF0IHJvbGVfc3RvcD8NCj4+ IEkgdGhpbmsgaXQgaXMgYmV0dGVyIHRvIGFkZCBhIHN0YXRlIHZhcmlhYmxlIHRvIHN0cnVjdCBj ZG5zM19yb2xlX2RyaXZlciwgc28gd2UgY2FuDQo+PiBjaGVjayBpZiBpdCBpcyBhY3RpdmUgb3Ig c3RvcHBlZC4NCj4+DQo+PiBlLmcuDQo+PiAgICAgICAgIGlmIChjZG5zM19nZXRfY3VycmVudF9y b2xlX2RyaXZlcihjZG5zKS0+c3RhdGUgPT0gQ0ROUzNfUk9MRV9TVEFURV9BQ1RJVkUpDQo+Pg0K Pj4gPiArICAgICAgICAgICAgIHJldCA9IGNkbnMzX2dldF9jdXJyZW50X3JvbGVfZHJpdmVyKGNk bnMpLT5pcnEoY2Rucyk7DQo+PiA+ICsNCj4+ID4gKyAgICAgcmV0dXJuIHJldDsNCj4+ID4gK30N Cj4+ID4gKw0KPg0KPiBDRE5TM19ST0xFX0VORCBpcyBpbnRyb2R1Y2VkIGZyb20gYWJvdmUgY29t bWVudHMsIHdlIGRvbid0DQo+bmVlZCBhbm90aGVyIGZsYWcgZm9yIGl0Lg0KPklmIGNkbnMtPnJv bGUgPT0gQ0ROUzNfUk9MRV9FTkQsIGl0IGhhbmRsZXMgVkJVUyBhbmQgSUQgaW50ZXJydXB0Lg0K Pg0KPj4gPiArc3RhdGljIHZvaWQgY2RuczNfcmVtb3ZlX3JvbGVzKHN0cnVjdCBjZG5zMyAqY2Ru cykNCj4+DQo+PiBTaG91bGQgdGhpcyBiZSBjYWxsZWQgY2RuczNfZXhpdF9yb2xlcygpIHRvIGJl IG9wcG9zaXRlIG9mIGNkbnMzX2luaXRfcm9sZXMoKT8NCj4+DQo+DQo+SXQgaXMgcGxhbmVkIHRv IGNhbGxlZCB3aGVuIGF0IC0+cmVtb3ZlLg0KPj4gPiArew0KPj4gPiArICAgICAvL1RPRE86IGlt cGxlbWVudHMgdGhpcyBmdW5jdGlvbg0KPj4gPiArfQ0KPj4NCj4+ID4gKw0KPj4gPiArc3RhdGlj IGludCBjZG5zM19kb19yb2xlX3N3aXRjaChzdHJ1Y3QgY2RuczMgKmNkbnMsIGVudW0gY2RuczNf cm9sZXMgcm9sZSkNCj4+ID4gK3sNCj4+ID4gKyAgICAgZW51bSBjZG5zM19yb2xlcyBjdXJyZW50 X3JvbGU7DQo+PiA+ICsgICAgIGludCByZXQgPSAwOw0KPj4gPiArDQo+PiA+ICsgICAgIGN1cnJl bnRfcm9sZSA9IGNkbnMtPnJvbGU7DQo+PiA+ICsNCj4+ID4gKyAgICAgaWYgKHJvbGUgPT0gQ0RO UzNfUk9MRV9FTkQpDQo+PiA+ICsgICAgICAgICAgICAgcmV0dXJuIDA7DQo+Pg0KPj4gcm9sZSA9 PSBFTkQgbG9va3MgbGlrZSBlcnJvciBzdGF0ZS4gYW5kIGl0IHNob3VsZCBuZXZlciBoYXBwZW4u DQo+PiBXQVJOIGhlcmU/DQo+Pg0KPg0KPlNlZSBteSBjb21tZW50cyBhYm92ZS4NCj4NCj4+ID4g Kw0KPj4gPiArICAgICBkZXZfZGJnKGNkbnMtPmRldiwgIlN3aXRjaGluZyByb2xlIik7DQo+PiA+ ICsNCj4+DQo+PiBEb24ndCB5b3UgaGF2ZSB0byBzdG9wIHRoZSBwcmV2aW91cyByb2xlIGJlZm9y ZSBzdGFydGluZyB0aGUgbmV3IHJvbGU/DQo+Pg0KPg0KPlllcywgaXQgaXMgbmVlZGVkLiBQYXdl bCBtYXkgc2ltcGx5IHNvbWUgZmxvd3MgdG8gc3VpdCBoaXMgcGxhdGZvcm0uDQoNCj4NCj4+ID4g KyAgICAgcmV0ID0gY2RuczNfcm9sZV9zdGFydChjZG5zLCByb2xlKTsNCj4+ID4gKyAgICAgaWYg KHJldCkgew0KPj4gPiArICAgICAgICAgICAgIC8qIEJhY2sgdG8gY3VycmVudCByb2xlICovDQo+ PiA+ICsgICAgICAgICAgICAgZGV2X2VycihjZG5zLT5kZXYsICJzZXQgJWQgaGFzIGZhaWxlZCwg YmFjayB0byAlZFxuIiwNCj4+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJvbGUsIGN1cnJlbnRf cm9sZSk7DQo+PiA+ICsgICAgICAgICAgICAgcmV0ID0gY2RuczNfcm9sZV9zdGFydChjZG5zLCBj dXJyZW50X3JvbGUpOw0KPj4gPiArICAgICB9DQo+PiA+ICsNCj4+ID4gKyAgICAgcmV0dXJuIHJl dDsNCj4+ID4gK30NCj4+ID4gKw0KPj4gPiArLyoqDQo+PiA+ICsgKiBjZG5zM19yb2xlX3N3aXRj aCAtIHdvcmsgcXVldWUgaGFuZGxlciBmb3Igcm9sZSBzd2l0Y2gNCj4+ID4gKyAqDQo+PiA+ICsg KiBAd29yazogd29yayBxdWV1ZSBpdGVtIHN0cnVjdHVyZQ0KPj4gPiArICoNCj4+ID4gKyAqIEhh bmRsZXMgYmVsb3cgZXZlbnRzOg0KPj4gPiArICogLSBSb2xlIHN3aXRjaCBmb3IgZHVhbC1yb2xl IGRldmljZXMNCj4+ID4gKyAqIC0gQ0ROUzNfUk9MRV9HQURHRVQgPC0tPiBDRE5TM19ST0xFX0VO RCBmb3IgcGVyaXBoZXJhbC1vbmx5IGRldmljZXMNCj4+ID4gKyAqLw0KPj4gPiArc3RhdGljIHZv aWQgY2RuczNfcm9sZV9zd2l0Y2goc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KPj4gPiArew0K Pj4gPiArICAgICBlbnVtIGNkbnMzX3JvbGVzIHJvbGUgPSBDRE5TM19ST0xFX0VORDsNCj4+ID4g KyAgICAgc3RydWN0IGNkbnMzICpjZG5zOw0KPj4gPiArICAgICBib29sIGRldmljZSwgaG9zdDsN Cj4+ID4gKw0KPj4gPiArICAgICBjZG5zID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBjZG5z Mywgcm9sZV9zd2l0Y2hfd3EpOw0KPj4gPiArDQo+PiA+ICsgICAgIC8vVE9ETzogaW1wbGVtZW50 cyB0aGlzIGZ1bmN0aW9ucy4NCj4+ID4gKyAgICAgLy9ob3N0ID0gY2RuczNfaXNfaG9zdChjZG5z KTsNCj4+ID4gKyAgICAgLy9kZXZpY2UgPSBjZG5zM19pc19kZXZpY2UoY2Rucyk7DQo+PiA+ICsg ICAgIGhvc3QgPSAxOw0KPj4gPiArICAgICBkZXZpY2UgPSAwOw0KPj4gPiArDQo+PiA+ICsgICAg IGlmIChob3N0KQ0KPj4gPiArICAgICAgICAgICAgIHJvbGUgPSBDRE5TM19ST0xFX0hPU1Q7DQo+ PiA+ICsgICAgIGVsc2UgaWYgKGRldmljZSkNCj4+ID4gKyAgICAgICAgICAgICByb2xlID0gQ0RO UzNfUk9MRV9HQURHRVQ7DQo+PiA+ICsNCj4+ID4gKyAgICAgaWYgKGNkbnMtPmRlc2lyZWRfZHJf bW9kZSA9PSBjZG5zLT5jdXJyZW50X2RyX21vZGUgJiYNCj4+ID4gKyAgICAgICAgIGNkbnMtPnJv bGUgPT0gcm9sZSkNCj4+ID4gKyAgICAgICAgICAgICByZXR1cm47DQo+PiA+ICsNCj4+DQo+PiBJ IHRoaW5rIGFsbCB0aGUgYmVsb3cgY29kZSBjYW4gYmUgbW92ZWQgdG8gY2RuczNfZG9fcm9sZV9z d2l0Y2goKS4NCj4+DQo+PiA+ICsgICAgIHBtX3J1bnRpbWVfZ2V0X3N5bmMoY2Rucy0+ZGV2KTsN Cj4+ID4gKyAgICAgY2RuczNfcm9sZV9zdG9wKGNkbnMpOw0KPj4gPiArDQo+PiA+ICsgICAgIGlm IChob3N0KSB7DQo+PiA+ICsgICAgICAgICAgICAgaWYgKGNkbnMtPnJvbGVzW0NETlMzX1JPTEVf SE9TVF0pDQo+PiA+ICsgICAgICAgICAgICAgICAgICAgICBjZG5zM19kb19yb2xlX3N3aXRjaChj ZG5zLCBDRE5TM19ST0xFX0hPU1QpOw0KPj4gPiArICAgICAgICAgICAgIHBtX3J1bnRpbWVfcHV0 X3N5bmMoY2Rucy0+ZGV2KTsNCj4+ID4gKyAgICAgICAgICAgICByZXR1cm47DQo+PiA+ICsgICAg IH0NCj4+ID4gKw0KPj4gPiArICAgICBpZiAoZGV2aWNlKQ0KPj4gPiArICAgICAgICAgICAgIGNk bnMzX2RvX3JvbGVfc3dpdGNoKGNkbnMsIENETlMzX1JPTEVfR0FER0VUKTsNCj4+ID4gKyAgICAg ZWxzZQ0KPj4gPiArICAgICAgICAgICAgIGNkbnMzX2RvX3JvbGVfc3dpdGNoKGNkbnMsIENETlMz X1JPTEVfRU5EKTsNCj4+ID4gKw0KPj4gPiArICAgICBwbV9ydW50aW1lX3B1dF9zeW5jKGNkbnMt PmRldik7DQo+PiA+ICt9DQo+PiA+ICsNCj4+ID4gKy8qKg0KPj4gPiArICogY2RuczNfcHJvYmUg LSBwcm9iZSBmb3IgY2RuczMgY29yZSBkZXZpY2UNCj4+ID4gKyAqIEBwZGV2OiBQb2ludGVyIHRv IGNkbnMzIGNvcmUgcGxhdGZvcm0gZGV2aWNlDQo+PiA+ICsgKg0KPj4gPiArICogUmV0dXJucyAw IG9uIHN1Y2Nlc3Mgb3RoZXJ3aXNlIG5lZ2F0aXZlIGVycm5vDQo+PiA+ICsgKi8NCj4+ID4gK3N0 YXRpYyBpbnQgY2RuczNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4+ID4g K3sNCj4+ID4gKyAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4+ID4gKyAg ICAgc3RydWN0IHJlc291cmNlICpyZXM7DQo+PiA+ICsgICAgIHN0cnVjdCBjZG5zMyAqY2RuczsN Cj4+ID4gKyAgICAgdm9pZCBfX2lvbWVtICpyZWdzOw0KPj4gPiArICAgICBpbnQgcmV0Ow0KPj4g PiArDQo+PiA+ICsgICAgIGNkbnMgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmNkbnMpLCBH RlBfS0VSTkVMKTsNCj4+ID4gKyAgICAgaWYgKCFjZG5zKQ0KPj4gPiArICAgICAgICAgICAgIHJl dHVybiAtRU5PTUVNOw0KPj4gPiArDQo+PiA+ICsgICAgIGNkbnMtPmRldiA9IGRldjsNCj4+ID4g Kw0KPj4gPiArICAgICBwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBjZG5zKTsNCj4+ID4gKw0K Pj4gPiArICAgICByZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9J UlEsIDApOw0KPj4gPiArICAgICBpZiAoIXJlcykgew0KPj4gPiArICAgICAgICAgICAgIGRldl9l cnIoZGV2LCAibWlzc2luZyBJUlFcbiIpOw0KPj4gPiArICAgICAgICAgICAgIHJldHVybiAtRU5P REVWOw0KPj4gPiArICAgICB9DQo+PiA+ICsgICAgIGNkbnMtPmlycSA9IHJlcy0+c3RhcnQ7DQo+ PiA+ICsNCj4+ID4gKyAgICAgLyoNCj4+ID4gKyAgICAgICogUmVxdWVzdCBtZW1vcnkgcmVnaW9u DQo+PiA+ICsgICAgICAqIHJlZ2lvbi0wOiB4SENJDQo+PiA+ICsgICAgICAqIHJlZ2lvbi0xOiBQ ZXJpcGhlcmFsDQo+PiA+ICsgICAgICAqIHJlZ2lvbi0yOiBPVEcgcmVnaXN0ZXJzDQo+PiA+ICsg ICAgICAqLw0KPj4NCj4+IFRoZSBtZW1vcnkgcmVnaW9uIG9yZGVyIGlzIGRpZmZlcmVudCBmcm9t IHRoZSBkdC1iaW5kaW5nLg0KPj4gVGhlcmUgaXQgaXMgT1RHLCBob3N0KHhoY2kpLCBkZXZpY2Ug KHBlcmlwaGVyYWwpLg0KPj4NCj4+ID4gKyAgICAgcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNl KHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsNCj4+ID4gKyAgICAgcmVncyA9IGRldm1faW9yZW1h cF9yZXNvdXJjZShkZXYsIHJlcyk7DQo+PiA+ICsNCj4+ID4gKyAgICAgaWYgKElTX0VSUihyZWdz KSkNCj4+ID4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihyZWdzKTsNCj4+ID4gKyAgICAg Y2Rucy0+eGhjaV9yZWdzID0gcmVnczsNCj4+ID4gKyAgICAgY2Rucy0+eGhjaV9yZXMgPSByZXM7 DQo+PiA+ICsNCj4+ID4gKyAgICAgcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElP UkVTT1VSQ0VfTUVNLCAxKTsNCj4+ID4gKyAgICAgcmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJj ZShkZXYsIHJlcyk7DQo+PiA+ICsgICAgIGlmIChJU19FUlIocmVncykpDQo+PiA+ICsgICAgICAg ICAgICAgcmV0dXJuIFBUUl9FUlIocmVncyk7DQo+PiA+ICsgICAgIGNkbnMtPmRldl9yZWdzICA9 IHJlZ3M7DQo+PiA+ICsNCj4+ID4gKyAgICAgcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBk ZXYsIElPUkVTT1VSQ0VfTUVNLCAyKTsNCj4+ID4gKyAgICAgcmVncyA9IGRldm1faW9yZW1hcF9y ZXNvdXJjZShkZXYsIHJlcyk7DQo+PiA+ICsgICAgIGlmIChJU19FUlIocmVncykpDQo+PiA+ICsg ICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIocmVncyk7DQo+PiA+ICsgICAgIGNkbnMtPm90Z19y ZWdzID0gcmVnczsNCj4+ID4gKw0KPj4gPiArICAgICBtdXRleF9pbml0KCZjZG5zLT5tdXRleCk7 DQo+PiA+ICsNCj4+ID4gKyAgICAgY2Rucy0+cGh5ID0gZGV2bV9waHlfZ2V0KGRldiwgImNkbnMz LHVzYnBoeSIpOw0KPj4NCj4+ICJjZG5zMyx1c2JwaHkiIGlzIG5vdCBkb2N1bWVudGVkIGluIGR0 LWJpbmRpbmcuDQo+Pg0KPj4gPiArICAgICBpZiAoSVNfRVJSKGNkbnMtPnBoeSkpIHsNCj4+ID4g KyAgICAgICAgICAgICBkZXZfaW5mbyhkZXYsICJubyBnZW5lcmljIHBoeSBmb3VuZFxuIik7DQo+ PiA+ICsgICAgICAgICAgICAgY2Rucy0+cGh5ID0gTlVMTDsNCj4+ID4gKyAgICAgICAgICAgICAv Kg0KPj4gPiArICAgICAgICAgICAgICAqIGZhbGwgdGhyb3VnaCBoZXJlIQ0KPj4gPiArICAgICAg ICAgICAgICAqIGlmIG5vIGdlbmVyaWMgcGh5IGZvdW5kLCBwaHkgaW5pdA0KPj4gPiArICAgICAg ICAgICAgICAqIHNob3VsZCBiZSBkb25lIHVuZGVyIGJvb3QhDQo+PiA+ICsgICAgICAgICAgICAg ICovDQo+Pg0KPj4gTm8geW91IHNob3VsZG4ndCBmYWxsIHRocm91Z2ggYWx3YXlzIGlmIGl0IGlz IGFuIGVycm9yIGNvbmRpdGlvbi4NCj4+IFNvbWV0aGluZyBsaWtlIHRoaXMgc2hvdWxkIHdvcmsg YmV0dGVyLg0KPj4NCj4+ICAgICAgICAgaWYgKElTX0VSUihjbmRzLT5waHkpKSB7DQo+PiAgICAg ICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihjZG5zLT5waHkpOw0KPj4gICAgICAgICAgICAgICAg IGlmIChyZXQgPT0gLUVOT1NZUyB8fCByZXQgPT0gLUVOT0RFVikgew0KPj4gICAgICAgICAgICAg ICAgICAgICAgICAgY2Rucy0+cGh5ID0gTlVMTDsNCj4+ICAgICAgICAgICAgICAgICB9IGVsc2Ug aWYgKHJldCA9PSAtRVBST0JFX0RFRkVSKSB7DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Ow0KPj4gICAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+PiAgICAgICAgICAgICAg ICAgICAgICAgICBkZXZfZXJyKGRldiwgIm5vIHBoeSBmb3VuZFxuIik7DQo+PiAgICAgICAgICAg ICAgICAgICAgICAgICBnb3RvIGVycjA7DQo+PiAgICAgICAgICAgICAgICAgfQ0KPj4gICAgICAg ICB9DQo+Pg0KPj4gU28gaWYgUEhZIHdhcyBwcm92aWRlZCBpbiBEVCwgYW5kIFBIWSBzdXBwb3J0 L2RyaXZlcnMgaXMgcHJlc2VudA0KPj4gYW5kIGVycm9yIGNvbmRpdGlvbiBtZWFucyBzb21ldGhp bmcgaXMgd3JvbmcgYW5kIHdlIGhhdmUgdG8gZXJyb3Igb3V0Lg0KPj4NCj4+ID4gKyAgICAgfSBl bHNlIHsNCj4+ID4gKyAgICAgICAgICAgICBwaHlfaW5pdChjZG5zLT5waHkpOw0KPj4gPiArICAg ICB9DQo+Pg0KPj4gWW91IGNhbiBkbyBwaHlfaW5pdCgpIG91dHNpZGUgdGhlIGVsc2UuDQo+Pg0K Pj4gPiArDQo+PiA+ICsgICAgIHJldCA9IGNkbnMzX2NvcmVfaW5pdF9yb2xlKGNkbnMpOw0KPj4g PiArICAgICBpZiAocmV0KQ0KPj4gPiArICAgICAgICAgICAgIGdvdG8gZXJyMTsNCj4+ID4gKw0K Pj4gPiArICAgICBJTklUX1dPUksoJmNkbnMtPnJvbGVfc3dpdGNoX3dxLCBjZG5zM19yb2xlX3N3 aXRjaCk7DQo+PiA+ICsgICAgIGlmIChyZXQpDQo+PiA+ICsgICAgICAgICAgICAgZ290byBlcnIy Ow0KPj4gPiArDQo+PiA+ICsgICAgIGlmIChyZXQpDQo+PiA+ICsgICAgICAgICAgICAgZ290byBl cnIyOw0KPj4gPiArDQo+PiA+ICsgICAgIGNkbnMtPnJvbGUgPSBjZG5zM19nZXRfcm9sZShjZG5z KTsNCj4+DQo+PiBJIHRoaW5rIHRoaXMgc2hvdWxkIG1vdmUgdG8gY2RuczNfY29yZV9pbml0X3Jv bGUoKS4NCj4+DQo+DQo+SSBhZ3JlZS4NCj4NCj4+ID4gKw0KPj4gPiArICAgICByZXQgPSBkZXZt X3JlcXVlc3RfaXJxKGRldiwgY2Rucy0+aXJxLCBjZG5zM19pcnEsIElSUUZfU0hBUkVELA0KPj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9uYW1lKGRldiksIGNkbnMpOw0KPj4g PiArDQo+PiA+ICsgICAgIGlmIChyZXQpDQo+PiA+ICsgICAgICAgICAgICAgZ290byBlcnIyOw0K Pj4NCj4+IEhvdyBhYm91dCBtb3ZpbmcgcmVxdWVzdF9pcnEgdG8gYmVmb3JlIGNkc24zX2NvcmVf aW5pdF9yb2xlKCk/DQo+Pg0KPj4gVGhlbiB5b3UgY2FuIG1vdmUgY2RuczNfcm9sZV9zdGFydCgp IGFzIHdlbGwgdG8gY29yZV9pbml0X3JvbGUoKS4NCj4+DQo+DQo+VXN1YWxseSwgd2UgcmVxdWVz dCBpcnEgYWZ0ZXIgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gaGFzIGZpbmlzaGVkLCBpZiBub3Qs DQo+dGhlcmUgbWF5IHVuZXhwZWN0ZWQgaW50ZXJydXB0Lg0KDQo+DQo+UGV0ZXINCj4NCj4+ID4g Kw0KPj4gPiArICAgICByZXQgPSBjZG5zM19yb2xlX3N0YXJ0KGNkbnMsIGNkbnMtPnJvbGUpOw0K Pj4gPiArICAgICBpZiAocmV0KSB7DQo+PiA+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYsICJj YW4ndCBzdGFydCAlcyByb2xlXG4iLA0KPj4gPiArICAgICAgICAgICAgICAgICAgICAgY2RuczNf Z2V0X2N1cnJlbnRfcm9sZV9kcml2ZXIoY2RucyktPm5hbWUpOw0KPj4gPiArICAgICAgICAgICAg IGdvdG8gZXJyMjsNCj4+ID4gKyAgICAgfQ0KPj4gPiArDQo+PiA+ICsgICAgIGRldmljZV9zZXRf d2FrZXVwX2NhcGFibGUoZGV2LCB0cnVlKTsNCj4+ID4gKyAgICAgcG1fcnVudGltZV9zZXRfYWN0 aXZlKGRldik7DQo+PiA+ICsgICAgIHBtX3J1bnRpbWVfZW5hYmxlKGRldik7DQo+PiA+ICsNCj4+ ID4gKyAgICAgLyoNCj4+ID4gKyAgICAgICogVGhlIGNvbnRyb2xsZXIgbmVlZHMgbGVzcyB0aW1l IGJldHdlZW4gYnVzIGFuZCBjb250cm9sbGVyIHN1c3BlbmQsDQo+PiA+ICsgICAgICAqIGFuZCB3 ZSBhbHNvIG5lZWRzIGEgc21hbGwgZGVsYXkgdG8gYXZvaWQgZnJlcXVlbnRseSBlbnRlcmluZyBs b3cNCj4+ID4gKyAgICAgICogcG93ZXIgbW9kZS4NCj4+ID4gKyAgICAgICovDQo+PiA+ICsgICAg IHBtX3J1bnRpbWVfc2V0X2F1dG9zdXNwZW5kX2RlbGF5KGRldiwgMjApOw0KPj4gPiArICAgICBw bV9ydW50aW1lX21hcmtfbGFzdF9idXN5KGRldik7DQo+PiA+ICsgICAgIHBtX3J1bnRpbWVfdXNl X2F1dG9zdXNwZW5kKGRldik7DQo+PiA+ICsgICAgIGRldl9kYmcoZGV2LCAiQ2FkZW5jZSBVU0Iz IGNvcmU6IHByb2JlIHN1Y2NlZWRcbiIpOw0KPj4gPiArDQo+PiA+ICsgICAgIHJldHVybiAwOw0K Pj4gPiArDQo+PiA+ICtlcnIyOg0KPj4gPiArICAgICBjZG5zM19yZW1vdmVfcm9sZXMoY2Rucyk7 DQo+PiA+ICtlcnIxOg0KPj4NCj4+IHBoeV9leGl0KCkgPw0KPj4NCj4+ID4gKyAgICAgcmV0dXJu IHJldDsNCj4+ID4gK30NCj4+ID4gKw0KPj4gPiArLyoqDQo+PiA+ICsgKiBjZG5zM19yZW1vdmUg LSB1bmJpbmQgZHJkIGRyaXZlciBhbmQgY2xlYW4gdXANCj4+ID4gKyAqIEBwZGV2OiBQb2ludGVy IHRvIExpbnV4IHBsYXRmb3JtIGRldmljZQ0KPj4gPiArICoNCj4+ID4gKyAqIFJldHVybnMgMCBv biBzdWNjZXNzIG90aGVyd2lzZSBuZWdhdGl2ZSBlcnJubw0KPj4gPiArICovDQo+PiA+ICtzdGF0 aWMgaW50IGNkbnMzX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPj4gPiAr ew0KPj4gPiArICAgICBzdHJ1Y3QgY2RuczMgKmNkbnMgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShw ZGV2KTsNCj4+ID4gKw0KPj4gPiArICAgICBwbV9ydW50aW1lX2dldF9zeW5jKCZwZGV2LT5kZXYp Ow0KPj4gPiArICAgICBwbV9ydW50aW1lX2Rpc2FibGUoJnBkZXYtPmRldik7DQo+PiA+ICsgICAg IHBtX3J1bnRpbWVfcHV0X25vaWRsZSgmcGRldi0+ZGV2KTsNCj4+ID4gKyAgICAgY2RuczNfcmVt b3ZlX3JvbGVzKGNkbnMpOw0KPj4NCj4+IHBoeV9leGl0KCkgPw0KPj4NCj4+ID4gKw0KPj4gPiAr ICAgICByZXR1cm4gMDsNCj4+ID4gK30NCj4+ID4gKw0KPj4gPiArI2lmZGVmIENPTkZJR19PRg0K Pj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2ZfY2RuczNfbWF0Y2hbXSA9 IHsNCj4+ID4gKyAgICAgeyAuY29tcGF0aWJsZSA9ICJjZG5zLHVzYjMiIH0sDQo+PiA+ICsgICAg IHsgfSwNCj4+ID4gK307DQo+PiA+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9jZG5zM19t YXRjaCk7DQo+PiA+ICsjZW5kaWYNCj4+ID4gKw0KPj4gPiArI2lmZGVmIENPTkZJR19QTQ0KPj4g PiArDQo+PiA+ICsjaWZkZWYgQ09ORklHX1BNX1NMRUVQDQo+PiA+ICtzdGF0aWMgaW50IGNkbnMz X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KPj4gPiArew0KPj4gPiArICAgICAvL1RPRE86 IGltcGxlbWVudHMgdGhpcyBmdW5jdGlvbg0KPj4gPiArICAgICByZXR1cm4gMDsNCj4+ID4gK30N Cj4+ID4gKw0KPj4gPiArc3RhdGljIGludCBjZG5zM19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2 KQ0KPj4gPiArew0KPj4gPiArICAgICAvL1RPRE86IGltcGxlbWVudHMgdGhpcyBmdW5jdGlvbg0K Pj4gPiArICAgICByZXR1cm4gMDsNCj4+ID4gK30NCj4+ID4gKyNlbmRpZiAvKiBDT05GSUdfUE1f U0xFRVAgKi8NCj4+ID4gK3N0YXRpYyBpbnQgY2RuczNfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBk ZXZpY2UgKmRldikNCj4+ID4gK3sgICAgLy9UT0RPOiBpbXBsZW1lbnRzIHRoaXMgZnVuY3Rpb24N Cj4+ID4gKyAgICAgcmV0dXJuIDA7DQo+PiA+ICt9DQo+PiA+ICsNCj4+ID4gK3N0YXRpYyBpbnQg Y2RuczNfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQ0KPj4gPiArew0KPj4gPiAr ICAgICAvL1RPRE86IGltcGxlbWVudHMgdGhpcyBmdW5jdGlvbg0KPj4gPiArICAgICByZXR1cm4g MDsNCj4+ID4gK30NCj4+ID4gKyNlbmRpZiAvKiBDT05GSUdfUE0gKi8NCj4+ID4gKw0KPj4gPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGNkbnMzX3BtX29wcyA9IHsNCj4+ID4gKyAg ICAgU0VUX1NZU1RFTV9TTEVFUF9QTV9PUFMoY2RuczNfc3VzcGVuZCwgY2RuczNfcmVzdW1lKQ0K Pj4gPiArICAgICBTRVRfUlVOVElNRV9QTV9PUFMoY2RuczNfcnVudGltZV9zdXNwZW5kLCBjZG5z M19ydW50aW1lX3Jlc3VtZSwgTlVMTCkNCj4+ID4gK307DQo+PiA+ICsNCj4+ID4gK3N0YXRpYyBz dHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNkbnMzX2RyaXZlciA9IHsNCj4+ID4gKyAgICAgLnByb2Jl ICAgICAgICAgID0gY2RuczNfcHJvYmUsDQo+PiA+ICsgICAgIC5yZW1vdmUgICAgICAgICA9IGNk bnMzX3JlbW92ZSwNCj4+ID4gKyAgICAgLmRyaXZlciAgICAgICAgID0gew0KPj4gPiArICAgICAg ICAgICAgIC5uYW1lICAgPSAiY2Rucy11c2IzIiwNCj4+ID4gKyAgICAgICAgICAgICAub2ZfbWF0 Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIob2ZfY2RuczNfbWF0Y2gpLA0KPj4gPiArICAgICAgICAg ICAgIC5wbSAgICAgPSAmY2RuczNfcG1fb3BzLA0KPj4gPiArICAgICB9LA0KPj4gPiArfTsNCj4+ ID4gKw0KPj4gPiArc3RhdGljIGludCBfX2luaXQgY2RuczNfZHJpdmVyX3BsYXRmb3JtX3JlZ2lz dGVyKHZvaWQpDQo+PiA+ICt7DQo+PiA+ICsgICAgIHJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVn aXN0ZXIoJmNkbnMzX2RyaXZlcik7DQo+PiA+ICt9DQo+PiA+ICttb2R1bGVfaW5pdChjZG5zM19k cml2ZXJfcGxhdGZvcm1fcmVnaXN0ZXIpOw0KPj4gPiArDQo+PiA+ICtzdGF0aWMgdm9pZCBfX2V4 aXQgY2RuczNfZHJpdmVyX3BsYXRmb3JtX3VucmVnaXN0ZXIodm9pZCkNCj4+ID4gK3sNCj4+ID4g KyAgICAgcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJmNkbnMzX2RyaXZlcik7DQo+PiA+ICt9 DQo+PiA+ICttb2R1bGVfZXhpdChjZG5zM19kcml2ZXJfcGxhdGZvcm1fdW5yZWdpc3Rlcik7DQo+ PiA+ICsNCj4+ID4gK01PRFVMRV9BTElBUygicGxhdGZvcm06Y2RuczMiKTsNCj4+ID4gK01PRFVM RV9BVVRIT1IoIlBhd2VsIExhc3pjemFrIDxwYXdlbGxAY2FkZW5jZS5jb20+Iik7DQo+PiA+ICtN T0RVTEVfTElDRU5TRSgiR1BMIHYyIik7DQo+PiA+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkNhZGVu Y2UgVVNCMyBEUkQgQ29udHJvbGxlciBEcml2ZXIiKTsNCj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvdXNiL2NkbnMzL2NvcmUuaCBiL2RyaXZlcnMvdXNiL2NkbnMzL2NvcmUuaA0KPj4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjdjODIwNGZlNGQzZA0K Pj4gPiAtLS0gL2Rldi9udWxsDQo+PiA+ICsrKyBiL2RyaXZlcnMvdXNiL2NkbnMzL2NvcmUuaA0K Pj4gPiBAQCAtMCwwICsxLDEwMCBAQA0KPj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAgKi8NCj4+ID4gKy8qDQo+PiA+ICsgKiBDYWRlbmNlIFVTQlNTIERSRCBEcml2ZXIu DQo+PiA+ICsgKg0KPj4gPiArICogQ29weXJpZ2h0IChDKSAyMDE3IE5YUA0KPj4gPiArICogQ29w eXJpZ2h0IChDKSAyMDE4IENhZGVuY2UuDQo+PiA+ICsgKg0KPj4gPiArICogQXV0aG9yczogUGV0 ZXIgQ2hlbiA8cGV0ZXIuY2hlbkBueHAuY29tPg0KPj4gPiArICogICAgICAgICAgUGF3ZWwgTGFz emN6YWsgPHBhd2VsbEBjYWRlbmNlLmNvbT4NCj4+ID4gKyAqLw0KPj4gPiArI2luY2x1ZGUgPGxp bnV4L3VzYi9vdGcuaD4NCj4+ID4gKw0KPj4gPiArI2lmbmRlZiBfX0xJTlVYX0NETlMzX0NPUkVf SA0KPj4gPiArI2RlZmluZSBfX0xJTlVYX0NETlMzX0NPUkVfSA0KPj4gPiArDQo+PiA+ICtzdHJ1 Y3QgY2RuczM7DQo+PiA+ICtlbnVtIGNkbnMzX3JvbGVzIHsNCj4+ID4gKyAgICAgQ0ROUzNfUk9M RV9IT1NUID0gMCwNCj4+ID4gKyAgICAgQ0ROUzNfUk9MRV9HQURHRVQsDQo+PiA+ICsgICAgIENE TlMzX1JPTEVfRU5ELA0KPj4gPiArfTsNCj4+ID4gKw0KPj4gPiArLyoqDQo+PiA+ICsgKiBzdHJ1 Y3QgY2RuczNfcm9sZV9kcml2ZXIgLSBob3N0L2dhZGdldCByb2xlIGRyaXZlcg0KPj4gPiArICog QHN0YXJ0OiBzdGFydCB0aGlzIHJvbGUNCj4+ID4gKyAqIEBzdG9wOiBzdG9wIHRoaXMgcm9sZQ0K Pj4gPiArICogQHN1c3BlbmQ6IHN1c3BlbmQgY2FsbGJhY2sgZm9yIHRoaXMgcm9sZQ0KPj4gPiAr ICogQHJlc3VtZTogcmVzdW1lIGNhbGxiYWNrIGZvciB0aGlzIHJvbGUNCj4+ID4gKyAqIEBpcnE6 IGlycSBoYW5kbGVyIGZvciB0aGlzIHJvbGUNCj4+ID4gKyAqIEBuYW1lOiByb2xlIG5hbWUgc3Ry aW5nIChob3N0L2dhZGdldCkNCj4+ID4gKyAqLw0KPj4gPiArc3RydWN0IGNkbnMzX3JvbGVfZHJp dmVyIHsNCj4+ID4gKyAgICAgaW50ICgqc3RhcnQpKHN0cnVjdCBjZG5zMyAqY2Rucyk7DQo+PiA+ ICsgICAgIHZvaWQgKCpzdG9wKShzdHJ1Y3QgY2RuczMgKmNkbnMpOw0KPj4gPiArICAgICBpbnQg KCpzdXNwZW5kKShzdHJ1Y3QgY2RuczMgKmNkbnMsIGJvb2wgZG9fd2FrZXVwKTsNCj4+ID4gKyAg ICAgaW50ICgqcmVzdW1lKShzdHJ1Y3QgY2RuczMgKmNkbnMsIGJvb2wgaGliZXJuYXRlZCk7DQo+ PiA+ICsgICAgIGlycXJldHVybl90ICgqaXJxKShzdHJ1Y3QgY2RuczMgKmNkbnMpOw0KPj4gPiAr ICAgICBjb25zdCBjaGFyICpuYW1lOw0KPj4gPiArfTsNCj4+ID4gKw0KPj4gPiArI2RlZmluZSBD RE5TM19OVU1fT0ZfQ0xLUyAgICA1DQo+PiA+ICsvKioNCj4+ID4gKyAqIHN0cnVjdCBjZG5zMyAt IFJlcHJlc2VudGF0aW9uIG9mIENhZGVuY2UgVVNCMyBEUkQgY29udHJvbGxlci4NCj4+ID4gKyAq IEBkZXY6IHBvaW50ZXIgdG8gQ2FkZW5jZSBkZXZpY2Ugc3RydWN0DQo+PiA+ICsgKiBAeGhjaV9y ZWdzOiBwb2ludGVyIHRvIGJhc2Ugb2YgeGhjaSByZWdpc3RlcnMNCj4+ID4gKyAqIEB4aGNpX3Jl czogdGhlIHJlc291cmNlIGZvciB4aGNpDQo+PiA+ICsgKiBAZGV2X3JlZ3M6IHBvaW50ZXIgdG8g YmFzZSBvZiBkZXYgcmVnaXN0ZXJzDQo+PiA+ICsgKiBAb3RnX3JlZ3M6IHBvaW50ZXIgdG8gYmFz ZSBvZiBvdGcgcmVnaXN0ZXJzDQo+PiA+ICsgKiBAaXJxOiBpcnEgbnVtYmVyIGZvciBjb250cm9s bGVyDQo+PiA+ICsgKiBAcm9sZXM6IGFycmF5IG9mIHN1cHBvcnRlZCByb2xlcyBmb3IgdGhpcyBj b250cm9sbGVyDQo+PiA+ICsgKiBAcm9sZTogY3VycmVudCByb2xlDQo+PiA+ICsgKiBAaG9zdF9k ZXY6IHRoZSBjaGlsZCBob3N0IGRldmljZSBwb2ludGVyIGZvciBjZG5zMyBjb3JlDQo+PiA+ICsg KiBAZ2FkZ2V0X2RldjogdGhlIGNoaWxkIGdhZGdldCBkZXZpY2UgcG9pbnRlciBmb3IgY2RuczMg Y29yZQ0KPj4gPiArICogQHVzYjogcGh5IGZvciB0aGlzIGNvbnRyb2xsZXINCj4+ID4gKyAqIEBy b2xlX3N3aXRjaF93cTogd29yayBxdWV1ZSBpdGVtIGZvciByb2xlIHN3aXRjaA0KPj4gPiArICog QGluX2xwbTogdGhlIGNvbnRyb2xsZXIgaW4gbG93IHBvd2VyIG1vZGUNCj4+ID4gKyAqIEB3YWtl dXBfaW50OiB0aGUgd2FrZXVwIGludGVycnVwdA0KPj4gPiArICogQG11dGV4OiB0aGUgbXV0ZXgg Zm9yIGNvbmN1cnJlbnQgY29kZSBhdCBkcml2ZXINCj4+ID4gKyAqIEBkcl9tb2RlOiBzdXBwb3J0 ZWQgbW9kZSBvZiBvcGVyYXRpb24gaXQgY2FuIGJlIG9ubHkgSG9zdCwgb25seSBEZXZpY2UNCj4+ ID4gKyAqICAgICAgICAgICBvciBPVEcgbW9kZSB0aGF0IGFsbG93IHRvIHN3aXRjaCBiZXR3ZWVu IERldmljZSBhbmQgSG9zdCBtb2RlLg0KPj4gPiArICogICAgICAgICAgIFRoaXMgZmllbGQgYmFz ZWQgb24gaGFyZHdhcmUgY29uZmlndXJhdGlvbiBhbmQgY2FudCd0IGJlIGNoYW5nZWQuDQo+Pg0K Pj4gQnV0IGRyX21vZGUgY2FuIGJlIGZvcmNlZCBpbiBkZXZpY2UtdHJlZS4gU28gaXQgaXNuJ3Qg cmVhbGx5IG9ubHkgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4NCj4+DQo+PiA+ICsgKiBAY3VycmVu dF9kcl9yb2xlOiBjdXJyZW50IG1vZGUgb2Ygb3BlcmF0aW9uIHdoZW4gaW4gZHVhbC1yb2xlIG1v ZGUNCj4+ID4gKyAqIEBkZXNpcmVkX2RyX3JvbGU6IGRlc2lyZWQgbW9kZSBvZiBvcGVyYXRpb24g d2hlbiBpbiBkdWFsLXJvbGUgbW9kZS4NCj4+ID4gKyAqICAgICAgICAgICBUaGlzIHZhbHVlIGNh biBiZSBjaGFuZ2VkIGR1cmluZyBydW50aW1lLg0KPj4gPiArICogICAgICAgICAgIEF2YWlsYWJs ZSBvcHRpb25zIGRlcGVuZHMgb24gIGRyX21vZGU6DQo+PiA+ICsgKiAgICAgICAgICAgZHJfbW9k ZSAgICAgICAgICAgICAgICAgfCAgZGVzaXJlZF9kcl9yb2xlIGFuZCBjdXJyZW50X2RyX3JvbGUN Cj4+ID4gKyAqICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+PiA+ICsgKiAgICAgICAgICAgVVNCX0RSX01P REVfSE9TVCAgICAgICAgfCBvbmx5IFVTQl9EUl9NT0RFX0hPU1QNCj4+ID4gKyAqICAgICAgICAg ICBVU0JfRFJfTU9ERV9QRVJJUEhFUkFMICB8IG9ubHkgVVNCX0RSX01PREVfUEVSSVBIRVJBTA0K Pj4gPiArICogICAgICAgICAgIFVTQl9EUl9NT0RFX09URyAgICAgICAgIHwgb25seSBVU0JfRFJf TU9ERV9IT1NUDQo+PiA+ICsgKiAgICAgICAgICAgVVNCX0RSX01PREVfT1RHICAgICAgICAgfCBv bmx5IFVTQl9EUl9NT0RFX1BFUklQSEVSQUwNCj4+ID4gKyAqICAgICAgICAgICBVU0JfRFJfTU9E RV9PVEcgICAgICAgICB8IFVTQl9EUl9NT0RFX09URw0KPj4NCj4+IERvIHlvdSBuZWVkIHRvIHVw ZGF0ZSB0aGUgcmlnaHQgaGFuZCBzaWRlIHRvIHJlZmxlY3QgUk9MRXMgaW5zdGVhZCBvZiBNT0RF Pw0KPj4NCj4+ID4gKyAqDQo+PiA+ICsgKiAgICAgICAgICAgRGVzaXJlZF9kcl9yb2xlIGNhbiBi ZSBjaGFuZ2VkIGJ5IG1lYW5zIG9mIGRlYnVnZnMuDQo+PiA+ICsgKiBAcm9vdDogZGVidWdmcyBy b290IGZvbGRlciBwb2ludGVyDQo+PiA+ICsgKi8NCj4+ID4gK3N0cnVjdCBjZG5zMyB7DQo+PiA+ ICsgICAgIHN0cnVjdCBkZXZpY2UgICAgICAgICAgICAgICAgICAgKmRldjsNCj4+ID4gKyAgICAg dm9pZCBfX2lvbWVtICAgICAgICAgICAgICAgICAgICAqeGhjaV9yZWdzOw0KPj4gPiArICAgICBz dHJ1Y3QgcmVzb3VyY2UgICAgICAgICAgICAgICAgICp4aGNpX3JlczsNCj4+ID4gKyAgICAgc3Ry dWN0IGNkbnMzX3VzYl9yZWdzIF9faW9tZW0gICAqZGV2X3JlZ3M7DQo+PiA+ICsgICAgIHN0cnVj dCBjZG5zM19vdGdfcmVncyAgICAgICAgICAgKm90Z19yZWdzOw0KPj4gPiArICAgICBpbnQgaXJx Ow0KPj4gPiArICAgICBzdHJ1Y3QgY2RuczNfcm9sZV9kcml2ZXIgICAgICAgICpyb2xlc1tDRE5T M19ST0xFX0VORF07DQo+PiA+ICsgICAgIGVudW0gY2RuczNfcm9sZXMgICAgICAgICAgICAgICAg cm9sZTsNCj4+ID4gKyAgICAgc3RydWN0IGRldmljZSAgICAgICAgICAgICAgICAgICAqaG9zdF9k ZXY7DQo+PiA+ICsgICAgIHN0cnVjdCBkZXZpY2UgICAgICAgICAgICAgICAgICAgKmdhZGdldF9k ZXY7DQo+PiA+ICsgICAgIHN0cnVjdCBwaHkgICAgICAgICAgICAgICAgICAgICAgKnBoeTsNCj4+ ID4gKyAgICAgc3RydWN0IHdvcmtfc3RydWN0ICAgICAgICAgICAgICByb2xlX3N3aXRjaF93cTsN Cj4+ID4gKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9scG06MTsNCj4+ ID4gKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWtldXBfaW50OjE7DQo+ PiA+ICsgICAgIC8qIG11dGV4dCB1c2VkIGluIHdvcmtxdWV1ZSovDQo+PiA+ICsgICAgIHN0cnVj dCBtdXRleCAgICAgICAgICAgICAgICAgICAgbXV0ZXg7DQo+PiA+ICsgICAgIGVudW0gdXNiX2Ry X21vZGUgICAgICAgICAgICAgICAgZHJfbW9kZTsNCj4+ID4gKyAgICAgZW51bSB1c2JfZHJfbW9k ZSAgICAgICAgICAgICAgICBjdXJyZW50X2RyX21vZGU7DQo+PiA+ICsgICAgIGVudW0gdXNiX2Ry X21vZGUgICAgICAgICAgICAgICAgZGVzaXJlZF9kcl9tb2RlOw0KPj4gPiArICAgICBzdHJ1Y3Qg ZGVudHJ5ICAgICAgICAgICAgICAgICAgICpyb290Ow0KPj4gPiArfTsNCj4+ID4gKw0KPj4gPiAr I2VuZGlmIC8qIF9fTElOVVhfQ0ROUzNfQ09SRV9IICovDQo+PiA+DQo+Pg0KPj4gY2hlZXJzLA0K Pj4gLXJvZ2VyDQo+PiAtLQ0KPj4gVGV4YXMgSW5zdHJ1bWVudHMgRmlubGFuZCBPeSwgUG9ya2th bGFua2F0dSAyMiwgMDAxODAgSGVsc2lua2kuDQo+PiBZLXR1bm51cy9CdXNpbmVzcyBJRDogMDYx NTUyMS00LiBLb3RpcGFpa2thL0RvbWljaWxlOiBIZWxzaW5raQ0K