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, DKIM_VALID_AU,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 14B39C433DF for ; Thu, 4 Jun 2020 09:29:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C15DC20738 for ; Thu, 4 Jun 2020 09:29:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="L44pAtr5" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727907AbgFDJ3p (ORCPT ); Thu, 4 Jun 2020 05:29:45 -0400 Received: from mail-eopbgr70077.outbound.protection.outlook.com ([40.107.7.77]:51049 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726248AbgFDJ3o (ORCPT ); Thu, 4 Jun 2020 05:29:44 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N18egnZRnCZO7CPkkC65O4vbyHVD+Hs6Xx6/KjiRYIRo+97GY3x97VbIJXU9SWuo+QSs+eTBwCjQKdOOu18NwN0IX46gG4MzZ7DQ3Rk5ZPJYskRxfAQKSCz/HfUSslZyxDjHPQGqqIe4qJWOGwOb5wTi0cNjoJI+ixoFY7q/9+qXILZjcUY2Y1sebvsArmMRxkCK4tfsJnZYPPOZeWq0YGKVR+sDu5tIWiR4j5eKy+c8wKb5Zit4qzNUEXURrd24EYfa/EP1Kt1h06RQwENyDfX8Clq76Nn+hpyQ6wozzBnHcHq5ir50CqS/Rb5MOsw1i+fArAMl6UHw7X2W9O5nFA== 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=8tq4R39k7zQ+5lTPy0limFAhplpS84szVpxvUtgWuas=; b=FYNBFye6qOBHbFN8ul7d4NoYwEn1416EQmoFqob/N8gZh8h3tT1KmbVX/m1pnjIfihAg2De2gwCn5i3qohbuDAK/7erg3GX0gxmMKs59NB8jlYkRh6y2idZ56OCzXTrJcAz287N9L1KKOM5OWd8aLx3KuRv8BFwhbKN5apl2mz5zja8GydOSWrOeBZd9NuvU3ZDZR5MeySLQejzrRgpor04dP6VdUgUHdppCvcu+OS5SKsp7/n1Ld9fYnIOfechc70dsijMSS4s/FDKyk4bUZXQyGjWRyaaW6WGOy/6XlM3Xz8d5MGjzJTfaJixZoTs0DjRMFHM3xx52i26ubK5PLA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8tq4R39k7zQ+5lTPy0limFAhplpS84szVpxvUtgWuas=; b=L44pAtr5fpMpFXUpUmkxsq57P5JwY6KxKyjfZS6w23/f1L0F5mgxcaptuyLqbuLFHmLi2Wt5DeQdIzg252NQLh3z8Oz7wPMrdgttvOsGTzHcFkxmTJ32y4imew96cT4MQygyqsWrFhXYhPFZex3ljH306KtcWHGgkEV+dRV05Og= Received: from DB8PR04MB6828.eurprd04.prod.outlook.com (2603:10a6:10:113::21) by DB8PR04MB5609.eurprd04.prod.outlook.com (2603:10a6:10:b1::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3045.19; Thu, 4 Jun 2020 09:29:24 +0000 Received: from DB8PR04MB6828.eurprd04.prod.outlook.com ([fe80::58e6:c037:d476:da0d]) by DB8PR04MB6828.eurprd04.prod.outlook.com ([fe80::58e6:c037:d476:da0d%9]) with mapi id 15.20.3066.018; Thu, 4 Jun 2020 09:29:24 +0000 From: Sandor Yu To: Laurent Pinchart CC: "a.hajda@samsung.com" , "narmstrong@baylibre.com" , "jonas@kwiboo.se" , "jernej.skrabec@siol.net" , "heiko@sntech.de" , "hjc@rock-chips.com" , "dkos@cadence.com" , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-rockchip@lists.infradead.org" , dl-linux-imx Subject: RE: [EXT] Re: [PATCH 3/7] drm: bridge: cadence: initial support for MHDP DP bridge driver Thread-Topic: [EXT] Re: [PATCH 3/7] drm: bridge: cadence: initial support for MHDP DP bridge driver Thread-Index: AQHWN8j4u7WI46r4Oky1ETuRdyEEkajF/WcAgAI4AnA= Date: Thu, 4 Jun 2020 09:29:24 +0000 Message-ID: References: <20200602233524.GQ6547@pendragon.ideasonboard.com> In-Reply-To: <20200602233524.GQ6547@pendragon.ideasonboard.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: ideasonboard.com; dkim=none (message not signed) header.d=none;ideasonboard.com; dmarc=none action=none header.from=nxp.com; x-originating-ip: [119.31.174.68] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 0eecd61a-e0e7-4b15-59c3-08d80869c55f x-ms-traffictypediagnostic: DB8PR04MB5609: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3383; x-forefront-prvs: 04244E0DC5 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: kTdSv/Lrk8vGB18MrVarSXRkbZaiRbvGYh6HiPi6Fh8+DrqbkKHVHGNuo6/SKH8x6F57yOqiUU+I2tt915M+6BqL7rQhWK84+xkc1ZWDbxKznu2rqVarMpx+Xl7FUdVVD+VB5jFLLdMP+lGHWl2pvuZyHUBLXCSNCW1OwMoCrpgsZnUycbIAtVZy6hkhL04JQb5M66cSNqM4ycIl8vjVMKWfUggzqLw+pLouiY3yVU+Zqy3mhLpoJFXIb4AO/WKo9hXw+yMVDnRI2NsM5F8G6dgfXfK6zOKpBUVvW/jqeMna5mUim0eQqoSiG/yq922L9tKkZm29nCPdh22VpmljlWgn/BLkZ/VTwGZi2aocEoQx8YUHLyzrERCp4ZQwVN2BW4tkc6eXVX/UfqwUF3+r5w== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB8PR04MB6828.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(396003)(346002)(376002)(136003)(39860400002)(366004)(316002)(86362001)(44832011)(6916009)(71200400001)(2906002)(5660300002)(9686003)(66556008)(7416002)(55016002)(83080400001)(66446008)(64756008)(26005)(66476007)(4326008)(54906003)(8936002)(966005)(76116006)(66946007)(45080400002)(7696005)(186003)(30864003)(52536014)(83380400001)(6506007)(33656002)(8676002)(478600001)(53546011)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: Oue9Wu3VsbZYMAzDgVGTUdbhW1TzGhzyF6AtAqD3zVFxVPhjaTvtqcmA1IcQMZjM2FQzssoTN5d80pr0O/waEVRT3RmSDYstzbkHBVNmysMGVOTlMdn60YzG7RlebAJ5GwG1bc3CsMLYv2mPh9yUd38Uqc2J5aj1hn+o42wbRkuWpu+6/5xwEsB2ll0t/EfT05aBNLQB/VjVyCWJXR3ZinyX1OGFmekXSGWe9qGjVTET+KAm0DC1wahI8wXDYXx1/zofpeysrpYY6gIO8z+qWaMYwQup+j1emrbqrpIERmluN2wLar//mrN5Gd5XIm8hDKtAWBgZ5kJ99OLuoEo+WdC0po7CwrR5cRtYHmH9RsBUueOqe1WmdoZ9ApSysIc8Evj5vXQX0oZZCCgilFQ3jd0X57qCZiUD7+i86gjkhY/c2++DyHDaNXK90yyEjmOj8BPJrPeIPfRy6b6rf+c1B9X13mTDK8Dezgg0PWpY4gY= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0eecd61a-e0e7-4b15-59c3-08d80869c55f X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jun 2020 09:29:24.7738 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ziyYHeufqDxOAmWjNS+6HrOsZ2ysn+3XFk6XxHDCwMvkEUDFofmB6NlMG9NNV7/pFmNudxx+4ItIFwgM6nQhvQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB5609 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGF1cmVudCBQaW5jaGFy dCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPg0KPiBTZW50OiBXZWRuZXNkYXks IEp1bmUgMywgMjAyMCA3OjM1IEFNDQo+IFRvOiBTYW5kb3IgWXUgPHNhbmRvci55dUBueHAuY29t Pg0KPiBDYzogYS5oYWpkYUBzYW1zdW5nLmNvbTsgbmFybXN0cm9uZ0BiYXlsaWJyZS5jb207IGpv bmFzQGt3aWJvby5zZTsNCj4gamVybmVqLnNrcmFiZWNAc2lvbC5uZXQ7IGhlaWtvQHNudGVjaC5k ZTsgaGpjQHJvY2stY2hpcHMuY29tOw0KPiBka29zQGNhZGVuY2UuY29tOyBkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnOw0KPiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBsaW51 eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7DQo+IGxpbnV4LXJvY2tjaGlwQGxpc3Rz LmluZnJhZGVhZC5vcmc7IGRsLWxpbnV4LWlteCA8bGludXgtaW14QG54cC5jb20+DQo+IFN1Ympl Y3Q6IFtFWFRdIFJlOiBbUEFUQ0ggMy83XSBkcm06IGJyaWRnZTogY2FkZW5jZTogaW5pdGlhbCBz dXBwb3J0IGZvciBNSERQDQo+IERQIGJyaWRnZSBkcml2ZXINCj4gDQo+IENhdXRpb246IEVYVCBF bWFpbA0KPiANCj4gSGkgU2FuZG9yLA0KPiANCj4gVGhhbmsgeW91IGZvciB0aGUgcGF0Y2guDQo+ IA0KPiBPbiBNb24sIEp1biAwMSwgMjAyMCBhdCAwMjoxNzozM1BNICswODAwLCBzYW5kb3IueXVA bnhwLmNvbSB3cm90ZToNCj4gPiBGcm9tOiBTYW5kb3IgWXUgPFNhbmRvci55dUBueHAuY29tPg0K PiA+DQo+ID4gVGhpcyBhZGRzIGluaXRpYWwgc3VwcG9ydCBmb3IgTUhEUCBEUCBicmlkZ2UgZHJp dmVyLg0KPiA+IEJhc2ljIERQIGZ1bmN0aW9ucyBhcmUgc3VwcG9ydGVkLCB0aGF0IGluY2x1ZGU6 DQo+ID4gIC1WaWRlbyBtb2RlIHNldCBvbi10aGUtZmx5DQo+ID4gIC1DYWJsZSBob3RwbHVnIGRl dGVjdA0KPiA+ICAtTUFYIHN1cHBvcnQgcmVzb2x1dGlvbiB0byAzMDk2eDIxNjBANjBmcHMgIC1T dXBwb3J0IERQIGF1ZGlvDQo+IC1FRElEDQo+ID4gcmVhZCB2aWEgQVVYDQo+ID4NCj4gPiBTaWdu ZWQtb2ZmLWJ5OiBTYW5kb3IgWXUgPFNhbmRvci55dUBueHAuY29tPg0KPiA+IC0tLQ0KPiA+ICBk cml2ZXJzL2dwdS9kcm0vYnJpZGdlL2NhZGVuY2UvS2NvbmZpZyAgICAgICAgfCAgIDQgKw0KPiA+ ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2NhZGVuY2UvTWFrZWZpbGUgICAgICAgfCAgIDEgKw0K PiA+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2NhZGVuY2UvY2Rucy1kcC1jb3JlLmMgfCA1MzAN Cj4gPiArKysrKysrKysrKysrKysrKysgIC4uLi9ncHUvZHJtL2JyaWRnZS9jYWRlbmNlL2NkbnMt bWhkcC1hdWRpby5jDQo+IHwNCj4gPiAxMDAgKysrKyAgLi4uL2dwdS9kcm0vYnJpZGdlL2NhZGVu Y2UvY2Rucy1taGRwLWNvbW1vbi5jIHwgIDQyICstDQo+ID4gIC4uLi9ncHUvZHJtL2JyaWRnZS9j YWRlbmNlL2NkbnMtbWhkcC1jb21tb24uaCB8ICAgMyArDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9i cmlkZ2UvY2FkZW5jZS9jZG5zLW1oZHAtZHAuYyB8ICAzNCArLQ0KPiA+ICBkcml2ZXJzL2dwdS9k cm0vcm9ja2NoaXAvY2RuLWRwLWNvcmUuYyAgICAgICAgfCAgIDcgKy0NCj4gPiAgaW5jbHVkZS9k cm0vYnJpZGdlL2NkbnMtbWhkcC5oICAgICAgICAgICAgICAgIHwgIDUyICstDQo+ID4gIDkgZmls ZXMgY2hhbmdlZCwgNzQwIGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKSAgY3JlYXRlIG1v ZGUNCj4gPiAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9jYWRlbmNlL2NkbnMtZHAtY29y ZS5jDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9jYWRlbmNl L0tjb25maWcNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvY2FkZW5jZS9LY29uZmlnDQo+ ID4gaW5kZXggNDhjMWIwZjc3ZGM2Li5iN2I4ZDMwYjE4YjYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2JyaWRnZS9jYWRlbmNlL0tjb25maWcNCj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL2NhZGVuY2UvS2NvbmZpZw0KPiA+IEBAIC01LDMgKzUsNyBAQCBjb25maWcg RFJNX0NETlNfTUhEUA0KPiA+ICAgICAgIGRlcGVuZHMgb24gT0YNCj4gPiAgICAgICBoZWxwDQo+ ID4gICAgICAgICBTdXBwb3J0IENhZGVuY2UgTUhEUCBBUEkgbGlicmFyeS4NCj4gPiArDQo+ID4g K2NvbmZpZyBEUk1fQ0ROU19EUA0KPiA+ICsgICAgIHRyaXN0YXRlICJDYWRlbmNlIERQIERSTSBk cml2ZXIiDQo+ID4gKyAgICAgZGVwZW5kcyBvbiBEUk1fQ0ROU19NSERQDQo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvY2FkZW5jZS9NYWtlZmlsZQ0KPiA+IGIvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9jYWRlbmNlL01ha2VmaWxlDQo+ID4gaW5kZXggZGRiMmJhNGZiODUy Li5jYjNjODgzMTFhNjQgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9j YWRlbmNlL01ha2VmaWxlDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9jYWRlbmNl L01ha2VmaWxlDQo+ID4gQEAgLTEsMyArMSw0IEBADQo+ID4gICMgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAtb25seSAgY2Ruc19taGRwX2RybWNvcmUteSA6PQ0KPiA+IGNkbnMtbWhk cC1jb21tb24ubyBjZG5zLW1oZHAtYXVkaW8ubyBjZG5zLW1oZHAtZHAubw0KPiA+ICtjZG5zX21o ZHBfZHJtY29yZS0kKENPTkZJR19EUk1fQ0ROU19EUCkgKz0gY2Rucy1kcC1jb3JlLm8NCj4gPiAg b2JqLSQoQ09ORklHX0RSTV9DRE5TX01IRFApICAgICAgICAgICs9IGNkbnNfbWhkcF9kcm1jb3Jl Lm8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9jYWRlbmNlL2NkbnMt ZHAtY29yZS5jDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2NhZGVuY2UvY2Rucy1kcC1j b3JlLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4u YjJmZThmZGM2NGVkDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvY2FkZW5jZS9jZG5zLWRwLWNvcmUuYw0KPiA+IEBAIC0wLDAgKzEsNTMwIEBADQo+ ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4gPiArLyoNCj4g PiArICogQ2FkZW5jZSBEaXNwbGF5IFBvcnQgSW50ZXJmYWNlIChEUCkgZHJpdmVyDQo+ID4gKyAq DQo+ID4gKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIE5YUCBTZW1pY29uZHVjdG9yLCBJbmMu DQo+ID4gKyAqDQo+ID4gKyAqLw0KPiA+ICsjaW5jbHVkZSA8ZHJtL2JyaWRnZS9jZG5zLW1oZHAu aD4NCj4gPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPg0KPiA+ICsjaW5jbHVk ZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9lZGlkLmg+ DQo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2VuY29kZXJfc2xhdmUuaD4NCj4gPiArI2luY2x1ZGUg PGRybS9kcm1fb2YuaD4NCj4gPiArI2luY2x1ZGUgPGRybS9kcm1fcHJvYmVfaGVscGVyLmg+DQo+ ID4gKyNpbmNsdWRlIDxkcm0vZHJtX3ZibGFuay5oPg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9w cmludC5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4gPiArI2luY2x1ZGUgPGxp bnV4L2Vyci5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaXJxLmg+DQo+ID4gKyNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+DQo+ID4gKyNpbmNs dWRlIDxsaW51eC9vZl9kZXZpY2UuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJjZG5zLW1oZHAt Y29tbW9uLmgiDQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIG9ubHkgaW1w bGVtZW50cyBuYXRpdmUgRFBEQyByZWFkcyBhbmQgd3JpdGVzICAqLw0KPiA+ICtzdGF0aWMgc3Np emVfdCBkcF9hdXhfdHJhbnNmZXIoc3RydWN0IGRybV9kcF9hdXggKmF1eCwNCj4gPiArICAgICAg ICAgICAgIHN0cnVjdCBkcm1fZHBfYXV4X21zZyAqbXNnKSB7DQo+ID4gKyAgICAgc3RydWN0IGNk bnNfbWhkcF9kZXZpY2UgKm1oZHAgPSBkZXZfZ2V0X2RydmRhdGEoYXV4LT5kZXYpOw0KPiA+ICsg ICAgIGJvb2wgbmF0aXZlID0gbXNnLT5yZXF1ZXN0ICYgKERQX0FVWF9OQVRJVkVfV1JJVEUgJg0K PiBEUF9BVVhfTkFUSVZFX1JFQUQpOw0KPiA+ICsgICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ICsg ICAgIC8qIElnbm9yZSBhZGRyZXNzIG9ubHkgbWVzc2FnZSAqLw0KPiA+ICsgICAgIGlmICgobXNn LT5zaXplID09IDApIHx8IChtc2ctPmJ1ZmZlciA9PSBOVUxMKSkgew0KPiA+ICsgICAgICAgICAg ICAgbXNnLT5yZXBseSA9IG5hdGl2ZSA/DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIERQX0FV WF9OQVRJVkVfUkVQTFlfQUNLIDoNCj4gRFBfQVVYX0kyQ19SRVBMWV9BQ0s7DQo+ID4gKyAgICAg ICAgICAgICByZXR1cm4gbXNnLT5zaXplOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAg aWYgKCFuYXRpdmUpIHsNCj4gPiArICAgICAgICAgICAgIGRldl9lcnIobWhkcC0+ZGV2LCAiJXM6 IG9ubHkgbmF0aXZlIG1lc3NhZ2VzDQo+IHN1cHBvcnRlZFxuIiwgX19mdW5jX18pOw0KPiA+ICsg ICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAg ICAvKiBtc2cgc2FuaXR5IGNoZWNrICovDQo+ID4gKyAgICAgaWYgKG1zZy0+c2l6ZSA+IERQX0FV WF9NQVhfUEFZTE9BRF9CWVRFUykgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycihtaGRwLT5k ZXYsICIlczogaW52YWxpZCBtc2c6IHNpemUoJXp1KSwNCj4gcmVxdWVzdCgleClcbiIsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBt c2ctPnNpemUsDQo+ICh1bnNpZ25lZCBpbnQpbXNnLT5yZXF1ZXN0KTsNCj4gPiArICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgaWYgKG1z Zy0+cmVxdWVzdCA9PSBEUF9BVVhfTkFUSVZFX1dSSVRFKSB7DQo+ID4gKyAgICAgICAgICAgICBj b25zdCB1OCAqYnVmID0gbXNnLT5idWZmZXI7DQo+ID4gKyAgICAgICAgICAgICBpbnQgaTsNCj4g PiArICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtc2ctPnNpemU7ICsraSkgew0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICByZXQgPSBjZG5zX21oZHBfZHBjZF93cml0ZShtaGRwLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2ctPmFk ZHJlc3MgKyBpLA0KPiBidWZbaV0pOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBpZiAoIXJl dCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4gPiArDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgIERSTV9ERVZfRVJST1IobWhkcC0+ZGV2LCAiRmFpbGVk IHRvIHdyaXRlDQo+ID4gKyBEUENEXG4iKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICBt c2ctPnJlcGx5ID0gRFBfQVVYX05BVElWRV9SRVBMWV9BQ0s7DQo+ID4gKyAgICAgICAgICAgICBy ZXR1cm4gbXNnLT5zaXplOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgaWYgKG1zZy0+ cmVxdWVzdCA9PSBEUF9BVVhfTkFUSVZFX1JFQUQpIHsNCj4gPiArICAgICAgICAgICAgIHJldCA9 IGNkbnNfbWhkcF9kcGNkX3JlYWQobWhkcCwgbXNnLT5hZGRyZXNzLA0KPiBtc2ctPmJ1ZmZlciwg bXNnLT5zaXplKTsNCj4gPiArICAgICAgICAgICAgIGlmIChyZXQgPCAwKQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gLUVJTzsNCj4gPiArICAgICAgICAgICAgIG1zZy0+cmVwbHkg PSBEUF9BVVhfTkFUSVZFX1JFUExZX0FDSzsNCj4gPiArICAgICAgICAgICAgIHJldHVybiBtc2ct PnNpemU7DQo+ID4gKyAgICAgfQ0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgaW50IGRwX2F1eF9pbml0KHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRw LA0KPiA+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ID4gK3sNCj4gPiAr ICAgICBpbnQgcmV0Ow0KPiA+ICsNCj4gPiArICAgICBtaGRwLT5kcC5hdXgubmFtZSA9ICJpbXhf ZHBfYXV4IjsNCj4gPiArICAgICBtaGRwLT5kcC5hdXguZGV2ID0gZGV2Ow0KPiA+ICsgICAgIG1o ZHAtPmRwLmF1eC50cmFuc2ZlciA9IGRwX2F1eF90cmFuc2ZlcjsNCj4gPiArDQo+ID4gKyAgICAg cmV0ID0gZHJtX2RwX2F1eF9yZWdpc3RlcigmbWhkcC0+ZHAuYXV4KTsNCj4gPiArDQo+ID4gKyAg ICAgcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBkcF9hdXhfZGVz dHJveShzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCkgew0KPiA+ICsgICAgIGRybV9kcF9h dXhfdW5yZWdpc3RlcigmbWhkcC0+ZHAuYXV4KTsNCj4gPiArICAgICByZXR1cm4gMDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgZHBfcGl4ZWxfY2xrX3Jlc2V0KHN0cnVjdCBjZG5z X21oZHBfZGV2aWNlICptaGRwKSB7DQo+ID4gKyAgICAgdTMyIHZhbDsNCj4gPiArDQo+ID4gKyAg ICAgLyogcmVzZXQgcGl4ZWwgY2xrICovDQo+ID4gKyAgICAgdmFsID0gY2Ruc19taGRwX3JlZ19y ZWFkKG1oZHAsIFNPVVJDRV9IRFRYX0NBUik7DQo+ID4gKyAgICAgY2Ruc19taGRwX3JlZ193cml0 ZShtaGRwLCBTT1VSQ0VfSERUWF9DQVIsIHZhbCAmIDB4RkQpOw0KPiA+ICsgICAgIGNkbnNfbWhk cF9yZWdfd3JpdGUobWhkcCwgU09VUkNFX0hEVFhfQ0FSLCB2YWwpOyB9DQo+ID4gKw0KPiA+ICtz dGF0aWMgdm9pZCBjZG5zX2RwX21vZGVfc2V0KHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRw KSB7DQo+ID4gKyAgICAgaW50IHJldDsNCj4gPiArDQo+ID4gKyAgICAgY2Ruc19taGRwX3BsYXRf Y2FsbChtaGRwLCBwY2xrX3JhdGUpOw0KPiA+ICsNCj4gPiArICAgICAvKiBkZWxheSBmb3IgRFAg Rlcgc3RhYmxlIGFmdGVyIHBpeGVsIGNsb2NrIHJlbG9jayAqLw0KPiA+ICsgICAgIG1zbGVlcCg1 MCk7DQo+ID4gKw0KPiA+ICsgICAgIGRwX3BpeGVsX2Nsa19yZXNldChtaGRwKTsNCj4gPiArDQo+ ID4gKyAgICAgLyogR2V0IERQIENhcHMgICovDQo+ID4gKyAgICAgcmV0ID0gZHJtX2RwX2RwY2Rf cmVhZCgmbWhkcC0+ZHAuYXV4LCBEUF9EUENEX1JFViwNCj4gbWhkcC0+ZHAuZHBjZCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERQX1JFQ0VJVkVSX0NBUF9TSVpFKTsNCj4gPiAr ICAgICBpZiAocmV0IDwgMCkgew0KPiA+ICsgICAgICAgICAgICAgRFJNX0VSUk9SKCJGYWlsZWQg dG8gZ2V0IGNhcHMgJWRcbiIsIHJldCk7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm47DQo+ID4g KyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBtaGRwLT5kcC5yYXRlID0gZHJtX2RwX21heF9saW5r X3JhdGUobWhkcC0+ZHAuZHBjZCk7DQo+ID4gKyAgICAgbWhkcC0+ZHAubnVtX2xhbmVzID0gZHJt X2RwX21heF9sYW5lX2NvdW50KG1oZHAtPmRwLmRwY2QpOw0KPiA+ICsNCj4gPiArICAgICAvKiBj aGVjayB0aGUgbWF4IGxpbmsgcmF0ZSAqLw0KPiA+ICsgICAgIGlmIChtaGRwLT5kcC5yYXRlID4g Q0ROU19EUF9NQVhfTElOS19SQVRFKQ0KPiA+ICsgICAgICAgICAgICAgbWhkcC0+ZHAucmF0ZSA9 IENETlNfRFBfTUFYX0xJTktfUkFURTsNCj4gPiArDQo+ID4gKyAgICAgLyogSW5pdGlhbGl6ZSBs aW5rIHJhdGUvbnVtX2xhbmVzIGFzIHBhbmVsIG1heCBsaW5rDQo+IHJhdGUvbWF4X251bV9sYW5l cyAqLw0KPiA+ICsgICAgIGNkbnNfbWhkcF9wbGF0X2NhbGwobWhkcCwgcGh5X3NldCk7DQo+ID4g Kw0KPiA+ICsgICAgIC8qIFZpZGVvIG9mZiAqLw0KPiA+ICsgICAgIHJldCA9IGNkbnNfbWhkcF9z ZXRfdmlkZW9fc3RhdHVzKG1oZHAsIENPTlRST0xfVklERU9fSURMRSk7DQo+ID4gKyAgICAgaWYg KHJldCkgew0KPiA+ICsgICAgICAgICAgICAgRFJNX0RFVl9FUlJPUihtaGRwLT5kZXYsICJGYWls ZWQgdG8gdmFsaWQgdmlkZW8gJWRcbiIsDQo+IHJldCk7DQo+ID4gKyAgICAgICAgICAgICByZXR1 cm47DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAvKiBMaW5lIHN3YXBpbmcgKi8NCj4g PiArICAgICBtaGRwLT5sYW5lX21hcHBpbmcgPSBtaGRwLT5wbGF0X2RhdGEtPmxhbmVfbWFwcGlu ZzsNCj4gPiArICAgICBjZG5zX21oZHBfcmVnX3dyaXRlKG1oZHAsIExBTkVTX0NPTkZJRywgMHgw MDQwMDAwMCB8DQo+ID4gKyBtaGRwLT5sYW5lX21hcHBpbmcpOw0KPiA+ICsNCj4gPiArICAgICAv KiBTZXQgRFAgaG9zdCBjYXBhYmlsaXR5ICovDQo+ID4gKyAgICAgcmV0ID0gY2Ruc19taGRwX3Nl dF9ob3N0X2NhcChtaGRwKTsNCj4gPiArICAgICBpZiAocmV0KSB7DQo+ID4gKyAgICAgICAgICAg ICBEUk1fREVWX0VSUk9SKG1oZHAtPmRldiwgIkZhaWxlZCB0byBzZXQgaG9zdCBjYXAgJWRcbiIs DQo+IHJldCk7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm47DQo+ID4gKyAgICAgfQ0KPiA+ICsN Cj4gPiArICAgICByZXQgPSBjZG5zX21oZHBfY29uZmlnX3ZpZGVvKG1oZHApOw0KPiA+ICsgICAg IGlmIChyZXQpIHsNCj4gPiArICAgICAgICAgICAgIERSTV9ERVZfRVJST1IobWhkcC0+ZGV2LCAi RmFpbGVkIHRvIGNvbmZpZyB2aWRlbyAlZFxuIiwNCj4gcmV0KTsNCj4gPiArICAgICAgICAgICAg IHJldHVybjsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybjsNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoNCj4gPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gKy0tLS0tLS0tDQo+ID4gKyAq IERQIFRYIFNldHVwDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0 YXR1cw0KPiA+ICtjZG5zX2RwX2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciwgYm9vbCBmb3JjZSkNCj4gPiArew0KPiA+ICsgICAgIHN0cnVjdCBjZG5zX21o ZHBfZGV2aWNlICptaGRwID0gY29udGFpbmVyX29mKGNvbm5lY3RvciwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlLA0KPiBj b25uZWN0b3IuYmFzZSk7DQo+ID4gKyAgICAgdTggaHBkID0gMHhmOw0KPiA+ICsNCj4gPiArICAg ICBocGQgPSBjZG5zX21oZHBfcmVhZF9ocGQobWhkcCk7DQo+ID4gKyAgICAgaWYgKGhwZCA9PSAx KQ0KPiA+ICsgICAgICAgICAgICAgLyogQ2FibGUgQ29ubmVjdGVkICovDQo+ID4gKyAgICAgICAg ICAgICByZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7DQo+ID4gKyAgICAgZWxzZSBp ZiAoaHBkID09IDApDQo+ID4gKyAgICAgICAgICAgICAvKiBDYWJsZSBEaXNjb25uZWR0ZWQgKi8N Cj4gPiArICAgICAgICAgICAgIHJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsN Cj4gPiArICAgICBlbHNlIHsNCj4gPiArICAgICAgICAgICAgIC8qIENhYmxlIHN0YXR1cyB1bmtu b3duICovDQo+ID4gKyAgICAgICAgICAgICBEUk1fSU5GTygiVW5rbm93IGNhYmxlIHN0YXR1cywg aGRwPSV1XG4iLCBocGQpOw0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIGNvbm5lY3Rvcl9zdGF0 dXNfdW5rbm93bjsNCj4gPiArICAgICB9DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQg Y2Ruc19kcF9jb25uZWN0b3JfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yDQo+ID4gKypj b25uZWN0b3IpIHsNCj4gPiArICAgICBzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCA9IGNv bnRhaW5lcl9vZihjb25uZWN0b3IsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSwNCj4gY29ubmVjdG9yLmJhc2UpOw0KPiA+ ICsgICAgIGludCBudW1fbW9kZXMgPSAwOw0KPiA+ICsgICAgIHN0cnVjdCBlZGlkICplZGlkOw0K PiA+ICsNCj4gPiArICAgICBlZGlkID0gZHJtX2RvX2dldF9lZGlkKCZtaGRwLT5jb25uZWN0b3Iu YmFzZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZG5zX21oZHBfZ2V0 X2VkaWRfYmxvY2ssIG1oZHApOw0KPiA+ICsgICAgIGlmIChlZGlkKSB7DQo+ID4gKyAgICAgICAg ICAgICBkZXZfaW5mbyhtaGRwLT5kZXYsICIleCwleCwleCwleCwleCwleCwleCwleFxuIiwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgIGVkaWQtPmhlYWRlclswXSwgZWRpZC0+aGVhZGVyWzFd LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZWRpZC0+aGVhZGVyWzJdLCBlZGlkLT5oZWFk ZXJbM10sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBlZGlkLT5oZWFkZXJbNF0sIGVkaWQt PmhlYWRlcls1XSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGVkaWQtPmhlYWRlcls2XSwg ZWRpZC0+aGVhZGVyWzddKTsNCj4gPiArICAgICAgICAgICAgIGRybV9jb25uZWN0b3JfdXBkYXRl X2VkaWRfcHJvcGVydHkoY29ubmVjdG9yLCBlZGlkKTsNCj4gPiArICAgICAgICAgICAgIG51bV9t b2RlcyA9IGRybV9hZGRfZWRpZF9tb2Rlcyhjb25uZWN0b3IsIGVkaWQpOw0KPiA+ICsgICAgICAg ICAgICAga2ZyZWUoZWRpZCk7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBpZiAobnVt X21vZGVzID09IDApDQo+ID4gKyAgICAgICAgICAgICBEUk1fRVJST1IoIkludmFsaWQgZWRpZFxu Iik7DQo+ID4gKyAgICAgcmV0dXJuIG51bV9tb2RlczsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIGNkbnNfZHBfY29ubmVjdG9yX2Z1 bmNzID0gew0KPiA+ICsgICAgIC5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVf Y29ubmVjdG9yX21vZGVzLA0KPiA+ICsgICAgIC5kZXRlY3QgPSBjZG5zX2RwX2Nvbm5lY3Rvcl9k ZXRlY3QsDQo+ID4gKyAgICAgLmRlc3Ryb3kgPSBkcm1fY29ubmVjdG9yX2NsZWFudXAsDQo+ID4g KyAgICAgLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LA0KPiA+ICsg ICAgIC5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0NCj4gZHJtX2F0b21pY19oZWxwZXJfY29ubmVj dG9yX2R1cGxpY2F0ZV9zdGF0ZSwNCj4gPiArICAgICAuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPQ0K PiA+ICtkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwNCj4gPiArfTsN Cj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVu Y3MNCj4gY2Ruc19kcF9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0gew0KPiA+ICsgICAgIC5nZXRf bW9kZXMgPSBjZG5zX2RwX2Nvbm5lY3Rvcl9nZXRfbW9kZXMsIH07DQo+ID4gKw0KPiA+ICtzdGF0 aWMgaW50IGNkbnNfZHBfYnJpZGdlX2F0dGFjaChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGRybV9icmlkZ2VfYXR0YWNo X2ZsYWdzIGZsYWdzKSB7DQo+ID4gKyAgICAgc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHAg PSBicmlkZ2UtPmRyaXZlcl9wcml2YXRlOw0KPiA+ICsgICAgIHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlciA9IGJyaWRnZS0+ZW5jb2RlcjsNCj4gPiArICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yID0gJm1oZHAtPmNvbm5lY3Rvci5iYXNlOw0KPiANCj4gTmV3IGJyaWRnZSBk cml2ZXJzIG5lZWQgdG8gc3VwcG9ydCBvcGVyYXRpb24gd2l0aG91dCBjcmVhdGluZyBhIGNvbm5l Y3Rvcg0KPiB3aGVuIHRoZSBEUk1fQlJJREdFX0FUVEFDSF9OT19DT05ORUNUT1IgZmxhZyBpcyBz ZXQgaW4gdGhlIGZsYWdzDQo+IGFyZ3VtZW50LiBGb3IgYW4gZXhhbXBsZSBvZiBob3cgdGhpcyBp cyBkb25lLCBwbGVhc2Ugc2VlDQo+IGh0dHBzOi8vZXVyMDEuc2FmZWxpbmtzLnByb3RlY3Rpb24u b3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmxvcmUua2UNCj4gcm5lbC5vcmclMkZkcmkt ZGV2ZWwlMkYyMDIwMDUyNjAxMTUwNS4zMTg4NC0yMy1sYXVyZW50LnBpbmNoYXJ0JTJCcmVuDQo+ IGVzYXMlNDBpZGVhc29uYm9hcmQuY29tJTJGJmFtcDtkYXRhPTAyJTdDMDElN0NzYW5kb3IueXUl NDBueHAuY28NCj4gbSU3QzNiY2Q4NjA2OWMyZjQyMDMyOTE0MDhkODA3NGRhOTQwJTdDNjg2ZWEx ZDNiYzJiNGM2ZmE5MmNkOQ0KPiA5YzVjMzAxNjM1JTdDMCU3QzAlN0M2MzcyNjczNzc0MzgyNDU5 OTgmYW1wO3NkYXRhPUJZZzNiZDAlMkYNCj4gS1pZSHFUVGFIR0h4a1JNRHBxd3pOQ2p4RllwbzMl MkJUYTJyNCUzRCZhbXA7cmVzZXJ2ZWQ9MA0KPiANCkkgd2lsbCBmb2xsb3dlZCB0aGUgbmV3IGJy aWRnZSBkcml2ZXJzIGxhdGVyLCB0aGFua3MuDQo+ID4gKw0KPiA+ICsgICAgIGNvbm5lY3Rvci0+ aW50ZXJsYWNlX2FsbG93ZWQgPSAxOw0KPiA+ICsNCj4gPiArICAgICBjb25uZWN0b3ItPnBvbGxl ZCA9IERSTV9DT05ORUNUT1JfUE9MTF9IUEQ7DQo+ID4gKw0KPiA+ICsgICAgIGRybV9jb25uZWN0 b3JfaGVscGVyX2FkZChjb25uZWN0b3IsDQo+ID4gKyAmY2Ruc19kcF9jb25uZWN0b3JfaGVscGVy X2Z1bmNzKTsNCj4gPiArDQo+ID4gKyAgICAgZHJtX2Nvbm5lY3Rvcl9pbml0KGJyaWRnZS0+ZGV2 LCBjb25uZWN0b3IsDQo+ICZjZG5zX2RwX2Nvbm5lY3Rvcl9mdW5jcywNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KTsNCj4gPiArDQo+ ID4gKyAgICAgZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIp Ow0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IGVudW0gZHJtX21vZGVfc3RhdHVzDQo+ID4gK2NkbnNfZHBfYnJpZGdlX21vZGVfdmFsaWQoc3Ry dWN0IGRybV9icmlkZ2UgKmJyaWRnZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkgew0KPiA+ICsgICAgIGVudW0gZHJtX21v ZGVfc3RhdHVzIG1vZGVfc3RhdHVzID0gTU9ERV9PSzsNCj4gPiArDQo+ID4gKyAgICAgLyogV2Ug ZG9uJ3Qgc3VwcG9ydCBkb3VibGUtY2xvY2tlZCBtb2RlcyAqLw0KPiA+ICsgICAgIGlmIChtb2Rl LT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfREJMQ0xLIHx8DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgIG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpDQo+ID4gKyAgICAgICAg ICAgICByZXR1cm4gTU9ERV9CQUQ7DQo+ID4gKw0KPiA+ICsgICAgIC8qIE1BWCBzdXBwb3J0IHBp eGVsIGNsb2NrIHJhdGUgNTk0TUh6ICovDQo+ID4gKyAgICAgaWYgKG1vZGUtPmNsb2NrID4gNTk0 MDAwKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIE1PREVfQ0xPQ0tfSElHSDsNCj4gPiArDQo+ ID4gKyAgICAgLyogNDA5NngyMTYwIGlzIG5vdCBzdXBwb3J0ZWQgKi8NCj4gPiArICAgICBpZiAo bW9kZS0+aGRpc3BsYXkgPiAzODQwKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIE1PREVfQkFE X0hWQUxVRTsNCj4gPiArDQo+ID4gKyAgICAgaWYgKG1vZGUtPnZkaXNwbGF5ID4gMjE2MCkNCj4g PiArICAgICAgICAgICAgIHJldHVybiBNT0RFX0JBRF9WVkFMVUU7DQo+ID4gKw0KPiA+ICsgICAg IHJldHVybiBtb2RlX3N0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgY2Ru c19kcF9icmlkZ2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUNCj4gKm9yaWdfbW9kZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUNCj4gKm1vZGUpDQo+ID4gK3sNCj4gPiArICAg ICBzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCA9IGJyaWRnZS0+ZHJpdmVyX3ByaXZhdGU7 DQo+ID4gKyAgICAgc3RydWN0IGRybV9kaXNwbGF5X2luZm8gKmRpc3BsYXlfaW5mbyA9DQo+ICZt aGRwLT5jb25uZWN0b3IuYmFzZS5kaXNwbGF5X2luZm87DQo+ID4gKyAgICAgc3RydWN0IHZpZGVv X2luZm8gKnZpZGVvID0gJm1oZHAtPnZpZGVvX2luZm87DQo+ID4gKw0KPiA+ICsgICAgIHN3aXRj aCAoZGlzcGxheV9pbmZvLT5icGMpIHsNCj4gPiArICAgICBjYXNlIDEwOg0KPiA+ICsgICAgICAg ICAgICAgdmlkZW8tPmNvbG9yX2RlcHRoID0gMTA7DQo+ID4gKyAgICAgICAgICAgICBicmVhazsN Cj4gPiArICAgICBjYXNlIDY6DQo+ID4gKyAgICAgICAgICAgICB2aWRlby0+Y29sb3JfZGVwdGgg PSA2Ow0KPiA+ICsgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgZGVmYXVsdDoNCj4gPiAr ICAgICAgICAgICAgIHZpZGVvLT5jb2xvcl9kZXB0aCA9IDg7DQo+ID4gKyAgICAgICAgICAgICBi cmVhazsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHZpZGVvLT5jb2xvcl9mbXQgPSBQ WExfUkdCOw0KPiA+ICsgICAgIHZpZGVvLT52X3N5bmNfcG9sYXJpdHkgPSAhIShtb2RlLT5mbGFn cyAmDQo+IERSTV9NT0RFX0ZMQUdfTlZTWU5DKTsNCj4gPiArICAgICB2aWRlby0+aF9zeW5jX3Bv bGFyaXR5ID0gISEobW9kZS0+ZmxhZ3MgJg0KPiBEUk1fTU9ERV9GTEFHX05IU1lOQyk7DQo+ID4g Kw0KPiA+ICsgICAgIERSTV9JTkZPKCJNb2RlOiAlZHglZHAlZFxuIiwgbW9kZS0+aGRpc3BsYXks IG1vZGUtPnZkaXNwbGF5LA0KPiBtb2RlLT5jbG9jayk7DQo+ID4gKyAgICAgbWVtY3B5KCZtaGRw LT5tb2RlLCBtb2RlLCBzaXplb2Yoc3RydWN0IGRybV9kaXNwbGF5X21vZGUpKTsNCj4gPiArDQo+ ID4gKyAgICAgbXV0ZXhfbG9jaygmbWhkcC0+bG9jayk7DQo+ID4gKyAgICAgY2Ruc19kcF9tb2Rl X3NldChtaGRwKTsNCj4gPiArICAgICBtdXRleF91bmxvY2soJm1oZHAtPmxvY2spOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBjZG5fZHBfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJt X2JyaWRnZSAqYnJpZGdlKSB7DQo+ID4gKyAgICAgc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1o ZHAgPSBicmlkZ2UtPmRyaXZlcl9wcml2YXRlOw0KPiA+ICsgICAgIGludCByZXQ7DQo+ID4gKw0K PiA+ICsgICAgIC8qIExpbmsgdHJhaW5uaW5nICovDQo+ID4gKyAgICAgcmV0ID0gY2Ruc19taGRw X3RyYWluX2xpbmsobWhkcCk7DQo+ID4gKyAgICAgaWYgKHJldCkgew0KPiA+ICsgICAgICAgICAg ICAgRFJNX0RFVl9FUlJPUihtaGRwLT5kZXYsICJGYWlsZWQgbGluayB0cmFpbiAlZFxuIiwgcmV0 KTsNCj4gPiArICAgICAgICAgICAgIHJldHVybjsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgIHJldCA9IGNkbnNfbWhkcF9zZXRfdmlkZW9fc3RhdHVzKG1oZHAsIENPTlRST0xfVklERU9f VkFMSUQpOw0KPiA+ICsgICAgIGlmIChyZXQpIHsNCj4gPiArICAgICAgICAgICAgIERSTV9ERVZf RVJST1IobWhkcC0+ZGV2LCAiRmFpbGVkIHRvIHZhbGlkIHZpZGVvICVkXG4iLA0KPiByZXQpOw0K PiA+ICsgICAgICAgICAgICAgcmV0dXJuOw0KPiA+ICsgICAgIH0NCj4gPiArfQ0KPiA+ICsNCj4g PiArc3RhdGljIHZvaWQgY2RuX2RwX2JyaWRnZV9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UpIHsNCj4gPiArICAgICBzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCA9IGJyaWRn ZS0+ZHJpdmVyX3ByaXZhdGU7DQo+ID4gKw0KPiA+ICsgICAgIGNkbnNfbWhkcF9zZXRfdmlkZW9f c3RhdHVzKG1oZHAsIENPTlRST0xfVklERU9fSURMRSk7IH0NCj4gPiArDQo+ID4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcyBjZG5zX2RwX2JyaWRnZV9mdW5jcyA9IHsNCj4g PiArICAgICAuYXR0YWNoID0gY2Ruc19kcF9icmlkZ2VfYXR0YWNoLA0KPiA+ICsgICAgIC5lbmFi bGUgPSBjZG5fZHBfYnJpZGdlX2VuYWJsZSwNCj4gPiArICAgICAuZGlzYWJsZSA9IGNkbl9kcF9i cmlkZ2VfZGlzYWJsZSwNCj4gPiArICAgICAubW9kZV9zZXQgPSBjZG5zX2RwX2JyaWRnZV9tb2Rl X3NldCwNCj4gPiArICAgICAubW9kZV92YWxpZCA9IGNkbnNfZHBfYnJpZGdlX21vZGVfdmFsaWQs IH07DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBob3RwbHVnX3dvcmtfZnVuYyhzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmspIHsNCj4gPiArICAgICBzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhk cCA9IGNvbnRhaW5lcl9vZih3b3JrLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UsDQo+IGhvdHBsdWdfd29yay53b3Jr KTsNCj4gPiArICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJm1oZHAtPmNv bm5lY3Rvci5iYXNlOw0KPiA+ICsNCj4gPiArICAgICBkcm1faGVscGVyX2hwZF9pcnFfZXZlbnQo Y29ubmVjdG9yLT5kZXYpOw0KPiA+ICsNCj4gPiArICAgICBpZiAoY29ubmVjdG9yLT5zdGF0dXMg PT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpIHsNCj4gPiArICAgICAgICAgICAgIC8qIENh YmxlIGNvbm5lZHRlZCAgKi8NCj4gPiArICAgICAgICAgICAgIERSTV9JTkZPKCJIRE1JL0RQIENh YmxlIFBsdWcgSW5cbiIpOw0KPiA+ICsgICAgICAgICAgICAgZW5hYmxlX2lycShtaGRwLT5pcnFb SVJRX09VVF0pOw0KPiA+ICsgICAgIH0gZWxzZSBpZiAoY29ubmVjdG9yLT5zdGF0dXMgPT0gY29u bmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQpIHsNCj4gPiArICAgICAgICAgICAgIC8qIENhYmxl IERpc2Nvbm5lZHRlZCAgKi8NCj4gPiArICAgICAgICAgICAgIERSTV9JTkZPKCJIRE1JL0RQIENh YmxlIFBsdWcgT3V0XG4iKTsNCj4gPiArICAgICAgICAgICAgIGVuYWJsZV9pcnEobWhkcC0+aXJx W0lSUV9JTl0pOw0KPiA+ICsgICAgIH0NCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlycXJl dHVybl90IGNkbnNfZHBfaXJxX3RocmVhZChpbnQgaXJxLCB2b2lkICpkYXRhKSB7DQo+ID4gKyAg ICAgc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHAgPSBkYXRhOw0KPiA+ICsNCj4gPiArICAg ICBkaXNhYmxlX2lycV9ub3N5bmMoaXJxKTsNCj4gPiArDQo+ID4gKyAgICAgbW9kX2RlbGF5ZWRf d29yayhzeXN0ZW1fd3EsICZtaGRwLT5ob3RwbHVnX3dvcmssDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoSE9UUExVR19ERUJPVU5DRV9NUykpOw0KPiA+ICsNCj4g PiArICAgICByZXR1cm4gSVJRX0hBTkRMRUQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQgX19jZG5zX2RwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsDQo+ID4gKyAg ICAgICAgICAgICBzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCkgew0KPiA+ICsgICAgIHN0 cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+ID4gKyAgICAgc3RydWN0IHJlc291cmNl ICppb3JlcyA9IE5VTEw7DQo+ID4gKyAgICAgaW50IHJldDsNCj4gPiArDQo+ID4gKyAgICAgbXV0 ZXhfaW5pdCgmbWhkcC0+bG9jayk7DQo+ID4gKw0KPiA+ICsgICAgIElOSVRfREVMQVlFRF9XT1JL KCZtaGRwLT5ob3RwbHVnX3dvcmssIGhvdHBsdWdfd29ya19mdW5jKTsNCj4gPiArDQo+ID4gKyAg ICAgaW9yZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDAp Ow0KPiA+ICsgICAgIGlmIChpb3Jlcykgew0KPiA+ICsgICAgICAgICAgICAgbWhkcC0+cmVnc19i YXNlID0gZGV2bV9pb3JlbWFwKGRldiwgaW9yZXMtPnN0YXJ0LA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlX3NpemUoaW9yZXMpKTsNCj4g PiArICAgICAgICAgICAgIGlmIChJU19FUlIobWhkcC0+cmVnc19iYXNlKSkNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiAr ICAgICBtaGRwLT5pcnFbSVJRX0lOXSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lKHBkZXYsICJw bHVnX2luIik7DQo+ID4gKyAgICAgaWYgKG1oZHAtPmlycVtJUlFfSU5dIDwgMCkgew0KPiA+ICsg ICAgICAgICAgICAgZGV2X2luZm8oZGV2LCAiTm8gcGx1Z19pbiBpcnEgbnVtYmVyXG4iKTsNCj4g PiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIG1oZHAtPmlycVtJUlFfT1VUXSA9IHBsYXRmb3Jt X2dldF9pcnFfYnluYW1lKHBkZXYsICJwbHVnX291dCIpOw0KPiA+ICsgICAgIGlmIChtaGRwLT5p cnFbSVJRX09VVF0gPCAwKSB7DQo+ID4gKyAgICAgICAgICAgICBkZXZfaW5mbyhkZXYsICJObyBw bHVnX291dCBpcnEgbnVtYmVyXG4iKTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGNk bnNfbWhkcF9wbGF0X2NhbGwobWhkcCwgcG93ZXJfb24pOw0KPiA+ICsNCj4gPiArICAgICBjZG5z X21oZHBfcGxhdF9jYWxsKG1oZHAsIGZpcm13YXJlX2luaXQpOw0KPiA+ICsNCj4gPiArICAgICAv KiBEUCBGVyBhbGl2ZSBjaGVjayAqLw0KPiA+ICsgICAgIHJldCA9IGNkbnNfbWhkcF9jaGVja19h bGl2ZShtaGRwKTsNCj4gPiArICAgICBpZiAocmV0ID09IGZhbHNlKSB7DQo+ID4gKyAgICAgICAg ICAgICBEUk1fRVJST1IoIk5PIGRwIEZXIHJ1bm5pbmdcbiIpOw0KPiA+ICsgICAgICAgICAgICAg cmV0dXJuIC1FTlhJTzsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIC8qIERQIFBIWSBp bml0IGJlZm9yZSBBVVggaW5pdCAqLw0KPiA+ICsgICAgIGNkbnNfbWhkcF9wbGF0X2NhbGwobWhk cCwgcGh5X3NldCk7DQo+ID4gKw0KPiA+ICsgICAgIC8qIEVuYWJsZSBIb3RwbHVnIERldGVjdCBJ UlEgdGhyZWFkICovDQo+ID4gKyAgICAgaXJxX3NldF9zdGF0dXNfZmxhZ3MobWhkcC0+aXJxW0lS UV9JTl0sIElSUV9OT0FVVE9FTik7DQo+ID4gKyAgICAgcmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVh ZGVkX2lycShkZXYsIG1oZHAtPmlycVtJUlFfSU5dLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCwgY2Ruc19kcF9pcnFfdGhyZWFkLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVJRRl9PTkVTSE9ULA0KPiBkZXZfbmFtZShk ZXYpLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWhkcCk7DQo+ ID4gKw0KPiA+ICsgICAgIGlmIChyZXQpIHsNCj4gPiArICAgICAgICAgICAgIGRldl9lcnIoZGV2 LCAiY2FuJ3QgY2xhaW0gaXJxICVkXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1oZHAtPmlycVtJUlFfSU5dKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Ow0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgaXJxX3NldF9zdGF0dXNfZmxhZ3MobWhk cC0+aXJxW0lSUV9PVVRdLCBJUlFfTk9BVVRPRU4pOw0KPiA+ICsgICAgIHJldCA9IGRldm1fcmVx dWVzdF90aHJlYWRlZF9pcnEoZGV2LCBtaGRwLT5pcnFbSVJRX09VVF0sDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBjZG5zX2RwX2lycV90aHJlYWQsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUlFGX09ORVNIT1QsDQo+ IGRldl9uYW1lKGRldiksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtaGRwKTsNCj4gPiArDQo+ID4gKyAgICAgaWYgKHJldCkgew0KPiA+ICsgICAgICAgICAgICAg ZGV2X2VycihkZXYsICJjYW4ndCBjbGFpbSBpcnEgJWRcbiIsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWhkcC0+aXJxW0lSUV9PVVRdKTsNCj4gPiArICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgaWYgKGNkbnNfbWhk cF9yZWFkX2hwZChtaGRwKSkNCj4gPiArICAgICAgICAgICAgIGVuYWJsZV9pcnEobWhkcC0+aXJx W0lSUV9PVVRdKTsNCj4gPiArICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICBlbmFibGVfaXJx KG1oZHAtPmlycVtJUlFfSU5dKTsNCj4gPiArDQo+ID4gKyAgICAgbWhkcC0+YnJpZGdlLmJhc2Uu ZHJpdmVyX3ByaXZhdGUgPSBtaGRwOw0KPiA+ICsgICAgIG1oZHAtPmJyaWRnZS5iYXNlLmZ1bmNz ID0gJmNkbnNfZHBfYnJpZGdlX2Z1bmNzOyAjaWZkZWYNCj4gPiArQ09ORklHX09GDQo+ID4gKyAg ICAgbWhkcC0+YnJpZGdlLmJhc2Uub2Zfbm9kZSA9IGRldi0+b2Zfbm9kZTsgI2VuZGlmDQo+ID4g Kw0KPiA+ICsgICAgIGRldl9zZXRfZHJ2ZGF0YShkZXYsIG1oZHApOw0KPiA+ICsNCj4gPiArICAg ICAvKiByZWdpc3RlciBhdWRpbyBkcml2ZXIgKi8NCj4gPiArICAgICBjZG5zX21oZHBfcmVnaXN0 ZXJfYXVkaW9fZHJpdmVyKGRldik7DQo+ID4gKw0KPiA+ICsgICAgIGRwX2F1eF9pbml0KG1oZHAs IGRldik7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtz dGF0aWMgdm9pZCBfX2NkbnNfZHBfcmVtb3ZlKHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRw KSB7DQo+ID4gKyAgICAgZHBfYXV4X2Rlc3Ryb3kobWhkcCk7DQo+ID4gKyAgICAgY2Ruc19taGRw X3VucmVnaXN0ZXJfYXVkaW9fZHJpdmVyKG1oZHAtPmRldik7DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8qDQo+ID4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICstLS0tLS0tLQ0KPiA+ICsgKiBQcm9iZS9yZW1v dmUgQVBJLCB1c2VkIGZyb20gcGxhdGZvcm1zIGJhc2VkIG9uIHRoZSBEUk0gYnJpZGdlIEFQSS4N Cj4gPiArICovDQo+ID4gK2ludCBjZG5zX2RwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYsDQo+ID4gKyAgICAgICAgICAgICAgIHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRw KSB7DQo+ID4gKyAgICAgaW50IHJldDsNCj4gPiArDQo+ID4gKyAgICAgcmV0ID0gX19jZG5zX2Rw X3Byb2JlKHBkZXYsIG1oZHApOw0KPiA+ICsgICAgIGlmIChyZXQpDQo+ID4gKyAgICAgICAgICAg ICByZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArICAgICBkcm1fYnJpZGdlX2FkZCgmbWhkcC0+YnJp ZGdlLmJhc2UpOw0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICtFWFBP UlRfU1lNQk9MX0dQTChjZG5zX2RwX3Byb2JlKTsNCj4gPiArDQo+ID4gK3ZvaWQgY2Ruc19kcF9y ZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikgew0KPiA+ICsgICAgIHN0cnVjdCBj ZG5zX21oZHBfZGV2aWNlICptaGRwID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQo+ID4g Kw0KPiA+ICsgICAgIGRybV9icmlkZ2VfcmVtb3ZlKCZtaGRwLT5icmlkZ2UuYmFzZSk7DQo+ID4g Kw0KPiA+ICsgICAgIF9fY2Ruc19kcF9yZW1vdmUobWhkcCk7DQo+ID4gK30NCj4gPiArRVhQT1JU X1NZTUJPTF9HUEwoY2Ruc19kcF9yZW1vdmUpOw0KPiA+ICsNCj4gPiArLyoNCj4gPiArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+ID4gKy0tLS0tLS0tDQo+ID4gKyAqIEJpbmQvdW5iaW5kIEFQSSwgdXNlZCBmcm9t IHBsYXRmb3JtcyBiYXNlZCBvbiB0aGUgY29tcG9uZW50DQo+IGZyYW1ld29yay4NCj4gPiArICov DQo+ID4gK2ludCBjZG5zX2RwX2JpbmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3Ry dWN0IGRybV9lbmNvZGVyDQo+ICplbmNvZGVyLA0KPiA+ICsgICAgICAgICAgICAgc3RydWN0IGNk bnNfbWhkcF9kZXZpY2UgKm1oZHApIHsNCj4gPiArICAgICBpbnQgcmV0Ow0KPiA+ICsNCj4gPiAr ICAgICByZXQgPSBfX2NkbnNfZHBfcHJvYmUocGRldiwgbWhkcCk7DQo+ID4gKyAgICAgaWYgKHJl dCA8IDApDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArICAgICBy ZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChlbmNvZGVyLCAmbWhkcC0+YnJpZGdlLmJhc2UsIE5VTEws IDApOw0KPiA+ICsgICAgIGlmIChyZXQpIHsNCj4gPiArICAgICAgICAgICAgIGNkbnNfZHBfcmVt b3ZlKHBkZXYpOw0KPiA+ICsgICAgICAgICAgICAgRFJNX0VSUk9SKCJGYWlsZWQgdG8gaW5pdGlh bGl6ZSBicmlkZ2Ugd2l0aCBkcm1cbiIpOw0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsN Cj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gK0VY UE9SVF9TWU1CT0xfR1BMKGNkbnNfZHBfYmluZCk7DQo+ID4gKw0KPiA+ICt2b2lkIGNkbnNfZHBf dW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikgew0KPiA+ICsgICAgIHN0cnVjdCBjZG5zX21oZHBf ZGV2aWNlICptaGRwID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ID4gKw0KPiA+ICsgICAgIF9f Y2Ruc19kcF9yZW1vdmUobWhkcCk7DQo+ID4gK30NCj4gPiArRVhQT1JUX1NZTUJPTF9HUEwoY2Ru c19kcF91bmJpbmQpOw0KPiANCj4gRG8gd2UgcmVhbGx5IG5lZWQgdG8gc3VwcG9ydCB0aGUgY29t cG9uZW50IGZyYW1ld29yaywgY2FuJ3Qgd2UganVzdCBzdXBwb3J0DQo+IHRoZSBEUk0gYnJpZGdl IEFQSSA/DQo+IA0KPiA+ICsNCj4gPiArTU9EVUxFX0FVVEhPUigiU2FuZG9yIFl1IDxzYW5kb3Iu eXVAbnhwLmNvbT4iKTsNCj4gPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJDYWRlbmNlIERpc3BsYXkg UG9ydCB0cmFuc21pdHRlciBkcml2ZXIiKTsNCj4gPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOyBN T0RVTEVfQUxJQVMoInBsYXRmb3JtOmNkbnMtZHAiKTsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9jYWRlbmNlL2NkbnMtbWhkcC1hdWRpby5jDQo+ID4gYi9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL2NhZGVuY2UvY2Rucy1taGRwLWF1ZGlvLmMNCj4gPiBpbmRleCA4ZjUx ZGUwNjcyYWIuLmZkZDRiY2QwZDMzYyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YnJpZGdlL2NhZGVuY2UvY2Rucy1taGRwLWF1ZGlvLmMNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYnJpZGdlL2NhZGVuY2UvY2Rucy1taGRwLWF1ZGlvLmMNCj4gPiBAQCAtMiw2ICsyLDkgQEAN Cj4gPiAgLyoNCj4gPiAgICogQ29weXJpZ2h0IChDKSBGdXpob3UgUm9ja2NoaXAgRWxlY3Ryb25p Y3MgQ28uTHRkDQo+ID4gICAqIEF1dGhvcjogQ2hyaXMgWmhvbmcgPHp5d0Byb2NrLWNoaXBzLmNv bT4NCj4gPiArICoNCj4gPiArICogQ2FkZW5jZSBNSERQIEF1ZGlvIGRyaXZlcg0KPiA+ICsgKg0K PiA+ICAgKi8NCj4gPiAgI2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KPiA+ICAjaW5jbHVkZSA8bGlu dXgvcmVzZXQuaD4NCj4gPiBAQCAtMTk2LDMgKzE5OSwxMDAgQEAgaW50IGNkbnNfbWhkcF9hdWRp b19jb25maWcoc3RydWN0DQo+IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHAsDQo+ID4gICAgICAgcmV0 dXJuIHJldDsNCj4gPiAgfQ0KPiA+ICBFWFBPUlRfU1lNQk9MKGNkbnNfbWhkcF9hdWRpb19jb25m aWcpOw0KPiA+ICsNCj4gPiArc3RhdGljIGludCBhdWRpb19od19wYXJhbXMoc3RydWN0IGRldmlj ZSAqZGV2LCAgdm9pZCAqZGF0YSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBoZG1pX2NvZGVjX2RhaWZtdCAqZGFpZm10LA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGhkbWlfY29kZWNfcGFyYW1zICpwYXJhbXMpIHsNCj4gPiAr ICAgICBzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYp Ow0KPiA+ICsgICAgIHN0cnVjdCBhdWRpb19pbmZvIGF1ZGlvID0gew0KPiA+ICsgICAgICAgICAg ICAgLnNhbXBsZV93aWR0aCA9IHBhcmFtcy0+c2FtcGxlX3dpZHRoLA0KPiA+ICsgICAgICAgICAg ICAgLnNhbXBsZV9yYXRlID0gcGFyYW1zLT5zYW1wbGVfcmF0ZSwNCj4gPiArICAgICAgICAgICAg IC5jaGFubmVscyA9IHBhcmFtcy0+Y2hhbm5lbHMsDQo+ID4gKyAgICAgICAgICAgICAuY29ubmVj dG9yX3R5cGUgPSBtaGRwLT5jb25uZWN0b3IuYmFzZS5jb25uZWN0b3JfdHlwZSwNCj4gPiArICAg ICB9Ow0KPiA+ICsgICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ICsgICAgIHN3aXRjaCAoZGFpZm10 LT5mbXQpIHsNCj4gPiArICAgICBjYXNlIEhETUlfSTJTOg0KPiA+ICsgICAgICAgICAgICAgYXVk aW8uZm9ybWF0ID0gQUZNVF9JMlM7DQo+ID4gKyAgICAgICAgICAgICBicmVhazsNCj4gPiArICAg ICBjYXNlIEhETUlfU1BESUY6DQo+ID4gKyAgICAgICAgICAgICBhdWRpby5mb3JtYXQgPSBBRk1U X1NQRElGX0VYVDsNCj4gPiArICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgIGRlZmF1bHQ6 DQo+ID4gKyAgICAgICAgICAgICBEUk1fREVWX0VSUk9SKGRldiwgIkludmFsaWQgZm9ybWF0ICVk XG4iLCBkYWlmbXQtPmZtdCk7DQo+ID4gKyAgICAgICAgICAgICByZXQgPSAtRUlOVkFMOw0KPiA+ ICsgICAgICAgICAgICAgZ290byBvdXQ7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBy ZXQgPSBjZG5zX21oZHBfYXVkaW9fY29uZmlnKG1oZHAsICZhdWRpbyk7DQo+ID4gKyAgICAgaWYg KCFyZXQpDQo+ID4gKyAgICAgICAgICAgICBtaGRwLT5hdWRpb19pbmZvID0gYXVkaW87DQo+ID4g Kw0KPiA+ICtvdXQ6DQo+ID4gKyAgICAgcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIHZvaWQgYXVkaW9fc2h1dGRvd24oc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRh KSB7DQo+ID4gKyAgICAgc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHAgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsNCj4gPiArICAgICBpbnQgcmV0Ow0KPiA+ICsNCj4gPiArICAgICByZXQgPSBj ZG5zX21oZHBfYXVkaW9fc3RvcChtaGRwLCAmbWhkcC0+YXVkaW9faW5mbyk7DQo+ID4gKyAgICAg aWYgKCFyZXQpDQo+ID4gKyAgICAgICAgICAgICBtaGRwLT5hdWRpb19pbmZvLmZvcm1hdCA9IEFG TVRfVU5VU0VEOyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGF1ZGlvX2RpZ2l0YWxfbXV0ZShz dHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBib29sIGVuYWJsZSkgew0KPiA+ICsgICAgIHN0cnVjdCBjZG5zX21oZHBf ZGV2aWNlICptaGRwID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ID4gKyAgICAgaW50IHJldDsN Cj4gPiArDQo+ID4gKyAgICAgcmV0ID0gY2Ruc19taGRwX2F1ZGlvX211dGUobWhkcCwgZW5hYmxl KTsNCj4gPiArDQo+ID4gKyAgICAgcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Rh dGljIGludCBhdWRpb19nZXRfZWxkKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCAqYnVmLCBzaXplX3QgbGVuKSB7DQo+ ID4gKyAgICAgc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHAgPSBkZXZfZ2V0X2RydmRhdGEo ZGV2KTsNCj4gPiArDQo+ID4gKyAgICAgbWVtY3B5KGJ1ZiwgbWhkcC0+Y29ubmVjdG9yLmJhc2Uu ZWxkLA0KPiA+ICsgICAgICAgICAgICBtaW4oc2l6ZW9mKG1oZHAtPmNvbm5lY3Rvci5iYXNlLmVs ZCksIGxlbikpOw0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4g PiArc3RhdGljIGNvbnN0IHN0cnVjdCBoZG1pX2NvZGVjX29wcyBhdWRpb19jb2RlY19vcHMgPSB7 DQo+ID4gKyAgICAgLmh3X3BhcmFtcyA9IGF1ZGlvX2h3X3BhcmFtcywNCj4gPiArICAgICAuYXVk aW9fc2h1dGRvd24gPSBhdWRpb19zaHV0ZG93biwNCj4gPiArICAgICAuZGlnaXRhbF9tdXRlID0g YXVkaW9fZGlnaXRhbF9tdXRlLA0KPiA+ICsgICAgIC5nZXRfZWxkID0gYXVkaW9fZ2V0X2VsZCwN Cj4gPiArfTsNCj4gPiArDQo+ID4gK2ludCBjZG5zX21oZHBfcmVnaXN0ZXJfYXVkaW9fZHJpdmVy KHN0cnVjdCBkZXZpY2UgKmRldikgew0KPiA+ICsgICAgIHN0cnVjdCBjZG5zX21oZHBfZGV2aWNl ICptaGRwID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ID4gKyAgICAgc3RydWN0IGhkbWlfY29k ZWNfcGRhdGEgY29kZWNfZGF0YSA9IHsNCj4gPiArICAgICAgICAgICAgIC5pMnMgPSAxLA0KPiA+ ICsgICAgICAgICAgICAgLnNwZGlmID0gMSwNCj4gPiArICAgICAgICAgICAgIC5vcHMgPSAmYXVk aW9fY29kZWNfb3BzLA0KPiA+ICsgICAgICAgICAgICAgLm1heF9pMnNfY2hhbm5lbHMgPSA4LA0K PiA+ICsgICAgIH07DQo+ID4gKw0KPiA+ICsgICAgIG1oZHAtPmF1ZGlvX3BkZXYgPSBwbGF0Zm9y bV9kZXZpY2VfcmVnaXN0ZXJfZGF0YSgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGV2LCBIRE1JX0NPREVDX0RSVl9OQU1FLCAxLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAmY29kZWNfZGF0YSwgc2l6ZW9mKGNvZGVjX2RhdGEpKTsNCj4gPiArDQo+ID4gKyAgICAg cmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhtaGRwLT5hdWRpb19wZGV2KTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArdm9pZCBjZG5zX21oZHBfdW5yZWdpc3Rlcl9hdWRpb19kcml2ZXIoc3RydWN0IGRldmlj ZSAqZGV2KSB7DQo+ID4gKyAgICAgc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHAgPSBkZXZf Z2V0X2RydmRhdGEoZGV2KTsNCj4gPiArDQo+ID4gKyAgICAgcGxhdGZvcm1fZGV2aWNlX3VucmVn aXN0ZXIobWhkcC0+YXVkaW9fcGRldik7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9jYWRlbmNlL2NkbnMtbWhkcC1jb21tb24uYw0KPiA+IGIvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9jYWRlbmNlL2NkbnMtbWhkcC1jb21tb24uYw0KPiA+IGluZGV4IGVm YjM5Y2Y1ZjQ4Yi4uOWZkNDU0NmM2OTE0IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvY2FkZW5jZS9jZG5zLW1oZHAtY29tbW9uLmMNCj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL2NhZGVuY2UvY2Rucy1taGRwLWNvbW1vbi5jDQo+ID4gQEAgLTM1NywzNiAr MzU3LDYgQEAgaW50IGNkbnNfbWhkcF9zZXRfZmlybXdhcmVfYWN0aXZlKHN0cnVjdA0KPiA+IGNk bnNfbWhkcF9kZXZpY2UgKm1oZHAsIGJvb2wgZW5hYmxlKSAgfQ0KPiA+IEVYUE9SVF9TWU1CT0wo Y2Ruc19taGRwX3NldF9maXJtd2FyZV9hY3RpdmUpOw0KPiA+DQo+ID4gLWludCBjZG5zX21oZHBf c2V0X2hvc3RfY2FwKHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRwLCBib29sIGZsaXApDQo+ ID4gLXsNCj4gPiAtICAgICB1OCBtc2dbOF07DQo+ID4gLSAgICAgaW50IHJldDsNCj4gPiAtDQo+ ID4gLSAgICAgbXNnWzBdID0gZHJtX2RwX2xpbmtfcmF0ZV90b19id19jb2RlKG1oZHAtPmRwLnJh dGUpOw0KPiA+IC0gICAgIG1zZ1sxXSA9IG1oZHAtPmRwLm51bV9sYW5lcyB8IFNDUkFNQkxFUl9F TjsNCj4gPiAtICAgICBtc2dbMl0gPSBWT0xUQUdFX0xFVkVMXzI7DQo+ID4gLSAgICAgbXNnWzNd ID0gUFJFX0VNUEhBU0lTX0xFVkVMXzM7DQo+ID4gLSAgICAgbXNnWzRdID0gUFRTMSB8IFBUUzIg fCBQVFMzIHwgUFRTNDsNCj4gPiAtICAgICBtc2dbNV0gPSBGQVNUX0xUX05PVF9TVVBQT1JUOw0K PiA+IC0gICAgIG1zZ1s2XSA9IGZsaXAgPyBMQU5FX01BUFBJTkdfRkxJUFBFRCA6IExBTkVfTUFQ UElOR19OT1JNQUw7DQo+ID4gLSAgICAgbXNnWzddID0gRU5IQU5DRUQ7DQo+ID4gLQ0KPiA+IC0g ICAgIHJldCA9IGNkbnNfbWhkcF9tYWlsYm94X3NlbmQobWhkcCwgTUJfTU9EVUxFX0lEX0RQX1RY LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFBUWF9TRVRfSE9TVF9D QVBBQklMSVRJRVMsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl b2YobXNnKSwgbXNnKTsNCj4gPiAtICAgICBpZiAocmV0KQ0KPiA+IC0gICAgICAgICAgICAgZ290 byBlcnJfc2V0X2hvc3RfY2FwOw0KPiA+IC0NCj4gPiAtICAgICByZXQgPSBjZG5zX21oZHBfcmVn X3dyaXRlKG1oZHAsDQo+IERQX0FVWF9TV0FQX0lOVkVSU0lPTl9DT05UUk9MLA0KPiA+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVVYX0hPU1RfSU5WRVJUKTsNCj4gPiAt DQo+ID4gLWVycl9zZXRfaG9zdF9jYXA6DQo+ID4gLSAgICAgaWYgKHJldCkNCj4gPiAtICAgICAg ICAgICAgIERSTV9ERVZfRVJST1IobWhkcC0+ZGV2LCAic2V0IGhvc3QgY2FwIGZhaWxlZDogJWRc biIsDQo+IHJldCk7DQo+ID4gLSAgICAgcmV0dXJuIHJldDsNCj4gPiAtfQ0KPiA+IC1FWFBPUlRf U1lNQk9MKGNkbnNfbWhkcF9zZXRfaG9zdF9jYXApOw0KPiA+IC0NCj4gPiAgaW50IGNkbnNfbWhk cF9ldmVudF9jb25maWcoc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHApICB7DQo+ID4gICAg ICAgdTggbXNnWzVdOw0KPiA+IEBAIC02OTgsMyArNjY4LDE1IEBAIGludCBjZG5zX21oZHBfY29u ZmlnX3ZpZGVvKHN0cnVjdA0KPiBjZG5zX21oZHBfZGV2aWNlICptaGRwKQ0KPiA+ICAgICAgIHJl dHVybiByZXQ7DQo+ID4gIH0NCj4gPiAgRVhQT1JUX1NZTUJPTChjZG5zX21oZHBfY29uZmlnX3Zp ZGVvKTsNCj4gPiArDQo+ID4gK2ludCBjZG5zX3BoeV9yZWdfd3JpdGUoc3RydWN0IGNkbnNfbWhk cF9kZXZpY2UgKm1oZHAsIHUzMiBhZGRyLCB1MzINCj4gPiArdmFsKSB7DQo+ID4gKyAgICAgcmV0 dXJuIGNkbnNfbWhkcF9yZWdfd3JpdGUobWhkcCwgQUREUl9QSFlfQUZFICsgKGFkZHIgPDwgMiks DQo+ID4gK3ZhbCk7IH0gRVhQT1JUX1NZTUJPTChjZG5zX3BoeV9yZWdfd3JpdGUpOw0KPiA+ICsN Cj4gPiArdTMyIGNkbnNfcGh5X3JlZ19yZWFkKHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRw LCB1MzIgYWRkcikgew0KPiA+ICsgICAgIHJldHVybiBjZG5zX21oZHBfcmVnX3JlYWQobWhkcCwg QUREUl9QSFlfQUZFICsgKGFkZHIgPDwgMikpOyB9DQo+ID4gK0VYUE9SVF9TWU1CT0woY2Ruc19w aHlfcmVnX3JlYWQpOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Nh ZGVuY2UvY2Rucy1taGRwLWNvbW1vbi5oDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Nh ZGVuY2UvY2Rucy1taGRwLWNvbW1vbi5oDQo+ID4gaW5kZXggMWYwOTNhMmRlYWE3Li5iMTIyYmY1 ZjBiZGYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9jYWRlbmNlL2Nk bnMtbWhkcC1jb21tb24uaA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvY2FkZW5j ZS9jZG5zLW1oZHAtY29tbW9uLmgNCj4gPiBAQCAtMjAsNCArMjAsNyBAQCBpbnQgY2Ruc19taGRw X3JlZ193cml0ZShzdHJ1Y3QgY2Ruc19taGRwX2RldmljZQ0KPiA+ICptaGRwLCB1MzIgYWRkciwg dTMyIHZhbCk7ICBpbnQgY2Ruc19taGRwX3JlZ193cml0ZV9iaXQoc3RydWN0DQo+IGNkbnNfbWhk cF9kZXZpY2UgKm1oZHAsIHUxNiBhZGRyLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHU4IHN0YXJ0X2JpdCwgdTggYml0c19ubywgdTMyIHZhbCk7DQo+ID4NCj4gPiArLyog QXVkaW8gKi8NCj4gPiAraW50IGNkbnNfbWhkcF9yZWdpc3Rlcl9hdWRpb19kcml2ZXIoc3RydWN0 IGRldmljZSAqZGV2KTsgdm9pZA0KPiA+ICtjZG5zX21oZHBfdW5yZWdpc3Rlcl9hdWRpb19kcml2 ZXIoc3RydWN0IGRldmljZSAqZGV2KTsNCj4gPiAgI2VuZGlmDQo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9icmlkZ2UvY2FkZW5jZS9jZG5zLW1oZHAtZHAuYw0KPiA+IGIvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9jYWRlbmNlL2NkbnMtbWhkcC1kcC5jDQo+ID4gaW5kZXggYzgxNjBm MzIxYWNhLi44ZmVhMDcyYTU1NjggMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS9jYWRlbmNlL2NkbnMtbWhkcC1kcC5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS9jYWRlbmNlL2NkbnMtbWhkcC1kcC5jDQo+ID4gQEAgLTEwOCw3ICsxMDgsOSBAQCBzdGF0 aWMgaW50IGNkbnNfbWhkcF90cmFpbmluZ19zdGFydChzdHJ1Y3QNCj4gY2Ruc19taGRwX2Rldmlj ZSAqbWhkcCkNCj4gPiAgICAgICAgICAgICAgIGlmIChyZXQpDQo+ID4gICAgICAgICAgICAgICAg ICAgICAgIGdvdG8gZXJyX3RyYWluaW5nX3N0YXJ0Ow0KPiA+DQo+ID4gLSAgICAgICAgICAgICBp ZiAoZXZlbnRbMV0gJiBFUV9QSEFTRV9GSU5JU0hFRCkNCj4gPiArICAgICAgICAgICAgIGlmIChl dmVudFsxXSAmIENMS19SRUNPVkVSWV9GQUlMRUQpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg IERSTV9ERVZfRVJST1IobWhkcC0+ZGV2LCAiY2xvY2sgcmVjb3ZlcnkNCj4gZmFpbGVkXG4iKTsN Cj4gPiArICAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50WzFdICYgRVFfUEhBU0VfRklOSVNIRUQp DQo+ID4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ICAgICAgIH0NCj4gPg0K PiA+IEBAIC0xNzIsMyArMTc0LDMzIEBAIGludCBjZG5zX21oZHBfdHJhaW5fbGluayhzdHJ1Y3QN Cj4gY2Ruc19taGRwX2RldmljZSAqbWhkcCkNCj4gPiAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICB9 DQo+ID4gIEVYUE9SVF9TWU1CT0woY2Ruc19taGRwX3RyYWluX2xpbmspOw0KPiA+ICsNCj4gPiAr aW50IGNkbnNfbWhkcF9zZXRfaG9zdF9jYXAoc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHAp IHsNCj4gPiArICAgICB1OCBtc2dbOF07DQo+ID4gKyAgICAgaW50IHJldDsNCj4gPiArDQo+ID4g KyAgICAgbXNnWzBdID0gZHJtX2RwX2xpbmtfcmF0ZV90b19id19jb2RlKG1oZHAtPmRwLnJhdGUp Ow0KPiA+ICsgICAgIG1zZ1sxXSA9IG1oZHAtPmRwLm51bV9sYW5lcyB8IFNDUkFNQkxFUl9FTjsN Cj4gPiArICAgICBtc2dbMl0gPSBWT0xUQUdFX0xFVkVMXzI7DQo+ID4gKyAgICAgbXNnWzNdID0g UFJFX0VNUEhBU0lTX0xFVkVMXzM7DQo+ID4gKyAgICAgbXNnWzRdID0gUFRTMSB8IFBUUzIgfCBQ VFMzIHwgUFRTNDsNCj4gPiArICAgICBtc2dbNV0gPSBGQVNUX0xUX05PVF9TVVBQT1JUOw0KPiA+ ICsgICAgIG1zZ1s2XSA9IG1oZHAtPmxhbmVfbWFwcGluZzsNCj4gPiArICAgICBtc2dbN10gPSBF TkhBTkNFRDsNCj4gPiArDQo+ID4gKyAgICAgcmV0ID0gY2Ruc19taGRwX21haWxib3hfc2VuZCht aGRwLCBNQl9NT0RVTEVfSURfRFBfVFgsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBEUFRYX1NFVF9IT1NUX0NBUEFCSUxJVElFUywNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVvZihtc2cpLCBtc2cpOw0KPiA+ICsgICAgIGlmIChyZXQp DQo+ID4gKyAgICAgICAgICAgICBnb3RvIGVycl9zZXRfaG9zdF9jYXA7DQo+ID4gKw0KPiA+ICsg ICAgIHJldCA9IGNkbnNfbWhkcF9yZWdfd3JpdGUobWhkcCwNCj4gRFBfQVVYX1NXQVBfSU5WRVJT SU9OX0NPTlRST0wsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB VVhfSE9TVF9JTlZFUlQpOw0KPiA+ICsNCj4gPiArZXJyX3NldF9ob3N0X2NhcDoNCj4gPiArICAg ICBpZiAocmV0KQ0KPiA+ICsgICAgICAgICAgICAgRFJNX0RFVl9FUlJPUihtaGRwLT5kZXYsICJz ZXQgaG9zdCBjYXAgZmFpbGVkOiAlZFxuIiwNCj4gcmV0KTsNCj4gPiArICAgICByZXR1cm4gcmV0 Ow0KPiA+ICt9DQo+ID4gK0VYUE9SVF9TWU1CT0woY2Ruc19taGRwX3NldF9ob3N0X2NhcCk7DQo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtY29yZS5jDQo+ ID4gYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvY2RuLWRwLWNvcmUuYw0KPiA+IGluZGV4IDA2 ZmQ4MmIyMTdiNi4uZDk0ZDIyNjUwODk5IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9yb2NrY2hpcC9jZG4tZHAtY29yZS5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tj aGlwL2Nkbi1kcC1jb3JlLmMNCj4gPiBAQCAtNDIzLDcgKzQyMywxMiBAQCBzdGF0aWMgaW50IGNk bl9kcF9lbmFibGVfcGh5KHN0cnVjdA0KPiBjZG5fZHBfZGV2aWNlICpkcCwgc3RydWN0IGNkbl9k cF9wb3J0ICpwb3J0KQ0KPiA+ICAgICAgIH0NCj4gPg0KPiA+ICAgICAgIHBvcnQtPmxhbmVzID0g Y2RuX2RwX2dldF9wb3J0X2xhbmVzKHBvcnQpOw0KPiA+IC0gICAgIHJldCA9IGNkbnNfbWhkcF9z ZXRfaG9zdF9jYXAoJmRwLT5taGRwLCBwcm9wZXJ0eS5pbnR2YWwpOw0KPiA+ICsNCj4gPiArICAg ICBpZiAocHJvcGVydHkuaW50dmFsKQ0KPiA+ICsgICAgICAgICAgICAgZHAtPm1oZHAubGFuZV9t YXBwaW5nID0gTEFORV9NQVBQSU5HX0ZMSVBQRUQ7DQo+ID4gKyAgICAgZWxzZQ0KPiA+ICsgICAg ICAgICAgICAgZHAtPm1oZHAubGFuZV9tYXBwaW5nID0gTEFORV9NQVBQSU5HX05PUk1BTDsNCj4g PiArICAgICByZXQgPSBjZG5zX21oZHBfc2V0X2hvc3RfY2FwKCZkcC0+bWhkcCk7DQo+ID4gICAg ICAgaWYgKHJldCkgew0KPiA+ICAgICAgICAgICAgICAgRFJNX0RFVl9FUlJPUihkZXYsICJzZXQg aG9zdCBjYXBhYmlsaXRpZXMgZmFpbGVkOiAlZFxuIiwNCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0KTsNCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vYnJpZGdlL2NkbnMt bWhkcC5oDQo+ID4gYi9pbmNsdWRlL2RybS9icmlkZ2UvY2Rucy1taGRwLmggaW5kZXggYzgxNzBl NjA0OGY3Li42ZmZiOTdlMTdmYWUNCj4gPiAxMDA2NDQNCj4gPiAtLS0gYS9pbmNsdWRlL2RybS9i cmlkZ2UvY2Rucy1taGRwLmgNCj4gPiArKysgYi9pbmNsdWRlL2RybS9icmlkZ2UvY2Rucy1taGRw LmgNCj4gPiBAQCAtMTQsNiArMTQsNyBAQA0KPiA+DQo+ID4gICNkZWZpbmUgQUREUl9JTUVNICAg ICAgICAgICAgMHgxMDAwMA0KPiA+ICAjZGVmaW5lIEFERFJfRE1FTSAgICAgICAgICAgIDB4MjAw MDANCj4gPiArI2RlZmluZSBBRERSX1BIWV9BRkUgMHg4MDAwMA0KPiA+DQo+ID4gIC8qIEFQQiBD RkcgYWRkciAqLw0KPiA+ICAjZGVmaW5lIEFQQl9DVFJMICAgICAgICAgICAgICAgICAgICAgMA0K PiA+IEBAIC04MSw2ICs4MiwxMCBAQA0KPiA+ICAjZGVmaW5lIFNPVVJDRV9QSUZfU1dfUkVTRVQg ICAgICAgICAgMHgzMDgzNA0KPiA+DQo+ID4gIC8qIGJlbGxvdyByZWdpc3RlcnMgbmVlZCBhY2Nl c3MgYnkgbWFpbGJveCAqLw0KPiA+ICsNCj4gPiArLyogc291cmNlIHBoeSBjb21wICovDQo+ID4g KyNkZWZpbmUgTEFORVNfQ09ORklHICAgICAgICAgICAgICAgICAweDA4MTQNCj4gPiArDQo+ID4g IC8qIHNvdXJjZSBjYXIgYWRkciAqLw0KPiA+ICAjZGVmaW5lIFNPVVJDRV9IRFRYX0NBUiAgICAg ICAgICAgICAgICAgICAgICAweDA5MDANCj4gPiAgI2RlZmluZSBTT1VSQ0VfRFBUWF9DQVIgICAg ICAgICAgICAgICAgICAgICAgMHgwOTA0DQo+ID4gQEAgLTQyNCw2ICs0MjksMTYgQEANCj4gPiAg LyogUmVmZXJlbmNlIGN5Y2xlcyB3aGVuIHVzaW5nIGxhbmUgY2xvY2sgYXMgcmVmZXJlbmNlICov DQo+ID4gICNkZWZpbmUgTEFORV9SRUZfQ1lDICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAw MA0KPiA+DQo+ID4gKyNkZWZpbmUgSE9UUExVR19ERUJPVU5DRV9NUyAgICAgICAgICAyMDANCj4g PiArDQo+ID4gKyNkZWZpbmUgSVJRX0lOICAgIDANCj4gPiArI2RlZmluZSBJUlFfT1VUICAgMQ0K PiA+ICsjZGVmaW5lIElSUV9OVU0gICAyDQo+ID4gKw0KPiA+ICsjZGVmaW5lIGNkbnNfbWhkcF9w bGF0X2NhbGwobWhkcCwgb3BlcmF0aW9uKSAgICAgICAgICAgICAgICAgXA0KPiA+ICsgICAgICgh KG1oZHApID8gLUVOT0RFViA6ICgoKG1oZHApLT5wbGF0X2RhdGEgJiYNCj4gKG1oZHApLT5wbGF0 X2RhdGEtPm9wZXJhdGlvbikgPyAgICAgXA0KPiA+ICsgICAgICAobWhkcCktPnBsYXRfZGF0YS0+ b3BlcmF0aW9uKG1oZHApIDogRU5PSU9DVExDTUQpKQ0KPiA+ICsNCj4gPiAgZW51bSB2b2x0YWdl X3N3aW5nX2xldmVsIHsNCj4gPiAgICAgICBWT0xUQUdFX0xFVkVMXzAsDQo+ID4gICAgICAgVk9M VEFHRV9MRVZFTF8xLA0KPiA+IEBAIC01MDQsOSArNTE5LDI5IEBAIHN0cnVjdCBjZG5zX21oZHBf Y29ubmVjdG9yIHsNCj4gPiAgICAgICBzdHJ1Y3QgY2Ruc19taGRwX2JyaWRnZSAqYnJpZGdlOyAg fTsNCj4gPg0KPiA+ICtzdHJ1Y3QgY2Ruc19wbGF0X2RhdGEgew0KPiA+ICsgICAgIC8qIFZlbmRv ciBQSFkgc3VwcG9ydCAqLw0KPiA+ICsgICAgIGludCAoKmJpbmQpKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlciwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNkbnNfbWhkcF9k ZXZpY2UgKm1oZHApOw0KPiA+ICsgICAgIHZvaWQgKCp1bmJpbmQpKHN0cnVjdCBkZXZpY2UgKmRl dik7DQo+ID4gKw0KPiA+ICsgICAgIGludCAoKnBoeV9zZXQpKHN0cnVjdCBjZG5zX21oZHBfZGV2 aWNlICptaGRwKTsNCj4gPiArICAgICBib29sICgqcGh5X3ZpZGVvX3ZhbGlkKShzdHJ1Y3QgY2Ru c19taGRwX2RldmljZSAqbWhkcCk7DQo+ID4gKyAgICAgaW50ICgqZmlybXdhcmVfaW5pdCkoc3Ry dWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHApOw0KPiA+ICsgICAgIHZvaWQgKCpwY2xrX3JhdGUp KHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRwKTsNCj4gPiArDQo+ID4gKyAgICAgaW50ICgq cG93ZXJfb24pKHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRwKTsNCj4gPiArICAgICBpbnQg KCpwb3dlcl9vZmYpKHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRwKTsNCj4gPiArDQo+ID4g KyAgICAgY2hhciAqcGxhdF9uYW1lOw0KPiA+ICsgICAgIGludCBsYW5lX21hcHBpbmc7DQo+ID4g K307DQo+ID4gKw0KPiA+ICBzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSB7DQo+ID4gICAgICAgc3Ry dWN0IGRldmljZSAqZGV2Ow0KPiA+ICAgICAgIHN0cnVjdCBjZG5zX21oZHBfY29ubmVjdG9yIGNv bm5lY3RvcjsNCj4gPiArICAgICBzdHJ1Y3QgY2Ruc19taGRwX2JyaWRnZSBicmlkZ2U7DQo+ID4N Cj4gPiAgICAgICB2b2lkIF9faW9tZW0gKnJlZ3NfYmFzZTsNCj4gPiAgICAgICBzdHJ1Y3QgcmVz ZXRfY29udHJvbCAqc3BkaWZfcnN0OyBAQCAtNTIwLDYgKzU1NSwxMSBAQCBzdHJ1Y3QNCj4gPiBj ZG5zX21oZHBfZGV2aWNlIHsNCj4gPg0KPiA+ICAgICAgIHVuc2lnbmVkIGludCBmd192ZXJzaW9u Ow0KPiA+DQo+ID4gKyAgICAgc3RydWN0IGRlbGF5ZWRfd29yayBob3RwbHVnX3dvcms7DQo+ID4g KyAgICAgdTMyIGxhbmVfbWFwcGluZzsNCj4gPiArICAgICBib29sIHBvd2VyX3VwOw0KPiA+ICsg ICAgIHN0cnVjdCBtdXRleCBsb2NrOw0KPiA+ICsgICAgIGludCBpcnFbSVJRX05VTV07DQo+ID4g ICAgICAgdW5pb24gew0KPiA+ICAgICAgICAgICAgICAgc3RydWN0IF9kcF9kYXRhIHsNCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgdTMyIHJhdGU7DQo+ID4gQEAgLTUyOCw2ICs1NjgsOCBAQCBz dHJ1Y3QgY2Ruc19taGRwX2RldmljZSB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgIHU4IGRw Y2RbRFBfUkVDRUlWRVJfQ0FQX1NJWkVdOw0KPiA+ICAgICAgICAgICAgICAgfSBkcDsNCj4gPiAg ICAgICB9Ow0KPiA+ICsgICAgIGNvbnN0IHN0cnVjdCBjZG5zX3BsYXRfZGF0YSAqcGxhdF9kYXRh Ow0KPiA+ICsNCj4gPiAgfTsNCj4gPg0KPiA+ICB2b2lkIGNkbnNfbWhkcF9jbG9ja19yZXNldChz dHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCk7IEBADQo+IC01MzUsNw0KPiA+ICs1NzcsNyBA QCB2b2lkIGNkbnNfbWhkcF9zZXRfZndfY2xrKHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRw LA0KPiA+IHVuc2lnbmVkIGxvbmcgY2xrKTsgIGludCBjZG5zX21oZHBfbG9hZF9maXJtd2FyZShz dHJ1Y3QNCj4gY2Ruc19taGRwX2RldmljZSAqbWhkcCwgY29uc3QgdTMyICppX21lbSwNCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBpX3NpemUsIGNvbnN0IHUzMiAqZF9tZW0sIHUz MiBkX3NpemUpOw0KPiA+IGludCBjZG5zX21oZHBfc2V0X2Zpcm13YXJlX2FjdGl2ZShzdHJ1Y3Qg Y2Ruc19taGRwX2RldmljZSAqbWhkcCwgYm9vbA0KPiA+IGVuYWJsZSk7IC1pbnQgY2Ruc19taGRw X3NldF9ob3N0X2NhcChzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCwNCj4gPiBib29sIGZs aXApOw0KPiA+ICtpbnQgY2Ruc19taGRwX3NldF9ob3N0X2NhcChzdHJ1Y3QgY2Ruc19taGRwX2Rl dmljZSAqbWhkcCk7DQo+ID4gIGludCBjZG5zX21oZHBfZXZlbnRfY29uZmlnKHN0cnVjdCBjZG5z X21oZHBfZGV2aWNlICptaGRwKTsNCj4gPiAgdTMyIGNkbnNfbWhkcF9nZXRfZXZlbnQoc3RydWN0 IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHApOyAgaW50DQo+ID4gY2Ruc19taGRwX3JlYWRfaHBkKHN0 cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRwKTsgQEAgLTU0NywxMA0KPiArNTg5LDE4DQo+ID4g QEAgaW50IGNkbnNfbWhkcF9nZXRfZWRpZF9ibG9jayh2b2lkICptaGRwLCB1OCAqZWRpZCwgIGlu dA0KPiA+IGNkbnNfbWhkcF90cmFpbl9saW5rKHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRw KTsgIGludA0KPiA+IGNkbnNfbWhkcF9zZXRfdmlkZW9fc3RhdHVzKHN0cnVjdCBjZG5zX21oZHBf ZGV2aWNlICptaGRwLCBpbnQgYWN0aXZlKTsNCj4gPiBpbnQgY2Ruc19taGRwX2NvbmZpZ192aWRl byhzdHJ1Y3QgY2Ruc19taGRwX2RldmljZSAqbWhkcCk7DQo+ID4gK2Jvb2wgY2Ruc19taGRwX2No ZWNrX2FsaXZlKHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRwKTsNCj4gPiAgaW50IGNkbnNf bWhkcF9hdWRpb19zdG9wKHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRwLA0KPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGF1ZGlvX2luZm8gKmF1ZGlvKTsgIGludA0KPiA+IGNk bnNfbWhkcF9hdWRpb19tdXRlKHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRwLCBib29sIGVu YWJsZSk7DQo+IGludA0KPiA+IGNkbnNfbWhkcF9hdWRpb19jb25maWcoc3RydWN0IGNkbnNfbWhk cF9kZXZpY2UgKm1oZHAsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhdWRp b19pbmZvICphdWRpbyk7DQo+ID4NCj4gPiAraW50IGNkbnNfcGh5X3JlZ193cml0ZShzdHJ1Y3Qg Y2Ruc19taGRwX2RldmljZSAqbWhkcCwgdTMyIGFkZHIsIHUzMg0KPiA+ICt2YWwpOw0KPiA+ICt1 MzIgY2Ruc19waHlfcmVnX3JlYWQoc3RydWN0IGNkbnNfbWhkcF9kZXZpY2UgKm1oZHAsIHUzMiBh ZGRyKTsNCj4gPiArDQo+ID4gKy8qIERQICAqLw0KPiA+ICtpbnQgY2Ruc19kcF9iaW5kKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBkcm1fZW5jb2Rlcg0KPiAqZW5jb2RlciwN Cj4gPiArICAgICAgICAgICAgIHN0cnVjdCBjZG5zX21oZHBfZGV2aWNlICptaGRwKTsgdm9pZA0K PiA+ICtjZG5zX2RwX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYpOw0KPiA+ICAjZW5kaWYgLyog Q0ROU19NSERQX0hfICovDQo+IA0KPiAtLQ0KPiBSZWdhcmRzLA0KPiANCj4gTGF1cmVudCBQaW5j aGFydA0K