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=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,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 DE1C6C35E01 for ; Tue, 25 Feb 2020 13:52:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A8E8A21927 for ; Tue, 25 Feb 2020 13:52:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="67ffMFNW" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730297AbgBYNwV (ORCPT ); Tue, 25 Feb 2020 08:52:21 -0500 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:59340 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726019AbgBYNwU (ORCPT ); Tue, 25 Feb 2020 08:52:20 -0500 Received: from pps.filterd (m0167088.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 01PDiro1030579; Tue, 25 Feb 2020 08:52:02 -0500 Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2177.outbound.protection.outlook.com [104.47.57.177]) by mx0a-00128a01.pphosted.com with ESMTP id 2yay1bs18h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Feb 2020 08:52:02 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jsC+9aR8c738Ss6j8btm8EJ+vk3ixDZXQQEe7HHaKCKtZm/ZkMAwi7ZKpin22ZW49fAh7AGYyhonwwS3qnw09VlA1sBd1ppEl43AS/HrJcw7gf9WaUNvIVc7UvMcMznYCBMQhKp1exI000QzFJsn6U9toP4YUxW5/TTG0ZVssr5ZEWHCz2UuaWaz05OuitXpvQLDrPFu2I61FALK1Q1TcnlQowTPAWid3mqzPs1HXAgk83k+qpwGir6xJjiso9/JGH0ipiDt0rL3Blx4w7dB0mJxLmPy+i3pOJq3qyDxNFsFOut0iohZBRoQVbGBUR6USv0b3JUrO9iQ0UAcPN9adA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bpNSRd08y3F28RT367uv8V9tdP9ET9E5VhdWAm4VMXM=; b=DLb2f57dLAO6/M6nPbqiyFg+d3+9iVBux//cTOatwA1WTrGDbIQUy/Hvm+BJutRxR+ctxWst8ejP71gV3PRwkq4E+euRZHDzMbtx2+c8jNCw02QxLGDvUQcefWlA4349uAJILYMJFhTCjRjfQaSes8PWiPGXgDkSbx6dsqtRBQFJphXLJphVO9RVaOh6r8m0l56WIpbfedPkCAGdmBMfqMF8AyDDsg/A42hOYHj/AZeVSjTBr5FfURmi5hHJDVHtTKr8MrvT3xm6pewll+3UC3IUvq9mqpoeDkz5+67vcaiu6ZZ30jaEQ6guG7Z9kQ8r6hXJ9GA7BB1umaPDSFDfpg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=analog.com; dmarc=pass action=none header.from=analog.com; dkim=pass header.d=analog.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bpNSRd08y3F28RT367uv8V9tdP9ET9E5VhdWAm4VMXM=; b=67ffMFNWeIfATEtSos0Zw1mZ5XHmjjQK+oLmHQPrpf/vPxc9UV45BNlZyR5MCqa5+1Exz7f+VqO+Cml/gO7ythPF5g5f6ZvfXD6nTKn8UG6PF8zDJFnXExlQoMDVRExsvAD5KYK3vNdC4JZvXZyKhU/eaoSjzCRx44siKpZ4lNI= Received: from CH2PR03MB5192.namprd03.prod.outlook.com (2603:10b6:610:90::24) by CH2PR03MB5351.namprd03.prod.outlook.com (2603:10b6:610:a3::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2750.18; Tue, 25 Feb 2020 13:52:00 +0000 Received: from CH2PR03MB5192.namprd03.prod.outlook.com ([fe80::edf0:3922:83f0:3056]) by CH2PR03MB5192.namprd03.prod.outlook.com ([fe80::edf0:3922:83f0:3056%4]) with mapi id 15.20.2750.021; Tue, 25 Feb 2020 13:52:00 +0000 From: "Ardelean, Alexandru" To: "jic23@kernel.org" CC: "Hennerich, Michael" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-iio@vger.kernel.org" , "robh+dt@kernel.org" , "lars@metafoo.de" Subject: Re: [PATCH 2/5] iio: adc: axi-adc: add support for AXI ADC IP core Thread-Topic: [PATCH 2/5] iio: adc: axi-adc: add support for AXI ADC IP core Thread-Index: AQHV5/6QJvFzstcM7UOCeO1Ysl4fgKglmUmAgAZcOAA= Date: Tue, 25 Feb 2020 13:51:59 +0000 Message-ID: References: <20200220150317.1864-1-alexandru.ardelean@analog.com> <20200220150317.1864-2-alexandru.ardelean@analog.com> <20200221124421.0fabdeb0@archlinux> In-Reply-To: <20200221124421.0fabdeb0@archlinux> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [137.71.226.54] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 9ab160bf-613a-4a89-c0e9-08d7b9f9e2ef x-ms-traffictypediagnostic: CH2PR03MB5351: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-forefront-prvs: 0324C2C0E2 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(396003)(39860400002)(366004)(136003)(376002)(346002)(189003)(199004)(76116006)(66556008)(66946007)(64756008)(66446008)(26005)(6486002)(91956017)(6506007)(186003)(6512007)(2906002)(66476007)(36756003)(8936002)(316002)(5660300002)(86362001)(81166006)(2616005)(71200400001)(966005)(8676002)(81156014)(54906003)(4326008)(6916009)(30864003)(478600001)(579004)(559001);DIR:OUT;SFP:1101;SCL:1;SRVR:CH2PR03MB5351;H:CH2PR03MB5192.namprd03.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: analog.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 6ZxbofJ20aqksxOTCK5piKL+C1HY9HjchUQaXcMSYnvUMeRPawdLZy4wgIQ88dadUuGnuUgU79OPU7mCFzkV+nYnoiOP8h8Sl8q734klCl1zzxmEk/VX/xAp/+m18h2jDA0NSyHw8KB0aYNU4McvmKD1QRpIETNlFNumHvCFl9fmzQIYJ7LlC1vTEOMAdUHwqNS71Npa8GevHoMKP9iIcUdAaMVNWxe7dVUnP6VXrtP1i8PZXf7Jmoh6E9tpC2LwdMqMCYrVK2kzCwvQVJrPY8NNfXCH5Hw7KfU3wUeHcHClSd3A3MIeWxjAT+lt88u/dVzKAvustDSn867P1XvJQKpuFMlj365ghwyhA3q/glJVIdtK9UYLZE/Z7Q5ZIvxM6ZfTsXVCbJUse4ShdcoMwDZlHTXWOnVegv4CIh2n7if8kWx/kr4SV3ePmRZLzztfs2rouCp7GFLEGxdfBHB760Pzri4JQPsvnoyRgt4MKhRs6W/Tslzro5ATxwZWgeICNzRzrRnZDWHCh170NSNxBQ== x-ms-exchange-antispam-messagedata: LNjWFo1UPlD6WyrpkBNeqtg4VkH1T2w7EaeEWPgzRT88FHKlLlFmHse4BekywY+52aaHpNpY/yy+5MlxbTgILp26REs7tAIX+eobbwLaHWqrQkyfvUG05Uvi37+ah9eAvLUJvky2cNYOh6gEVbC2mw== Content-Type: text/plain; charset="utf-8" Content-ID: <9E22B420AD44EE45B3A1E04492EB1264@namprd03.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9ab160bf-613a-4a89-c0e9-08d7b9f9e2ef X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Feb 2020 13:51:59.9830 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: IowHmW2nFPN0nRme9+VS3FNoQwsU7J/Bz/YbMv1eyNgXQkprHB8/ahtO8e1GEA4Sy/tUP0TQUTqR84zyyxB4KlTTWPeX/VGJulrObYP6ETM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR03MB5351 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.572 definitions=2020-02-25_04:2020-02-21,2020-02-25 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 spamscore=0 suspectscore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 clxscore=1015 malwarescore=0 bulkscore=0 mlxscore=0 phishscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2001150001 definitions=main-2002250108 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org T24gRnJpLCAyMDIwLTAyLTIxIGF0IDEyOjQ0ICswMDAwLCBKb25hdGhhbiBDYW1lcm9uIHdyb3Rl Og0KPiBPbiBUaHUsIDIwIEZlYiAyMDIwIDE3OjAzOjE0ICswMjAwDQo+IEFsZXhhbmRydSBBcmRl bGVhbiA8YWxleGFuZHJ1LmFyZGVsZWFuQGFuYWxvZy5jb20+IHdyb3RlOg0KPiANCj4gPiBGcm9t OiBNaWNoYWVsIEhlbm5lcmljaCA8bWljaGFlbC5oZW5uZXJpY2hAYW5hbG9nLmNvbT4NCj4gPiAN Cj4gPiBUaGlzIGNoYW5nZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSBBbmFsb2cgRGV2aWNlcyBHZW5l cmljIEFYSSBBREMgSVAgY29yZS4NCj4gPiBUaGUgSVAgY29yZSBpcyB1c2VkIGZvciBpbnRlcmZh Y2luZyB3aXRoIGFuYWxvZy10by1kaWdpdGFsIChBREMpIGNvbnZlcnRlcnMNCj4gPiB0aGF0IHJl cXVpcmUgZWl0aGVyIGEgaGlnaC1zcGVlZCBzZXJpYWwgaW50ZXJmYWNlIChKRVNEMjA0Qi9DKSBv ciBhIHNvdXJjZQ0KPiA+IHN5bmNocm9ub3VzIHBhcmFsbGVsIGludGVyZmFjZSAoTFZEUy9DTU9T KS4NCj4gPiANCj4gPiBVc3VhbGx5LCBzb21lIG90aGVyIGludGVyZmFjZSB0eXBlIChpLmUgU1BJ KSBpcyB1c2VkIGFzIGEgY29udHJvbCBpbnRlcmZhY2UNCj4gPiBmb3IgdGhlIGFjdHVhbCBBREMs IHdoaWxlIHRoZSBJUCBjb3JlIChjb250cm9sbGVkIHZpYSB0aGlzIGRyaXZlciksIHdpbGwNCj4g PiBpbnRlcmZhY2UgdG8gdGhlIGRhdGEtbGluZXMgb2YgdGhlIEFEQyBhbmQgaGFuZGxlICB0aGUg c3RyZWFtaW5nIG9mIGRhdGENCj4gPiBpbnRvIG1lbW9yeSB2aWEgRE1BLg0KPiA+IA0KPiA+IEJl Y2F1c2Ugb2YgdGhpcywgdGhlIEFYSSBBREMgZHJpdmVyIG5lZWRzIHRoZSBvdGhlciBTUEktQURD IGRyaXZlciB0bw0KPiA+IHJlZ2lzdGVyIHdpdGggaXQuIFRoZSBTUEktQURDIG5lZWRzIHRvIGJl IHJlZ2lzdGVyIHZpYSB0aGUgU1BJIGZyYW1ld29yaywNCj4gPiB3aGlsZSB0aGUgQVhJIEFEQyBy ZWdpc3RlcnMgYXMgYSBwbGF0Zm9ybSBkcml2ZXIuIFRoZSB0d28gY2Fubm90IGJlIG9yZGVyZWQN Cj4gPiBpbiBhIGhpZXJhcmNoeSBhcyBib3RoIGRyaXZlcnMgaGF2ZSB0aGVpciBvd24gcmVnaXN0 ZXJzLCBhbmQgdHJ5aW5nIHRvDQo+ID4gb3JnYW5pemUgdGhpcyBbaW4gYSBoaWVyYXJjaHkgYmVj b21lc10gcHJvYmxlbWF0aWMgd2hlbiB0cnlpbmcgdG8gbWFwDQo+ID4gbWVtb3J5L3JlZ2lzdGVy cy4NCj4gPiANCj4gPiBUaGVyZSBhcmUgc29tZSBtb2RlcyB3aGVyZSB0aGUgQVhJIEFEQyBjYW4g b3BlcmF0ZSBhcyBzdGFuZGFsb25lIEFEQywgYnV0DQo+ID4gdGhvc2Ugd2lsbCBiZSBpbXBsZW1l bnRlZCBhdCBhIGxhdGVyIHBvaW50IGluIHRpbWUuDQo+ID4gDQo+ID4gTGluazogaHR0cHM6Ly93 aWtpLmFuYWxvZy5jb20vcmVzb3VyY2VzL2ZwZ2EvZG9jcy9heGlfYWRjX2lwDQo+ID4gDQo+ID4g U2lnbmVkLW9mZi1ieTogTWljaGFlbCBIZW5uZXJpY2ggPG1pY2hhZWwuaGVubmVyaWNoQGFuYWxv Zy5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogTGFycy1QZXRlciBDbGF1c2VuIDxsYXJzQG1ldGFm b28uZGU+DQo+ID4gU2lnbmVkLW9mZi1ieTogQWxleGFuZHJ1IEFyZGVsZWFuIDxhbGV4YW5kcnUu YXJkZWxlYW5AYW5hbG9nLmNvbT4NCj4gDQo+IEluIGdlbmVyYWwgbG9va3MgZ29vZCB0byBtZS4g IEEgZmV3IHNwZWNpZmljIGNvbW1lbnRzIGlubGluZS4NCj4gDQo+IFRoYW5rcywNCj4gDQo+IEpv bmF0aGFuDQo+IA0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL2lpby9hZGMvS2NvbmZpZyAgICAgICAg IHwgIDIwICsNCj4gPiAgZHJpdmVycy9paW8vYWRjL01ha2VmaWxlICAgICAgICB8ICAgMSArDQo+ ID4gIGRyaXZlcnMvaWlvL2FkYy9heGktYWRjLmMgICAgICAgfCA2MjIgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysNCj4gPiAgaW5jbHVkZS9saW51eC9paW8vYWRjL2F4aS1hZGMuaCB8 ICA3OSArKysrDQo+ID4gIDQgZmlsZXMgY2hhbmdlZCwgNzIyIGluc2VydGlvbnMoKykNCj4gPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvaWlvL2FkYy9heGktYWRjLmMNCj4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvaWlvL2FkYy9heGktYWRjLmgNCj4gPiANCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWRjL0tjb25maWcgYi9kcml2ZXJzL2lpby9hZGMvS2Nv bmZpZw0KPiA+IGluZGV4IGY0ZGE4MjFjNDAyMi4uNmNkNDhhMjU2MTIyIDEwMDY0NA0KPiA+IC0t LSBhL2RyaXZlcnMvaWlvL2FkYy9LY29uZmlnDQo+ID4gKysrIGIvZHJpdmVycy9paW8vYWRjL0tj b25maWcNCj4gPiBAQCAtMjgyLDYgKzI4MiwyNiBAQCBjb25maWcgQVQ5MV9TQU1BNUQyX0FEQw0K PiA+ICAJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJl OiB0aGUgbW9kdWxlIHdpbGwgYmUNCj4gPiAgCSAgY2FsbGVkIGF0OTEtc2FtYTVkMl9hZGMuDQo+ ID4gIA0KPiA+ICtjb25maWcgQVhJX0FEQw0KPiA+ICsJdHJpc3RhdGUgIkFuYWxvZyBEZXZpY2Vz IEdlbmVyaWMgQVhJIEFEQyBJUCBjb3JlIGRyaXZlciINCj4gPiArCXNlbGVjdCBJSU9fQlVGRkVS DQo+ID4gKwlzZWxlY3QgSUlPX0JVRkZFUl9IV19DT05TVU1FUg0KPiA+ICsJc2VsZWN0IElJT19C VUZGRVJfRE1BRU5HSU5FDQo+ID4gKwloZWxwDQo+ID4gKwkgIFNheSB5ZXMgaGVyZSB0byBidWls ZCBzdXBwb3J0IGZvciBBbmFsb2cgRGV2aWNlcyBHZW5lcmljDQo+ID4gKwkgIEFYSSBBREMgSVAg Y29yZS4gVGhlIElQIGNvcmUgaXMgdXNlZCBmb3IgaW50ZXJmYWNpbmcgd2l0aA0KPiA+ICsJICBh bmFsb2ctdG8tZGlnaXRhbCAoQURDKSBjb252ZXJ0ZXJzIHRoYXQgcmVxdWlyZSBlaXRoZXIgYSBo aWdoLXNwZWVkDQo+ID4gKwkgIHNlcmlhbCBpbnRlcmZhY2UgKEpFU0QyMDRCL0MpIG9yIGEgc291 cmNlIHN5bmNocm9ub3VzIHBhcmFsbGVsDQo+ID4gKwkgIGludGVyZmFjZSAoTFZEUy9DTU9TKS4N Cj4gPiArCSAgVHlwaWNhbGx5IChmb3Igc3VjaCBkZXZpY2VzKSBTUEkgd2lsbCBiZSB1c2VkIGZv ciBjb25maWd1cmF0aW9uIG9ubHksDQo+ID4gKwkgIHdoaWxlIHRoaXMgSVAgY29yZSBoYW5kbGVz IHRoZSBzdHJlYW1pbmcgb2YgZGF0YSBpbnRvIG1lbW9yeSB2aWEgRE1BLg0KPiA+ICsNCj4gPiAr CSAgTGluazogaHR0cHM6Ly93aWtpLmFuYWxvZy5jb20vcmVzb3VyY2VzL2ZwZ2EvZG9jcy9heGlf YWRjX2lwDQo+ID4gKwkgIElmIHVuc3VyZSwgc2F5IE4gKGJ1dCBpdCdzIHNhZmUgdG8gc2F5ICJZ IikuDQo+ID4gKw0KPiA+ICsJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBj aG9vc2UgTSBoZXJlOiB0aGUNCj4gPiArCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGF4aS1hZGMu DQo+ID4gKw0KPiA+ICBjb25maWcgQVhQMjBYX0FEQw0KPiA+ICAJdHJpc3RhdGUgIlgtUG93ZXJz IEFYUDIwWCBhbmQgQVhQMjJYIEFEQyBkcml2ZXIiDQo+ID4gIAlkZXBlbmRzIG9uIE1GRF9BWFAy MFgNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWRjL01ha2VmaWxlIGIvZHJpdmVycy9p aW8vYWRjL01ha2VmaWxlDQo+ID4gaW5kZXggODQ2MjQ1NWI0MjI4Li5lMTRmYWJkNTMyNDYgMTAw NjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9paW8vYWRjL01ha2VmaWxlDQo+ID4gKysrIGIvZHJpdmVy cy9paW8vYWRjL01ha2VmaWxlDQo+ID4gQEAgLTI5LDYgKzI5LDcgQEAgb2JqLSQoQ09ORklHX0FE Nzk5WCkgKz0gYWQ3OTl4Lm8NCj4gPiAgb2JqLSQoQ09ORklHX0FTUEVFRF9BREMpICs9IGFzcGVl ZF9hZGMubw0KPiA+ICBvYmotJChDT05GSUdfQVQ5MV9BREMpICs9IGF0OTFfYWRjLm8NCj4gPiAg b2JqLSQoQ09ORklHX0FUOTFfU0FNQTVEMl9BREMpICs9IGF0OTEtc2FtYTVkMl9hZGMubw0KPiA+ ICtvYmotJChDT05GSUdfQVhJX0FEQykgKz0gYXhpLWFkYy5vDQo+ID4gIG9iai0kKENPTkZJR19B WFAyMFhfQURDKSArPSBheHAyMHhfYWRjLm8NCj4gPiAgb2JqLSQoQ09ORklHX0FYUDI4OF9BREMp ICs9IGF4cDI4OF9hZGMubw0KPiA+ICBvYmotJChDT05GSUdfQkNNX0lQUk9DX0FEQykgKz0gYmNt X2lwcm9jX2FkYy5vDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2FkYy9heGktYWRjLmMg Yi9kcml2ZXJzL2lpby9hZGMvYXhpLWFkYy5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g PiBpbmRleCAwMDAwMDAwMDAwMDAuLjlkZGQ2NGZkYWIyZA0KPiA+IC0tLSAvZGV2L251bGwNCj4g PiArKysgYi9kcml2ZXJzL2lpby9hZGMvYXhpLWFkYy5jDQo+IA0KPiBJIHN1c3BlY3QgdGhpcyBt YXkgbm90IGJlIHRoZSBvbmx5IEFYSSBiYXNlZCBBREMgaW50ZXJmYWNlIGluIHRoZQ0KPiB3b3Js ZC4gICBBcyBzdWNoLCBwcmVmaXggd2l0aCBhZGktYXhpIHBlcmhhcHMuDQoNCmFjaw0KDQo+IA0K PiA+IEBAIC0wLDAgKzEsNjIyIEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wLW9ubHkNCj4gPiArLyoNCj4gPiArICogQW5hbG9nIERldmljZXMgR2VuZXJpYyBBWEkg QURDIElQIGNvcmUNCj4gPiArICogTGluazogaHR0cHM6Ly93aWtpLmFuYWxvZy5jb20vcmVzb3Vy Y2VzL2ZwZ2EvZG9jcy9heGlfYWRjX2lwDQo+ID4gKyAqDQo+ID4gKyAqIENvcHlyaWdodCAyMDEy LTIwMjAgQW5hbG9nIERldmljZXMgSW5jLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRl IDxsaW51eC9iaXRmaWVsZC5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+ID4gKyNp bmNsdWRlIDxsaW51eC9pby5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4gPiAr I2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1f ZGV2aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQo+ID4gKw0KPiA+ICsjaW5j bHVkZSA8bGludXgvaWlvL2lpby5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaWlvL3N5c2ZzLmg+ DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9paW8vYnVmZmVyLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51 eC9paW8vYnVmZmVyLWRtYWVuZ2luZS5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L2Zw Z2EvYWRpLWF4aS1jb21tb24uaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2lpby9hZGMvYXhpLWFk Yy5oPg0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIFJlZ2lzdGVyIGRlZmluaXRpb25zOg0KPiA+ ICsgKiAgIGh0dHBzOi8vd2lraS5hbmFsb2cuY29tL3Jlc291cmNlcy9mcGdhL2RvY3MvYXhpX2Fk Y19pcCNyZWdpc3Rlcl9tYXANCj4gPiArICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIEFYSV9BRENf VVBQRVIxNl9NU0sJCUdFTk1BU0soMzEsIDE2KQ0KPiA+ICsjZGVmaW5lIEFYSV9BRENfVVBQRVIx Nl9TRVQoeCkJCUZJRUxEX1BSRVAoQVhJX0FEQ19VUFBFUjE2X01TSywNCj4gPiB4KQ0KPiA+ICsj ZGVmaW5lIEFYSV9BRENfVVBQRVIxNl9HRVQoeCkJCUZJRUxEX0dFVChBWElfQURDX1VQUEVSMTZf TVNLLA0KPiA+IHgpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIEFYSV9BRENfTE9XRVIxNl9NU0sJCUdF Tk1BU0soMTUsIDApDQo+ID4gKyNkZWZpbmUgQVhJX0FEQ19MT1dFUjE2X1NFVCh4KQkJRklFTERf UFJFUChBWElfQURDX1VQUEVSMTZfTVNLLA0KPiA+IHgpDQo+ID4gKyNkZWZpbmUgQVhJX0FEQ19M T1dFUjE2X0dFVCh4KQkJRklFTERfR0VUKEFYSV9BRENfTE9XRVIxNl9NU0ssDQo+ID4geCkNCj4g PiArDQo+ID4gKy8qIEFEQyBjb250cm9scyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBBWElfQURD X1JFR19SU1ROCQkJMHgwMDQwDQo+ID4gKyNkZWZpbmUgICBBWElfQURDX01NQ01fUlNUTgkJCUJJ VCgxKQ0KPiA+ICsjZGVmaW5lICAgQVhJX0FEQ19SU1ROCQkJCUJJVCgwKQ0KPiA+ICsNCj4gPiAr I2RlZmluZSBBWElfQURDX1JFR19DTlRSTAkJCTB4MDA0NA0KPiA+ICsjZGVmaW5lICAgQVhJX0FE Q19SMV9NT0RFCQkJQklUKDIpDQo+ID4gKyNkZWZpbmUgICBBWElfQURDX0REUl9FREdFU0VMCQkJ QklUKDEpDQo+ID4gKyNkZWZpbmUgICBBWElfQURDX1BJTl9NT0RFCQkJQklUKDApDQo+ID4gKw0K PiA+ICsjZGVmaW5lIEFYSV9BRENfUkVHX0NMS19GUkVRCQkJMHgwMDU0DQo+ID4gKyNkZWZpbmUg QVhJX0FEQ19SRUdfQ0xLX1JBVElPCQkJMHgwMDU4DQo+ID4gKw0KPiA+ICsjZGVmaW5lIEFYSV9B RENfUkVHX1NUQVRVUwkJCTB4MDA1Qw0KPiA+ICsjZGVmaW5lICAgQVhJX0FEQ19NVVhfUE5fRVJS CQkJQklUKDMpDQo+ID4gKyNkZWZpbmUgICBBWElfQURDX01VWF9QTl9PT1MJCQlCSVQoMikNCj4g PiArI2RlZmluZSAgIEFYSV9BRENfTVVYX09WRVJfUkFOR0UJCUJJVCgxKQ0KPiA+ICsjZGVmaW5l ICAgQVhJX0FEQ19TVEFUVVMJCQlCSVQoMCkNCj4gPiArDQo+ID4gKyNkZWZpbmUgQVhJX0FEQ19S RUdfRFJQX0NOVFJMCQkJMHgwMDcwDQo+ID4gKyNkZWZpbmUgICBBWElfQURDX0RSUF9TRUwJCQlC SVQoMjkpDQo+ID4gKyNkZWZpbmUgICBBWElfQURDX0RSUF9SV04JCQlCSVQoMjgpDQo+ID4gKyNk ZWZpbmUgICBBWElfQURDX0RSUF9BRERSRVNTX01TSwkJR0VOTUFTSygyNywgMTYpDQo+ID4gKyNk ZWZpbmUgICBBWElfQURDX0RSUF9BRERSRVNTX1NFVCh4KQkJXA0KPiA+ICsJCUZJRUxEX1BSRVAo QVhJX0FEQ19EUlBfQUREUkVTU19NU0ssIHgpDQo+ID4gKyNkZWZpbmUgICBBWElfQURDX0RSUF9B RERSRVNTX0dFVCh4KQkJXA0KPiA+ICsJCUZJRUxEX0dFVChBWElfQURDX0RSUF9BRERSRVNTX01T SywgeCkNCj4gPiArI2RlZmluZSAgIEFYSV9BRENfRFJQX1dEQVRBX1NFVAkJCUFYSV9BRENfTE9X RVIxNl9TRVQNCj4gPiArI2RlZmluZSAgIEFYSV9BRENfRFJQX1dEQVRBX0dFVAkJCUFYSV9BRENf TE9XRVIxNl9HRVQNCj4gPiArDQo+ID4gKyNkZWZpbmUgQVhJX1JFR19EUlBfU1RBVFVTCQkJMHgw MDc0DQo+ID4gKyNkZWZpbmUgICBBWElfQURDX0RSUF9TVEFUVVMJCQlCSVQoMTYpDQo+ID4gKyNk ZWZpbmUgICBBWElfQURDX0RSUF9SREFUQV9TRVQJCQlBWElfQURDX0xPV0VSMTZfU0VUDQo+ID4g KyNkZWZpbmUgICBBWElfQURDX0RSUF9SREFUQV9HRVQJCQlBWElfQURDX0xPV0VSMTZfR0VUDQo+ ID4gKw0KPiA+ICsjZGVmaW5lIEFYSV9BRENfUkVHX0RNQV9TVEFUVVMJCQkweDAwODgNCj4gPiAr I2RlZmluZSAgIEFYSV9BRENfRE1BX09WRgkJCUJJVCgyKQ0KPiA+ICsjZGVmaW5lICAgQVhJX0FE Q19ETUFfVU5GCQkJQklUKDEpDQo+ID4gKyNkZWZpbmUgICBBWElfQURDX0RNQV9TVEFUVVMJCQlC SVQoMCkNCj4gPiArDQo+ID4gKyNkZWZpbmUgQURJX1JFR19ETUFfQlVTV0lEVEgJCQkweDAwOEMN Cj4gPiArI2RlZmluZSBBWElfQURDX1JFR19HUF9DT05UUk9MCQkJMHgwMEJDDQo+ID4gKyNkZWZp bmUgQVhJX0FEQ19SRUdfQURDX0RQX0RJU0FCTEUJCTB4MDBDMA0KPiA+ICsNCj4gPiArLyogQURD IENoYW5uZWwgY29udHJvbHMgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgQVhJX0FEQ19SRUdfQ0hB Tl9DTlRSTChjKQkJKDB4MDQwMCArIChjKSAqIDB4NDApDQo+ID4gKyNkZWZpbmUgICBBWElfQURD X1BOX1NFTAkJCUJJVCgxMCkNCj4gPiArI2RlZmluZSAgIEFYSV9BRENfSVFDT1JfRU5CCQkJQklU KDkpDQo+ID4gKyNkZWZpbmUgICBBWElfQURDX0RDRklMVF9FTkIJCQlCSVQoOCkNCj4gPiArI2Rl ZmluZSAgIEFYSV9BRENfRk9STUFUX1NJR05FWFQJCUJJVCg2KQ0KPiA+ICsjZGVmaW5lICAgQVhJ X0FEQ19GT1JNQVRfVFlQRQkJCUJJVCg1KQ0KPiA+ICsjZGVmaW5lICAgQVhJX0FEQ19GT1JNQVRf RU5BQkxFCQkJQklUKDQpDQo+ID4gKyNkZWZpbmUgICBBWElfQURDX1BOMjNfVFlQRQkJCUJJVCgx KQ0KPiA+ICsjZGVmaW5lICAgQVhJX0FEQ19FTkFCTEUJCQlCSVQoMCkNCj4gPiArDQo+ID4gKyNk ZWZpbmUgQVhJX0FEQ19SRUdfQ0hBTl9TVEFUVVMoYykJCSgweDA0MDQgKyAoYykgKiAweDQwKQ0K PiA+ICsjZGVmaW5lICAgQVhJX0FEQ19QTl9FUlIJCQlCSVQoMikNCj4gPiArI2RlZmluZSAgIEFY SV9BRENfUE5fT09TCQkJQklUKDEpDQo+ID4gKyNkZWZpbmUgICBBWElfQURDX09WRVJfUkFOR0UJ CQlCSVQoMCkNCj4gPiArDQo+ID4gKyNkZWZpbmUgQVhJX0FEQ19SRUdfQ0hBTl9DTlRSTF8xKGMp CQkoMHgwNDEwICsgKGMpICogMHg0MCkNCj4gPiArI2RlZmluZSAgIEFYSV9BRENfRENGSUxUX09G RlNFVF9NU0sJCUFYSV9BRENfVVBQRVIxNl9NU0sNCj4gPiArI2RlZmluZSAgIEFYSV9BRENfRENG SUxUX09GRlNFVF9TRVQJCUFYSV9BRENfVVBQRVIxNl9TRVQNCj4gPiArI2RlZmluZSAgIEFYSV9B RENfRENGSUxUX09GRlNFVF9HRVQJCUFYSV9BRENfVVBQRVIxNl9HRVQNCj4gPiArI2RlZmluZSAg IEFYSV9BRENfRENGSUxUX0NPRUZGX01TSwkJQVhJX0FEQ19MT1dFUjE2X01TSw0KPiA+ICsjZGVm aW5lICAgQVhJX0FEQ19EQ0ZJTFRfQ09FRkZfU0VUCQlBWElfQURDX0xPV0VSMTZfU0VUDQo+ID4g KyNkZWZpbmUgICBBWElfQURDX0RDRklMVF9DT0VGRl9HRVQJCUFYSV9BRENfTE9XRVIxNl9HRVQN Cj4gPiArDQo+ID4gKyNkZWZpbmUgQVhJX0FEQ19SRUdfQ0hBTl9DTlRSTF8yKGMpCQkoMHgwNDE0 ICsgKGMpICogMHg0MCkNCj4gPiArI2RlZmluZSAgIEFYSV9BRENfSVFDT1JfQ09FRkZfMV9NU0sJ CUFYSV9BRENfVVBQRVIxNl9NU0sNCj4gPiArI2RlZmluZSAgIEFYSV9BRENfSVFDT1JfQ09FRkZf MV9TRVQJCUFYSV9BRENfVVBQRVIxNl9TRVQNCj4gPiArI2RlZmluZSAgIEFYSV9BRENfSVFDT1Jf Q09FRkZfMV9HRVQJCUFYSV9BRENfVVBQRVIxNl9HRVQNCj4gPiArI2RlZmluZSAgIEFYSV9BRENf SVFDT1JfQ09FRkZfMl9NU0sJCUFYSV9BRENfTE9XRVIxNl9NU0sNCj4gPiArI2RlZmluZSAgIEFY SV9BRENfSVFDT1JfQ09FRkZfMl9TRVQJCUFYSV9BRENfTE9XRVIxNl9TRVQNCj4gPiArI2RlZmlu ZSAgIEFYSV9BRENfSVFDT1JfQ09FRkZfMl9HRVQJCUFYSV9BRENfTE9XRVIxNl9HRVQNCj4gPiAr DQo+ID4gKy8qICBmb3JtYXQgaXMgMS4xLjE0IChzaWduLCBpbnRlZ2VyIGFuZCBmcmFjdGlvbmFs IGJpdHMpICovDQo+ID4gKyNkZWZpbmUgQVhJX0FEQ19JUUNPUl9JTlRfMQkJCTB4NDAwMFVMDQo+ ID4gKyNkZWZpbmUgQVhJX0FEQ19JUUNPUl9TSUdOX0JJVAkJCUJJVCgxNSkNCj4gPiArLyogVGhl IGNvbnN0YW50IGJlbG93IGlzICgyICogUEkgKiAweDQwMDApLCB3aGVyZSAweDQwMDAgaXMNCj4g PiBBWElfQURDX0lRQ09SX0lOVF8xICovDQo+ID4gKyNkZWZpbmUgQVhJX0FEQ18yX1hfUElfWF9J TlRfMQkJCTEwMjk0NFVMTA0KPiA+ICsNCj4gPiArI2RlZmluZSBBWElfQURDX1JFR19DSEFOX0NO VFJMXzMoYykJCSgweDA0MTggKyAoYykgKiAweDQwKQ0KPiA+ICsjZGVmaW5lICAgQVhJX0FEQ19B RENfUE5fU0VMX01TSwkJQVhJX0FEQ19VUFBFUjE2X01TSw0KPiA+ICsjZGVmaW5lICAgQVhJX0FE Q19BRENfUE5fU0VMX1NFVAkJQVhJX0FEQ19VUFBFUjE2X1NFVA0KPiA+ICsjZGVmaW5lICAgQVhJ X0FEQ19BRENfUE5fU0VMX0dFVAkJQVhJX0FEQ19VUFBFUjE2X0dFVA0KPiA+ICsjZGVmaW5lICAg QVhJX0FEQ19BRENfREFUQV9TRUxfTVNLCQlBWElfQURDX0xPV0VSMTZfTVNLDQo+ID4gKyNkZWZp bmUgICBBWElfQURDX0FEQ19EQVRBX1NFTF9TRVQJCUFYSV9BRENfTE9XRVIxNl9TRVQNCj4gPiAr I2RlZmluZSAgIEFYSV9BRENfQURDX0RBVEFfU0VMX0dFVAkJQVhJX0FEQ19MT1dFUjE2X0dFVA0K PiA+ICsNCj4gPiArI2RlZmluZSBBWElfQURDX1JFR19DSEFOX1VTUl9DTlRSTF8yKGMpCQkoMHgw NDI0ICsgKGMpICogMHg0MCkNCj4gPiArI2RlZmluZSAgIEFYSV9BRENfVVNSX0RFQ0lNQVRJT05f TV9NU0sJCUFYSV9BRENfVVBQRVIxNl9NU0sNCj4gPiArI2RlZmluZSAgIEFYSV9BRENfVVNSX0RF Q0lNQVRJT05fTV9TRVQJCUFYSV9BRENfVVBQRVIxNl9TRVQNCj4gPiArI2RlZmluZSAgIEFYSV9B RENfVVNSX0RFQ0lNQVRJT05fTV9HRVQJCUFYSV9BRENfVVBQRVIxNl9HRVQNCj4gPiArI2RlZmlu ZSAgIEFYSV9BRENfVVNSX0RFQ0lNQVRJT05fTl9NU0sJCUFYSV9BRENfTE9XRVIxNl9NU0sNCj4g PiArI2RlZmluZSAgIEFYSV9BRENfVVNSX0RFQ0lNQVRJT05fTl9TRVQJCUFYSV9BRENfTE9XRVIx Nl9TRVQNCj4gPiArI2RlZmluZSAgIEFYSV9BRENfVVNSX0RFQ0lNQVRJT05fTl9HRVQJCUFYSV9B RENfTE9XRVIxNl9HRVQNCj4gPiArDQo+ID4gKy8qIGRlYnVnZnMgZGlyZWN0IHJlZ2lzdGVyIGFj Y2VzcyAqLw0KPiA+ICsjZGVmaW5lIERFQlVHRlNfRFJBX1BDT1JFX1JFR19NQUdJQwkJQklUKDMx KQ0KPiA+ICsNCj4gPiArc3RydWN0IGF4aV9hZGNfY29yZV9pbmZvIHsNCj4gPiArCXVuc2lnbmVk IGludAkJCXZlcnNpb247DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgYXhpX2FkY19zdGF0 ZSB7DQo+ID4gKwlzdHJ1Y3QgbXV0ZXgJCQlsb2NrOw0KPiA+ICsNCj4gPiArCXN0cnVjdCBheGlf YWRjX2NsaWVudAkJKmNsaWVudDsNCj4gPiArCXZvaWQgX19pb21lbQkJCSpyZWdzOw0KPiA+ICsJ dW5zaWduZWQgaW50CQkJcmVnc19zaXplOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGF4 aV9hZGNfY2xpZW50IHsNCj4gPiArCXN0cnVjdCBsaXN0X2hlYWQJCWVudHJ5Ow0KPiA+ICsJc3Ry dWN0IGF4aV9hZGNfY29udgkJY29udjsNCj4gPiArCXN0cnVjdCBheGlfYWRjX3N0YXRlCQkqc3Rh dGU7DQo+ID4gKwlzdHJ1Y3QgZGV2aWNlCQkJKmRldjsNCj4gPiArCWNvbnN0IHN0cnVjdCBheGlf YWRjX2NvcmVfaW5mbwkqaW5mbzsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBMSVNUX0hF QUQoYXhpX2FkY19yZWdpc3RlcmVkX2NsaWVudHMpOw0KPiA+ICtzdGF0aWMgREVGSU5FX01VVEVY KGF4aV9hZGNfcmVnaXN0ZXJlZF9jbGllbnRzX2xvY2spOw0KPiA+ICsNCj4gPiArc3RhdGljIHN0 cnVjdCBheGlfYWRjX2NsaWVudCAqYXhpX2FkY19jb252X3RvX2NsaWVudChzdHJ1Y3QgYXhpX2Fk Y19jb252DQo+ID4gKmNvbnYpDQo+ID4gK3sNCj4gPiArCWlmICghY29udikNCj4gPiArCQlyZXR1 cm4gTlVMTDsNCj4gPiArCXJldHVybiBjb250YWluZXJfb2YoY29udiwgc3RydWN0IGF4aV9hZGNf Y2xpZW50LCBjb252KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdm9pZCAqYXhpX2FkY19jb252X3By aXYoc3RydWN0IGF4aV9hZGNfY29udiAqY29udikNCj4gPiArew0KPiA+ICsJc3RydWN0IGF4aV9h ZGNfY2xpZW50ICpjbCA9IGF4aV9hZGNfY29udl90b19jbGllbnQoY29udik7DQo+ID4gKw0KPiA+ ICsJaWYgKCFjbCkNCj4gPiArCQlyZXR1cm4gTlVMTDsNCj4gPiArDQo+ID4gKwlyZXR1cm4gKGNo YXIgKiljbCArIEFMSUdOKHNpemVvZihzdHJ1Y3QgYXhpX2FkY19jbGllbnQpLCBJSU9fQUxJR04p Ow0KPiA+ICt9DQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKGF4aV9hZGNfY29udl9wcml2KTsNCj4g PiArDQo+ID4gK3N0YXRpYyB2b2lkIGF4aV9hZGNfd3JpdGUoc3RydWN0IGF4aV9hZGNfc3RhdGUg KnN0LCB1bnNpZ25lZCBpbnQgcmVnLA0KPiA+ICsJCQkgIHVuc2lnbmVkIGludCB2YWwpDQo+ID4g K3sNCj4gPiArCWlvd3JpdGUzMih2YWwsIHN0LT5yZWdzICsgcmVnKTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIHVuc2lnbmVkIGludCBheGlfYWRjX3JlYWQoc3RydWN0IGF4aV9hZGNfc3Rh dGUgKnN0LCB1bnNpZ25lZCBpbnQNCj4gPiByZWcpDQo+ID4gK3sNCj4gPiArCXJldHVybiBpb3Jl YWQzMihzdC0+cmVncyArIHJlZyk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgYXhp X2FkY19jb25maWdfZG1hX2J1ZmZlcihzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4gKwkJCQkgICAg IHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBpaW9fYnVm ZmVyICpidWZmZXI7DQo+ID4gKwljb25zdCBjaGFyICpkbWFfbmFtZTsNCj4gPiArDQo+ID4gKwlp ZiAoIWRldmljZV9wcm9wZXJ0eV9wcmVzZW50KGRldiwgImRtYXMiKSkNCj4gPiArCQlyZXR1cm4g MDsNCj4gPiArDQo+ID4gKwlpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGRldiwgImRt YS1uYW1lcyIsICZkbWFfbmFtZSkpDQo+ID4gKwkJZG1hX25hbWUgPSAicngiOw0KPiA+ICsNCj4g PiArCWJ1ZmZlciA9IGRldm1faWlvX2RtYWVuZ2luZV9idWZmZXJfYWxsb2MoaW5kaW9fZGV2LT5k ZXYucGFyZW50LA0KPiA+ICsJCQkJCQkgZG1hX25hbWUpOw0KPiA+ICsJaWYgKElTX0VSUihidWZm ZXIpKQ0KPiA+ICsJCXJldHVybiBQVFJfRVJSKGJ1ZmZlcik7DQo+ID4gKw0KPiA+ICsJaW5kaW9f ZGV2LT5tb2RlcyB8PSBJTkRJT19CVUZGRVJfSEFSRFdBUkU7DQo+ID4gKwlpaW9fZGV2aWNlX2F0 dGFjaF9idWZmZXIoaW5kaW9fZGV2LCBidWZmZXIpOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGF4aV9hZGNfcmVhZF9yYXcoc3RydWN0IGlp b19kZXYgKmluZGlvX2RldiwNCj4gPiArCQkJICAgc3RydWN0IGlpb19jaGFuX3NwZWMgY29uc3Qg KmNoYW4sDQo+ID4gKwkJCSAgIGludCAqdmFsLCBpbnQgKnZhbDIsIGxvbmcgbWFzaykNCj4gPiAr ew0KPiA+ICsJc3RydWN0IGF4aV9hZGNfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsN Cj4gPiArCXN0cnVjdCBheGlfYWRjX2NvbnYgKmNvbnYgPSAmc3QtPmNsaWVudC0+Y29udjsNCj4g PiArDQo+ID4gKwlzd2l0Y2ggKG1hc2spIHsNCj4gPiArCWNhc2UgSUlPX0NIQU5fSU5GT19TQU1Q X0ZSRVE6DQo+ID4gKwkJLyogZmFsbC10aHJvdWdoICovDQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJ CWlmICghY29udi0+cmVhZF9yYXcpDQo+ID4gKwkJCXJldHVybiAtRU5PU1lTOw0KPiA+ICsNCj4g PiArCQlyZXR1cm4gY29udi0+cmVhZF9yYXcoY29udiwgY2hhbiwgdmFsLCB2YWwyLCBtYXNrKTsN Cj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4gLUVJTlZBTDsNCj4gPiArfQ0KPiA+ICsNCj4g PiArc3RhdGljIGludCBheGlfYWRjX3dyaXRlX3JhdyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2 LA0KPiA+ICsJCQkgICAgIHN0cnVjdCBpaW9fY2hhbl9zcGVjIGNvbnN0ICpjaGFuLA0KPiA+ICsJ CQkgICAgIGludCB2YWwsIGludCB2YWwyLCBsb25nIG1hc2spDQo+ID4gK3sNCj4gPiArCXN0cnVj dCBheGlfYWRjX3N0YXRlICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ID4gKwlzdHJ1Y3Qg YXhpX2FkY19jb252ICpjb252ID0gJnN0LT5jbGllbnQtPmNvbnY7DQo+ID4gKw0KPiA+ICsJc3dp dGNoIChtYXNrKSB7DQo+ID4gKwljYXNlIElJT19DSEFOX0lORk9fU0FNUF9GUkVROg0KPiA+ICsJ CS8qIGZhbGwtdGhyb3VnaCAqLw0KPiANCj4gVW1tLiAgR290IHRvIGFzay4gSWYgeW91IG9ubHkg aGF2ZSBvbmUgb3B0aW9uIGFuZCBhIGRlZmF1bHQsIHdoeSBoYXZlDQo+IHRoZSBvcHRpb24/IE9y IGluZGVlZCB0aGUgc3dpdGNoIHN0YXRlbWVudCBhdCBhbGwuLg0KDQp0aGVyZSBhcmUgbW9yZSBz dHVmZiBpbiB0aGUgcGlwZWxpbmUNCnBhcnRpY3VsYXJseSB0aGUgSUlPX0NIQU5fSU5GT19DQUxJ QlNDQUxFLCBJSU9fQ0hBTl9JTkZPX0NBTElCQklBUyAmDQpJSU9fQ0hBTl9JTkZPX0NBTElCUEhB U0Ugc3R1ZmY7DQoNCmkgY2FuIHJlbW92ZSB0aGUgc3dpdGNoIGZvciBub3csIGFuZCBhZGQgaXQg bGF0ZXIgW3doZW4gd2UgbmVlZCBpdF07DQptYXliZSBhZnRlciBzb21lIGRpc2N1c3Npb24sIHdl IG1pZ2h0IG5vdCBuZWVkZWQgaXQgYXQgYWxsWz9dDQpubyBpZGVhOw0KDQp0aGlzIGRyaXZlciBb aW4gdGhpcyBmb3JtXSBpcyBhIHJld3JpdGUgZnJvbSBhbiBvbGRlciBBWEktQURDIGRyaXZlciB0 aGF0IHdlJ3ZlDQpiZWVuIGRldmVsb3BpbmcgYW5kIHVzaW5nIGludGVybmFsbHk7DQp0aGUgSERM IGd1eXMgbWFuYWdlZCB0byBjbGVhbnVwIHRoZWlyIHN0dWZmOw0KdGhpcyBpcyB0aGUgTGludXgg Y2xlYW51cA0KDQoNCj4gPiArCWRlZmF1bHQ6DQo+ID4gKwkJaWYgKCFjb252LT53cml0ZV9yYXcp DQo+ID4gKwkJCXJldHVybiAtRU5PU1lTOw0KPiA+ICsNCj4gPiArCQlyZXR1cm4gY29udi0+d3Jp dGVfcmF3KGNvbnYsIGNoYW4sIHZhbCwgdmFsMiwgbWFzayk7DQo+ID4gKwl9DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0YXRpYyBpbnQgYXhpX2FkY191cGRhdGVfc2Nhbl9tb2RlKHN0cnVjdCBpaW9f ZGV2ICppbmRpb19kZXYsDQo+ID4gKwkJCQkgICAgY29uc3QgdW5zaWduZWQgbG9uZyAqc2Nhbl9t YXNrKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgYXhpX2FkY19zdGF0ZSAqc3QgPSBpaW9fcHJpdihp bmRpb19kZXYpOw0KPiA+ICsJc3RydWN0IGF4aV9hZGNfY29udiAqY29udiA9ICZzdC0+Y2xpZW50 LT5jb252Ow0KPiA+ICsJdW5zaWduZWQgaW50IGksIGN0cmw7DQo+ID4gKw0KPiA+ICsJZm9yIChp ID0gMDsgaSA8IGNvbnYtPmNoaXBfaW5mby0+bnVtX2NoYW5uZWxzOyBpKyspIHsNCj4gPiArCQlj dHJsID0gYXhpX2FkY19yZWFkKHN0LCBBWElfQURDX1JFR19DSEFOX0NOVFJMKGkpKTsNCj4gPiAr DQo+ID4gKwkJaWYgKHRlc3RfYml0KGksIHNjYW5fbWFzaykpDQo+ID4gKwkJCWN0cmwgfD0gQVhJ X0FEQ19FTkFCTEU7DQo+ID4gKwkJZWxzZQ0KPiA+ICsJCQljdHJsICY9IH5BWElfQURDX0VOQUJM RTsNCj4gPiArDQo+ID4gKwkJYXhpX2FkY193cml0ZShzdCwgQVhJX0FEQ19SRUdfQ0hBTl9DTlRS TChpKSwgY3RybCk7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0cnVjdCBheGlfYWRjX2NvbnYgKmF4aV9hZGNfY29udl9yZWdpc3RlcihzdHJ1 Y3QgZGV2aWNlICpkZXYsIGludA0KPiA+IHNpemVvZl9wcml2KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1 Y3QgYXhpX2FkY19jbGllbnQgKmNsOw0KPiA+ICsJc2l6ZV90IGFsbG9jX3NpemU7DQo+ID4gKw0K PiA+ICsJYWxsb2Nfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYXhpX2FkY19jbGllbnQpOw0KPiA+ICsJ aWYgKHNpemVvZl9wcml2KSB7DQo+ID4gKwkJYWxsb2Nfc2l6ZSA9IEFMSUdOKGFsbG9jX3NpemUs IElJT19BTElHTik7DQo+ID4gKwkJYWxsb2Nfc2l6ZSArPSBzaXplb2ZfcHJpdjsNCj4gPiArCX0N Cj4gPiArCWFsbG9jX3NpemUgKz0gSUlPX0FMSUdOIC0gMTsNCj4gPiArDQo+ID4gKwljbCA9IGt6 YWxsb2MoYWxsb2Nfc2l6ZSwgR0ZQX0tFUk5FTCk7DQo+ID4gKwlpZiAoIWNsKQ0KPiA+ICsJCXJl dHVybiBFUlJfUFRSKC1FTk9NRU0pOw0KPiA+ICsNCj4gPiArCW11dGV4X2xvY2soJmF4aV9hZGNf cmVnaXN0ZXJlZF9jbGllbnRzX2xvY2spOw0KPiA+ICsNCj4gPiArCWdldF9kZXZpY2UoZGV2KTsN Cj4gPiArCWNsLT5kZXYgPSBkZXY7DQo+ID4gKw0KPiA+ICsJbGlzdF9hZGRfdGFpbCgmY2wtPmVu dHJ5LCAmYXhpX2FkY19yZWdpc3RlcmVkX2NsaWVudHMpOw0KPiA+ICsNCj4gPiArCW11dGV4X3Vu bG9jaygmYXhpX2FkY19yZWdpc3RlcmVkX2NsaWVudHNfbG9jayk7DQo+ID4gKw0KPiA+ICsJcmV0 dXJuICZjbC0+Y29udjsNCj4gPiArfQ0KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChheGlfYWRjX2Nv bnZfcmVnaXN0ZXIpOw0KPiA+ICsNCj4gPiArdm9pZCBheGlfYWRjX2NvbnZfdW5yZWdpc3Rlcihz dHJ1Y3QgYXhpX2FkY19jb252ICpjb252KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgYXhpX2FkY19j bGllbnQgKmNsID0gYXhpX2FkY19jb252X3RvX2NsaWVudChjb252KTsNCj4gPiArDQo+ID4gKwlp ZiAoIWNsKQ0KPiA+ICsJCXJldHVybjsNCj4gPiArDQo+ID4gKwltdXRleF9sb2NrKCZheGlfYWRj X3JlZ2lzdGVyZWRfY2xpZW50c19sb2NrKTsNCj4gPiArDQo+ID4gKwlwdXRfZGV2aWNlKGNsLT5k ZXYpOw0KPiA+ICsJbGlzdF9kZWwoJmNsLT5lbnRyeSk7DQo+ID4gKwlrZnJlZShjbCk7DQo+ID4g Kw0KPiA+ICsJbXV0ZXhfdW5sb2NrKCZheGlfYWRjX3JlZ2lzdGVyZWRfY2xpZW50c19sb2NrKTsN Cj4gPiArfQ0KPiA+ICtFWFBPUlRfU1lNQk9MKGF4aV9hZGNfY29udl91bnJlZ2lzdGVyKTsNCj4g DQo+IFlvdSBjb3VsZCBhdm9pZCBleHBvcnRpbmcgdGhlIG5vbiBkZXZtIHZlcnNpb25zIHRvIGVu Y291cmFnZSBwZW9wbGUNCj4gdG8gb25seSB1c2UgdGhlIG1hbmFnZWQgb25lcy4NCg0KYWNrDQoN Cj4gDQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBkZXZtX2F4aV9hZGNfY29udl9yZWxlYXNlKHN0 cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzKQ0KPiA+ICt7DQo+ID4gKwlheGlfYWRjX2NvbnZf dW5yZWdpc3RlcigqKHN0cnVjdCBheGlfYWRjX2NvbnYgKiopcmVzKTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGludCBkZXZtX2F4aV9hZGNfY29udl9tYXRjaChzdHJ1Y3QgZGV2aWNlICpk ZXYsIHZvaWQgKnJlcywgdm9pZA0KPiA+ICpkYXRhKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgYXhp X2FkY19jb252ICoqciA9IHJlczsNCj4gPiArDQo+ID4gKwlyZXR1cm4gKnIgPT0gZGF0YTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RydWN0IGF4aV9hZGNfY29udiAqZGV2bV9heGlfYWRjX2NvbnZf cmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LA0KPiA+ICsJCQkJCQlpbnQgc2l6ZW9mX3ByaXYp DQo+ID4gK3sNCj4gPiArCXN0cnVjdCBheGlfYWRjX2NvbnYgKipwdHIsICpjb252Ow0KPiA+ICsN Cj4gPiArCXB0ciA9IGRldnJlc19hbGxvYyhkZXZtX2F4aV9hZGNfY29udl9yZWxlYXNlLCBzaXpl b2YoKnB0ciksDQo+ID4gKwkJCSAgIEdGUF9LRVJORUwpOw0KPiA+ICsJaWYgKCFwdHIpDQo+ID4g KwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7DQo+ID4gKw0KPiA+ICsJY29udiA9IGF4aV9hZGNf Y29udl9yZWdpc3RlcihkZXYsIHNpemVvZl9wcml2KTsNCj4gPiArCWlmIChJU19FUlIoY29udikp IHsNCj4gPiArCQlkZXZyZXNfZnJlZShwdHIpOw0KPiA+ICsJCXJldHVybiBFUlJfQ0FTVChjb252 KTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkqcHRyID0gY29udjsNCj4gPiArCWRldnJlc19hZGQo ZGV2LCBwdHIpOw0KPiA+ICsNCj4gPiArCXJldHVybiBjb252Ow0KPiA+ICt9DQo+ID4gK0VYUE9S VF9TWU1CT0xfR1BMKGRldm1fYXhpX2FkY19jb252X3JlZ2lzdGVyKTsNCj4gPiArDQo+ID4gK3Zv aWQgZGV2bV9heGlfYWRjX2NvbnZfdW5yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4g KwkJCQkgIHN0cnVjdCBheGlfYWRjX2NvbnYgKmNvbnYpDQo+IE5vdGUgdGhhdCB0aGVyZSBpcyBu byAnbmVlZCcgdG8gcHJvdmlkZSBkZXZtIHVucmVnaXN0ZXIgZnVuY3Rpb25zDQo+IGlmIGl0IGlz IHVubGlrZWx5IGEgZHJpdmVyIHdpbGwgYWN0dWFsbHkgdXNlIHRoZW0uDQo+IA0KPiBNYXkgd2Vs bCBiZSBiZXR0ZXIgdG8gY2xlYW4gdGhlIG9uZXMgaW4gaGVyZSBvdXQgdW50aWwgd2UNCj4gYWN0 dWFsbHkgbmVlZCB0aGVtLiAgSWYgbm90aGluZyBlbHNlIGhhdmluZyB0aGVtIG1heSBlbmNvdXJh Z2UNCj4gYmFkIGRyaXZlciBhcmNoaXRlY3R1cmUuDQo+IA0KPiBob2h1bS4gIEkgc2hvdWxkIHBy b2JhYmx5IGp1c3QgcmVtb3ZlIHRoZSBvbmVzIGluIHRoZSBJSU8gY29yZQ0KPiB0aGF0IG5ldmVy IGdldCB1c2VkIGFzIHdlbGwuLi4NCj4gDQoNCmFjaw0Kd2lsbCByZW1vdmUNCg0KPiBkZXZtX2lp b19kZXZpY2VfdW5yZWdpc3RlciBmb3IgZXhhbXBsZS4NCg0KaG1tOyBkZXZtX2lpb19kZXZpY2Vf dW5yZWdpc3RlcigpIHNvdW5kcyBsaWtlIGFuIGludGVyZXN0aW5nIEdTb0MgcHJvamVjdA0KDQo+ IA0KPiA+ICt7DQo+ID4gKwlpbnQgcmM7DQo+ID4gKw0KPiA+ICsJcmMgPSBkZXZyZXNfcmVsZWFz ZShkZXYsIGRldm1fYXhpX2FkY19jb252X3JlbGVhc2UsDQo+ID4gKwkJCSAgICBkZXZtX2F4aV9h ZGNfY29udl9tYXRjaCwgY29udik7DQo+ID4gKwlXQVJOX09OKHJjKTsNCj4gPiArfQ0KPiA+ICtF WFBPUlRfU1lNQk9MX0dQTChkZXZtX2F4aV9hZGNfY29udl91bnJlZ2lzdGVyKTsNCj4gPiArDQo+ ID4gK3N0YXRpYyBzc2l6ZV90IGluX3ZvbHRhZ2Vfc2NhbGVfYXZhaWxhYmxlX3Nob3coc3RydWN0 IGRldmljZSAqZGV2LA0KPiA+ICsJCQkJCSAgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAq YXR0ciwNCj4gPiArCQkJCQkgICAgICAgY2hhciAqYnVmKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3Qg aWlvX2RldiAqaW5kaW9fZGV2ID0gZGV2X3RvX2lpb19kZXYoZGV2KTsNCj4gPiArCXN0cnVjdCBh eGlfYWRjX3N0YXRlICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ID4gKwlzdHJ1Y3QgYXhp X2FkY19jb252ICpjb252ID0gJnN0LT5jbGllbnQtPmNvbnY7DQo+ID4gKwlzaXplX3QgbGVuID0g MDsNCj4gPiArCWludCBpOw0KPiA+ICsNCj4gPiArCWlmICghY29udi0+Y2hpcF9pbmZvLT5udW1f c2NhbGVzKSB7DQo+ID4gKwkJYnVmWzBdID0gJ1xuJzsNCj4gPiArCQlyZXR1cm4gMTsNCj4gPiAr CX0NCj4gPiArDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgY29udi0+Y2hpcF9pbmZvLT5udW1fc2Nh bGVzOyBpKyspIHsNCj4gPiArCQljb25zdCB1bnNpZ25lZCBpbnQgKnMgPSBjb252LT5jaGlwX2lu Zm8tPnNjYWxlX3RhYmxlW2ldOw0KPiA+ICsNCj4gPiArCQlsZW4gKz0gc2NucHJpbnRmKGJ1ZiAr IGxlbiwgUEFHRV9TSVpFIC0gbGVuLA0KPiA+ICsJCQkJICIldS4lMDZ1ICIsIHNbMF0sIHNbMV0p Ow0KPiA+ICsJfQ0KPiA+ICsJYnVmW2xlbiAtIDFdID0gJ1xuJzsNCj4gPiArDQo+ID4gKwlyZXR1 cm4gbGVuOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgSUlPX0RFVklDRV9BVFRSX1JPKGlu X3ZvbHRhZ2Vfc2NhbGVfYXZhaWxhYmxlLCAwKTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3Qg YXR0cmlidXRlICpheGlfYWRjX2F0dHJpYnV0ZXNbXSA9IHsNCj4gPiArCSZpaW9fZGV2X2F0dHJf aW5fdm9sdGFnZV9zY2FsZV9hdmFpbGFibGUuZGV2X2F0dHIuYXR0ciwNCj4gPiArCU5VTEwsDQo+ ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBh eGlfYWRjX2F0dHJpYnV0ZV9ncm91cCA9IHsNCj4gPiArCS5hdHRycyA9IGF4aV9hZGNfYXR0cmli dXRlcywNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2luZm8g YXhpX2FkY19pbmZvID0gew0KPiA+ICsJLnJlYWRfcmF3ID0gJmF4aV9hZGNfcmVhZF9yYXcsDQo+ ID4gKwkud3JpdGVfcmF3ID0gJmF4aV9hZGNfd3JpdGVfcmF3LA0KPiA+ICsJLmF0dHJzID0gJmF4 aV9hZGNfYXR0cmlidXRlX2dyb3VwLA0KPiA+ICsJLnVwZGF0ZV9zY2FuX21vZGUgPSAmYXhpX2Fk Y191cGRhdGVfc2Nhbl9tb2RlLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBheGlfYWRjX2NvcmVfaW5mbyBheGlfYWRjXzEwXzBfYV9pbmZvID0gew0KPiA+ICsJLnZl cnNpb24gPSBBRElfQVhJX1BDT1JFX1ZFUigxMCwgMCwgJ2EnKSwNCj4gPiArfTsNCj4gPiArDQo+ ID4gKy8qIE1hdGNoIHRhYmxlIGZvciBvZl9wbGF0Zm9ybSBiaW5kaW5nICovDQo+ID4gK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGF4aV9hZGNfb2ZfbWF0Y2hbXSA9IHsNCj4gPiAr CXsgLmNvbXBhdGlibGUgPSAiYWRpLGF4aS1hZGMtMTAuMC5hIiwgLmRhdGEgPSAmYXhpX2FkY18x MF8wX2FfaW5mbyB9LA0KPiA+ICsJeyAvKiBlbmQgb2YgbGlzdCAqLyB9LA0KPiA+ICt9Ow0KPiA+ ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBheGlfYWRjX29mX21hdGNoKTsNCj4gPiArDQo+ID4g K3N0cnVjdCBheGlfYWRjX2NsaWVudCAqYXhpX2FkY19hdHRhY2hfY2xpZW50KHN0cnVjdCBkZXZp Y2UgKmRldikNCj4gPiArew0KPiA+ICsJY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqaWQ7DQo+ ID4gKwlzdHJ1Y3QgYXhpX2FkY19jbGllbnQgKmNsOw0KPiA+ICsJc3RydWN0IGRldmljZV9ub2Rl ICpjbG47DQo+ID4gKw0KPiA+ICsJaWYgKCFkZXYtPm9mX25vZGUpIHsNCj4gPiArCQlkZXZfZXJy KGRldiwgIkRUIG5vZGUgaXMgbnVsbFxuIik7DQo+ID4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT0RF Vik7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWQgPSBvZl9tYXRjaF9ub2RlKGF4aV9hZGNfb2Zf bWF0Y2gsIGRldi0+b2Zfbm9kZSk7DQo+ID4gKwlpZiAoIWlkKQ0KPiA+ICsJCXJldHVybiBFUlJf UFRSKC1FTk9ERVYpOw0KPiA+ICsNCj4gPiArCWNsbiA9IG9mX3BhcnNlX3BoYW5kbGUoZGV2LT5v Zl9ub2RlLCAiYXhpLWFkYy1jbGllbnQiLCAwKTsNCj4gPiArCWlmICghY2xuKSB7DQo+ID4gKwkJ ZGV2X2VycihkZXYsICJObyAnYXhpLWFkYy1jbGllbnQnIG5vZGUgZGVmaW5lZFxuIik7DQo+ID4g KwkJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJbXV0ZXhf bG9jaygmYXhpX2FkY19yZWdpc3RlcmVkX2NsaWVudHNfbG9jayk7DQo+ID4gKw0KPiA+ICsJbGlz dF9mb3JfZWFjaF9lbnRyeShjbCwgJmF4aV9hZGNfcmVnaXN0ZXJlZF9jbGllbnRzLCBlbnRyeSkg ew0KPiA+ICsJCWlmICghY2wtPmRldikNCj4gPiArCQkJY29udGludWU7DQo+ID4gKwkJaWYgKGNs LT5kZXYtPm9mX25vZGUgPT0gY2xuKSB7DQo+ID4gKwkJCWlmICghdHJ5X21vZHVsZV9nZXQoZGV2 LT5kcml2ZXItPm93bmVyKSkgew0KPiA+ICsJCQkJbXV0ZXhfdW5sb2NrKCZheGlfYWRjX3JlZ2lz dGVyZWRfY2xpZW50c19sb2NrKTsNCj4gPiArCQkJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOw0K PiA+ICsJCQl9DQo+ID4gKwkJCWdldF9kZXZpY2UoZGV2KTsNCj4gPiArCQkJY2wtPmluZm8gPSBp ZC0+ZGF0YTsNCj4gPiArCQkJbXV0ZXhfdW5sb2NrKCZheGlfYWRjX3JlZ2lzdGVyZWRfY2xpZW50 c19sb2NrKTsNCj4gPiArCQkJcmV0dXJuIGNsOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ ID4gKwltdXRleF91bmxvY2soJmF4aV9hZGNfcmVnaXN0ZXJlZF9jbGllbnRzX2xvY2spOw0KPiA+ ICsNCj4gPiArCXJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgaW50IGF4aV9hZGNfc2V0dXBfY2hhbm5lbHMoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgYXhpX2FkY19zdGF0ZQ0KPiA+ICpzdCkNCj4gPiArew0KPiA+ICsJc3RydWN0IGF4 aV9hZGNfY29udiAqY29udiA9IGNvbnYgPSAmc3QtPmNsaWVudC0+Y29udjsNCj4gPiArCXVuc2ln bmVkIGludCB2YWw7DQo+ID4gKwlpbnQgaSwgcmV0Ow0KPiA+ICsNCj4gPiArCWlmIChjb252LT5w cmVlbmFibGVfc2V0dXApIHsNCj4gPiArCQlyZXQgPSBjb252LT5wcmVlbmFibGVfc2V0dXAoY29u dik7DQo+ID4gKwkJaWYgKHJldCkNCj4gPiArCQkJcmV0dXJuIHJldDsNCj4gPiArCX0NCj4gPiAr DQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgY29udi0+Y2hpcF9pbmZvLT5udW1fY2hhbm5lbHM7IGkr Kykgew0KPiA+ICsJCWlmIChpICYgMSkNCj4gPiArCQkJdmFsID0gQVhJX0FEQ19JUUNPUl9DT0VG Rl8yX1NFVChBWElfQURDX0lRQ09SX0lOVF8xKTsNCj4gPiArCQllbHNlDQo+ID4gKwkJCXZhbCA9 IEFYSV9BRENfSVFDT1JfQ09FRkZfMV9TRVQoQVhJX0FEQ19JUUNPUl9JTlRfMSk7DQo+ID4gKwkJ YXhpX2FkY193cml0ZShzdCwgQVhJX0FEQ19SRUdfQ0hBTl9DTlRSTF8yKGkpLCB2YWwpOw0KPiA+ ICsNCj4gPiArCQlheGlfYWRjX3dyaXRlKHN0LCBBWElfQURDX1JFR19DSEFOX0NOVFJMKGkpLA0K PiA+ICsJCQkgICAgICBBWElfQURDX0ZPUk1BVF9TSUdORVhUIHwgQVhJX0FEQ19GT1JNQVRfRU5B QkxFIHwNCj4gPiArCQkJICAgICAgQVhJX0FEQ19JUUNPUl9FTkIgfCBBWElfQURDX0VOQUJMRSk7 DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0 YXRpYyBpbnQgYXhpX2FkY19hbGxvY19jaGFubmVscyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2 LA0KPiA+ICsJCQkJICBzdHJ1Y3QgYXhpX2FkY19jb252ICpjb252KQ0KPiA+ICt7DQo+ID4gKwl1 bnNpZ25lZCBpbnQgaSwgbnVtID0gY29udi0+Y2hpcF9pbmZvLT5udW1fY2hhbm5lbHM7DQo+ID4g KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpbmRpb19kZXYtPmRldi5wYXJlbnQ7DQo+ID4gKwlzdHJ1 Y3QgaWlvX2NoYW5fc3BlYyAqY2hhbm5lbHM7DQo+ID4gKw0KPiA+ICsJY2hhbm5lbHMgPSBkZXZt X2tjYWxsb2MoZGV2LCBudW0sIHNpemVvZigqY2hhbm5lbHMpLCBHRlBfS0VSTkVMKTsNCj4gPiAr CWlmICghY2hhbm5lbHMpDQo+ID4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ID4gKw0KPiA+ICsJZm9y IChpID0gMDsgaSA8IGNvbnYtPmNoaXBfaW5mby0+bnVtX2NoYW5uZWxzOyBpKyspDQo+ID4gKwkJ Y2hhbm5lbHNbaV0gPSBjb252LT5jaGlwX2luZm8tPmNoYW5uZWxzLT5paW9fY2hhbjsNCj4gPiAr DQo+ID4gKwlpbmRpb19kZXYtPm51bV9jaGFubmVscyA9IG51bTsNCj4gPiArCWluZGlvX2Rldi0+ Y2hhbm5lbHMgPSBjaGFubmVsczsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RydWN0IGF4aV9hZGNfY2xlYW51cF9kYXRhIHsNCj4gPiArCXN0cnVjdCBheGlf YWRjX3N0YXRlCSpzdDsNCj4gPiArCXN0cnVjdCBheGlfYWRjX2NsaWVudAkqY2w7DQo+ID4gK307 DQo+IA0KPiBEb2Vzbid0IHNlZW0gdG8gYmUgdXNlZC4NCg0KWWVhaC4NCk15IGJhZDsgbGVmdC1v dmVyIGZyb20gc29tZSBtaWQtdGVybSByZXdyaXRlLg0KVGhhbmtzIGZvciBjYXRjaGluZy4NCg0K PiANCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGF4aV9hZGNfY2xlYW51cCh2b2lkICpkYXRhKQ0K PiA+ICt7DQo+ID4gKwlzdHJ1Y3QgYXhpX2FkY19jbGllbnQgKmNsID0gZGF0YTsNCj4gPiArDQo+ ID4gKwlwdXRfZGV2aWNlKGNsLT5kZXYpOw0KPiA+ICsJbW9kdWxlX3B1dChjbC0+ZGV2LT5kcml2 ZXItPm93bmVyKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBheGlfYWRjX3Byb2Jl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBheGlf YWRjX2NvbnYgKmNvbnY7DQo+ID4gKwlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2Ow0KPiA+ICsJ c3RydWN0IGF4aV9hZGNfY2xpZW50ICpjbDsNCj4gPiArCXN0cnVjdCBheGlfYWRjX3N0YXRlICpz dDsNCj4gPiArCXN0cnVjdCByZXNvdXJjZSAqbWVtOw0KPiA+ICsJdW5zaWduZWQgaW50IHZlcjsN Cj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJY2wgPSBheGlfYWRjX2F0dGFjaF9jbGllbnQo JnBkZXYtPmRldik7DQo+ID4gKwlpZiAoSVNfRVJSKGNsKSkNCj4gPiArCQlyZXR1cm4gUFRSX0VS UihjbCk7DQo+ID4gKw0KPiA+ICsJaW5kaW9fZGV2ID0gZGV2bV9paW9fZGV2aWNlX2FsbG9jKCZw ZGV2LT5kZXYsIHNpemVvZigqc3QpKTsNCj4gPiArCWlmIChpbmRpb19kZXYgPT0gTlVMTCkNCj4g PiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiArDQo+ID4gKwlzdCA9IGlpb19wcml2KGluZGlvX2Rl dik7DQo+ID4gKwlzdC0+Y2xpZW50ID0gY2w7DQo+ID4gKwljbC0+c3RhdGUgPSBzdDsNCj4gPiAr CW11dGV4X2luaXQoJnN0LT5sb2NrKTsNCj4gPiArDQo+ID4gKwlyZXQgPSBkZXZtX2FkZF9hY3Rp b25fb3JfcmVzZXQoJnBkZXYtPmRldiwgYXhpX2FkY19jbGVhbnVwLCBjbCk7DQo+IA0KPiBUaGlz IGlzIHVud2luZGluZyB0aGluZ3MgaW4gYXhpX2FkY19hdHRhY2hfY2xpZW50LCBzbyBzaG91bGQg YmUNCj4gY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoYXQsIG5vdCB3aXRoIHRoZSBpaW8gZGV2 aWNlIGFsbG9jYXRpb24NCj4gaW4gYmV0d2Vlbi4NCj4gDQoNCmdvb2QgcG9pbnQNCg0KDQo+ID4g KwlpZiAocmV0KQ0KPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gKw0KPiA+ICsJbWVtID0gcGxhdGZv cm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsNCj4gPiArCXN0LT5yZWdz X3NpemUgPSByZXNvdXJjZV9zaXplKG1lbSk7DQo+ID4gKwlzdC0+cmVncyA9IGRldm1faW9yZW1h cF9yZXNvdXJjZSgmcGRldi0+ZGV2LCBtZW0pOw0KPiANCj4gQ2FuIHdlIHVzZSBkZXZtX3BsYXRm b3JtX2lvcmVtYXBfcmVzb3VyY2UgaGVyZT8NCj4gV2UgZ3JhYiByZWdzX3NpemUgYnV0IGRvbid0 IHNlZW0gdG8gdXNlIGl0Lg0KPiANCg0KaG1tbTsgc28sIHRoZSAncmVnc19zaXplJyBkb2VzIGdl dCB1c2VkIGV2ZW50dWFsbHkNCndpdGggc29tZSBkZWJ1Z2ZzIHN1cHBvcnQgYmVpbmcgYWRkZWQ7 DQpidXQgbWF5YmUgYWZ0ZXIgYW5vdGhlciBkaXNjdXNzaW9uIGEgYmV0dGVyIGlkZWEgY291bGQg YmUgZm91bmQ7DQppIGd1ZXNzIGkgY2FuIHJlbW92ZSBpdCBmb3Igbm93DQoNCj4gDQo+ID4gKwlp ZiAoSVNfRVJSKHN0LT5yZWdzKSkNCj4gPiArCQlyZXR1cm4gUFRSX0VSUihzdC0+cmVncyk7DQo+ ID4gKw0KPiA+ICsJY29udiA9ICZzdC0+Y2xpZW50LT5jb252Ow0KPiA+ICsNCj4gPiArCS8qIFJl c2V0IEhETCBDb3JlICovDQo+ID4gKwlheGlfYWRjX3dyaXRlKHN0LCBBWElfQURDX1JFR19SU1RO LCAwKTsNCj4gPiArCW1kZWxheSgxMCk7DQo+ID4gKwlheGlfYWRjX3dyaXRlKHN0LCBBWElfQURD X1JFR19SU1ROLCBBWElfQURDX01NQ01fUlNUTik7DQo+ID4gKwltZGVsYXkoMTApOw0KPiA+ICsJ YXhpX2FkY193cml0ZShzdCwgQVhJX0FEQ19SRUdfUlNUTiwgQVhJX0FEQ19SU1ROIHwgQVhJX0FE Q19NTUNNX1JTVE4pOw0KPiA+ICsNCj4gPiArCXZlciA9IGF4aV9hZGNfcmVhZChzdCwgQURJX0FY SV9SRUdfVkVSU0lPTik7DQo+ID4gKw0KPiA+ICsJaWYgKGNsLT5pbmZvLT52ZXJzaW9uID4gdmVy KSB7DQo+ID4gKwkJZGV2X2VycigmcGRldi0+ZGV2LA0KPiA+ICsJCQkiSVAgY29yZSB2ZXJzaW9u IGlzIHRvbyBvbGQuIEV4cGVjdGVkICVkLiUuMmQuJWMsDQo+ID4gUmVwb3J0ZWQgJWQuJS4yZC4l Y1xuIiwNCj4gPiArCQkJQURJX0FYSV9QQ09SRV9WRVJfTUFKT1IoY2wtPmluZm8tPnZlcnNpb24p LA0KPiA+ICsJCQlBRElfQVhJX1BDT1JFX1ZFUl9NSU5PUihjbC0+aW5mby0+dmVyc2lvbiksDQo+ ID4gKwkJCUFESV9BWElfUENPUkVfVkVSX1BBVENIKGNsLT5pbmZvLT52ZXJzaW9uKSwNCj4gPiAr CQkJQURJX0FYSV9QQ09SRV9WRVJfTUFKT1IodmVyKSwNCj4gPiArCQkJQURJX0FYSV9QQ09SRV9W RVJfTUlOT1IodmVyKSwNCj4gPiArCQkJQURJX0FYSV9QQ09SRV9WRVJfUEFUQ0godmVyKSk7DQo+ ID4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaW5kaW9fZGV2LT5p bmZvID0gJmF4aV9hZGNfaW5mbzsNCj4gPiArCWluZGlvX2Rldi0+ZGV2LnBhcmVudCA9ICZwZGV2 LT5kZXY7DQo+ID4gKwlpbmRpb19kZXYtPm5hbWUgPSBwZGV2LT5kZXYub2Zfbm9kZS0+bmFtZTsN Cj4gPiArCWluZGlvX2Rldi0+bW9kZXMgPSBJTkRJT19ESVJFQ1RfTU9ERTsNCj4gPiArDQo+ID4g KwlyZXQgPSBheGlfYWRjX2FsbG9jX2NoYW5uZWxzKGluZGlvX2RldiwgY29udik7DQo+ID4gKwlp ZiAocmV0KQ0KPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gKw0KPiA+ICsJcmV0ID0gYXhpX2FkY19j b25maWdfZG1hX2J1ZmZlcigmcGRldi0+ZGV2LCBpbmRpb19kZXYpOw0KPiA+ICsJaWYgKHJldCkN Cj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArCXJldCA9IGF4aV9hZGNfc2V0dXBfY2hh bm5lbHMoJnBkZXYtPmRldiwgc3QpOw0KPiA+ICsJaWYgKHJldCkNCj4gPiArCQlyZXR1cm4gcmV0 Ow0KPiA+ICsNCj4gPiArCXJldCA9IGRldm1faWlvX2RldmljZV9yZWdpc3RlcigmcGRldi0+ZGV2 LCBpbmRpb19kZXYpOw0KPiA+ICsJaWYgKHJldCkNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsN Cj4gPiArCWRldl9pbmZvKCZwZGV2LT5kZXYsICJBWEkgQURDIElQIGNvcmUgKCVkLiUuMmQuJWMp IHByb2JlZFxuIiwNCj4gPiArCQlBRElfQVhJX1BDT1JFX1ZFUl9NQUpPUih2ZXIpLA0KPiA+ICsJ CUFESV9BWElfUENPUkVfVkVSX01JTk9SKHZlciksDQo+ID4gKwkJQURJX0FYSV9QQ09SRV9WRVJf UEFUQ0godmVyKSk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGF4aV9hZGNfZHJpdmVyID0gew0KPiA+ICsJ LmRyaXZlciA9IHsNCj4gPiArCQkubmFtZSA9IEtCVUlMRF9NT0ROQU1FLA0KPiA+ICsJCS5vZl9t YXRjaF90YWJsZSA9IGF4aV9hZGNfb2ZfbWF0Y2gsDQo+ID4gKwl9LA0KPiA+ICsJLnByb2JlID0g YXhpX2FkY19wcm9iZSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK21vZHVsZV9wbGF0Zm9ybV9kcml2 ZXIoYXhpX2FkY19kcml2ZXIpOw0KPiA+ICsNCj4gPiArTU9EVUxFX0FVVEhPUigiTWljaGFlbCBI ZW5uZXJpY2ggPG1pY2hhZWwuaGVubmVyaWNoQGFuYWxvZy5jb20+Iik7DQo+ID4gK01PRFVMRV9E RVNDUklQVElPTigiQW5hbG9nIERldmljZXMgR2VuZXJpYyBBWEkgQURDIElQIGNvcmUgZHJpdmVy Iik7DQo+ID4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsNCj4gPiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9paW8vYWRjL2F4aS1hZGMuaCBiL2luY2x1ZGUvbGludXgvaWlvL2FkYy9heGkt DQo+ID4gYWRjLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAw MDAwMC4uZDM2N2M0NDJkYzUyDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2luY2x1ZGUv bGludXgvaWlvL2FkYy9heGktYWRjLmgNCj4gPiBAQCAtMCwwICsxLDc5IEBADQo+ID4gKy8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovDQo+ID4gKy8qDQo+ID4gKyAqIEFuYWxv ZyBEZXZpY2VzIEdlbmVyaWMgQVhJIEFEQyBJUCBjb3JlIGRyaXZlci9saWJyYXJ5DQo+ID4gKyAq IExpbms6IGh0dHBzOi8vd2lraS5hbmFsb2cuY29tL3Jlc291cmNlcy9mcGdhL2RvY3MvYXhpX2Fk Y19pcA0KPiA+ICsgKg0KPiA+ICsgKiBDb3B5cmlnaHQgMjAxMi0yMDIwIEFuYWxvZyBEZXZpY2Vz IEluYy4NCj4gPiArICovDQo+ID4gKyNpZm5kZWYgX19BWElfQURDX0hfXw0KPiA+ICsjZGVmaW5l IF9fQVhJX0FEQ19IX18NCj4gPiArDQo+ID4gK3N0cnVjdCBkZXZpY2U7DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICogc3RydWN0IGF4aV9hZGNfY2hhbl9zcGVjIC0gQVhJIEFEQyBjaGFubmVsIHdy YXBwZXINCj4gPiArICoJCQkgICAgICBtYXBzIElJTyBjaGFubmVsIGRhdGEgd2l0aCBBWEkgQURD IHNwZWNpZmljcw0KPiA+ICsgKiBAaWlvX2NoYW4JCUlJTyBjaGFubmVsIHNwZWNpZmljYXRpb24N Cj4gPiArICogQG51bV9sYW5lcwkJTnVtYmVyIG9mIGxhbmVzIHBlciBjaGFubmVsDQo+ID4gKyAq Lw0KPiA+ICtzdHJ1Y3QgYXhpX2FkY19jaGFuX3NwZWMgew0KPiA+ICsJc3RydWN0IGlpb19jaGFu X3NwZWMJCWlpb19jaGFuOw0KPiA+ICsJdW5zaWduZWQgaW50CQkJbnVtX2xhbmVzOw0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBheGlfYWRjX2NoaXBfaW5mbyAtIENo aXAgc3BlY2lmaWMgaW5mb3JtYXRpb24NCj4gPiArICogQG5hbWUJCUNoaXAgbmFtZQ0KPiA+ICsg KiBAaWQJCQlDaGlwIElEICh1c3VhbGx5IHByb2R1Y3QgSUQpDQo+ID4gKyAqIEBjaGFubmVscwkJ Q2hhbm5lbCBzcGVjaWZpY2F0aW9ucyBvZiB0eXBlIEBzdHJ1Y3QNCj4gPiBheGlfYWRjX2NoYW5f c3BlYw0KPiA+ICsgKiBAbnVtX2NoYW5uZWxzCU51bWJlciBvZiBAY2hhbm5lbHMNCj4gPiArICog QHNjYWxlX3RhYmxlCQlTdXBwb3J0ZWQgc2NhbGVzIGJ5IHRoZSBjaGlwOyB0dXBsZXMgb2YgMiBp bnRzDQo+ID4gKyAqIEBudW1fc2NhbGVzCQlOdW1iZXIgb2Ygc2NhbGVzIGluIHRoZSB0YWJsZQ0K PiA+ICsgKiBAbWF4X3JhdGUJCU1heGltdW0gc2FtcGxpbmcgcmF0ZSBzdXBwb3J0ZWQgYnkgdGhl IGRldmljZQ0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGF4aV9hZGNfY2hpcF9pbmZvIHsNCj4gPiAr CWNvbnN0IGNoYXIJCQkqbmFtZTsNCj4gPiArCXVuc2lnbmVkIGludAkJCWlkOw0KPiA+ICsNCj4g PiArCWNvbnN0IHN0cnVjdCBheGlfYWRjX2NoYW5fc3BlYwkqY2hhbm5lbHM7DQo+ID4gKwl1bnNp Z25lZCBpbnQJCQludW1fY2hhbm5lbHM7DQo+ID4gKw0KPiA+ICsJY29uc3QgdW5zaWduZWQgaW50 CQkoKnNjYWxlX3RhYmxlKVsyXTsNCj4gPiArCWludAkJCQludW1fc2NhbGVzOw0KPiA+ICsNCj4g PiArCXVuc2lnbmVkIGxvbmcJCQltYXhfcmF0ZTsNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgKiBzdHJ1Y3QgYXhpX2FkY19jb252IC0gZGF0YSBvZiB0aGUgQURDIGF0dGFjaGVkIHRv IHRoZSBBWEkgQURDDQo+ID4gKyAqIEBjaGlwX2luZm8JCWNoaXAgaW5mbyBkZXRhaWxzIGZvciB0 aGUgY2xpZW50IEFEQw0KPiA+ICsgKiBAcHJlZW5hYmxlX3NldHVwCW9wIHRvIHJ1biBpbiB0aGUg Y2xpZW50IGJlZm9yZSBlbmFibGluZyB0aGUgQVhJDQo+ID4gQURDDQo+ID4gKyAqIEByZWFkX3Jh dwkJSUlPIHJlYWRfcmF3IGhvb2sgZm9yIHRoZSBjbGllbnQgQURDDQo+ID4gKyAqIEB3cml0ZV9y YXcJCUlJTyB3cml0ZV9yYXcgaG9vayBmb3IgdGhlIGNsaWVudCBBREMNCj4gPiArICovDQo+ID4g K3N0cnVjdCBheGlfYWRjX2NvbnYgew0KPiA+ICsJY29uc3Qgc3RydWN0IGF4aV9hZGNfY2hpcF9p bmZvCQkqY2hpcF9pbmZvOw0KPiA+ICsNCj4gPiArCWludCAoKnByZWVuYWJsZV9zZXR1cCkoc3Ry dWN0IGF4aV9hZGNfY29udiAqY29udik7DQo+ID4gKwlpbnQgKCpyZWdfYWNjZXNzKShzdHJ1Y3Qg YXhpX2FkY19jb252ICpjb252LCB1bnNpZ25lZCBpbnQgcmVnLA0KPiA+ICsJCQkgIHVuc2lnbmVk IGludCB3cml0ZXZhbCwgdW5zaWduZWQgaW50ICpyZWFkdmFsKTsNCj4gPiArCWludCAoKnJlYWRf cmF3KShzdHJ1Y3QgYXhpX2FkY19jb252ICpjb252LA0KPiA+ICsJCQlzdHJ1Y3QgaWlvX2NoYW5f c3BlYyBjb25zdCAqY2hhbiwNCj4gPiArCQkJaW50ICp2YWwsIGludCAqdmFsMiwgbG9uZyBtYXNr KTsNCj4gPiArCWludCAoKndyaXRlX3Jhdykoc3RydWN0IGF4aV9hZGNfY29udiAqY29udiwNCj4g PiArCQkJIHN0cnVjdCBpaW9fY2hhbl9zcGVjIGNvbnN0ICpjaGFuLA0KPiA+ICsJCQkgaW50IHZh bCwgaW50IHZhbDIsIGxvbmcgbWFzayk7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgYXhp X2FkY19jb252ICpheGlfYWRjX2NvbnZfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LA0KPiA+ ICsJCQkJCSAgIGludCBzaXplb2ZfcHJpdik7DQo+ID4gK3ZvaWQgYXhpX2FkY19jb252X3VucmVn aXN0ZXIoc3RydWN0IGF4aV9hZGNfY29udiAqY29udik7DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgYXhp X2FkY19jb252ICpkZXZtX2F4aV9hZGNfY29udl9yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYs DQo+ID4gKwkJCQkJCWludCBzaXplb2ZfcHJpdik7DQo+ID4gK3ZvaWQgZGV2bV9heGlfYWRjX2Nv bnZfdW5yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4gKwkJCQkgIHN0cnVjdCBheGlf YWRjX2NvbnYgKmNvbnYpOw0KPiA+ICsNCj4gPiArdm9pZCAqYXhpX2FkY19jb252X3ByaXYoc3Ry dWN0IGF4aV9hZGNfY29udiAqY29udik7DQo+ID4gKw0KPiA+ICsjZW5kaWYNCg==