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=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,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 2F894C169C4 for ; Wed, 6 Feb 2019 15:28:30 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E83D32073F for ; Wed, 6 Feb 2019 15:28:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="quONgiOw"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="EkhyRxUR" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E83D32073F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-ID:In-Reply-To: References:Message-ID:Date:Subject:To:From:Reply-To:Cc:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=1yhA5gABuwyoaYDsq8n8DV42q9GPfJaISEhXKXWJCW0=; b=quONgiOwC/tN2+ gW1F1Mq11EZfp7CEjBOBUgTx3IIqqnt+WvwKh2+1jaiUG2QUmOqpQo10Jc7tDyYCVeCTkj3gNi8Uc tqHxC3IeLU281iyb6+PWL9gFBd47j+M3Qgh2XLyT/WUHtqN3r+/njn23/JhrTd9Y3mRHLPxH0J3Ud InXh3IaVEBYqrKlR4UKIWqC7gycqOy0zbS1oKYi6H02N3YtG8HNRmOuVKbHInPQeIjhKy4oJGEg36 S31RmdGuUuxu8R9eelhvbYerbY6VpEb7CyAMwi9czkwNh/Xi9vw7V6b+wjdSbj6uIGq20Zx8/ANG3 WFTCzMlZNc5jUOLXnabQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1grP7Y-0000vW-KB; Wed, 06 Feb 2019 15:28:16 +0000 Received: from mail-eopbgr20073.outbound.protection.outlook.com ([40.107.2.73] helo=EUR02-VE1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1grP7U-0000uZ-MN for linux-arm-kernel@lists.infradead.org; Wed, 06 Feb 2019 15:28:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3ccfQB9T0juvdrAfu4Oj1uXBVWIQL+wC2cxeaKB1ug8=; b=EkhyRxURs2Y80cVhQJoRY9/uHn1oansFY4LPCxjop9H71pnD8QZtCOJrF9BjUG8ncDPxAj94YqDk84PY/D9DPevEjeGCfc2KSVRlIzFg53bZY6dNv0o+AIGyun2mRR0a4FDfe18Dqfb/xdfCAe8s66JFly/SV+kUmApMpqxFygA= Received: from AM6PR04MB4007.eurprd04.prod.outlook.com (52.135.161.10) by AM6PR04MB5943.eurprd04.prod.outlook.com (20.178.94.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1601.17; Wed, 6 Feb 2019 15:28:08 +0000 Received: from AM6PR04MB4007.eurprd04.prod.outlook.com ([fe80::c479:1763:8e61:d390]) by AM6PR04MB4007.eurprd04.prod.outlook.com ([fe80::c479:1763:8e61:d390%7]) with mapi id 15.20.1601.016; Wed, 6 Feb 2019 15:28:08 +0000 From: Robert Chiras To: "dri-devel@lists.freedesktop.org" , "linux-arm-kernel@lists.infradead.org" , "sam@ravnborg.org" , "maxime.ripard@bootlin.com" , "agx@sigxcpu.org" , "festevam@gmail.com" Subject: Re: [PATCH v2 3/3] phy: Add driver for mixel dphy found on imx8 Thread-Topic: [PATCH v2 3/3] phy: Add driver for mixel dphy found on imx8 Thread-Index: AQHUugsgdZvBEFJJsk+L0VDR8s3Kt6XS7QYA Date: Wed, 6 Feb 2019 15:28:07 +0000 Message-ID: <1549466886.18625.24.camel@nxp.com> References: <4889791c13375ac927c964f888d66b678675916d.1549010639.git.agx@sigxcpu.org> In-Reply-To: <4889791c13375ac927c964f888d66b678675916d.1549010639.git.agx@sigxcpu.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=robert.chiras@nxp.com; x-originating-ip: [95.76.156.53] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM6PR04MB5943; 6:VXv7p9q0AMPcSU7LMGDcEYMMlSN3SsUfLzT4YmK6oQ3sXp+123Awf7cX3requgnWRB8u0vWsKkWUIlLyBllzaK+EX2Ii41KS/aauUEg8iwU1f/IMJPQFg0Wn+SThdxk0s9zppMIHQKcoMJ/si/5Xr/rNovfWa3Gz/zqIlFwld73V5M7sNbadG0XvAsVUxBm3GU3TcF9CudFoK2DN55NeYcdFrhFShJ9CZ++PtYEytMc0ugl8Pb2Xfh5KdmYlZ8c0cJ+hxS2MzBpTlulZ4TabSXASgIc68pxklV6WOY85MzdkOZz087SqEUGwRi+/2lXIPGno/DTqgrxffxscJOwTVKqWyamrRM03Sy7WpYozXdPXCiL3/Dv++aKVygZv47mkeXbf19XwRudwo9AAtAWoedkIfLEpeqgS3srY8W5jEDwCtqXGF8+3UseMA+isvapT/hTlCIwu6xTFqGKecyx4Lw==; 5:v7Upef0yCPn2JilYJA0TRcf/mBRYJU3ZTzQNTdyx+mTqgtMj4vFHPtgltwb6uIr9zrgypNIT3Ow4fZESQYQiYcCCnTDwWVC9WnxWrxfOiDykyEVMJhvJv9zKhJCArgGIJpksjkC1isZkYz+OVLP9Q4Kumllac8G4ubvg4AduP/qFPy8BTTuVST+JY/PeWIQLZoO/WJ6c9xYnjdxz1mYnag==; 7:gBx9O8xkOBrAbimeChy4JGZQ76z8kmDit4eeZ8V/NTUtMwOdx2MokeKtHtKt26KVmlB9w3bNMIAa0lGlZF/XuIJIXV3V2s2eG8NrD638DHcGz5BsXsLpkMAJQiu0JtKZAA+USDzWUFmB0SyqjqLYCQ== x-ms-office365-filtering-correlation-id: 89e98775-25e5-4a8b-ff95-08d68c47b23e x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR04MB5943; x-ms-traffictypediagnostic: AM6PR04MB5943: x-microsoft-antispam-prvs: x-forefront-prvs: 0940A19703 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(376002)(396003)(366004)(346002)(136003)(199004)(189003)(86362001)(66574012)(25786009)(6246003)(53946003)(30864003)(6506007)(102836004)(6512007)(186003)(2906002)(99286004)(2501003)(44832011)(8936002)(53936002)(36756003)(2616005)(476003)(305945005)(7736002)(8676002)(81156014)(81166006)(446003)(11346002)(486006)(68736007)(106356001)(66066001)(256004)(14444005)(71190400001)(103116003)(71200400001)(97736004)(105586002)(6116002)(3846002)(229853002)(110136005)(478600001)(14454004)(2201001)(6436002)(76176011)(6486002)(26005)(316002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR04MB5943; H:AM6PR04MB4007.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: s7wDgqeqcIa3BawAe5QDoJbJPSd/dXeWZabBsSpo59JLADtLd+erwdcaXK+yc3El+xxPVv+nrNNfGieVjJTbWR02vw+UA7m4ixeg6E+VNxgWKlypGkY22X0KYDY8DufsRTHfLMFViTmfqnU6xo1xinwzHFtQqzvaO9bjwF/kV/0LpGxZXCB0l/3tAcRwRYWNO5isglDU5fcndolHnKox5MTNSM2zepTGvist/uxKGYuL4lw6zXpoUnacM+lNNFDM9aF1JktLR+NqFobi0cGvpurJ4F2CaTwY/l8jE7ZnSpkASCP3T/wElpUhIxVK3cHdiJXK2CFjkoKjiOBrOhouq75OsljMXgJPRVdqHKwTm9FWk6vq9pbgzHZwIoxZtYUr0jpMKYl34r/irDmpenNZoxjn9UQRcI6dhu4ex7xoUFo= Content-ID: <53468213CE39B34ABD30F78194AD28D0@eurprd04.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 89e98775-25e5-4a8b-ff95-08d68c47b23e X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Feb 2019 15:28:07.9843 (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-Transport-CrossTenantHeadersStamped: AM6PR04MB5943 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190206_072812_959884_C1DBC17B X-CRM114-Status: GOOD ( 31.29 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgR3VpZG8sDQoNClRoYW5rcyBmb3IgcGlja2luZyB0aGlzIHVwLiBJdCdzIGludGVyZXN0aW5n IHRvIHNlZSB0aGF0IGEgbG90IGhhcw0KY2hhbmdlZCBpbiB0aGUgUEhZIEFQSSBhbmQgdGhlIHBo eSBjYW4gYmUgbm93IGNvbmZpZ3VyZWQgdGhyb3VnaCB0aGUNCkFQSSBpbnN0ZWFkIG9mIGV4cG9y dGVkIGZ1bmN0aW9uIGFzIEkgZGlkIGluIHRoZSBOWFAgdHJlZS4NCg0KSSB3YXMgZ29pbmcgdGhy b3VnaCB5b3VyIGltcGxlbWVudGF0aW9uIGFuZCBJIG5vdGljZWQgeW91IGFsc28gYWRkZWQNCnRo ZSBwaHlfcmVmIGNsb2NrIHRvIHRoaXMgZHJpdmVyIHRvby4gVGhpcyBpcyBnb29kLCBzaW5jZSB0 aGUgRFBIWQ0KbmVlZHMgdGhpcyBjbG9jaywgYnV0IEkgaGF2ZSBhIHF1ZXN0aW9uIHJlbGF0ZWQg dG8gdGhlIG90aGVyIGNsb2NrczoNCkFjY29yZGluZyB0byB0aGUgTm9ydGh3ZXN0IExvZ2ljIHJl ZmVyZW5jZSBtYW51YWwgKHRoZSBEU0kgaG9zdCB0aGF0DQp1c2VzIHRoaXMgRFBIWSksIHRoZSBo b3N0IHJlbGllcyBvbiB0aGUgVFggY2xvY2sgaW4gb3JkZXIgdG8gY29uZmlndXJlDQp0aGUgRFBI WS4gSXMgdGhpcyBkcml2ZXIgcmVseWluZyBvbiBpdCdzIHVzZXIgdG8gYWxzbyBlbmFibGUgdGhl IFRYDQpjbG9jaz8NCg0KQWxzbzogZGlkIHlvdSB0ZXN0IHRoaXMgZHJpdmVyPyBCZWNhdXNlIEkg aGF2ZSBhIHZlcnNpb24gb2YgdGhlIHBhdGNoZXMNCmZyb20gTlhQIHRyZWUgcmViYXNlZCBvbiB0 b3Agb2YgbGF0ZXN0IGxpbnV4LW5leHQgYW5kIEkgaGF2ZSBhIHdvcmtpbmcNCnZlcnNpb24gb2Yg ZUxDRElGIHdpdGggUmF5ZGl1bSBSTTY3MTkxIERTSSBwYW5lbCBvbiBtU2NhbGU4NTBEDQooaS5N WDhNUSkuIEFuZCBJIHRyaWVkIHVzaW5nIHRoaXMgZHJpdmVyIGJ1dCB0aGVyZSBpcyBubyBzaWdu YWwgb24gdGhlDQpzY3JlZW4sIGV2ZW4gdGhyb3VnaCB0aGUgcmVnaXN0ZXIgdmFsdWVzIGFyZSBh bGwgaWRlbnRpY2FsLiBOZXh0LCBJJ2xsDQp0cnkgdG8gZGVidWcgd2h5IGlzbid0IHRoaXMgd29y a2luZyBvbiBteSBzZXR1cC4NCg0KT3RoZXIgdGhhbiB0aGUgYWJvdmUgcXVlc3Rpb25zLCBJIGhh dmUgc29tZSBzdWdnZXN0aW9ucyBpbmxpbmUuDQoNCkJlc3QgcmVnYXJkcywNClJvYmVydA0KDQoN Ck9uIFZpLCAyMDE5LTAyLTAxIGF0IDA5OjQ5ICswMTAwLCBHdWlkbyBHw7xudGhlciB3cm90ZToN Cj4gVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNaXhlbCBEUEhZIGFzIGZvdW5kIG9uIGkuTVg4 IENQVXMgYnV0IHNpbmNlDQo+IHRoaXMgaXMgYW4gSVAgY29yZSBpdCB3aWxsIGxpa2VseSBiZSBm b3VuZCBvbiBvdGhlcnMgaW4gdGhlIGZ1dHVyZS4NCj4gU28NCj4gaW5zdGVhZCBvZiBhZGRpbmcg dGhpcyB0byB0aGUgbndsIGhvc3QgZHJpdmVyIG1ha2UgaXQgYSBnZW5lcmljIFBIWQ0KPiBkcml2 ZXIuDQo+IA0KPiBUaGUgZHJpdmVyIHN1cHBvcnRzIHRoZSBpLk1YOE1RLiBTdXBwb3J0IGZvciBp Lk1YOFFNIGFuZCBpLk1YOFFYUCBjYW4NCj4gYmUNCj4gYWRkZWQgb25jZSB0aGUgbmVjZXNzYXJ5 IHN5c3RlbSBjb250cm9sbGVyIGJpdHMgYXJlIGluIHZpYQ0KPiBtaXhlbF9kcGh5X2RldmRhdGEu DQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBHdWlkbyBHw7xudGhlciA8YWd4QHNpZ3hjcHUub3JnPg0K PiAtLS0NCj4gwqBkcml2ZXJzL3BoeS9mcmVlc2NhbGUvS2NvbmZpZ8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgOSArDQo+IMKgZHJpdmVycy9waHkvZnJlZXNjYWxlL01h a2VmaWxlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgMSArDQo+IMKgLi4u L3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4LW1pcGktZHBoeS5jwqDCoMKgwqB8IDQ5NA0KPiAr KysrKysrKysrKysrKysrKysNCj4gwqAzIGZpbGVzIGNoYW5nZWQsIDUwNCBpbnNlcnRpb25zKCsp DQo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNsLWlt eDgtbWlwaS1kcGh5LmMNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9mcmVlc2NhbGUv S2NvbmZpZw0KPiBiL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9LY29uZmlnDQo+IGluZGV4IDgzMjY3 MGI0OTUyYi4uNDNhNWNhMjVkNDRiIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3BoeS9mcmVlc2Nh bGUvS2NvbmZpZw0KPiArKysgYi9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvS2NvbmZpZw0KPiBAQCAt MywzICszLDEyIEBAIGNvbmZpZyBQSFlfRlNMX0lNWDhNUV9VU0INCj4gwqAJZGVwZW5kcyBvbiBP RiAmJiBIQVNfSU9NRU0NCj4gwqAJc2VsZWN0IEdFTkVSSUNfUEhZDQo+IMKgCWRlZmF1bHQgQVJD SF9NWEMgJiYgQVJNNjQNCj4gKw0KPiArY29uZmlnIFBIWV9NSVhFTF9NSVBJX0RQSFkNCj4gKwl0 cmlzdGF0ZSAiTWl4ZWwgTUlQSSBEU0kgUEhZIHN1cHBvcnQiDQo+ICsJZGVwZW5kcyBvbiBPRg0K PiArCXNlbGVjdCBHRU5FUklDX1BIWQ0KPiArCXNlbGVjdCBHRU5FUklDX1BIWV9NSVBJX0RQSFkN Cj4gKwloZWxwDQo+ICsJwqDCoEVuYWJsZSB0aGlzIHRvIGFkZCBzdXBwb3J0IGZvciB0aGUgTWl4 ZWwgRFNJIFBIWSBhcyBmb3VuZA0KPiArCcKgwqBvbiBOWFAncyBpLk1YOCBmYW1pbHkgb2YgU09D cy4NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9NYWtlZmlsZQ0KPiBiL2Ry aXZlcnMvcGh5L2ZyZWVzY2FsZS9NYWtlZmlsZQ0KPiBpbmRleCBkYzJiM2YxZjJmODAuLjA3NDkx YzkyNmEyYyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9waHkvZnJlZXNjYWxlL01ha2VmaWxlDQo+ ICsrKyBiL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9NYWtlZmlsZQ0KPiBAQCAtMSArMSwyIEBADQo+ IMKgb2JqLSQoQ09ORklHX1BIWV9GU0xfSU1YOE1RX1VTQikJKz0gcGh5LWZzbC1pbXg4bXEtdXNi Lm8NCj4gK29iai0kKENPTkZJR19QSFlfTUlYRUxfTUlQSV9EUEhZKQkrPSBwaHktZnNsLWlteDgt bWlwaS1kcGh5Lm8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNs LWlteDgtbWlwaS1kcGh5LmMNCj4gYi9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4 LW1pcGktZHBoeS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAw MC4uNGIxODJmMmVhYTZlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9waHkvZnJl ZXNjYWxlL3BoeS1mc2wtaW14OC1taXBpLWRwaHkuYw0KPiBAQCAtMCwwICsxLDQ5NCBAQA0KPiAr Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArDQo+ICsvKg0KPiArICogQ29weXJp Z2h0IDIwMTcsMjAxOCBOWFANCj4gKyAqIENvcHlyaWdodCAyMDE5IFB1cmlzbSBTUEMNCj4gKyAq Lw0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvY2xr LXByb3ZpZGVyLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4gKyNpbmNsdWRlIDxs aW51eC9pby5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiArI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+DQo+ICsjaW5jbHVkZSA8bGlu dXgvb2ZfcGxhdGZvcm0uaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4NCj4gKyNpbmNs dWRlIDxsaW51eC9waHkvcGh5Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNl Lmg+DQo+ICsNCj4gKy8qIERQSFkgcmVnaXN0ZXJzICovDQo+ICsjZGVmaW5lIERQSFlfUERfRFBI WQkJCTB4MDANCj4gKyNkZWZpbmUgRFBIWV9NX1BSR19IU19QUkVQQVJFCQkweDA0DQo+ICsjZGVm aW5lIERQSFlfTUNfUFJHX0hTX1BSRVBBUkUJCTB4MDgNCj4gKyNkZWZpbmUgRFBIWV9NX1BSR19I U19aRVJPCQkweDBjDQo+ICsjZGVmaW5lIERQSFlfTUNfUFJHX0hTX1pFUk8JCTB4MTANCj4gKyNk ZWZpbmUgRFBIWV9NX1BSR19IU19UUkFJTAkJMHgxNA0KPiArI2RlZmluZSBEUEhZX01DX1BSR19I U19UUkFJTAkJMHgxOA0KPiArI2RlZmluZSBEUEhZX1BEX1BMTAkJCTB4MWMNCj4gKyNkZWZpbmUg RFBIWV9UU1QJCQkweDIwDQo+ICsjZGVmaW5lIERQSFlfQ04JCQkJMHgyNA0KPiArI2RlZmluZSBE UEhZX0NNCQkJCTB4MjgNCj4gKyNkZWZpbmUgRFBIWV9DTwkJCQkweDJjDQo+ICsjZGVmaW5lIERQ SFlfTE9DSwkJCTB4MzANCj4gKyNkZWZpbmUgRFBIWV9MT0NLX0JZUAkJCTB4MzQNCj4gKyNkZWZp bmUgRFBIWV9SRUdfQllQQVNTX1BMTAkJMHg0Qw0KPiArDQo+ICsjZGVmaW5lIE1CUFMoeCkgKCh4 KSAqIDEwMDAwMDApDQo+ICsNCj4gKyNkZWZpbmUgREFUQV9SQVRFX01BWF9TUEVFRCBNQlBTKDE1 MDApDQo+ICsjZGVmaW5lIERBVEFfUkFURV9NSU5fU1BFRUQgTUJQUyg4MCkNCj4gKw0KPiArI2Rl ZmluZSBDTl9CVUYJMHhjYjdhODljMA0KPiArI2RlZmluZSBDT19CVUYJMHg2Mw0KPiArI2RlZmlu ZSBDTSh4KQkoCQkJCVwNCj4gKwkJKCh4KSA8CTMyKT8weGUwfCgoeCktMTYpIDoJXA0KPiArCQko KHgpIDwJNjQpPzB4YzB8KCh4KS0zMikgOglcDQo+ICsJCSgoeCkgPCAxMjgpPzB4ODB8KCh4KS02 NCkgOglcDQo+ICsJCSgoeCkgLSAxMjgpKQ0KPiArI2RlZmluZSBDTih4KQkoKCh4KSA9PSAxKT8w eDFmIDogKCgoQ05fQlVGKT4+KCh4KS0xKSkmMHgxZikpDQo+ICsjZGVmaW5lIENPKHgpCSgoQ09f QlVGKT4+KDgtKHgpKSYweDMpDQo+ICsNCj4gKy8qIFBIWSBwb3dlciBvbiBpcyBMT1dfRU5BQkxF ICovDQo+ICsjZGVmaW5lIFBXUl9PTgkwDQo+ICsjZGVmaW5lIFBXUl9PRkYJMQ0KPiArDQo+ICtl bnVtIG1peGVsX2RwaHlfZGV2dHlwZSB7DQo+ICsJTUlYRUxfSU1YOE1RLA0KPiArfTsNCj4gKw0K PiArc3RydWN0IG1peGVsX2RwaHlfZGV2ZGF0YSB7DQo+ICsJdTggcmVnX3R4X3JjYWw7DQo+ICsJ dTggcmVnX2F1dG9fcGRfZW47DQo+ICsJdTggcmVnX3J4bHBycDsNCj4gKwl1OCByZWdfcnhjZHJw Ow0KPiArCXU4IHJlZ19yeGhzX3NldHRsZTsNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgbWl4ZWxfZHBoeV9kZXZkYXRhIG1peGVsX2RwaHlfZGV2ZGF0YVtdID0gew0KPiArCVtN SVhFTF9JTVg4TVFdID0gew0KPiArCQkucmVnX3R4X3JjYWwgPSAweDM4LA0KPiArCQkucmVnX2F1 dG9fcGRfZW4gPSAweDNjLA0KPiArCQkucmVnX3J4bHBycCA9IDB4NDAsDQo+ICsJCS5yZWdfcnhj ZHJwID0gMHg0NCwNCj4gKwkJLnJlZ19yeGhzX3NldHRsZSA9IDB4NDgsDQo+ICsJfSwNCj4gK307 DQo+ICsNCj4gK3N0cnVjdCBtaXhlbF9kcGh5X2NmZyB7DQo+ICsJLyogRFBIWSBQTEwgcGFyYW1l dGVycyAqLw0KPiArCXUzMiBjbTsNCj4gKwl1MzIgY247DQo+ICsJdTMyIGNvOw0KPiArCS8qIERQ SFkgcmVnaXN0ZXIgdmFsdWVzICovDQo+ICsJdTggbWNfcHJnX2hzX3ByZXBhcmU7DQo+ICsJdTgg bV9wcmdfaHNfcHJlcGFyZTsNCj4gKwl1OCBtY19wcmdfaHNfemVybzsNCj4gKwl1OCBtX3ByZ19o c196ZXJvOw0KPiArCXU4IG1jX3ByZ19oc190cmFpbDsNCj4gKwl1OCBtX3ByZ19oc190cmFpbDsN Cj4gKwl1OCByeGhzX3NldHRsZTsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBtaXhlbF9kcGh5X3By aXYgew0KPiArCXN0cnVjdCBtaXhlbF9kcGh5X2NmZyBjZmc7DQo+ICsJc3RydWN0IHJlZ21hcCAq cmVnczsNCj4gKwlzdHJ1Y3QgY2xrICpwaHlfcmVmX2NsazsNCj4gKwljb25zdCBzdHJ1Y3QgbWl4 ZWxfZHBoeV9kZXZkYXRhICpkZXZkYXRhOw0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0 cnVjdCByZWdtYXBfY29uZmlnIG1peGVsX2RwaHlfcmVnbWFwX2NvbmZpZyA9IHsNCj4gKwkucmVn X2JpdHMgPSA4LA0KPiArCS52YWxfYml0cyA9IDMyLA0KPiArCS5yZWdfc3RyaWRlID0gNCwNCj4g KwkubWF4X3JlZ2lzdGVyID0gRFBIWV9SRUdfQllQQVNTX1BMTCwNCj4gKwkubmFtZSA9ICJtaXBp LWRwaHkiLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGlubGluZSB1MzIgcGh5X3JlYWQoc3RydWN0 IHBoeSAqcGh5LCB1bnNpZ25lZCBpbnQgcmVnKQ0KPiArew0KPiArCXN0cnVjdCBtaXhlbF9kcGh5 X3ByaXYgKnByaXYgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsNCj4gKwl1MzIgdmFsOw0KPiArCWlu dCByZXQ7DQo+ICsNCj4gKwlyZXQgPSByZWdtYXBfcmVhZChwcml2LT5yZWdzLCByZWcsICZ2YWwp Ow0KPiArCWlmIChyZXQgPCAwKQ0KPiArCQlkZXZfZXJyKCZwaHktPmRldiwgIkZhaWxlZCB0byBy ZWFkIERQSFkgcmVnICVkOiAlZCIsDQo+IHJlZywgcmV0KTsNCj4gKwlyZXR1cm4gdmFsOw0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgcGh5X3dyaXRlKHN0cnVjdCBwaHkgKnBoeSwg dTMyIHZhbHVlLCB1bnNpZ25lZA0KPiBpbnQgcmVnKQ0KPiArew0KPiArCXN0cnVjdCBtaXhlbF9k cGh5X3ByaXYgKnByaXYgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsNCj4gKwlpbnQgcmV0Ow0KPiAr DQo+ICsJcmV0ID0gcmVnbWFwX3dyaXRlKHByaXYtPnJlZ3MsIHJlZywgdmFsdWUpOw0KPiArCWlm IChyZXQgPCAwKQ0KPiArCQlkZXZfZXJyKCZwaHktPmRldiwgIkZhaWxlZCB0byB3cml0ZSBEUEhZ IHJlZyAlZDoNCj4gJWQiLCByZWcsIHJldCk7DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsgKiBGaW5k IGEgcmF0aW8gY2xvc2UgdG8gdGhlIGRlc2lyZWQgb25lIHVzaW5nIGNvbnRpbnVlZCBmcmFjdGlv bg0KPiArICogYXBwcm94aW1hdGlvbiBlbmRpbmcgZWl0aGVyIGF0IGV4YWN0IG1hdGNoIG9yIG1h eGltdW0gYWxsb3dlZA0KPiArICogbm9taW5hdG9yLCBkZW5vbWluYXRvci4NCj4gKyAqLw0KPiAr c3RhdGljIHZvaWQgZ2V0X2Jlc3RfcmF0aW8odW5zaWduZWQgbG9uZyAqcG51bSwgdW5zaWduZWQg bG9uZw0KPiAqcGRlbm9tLA0KPiArCQkJwqDCoMKgdW5zaWduZWQgaW50IG1heF9uLCB1bnNpZ25l ZCBpbnQgbWF4X2QpDQo+ICt7DQo+ICsJdW5zaWduZWQgbG9uZyBhID0gKnBudW07DQo+ICsJdW5z aWduZWQgbG9uZyBiID0gKnBkZW5vbTsNCj4gKwl1bnNpZ25lZCBsb25nIGM7DQo+ICsJdW5zaWdu ZWQgaW50IG5bXSA9IHswLCAxfTsNCj4gKwl1bnNpZ25lZCBpbnQgZFtdID0gezEsIDB9Ow0KPiAr CXVuc2lnbmVkIGludCB3aG9sZTsNCj4gKwl1bnNpZ25lZCBpbnQgaSA9IDE7DQo+ICsNCj4gKwl3 aGlsZSAoYikgew0KPiArCQlpIF49IDE7DQo+ICsJCXdob2xlID0gYSAvIGI7DQo+ICsJCW5baV0g Kz0gKG5baSBeIDFdICogd2hvbGUpOw0KPiArCQlkW2ldICs9IChkW2kgXiAxXSAqIHdob2xlKTsN Cj4gKwkJaWYgKChuW2ldID4gbWF4X24pIHx8IChkW2ldID4gbWF4X2QpKSB7DQo+ICsJCQlpIF49 IDE7DQo+ICsJCQlicmVhazsNCj4gKwkJfQ0KPiArCQljID0gYSAtIChiICogd2hvbGUpOw0KPiAr CQlhID0gYjsNCj4gKwkJYiA9IGM7DQo+ICsJfQ0KPiArCSpwbnVtID0gbltpXTsNCj4gKwkqcGRl bm9tID0gZFtpXTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBtaXhlbF9kcGh5X2NvbmZpZ19m cm9tX29wdHMoc3RydWN0IHBoeSAqcGh5LA0KPiArCcKgwqDCoMKgwqDCoMKgc3RydWN0IHBoeV9j b25maWd1cmVfb3B0c19taXBpX2RwaHkgKmRwaHlfb3B0cywNCj4gKwnCoMKgwqDCoMKgwqDCoHN0 cnVjdCBtaXhlbF9kcGh5X2NmZyAqY2ZnKQ0KPiArew0KPiArCXN0cnVjdCBtaXhlbF9kcGh5X3By aXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEocGh5LQ0KPiA+ZGV2LnBhcmVudCk7DQo+ICsJdW5z aWduZWQgbG9uZyByZWZfY2xrID0gY2xrX2dldF9yYXRlKHByaXYtPnBoeV9yZWZfY2xrKTsNCj4g Kwl1bnNpZ25lZCBsb25nIGxwX3QsIG51bWVyYXRvciwgZGVub21pbmF0b3IsIGZyZXF1ZW5jeTsN Cj4gKwl1MzIgbjsNCj4gKwlpbnQgaTsNCj4gKw0KPiArCWlmIChkcGh5X29wdHMtPmhzX2Nsa19y YXRlID4gREFUQV9SQVRFX01BWF9TUEVFRCB8fA0KPiArCcKgwqDCoMKgZHBoeV9vcHRzLT5oc19j bGtfcmF0ZSA8IERBVEFfUkFURV9NSU5fU1BFRUQpDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiAr DQo+ICsJbnVtZXJhdG9yID0gZHBoeV9vcHRzLT5oc19jbGtfcmF0ZTsNCj4gKwlkZW5vbWluYXRv ciA9IHJlZl9jbGs7DQo+ICsJZ2V0X2Jlc3RfcmF0aW8oJm51bWVyYXRvciwgJmRlbm9taW5hdG9y LCAyNTUsIDI1Nik7DQo+ICsJaWYgKCFudW1lcmF0b3IgfHwgIWRlbm9taW5hdG9yKSB7DQo+ICsJ CWRldl9lcnIoJnBoeS0+ZGV2LCAiSW52YWxpZCAlbGQvJWxkIGZvciAlbGQvJWxkXG4iLA0KPiAr CQkJbnVtZXJhdG9yLCBkZW5vbWluYXRvciwNCj4gKwkJCWRwaHlfb3B0cy0+aHNfY2xrX3JhdGUs IHJlZl9jbGspOw0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsNCj4gKwl3aGlsZSAo KG51bWVyYXRvciA8IDE2KSAmJiAoZGVub21pbmF0b3IgPD0gMTI4KSkgew0KPiArCQludW1lcmF0 b3IgPDw9IDE7DQo+ICsJCWRlbm9taW5hdG9yIDw8PSAxOw0KPiArCX0NCj4gKwkvKg0KPiArCcKg KiBDTSByYW5nZXMgYmV0d2VlbiAxNiBhbmQgMjU1DQo+ICsJwqAqIENOIHJhbmdlcyBiZXR3ZWVu IDEgYW5kIDMyDQo+ICsJwqAqIENPIGlzIHBvd2VyIG9mIDI6IDEsIDIsIDQsIDgNCj4gKwnCoCov DQo+ICsJaSA9IF9fZmZzKGRlbm9taW5hdG9yKTsNCj4gKwlpZiAoaSA+IDMpDQo+ICsJCWkgPSAz Ow0KPiArCWNmZy0+Y24gPSBkZW5vbWluYXRvciA+PiBpOw0KPiArCWNmZy0+Y28gPSAxIDw8IGk7 DQo+ICsJY2ZnLT5jbSA9IG51bWVyYXRvcjsNCj4gKw0KPiArCWlmIChjZmctPmNtIDwgMTYgfHwg Y2ZnLT5jbSA+IDI1NSB8fA0KPiArCcKgwqDCoMKgY2ZnLT5jbiA8IDEgfHwgY2ZnLT5jbiA+IDMy IHx8DQo+ICsJwqDCoMKgwqBjZmctPmNvIDwgMSB8fCBjZmctPmNvID4gOCkgew0KPiArCQlkZXZf ZXJyKCZwaHktPmRldiwgIkludmFsaWQgQ00vQ04vQ08gdmFsdWVzOg0KPiAldS8ldS8ldVxuIiwN Cj4gKwkJCWNmZy0+Y20sIGNmZy0+Y24sIGNmZy0+Y28pOw0KPiArCQlkZXZfZXJyKCZwaHktPmRl diwgImZvciBoc19jbGsvcmVmX2Nsaz0lbGQvJWxkIOKpsA0KPiAlbGQvJWxkXG4iLA0KPiArCQkJ ZHBoeV9vcHRzLT5oc19jbGtfcmF0ZSwgcmVmX2NsaywNCj4gKwkJCW51bWVyYXRvciwgZGVub21p bmF0b3IpOw0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsNCj4gKwlmcmVxdWVuY3kg PSByZWZfY2xrICogbnVtZXJhdG9yIC8gKDIgKiBkZW5vbWluYXRvcik7DQo+ICsJZGV2X2luZm8o JnBoeS0+ZGV2LCAiZnJlcT0lbGQsIGhzX2Nsay9yZWZfY2xrPSVsZC8lbGQg4qmwDQo+ICVsZC8l bGRcbiIsDQo+ICsJCcKgZnJlcXVlbmN5LCBkcGh5X29wdHMtPmhzX2Nsa19yYXRlLCByZWZfY2xr LA0KPiArCQnCoG51bWVyYXRvciwgZGVub21pbmF0b3IpOw0KPiArDQo+ICsJLyogTFAgY2xvY2sg cGVyaW9kICovDQo+ICsJbHBfdCA9IDEwMDAwMDAwMDAwMDBMIC8gZHBoeV9vcHRzLT5scF9jbGtf cmF0ZTsgLyogcHMgKi8NCj4gKwlkZXZfZGJnKCZwaHktPmRldiwgIkxQIGNsb2NrICVsdSwgcGVy aW9kOiAlbHUgcHNcbiIsDQo+ICsJCWRwaHlfb3B0cy0+bHBfY2xrX3JhdGUsIGxwX3QpOw0KPiAr CS8qDQo+ICsJwqAqwqDCoGhzX3ByZXBhcmU6IGluIGxwIGNsb2NrIHBlcmlvZHMNCj4gKwnCoCov DQo+ICsJaWYgKDIgKiBkcGh5X29wdHMtPmhzX3ByZXBhcmUgPiA1ICogbHBfdCkgew0KPiArCQlk ZXZfZXJyKCZwaHktPmRldiwNCj4gKwkJCSJoc19wcmVwYXJlICgldSkgPiAyLjUgKiBscCBjbG9j ayBwZXJpb2QNCj4gKCVsdSkiLA0KPiArCQkJZHBoeV9vcHRzLT5oc19wcmVwYXJlLCBscF90KTsN Cj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArCS8qIDAwOiBscF90LCAwMTogMS41ICog bHBfdCwgMTA6IDIgKiBscF90LCAxMTogMi41ICogbHBfdCAqLw0KPiArCWlmIChkcGh5X29wdHMt PmhzX3ByZXBhcmUgPCBscF90KQ0KPiArCQluID0gMDsNCj4gKwllbHNlDQo+ICsJCW4gPSAyICog KGRwaHlfb3B0cy0+aHNfcHJlcGFyZSAtIGxwX3QpIC8gbHBfdDsNCj4gKwljZmctPm1fcHJnX2hz X3ByZXBhcmUgPSBuOw0KPiArDQo+ICsJLyoNCj4gKwnCoCogY2xrX3ByZXBhcmU6IGluIGxwIGNs b2NrIHBlcmlvZHMNCj4gKwnCoCovDQo+ICsJaWYgKDIgKiBkcGh5X29wdHMtPmNsa19wcmVwYXJl ID4gMyAqIGxwX3QpIHsNCj4gKwkJZGV2X2VycigmcGh5LT5kZXYsDQo+ICsJCQkiY2xrX3ByZXBh cmUgKCV1KSA+IDEuNSAqIGxwIGNsb2NrIHBlcmlvZA0KPiAoJWx1KSIsDQo+ICsJCQlkcGh5X29w dHMtPmNsa19wcmVwYXJlLCBscF90KTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiAr CS8qIDAwOiBscF90LCAwMTogMS41ICogbHBfdCAqLw0KPiArCWNmZy0+bWNfcHJnX2hzX3ByZXBh cmUgPSBkcGh5X29wdHMtPmNsa19wcmVwYXJlID4gbHBfdCA/IDEgOg0KPiAwOw0KDQpTaW5jZSBo c19wcmVwYXJlIGFuZCBjbGtfcHJlcGFyZSBib3RoIGRlcGVuZCBvbiB0aGUgY3VycmVudCBIUy9M UCBjbG9jaw0KcmF0ZXMgc2hvdWxkbid0IGJlIGJldHRlciB0byBjYWxjdWxhdGUgdGhlc2UgdHdv IGhlcmU/IEluc3RlYWQgb2YgZG9pbmcNCsKgdGhpcyBpbiB0aGUgRFNJIGhvc3QgZHJpdmVyPyBU aGlzIHdheSBhbGwgdGhlIERQSFkgc3BlY2lmaWMNCmNhbGN1bGF0aW9ucyB3aG91bGQgaW4gb25l IHBsYWNlLg0KDQo+ICsNCj4gKwkvKg0KPiArCcKgKiBoc196ZXJvOiBmb3J1bXVsYSBmcm9tIE5Y UCBCU1ANCj4gKwnCoCovDQo+ICsJbiA9ICgxNDQgKiAoZHBoeV9vcHRzLT5oc19jbGtfcmF0ZSAv IDEwMDAwMDApIC0gNDc1MDApIC8NCj4gMTAwMDA7DQo+ICsJY2ZnLT5tX3ByZ19oc196ZXJvID0g biA8IDEgPyAxIDogbjsNCj4gKw0KPiArCS8qDQo+ICsJwqAqIGNsa196ZXJvOiBmb3J1bXVsYSBm cm9tIE5YUCBCU1ANCj4gKwnCoCovDQo+ICsJbiA9ICgzNCAqIChkcGh5X29wdHMtPmhzX2Nsa19y YXRlIC8gMTAwMDAwMCkgLSAyNTAwKSAvIDEwMDA7DQo+ICsJY2ZnLT5tY19wcmdfaHNfemVybyA9 IG4gPCAxID8gMSA6IG47DQo+ICsNCj4gKwkvKg0KPiArCcKgKiBjbGtfdHJhaWwsIGhzX3RyYWls OiBmb3J1bXVsYSBmcm9tIE5YUCBCU1ANCj4gKwnCoCovDQo+ICsJbiA9ICgxMDMgKiAoZHBoeV9v cHRzLT5oc19jbGtfcmF0ZSAvIDEwMDAwMDApICsgMTAwMDApIC8NCj4gMTAwMDA7DQo+ICsJaWYg KG4gPiAxNSkNCj4gKwkJbiA9IDE1Ow0KPiArCWlmIChuIDwgMSkNCj4gKwkJbiA9IDE7DQo+ICsJ Y2ZnLT5tX3ByZ19oc190cmFpbCA9IG47DQo+ICsJY2ZnLT5tY19wcmdfaHNfdHJhaWwgPSBuOw0K PiArDQo+ICsJLyoNCj4gKwnCoCogcnhoc19zZXR0bGU6IGZvcm11bGEgZnJvbSBOWFAgQlNQDQo+ ICsJwqAqLw0KPiArCWlmIChkcGh5X29wdHMtPmhzX2Nsa19yYXRlIDwgTUJQUyg4MCkpDQo+ICsJ CWNmZy0+cnhoc19zZXR0bGUgPSAweDBkOw0KPiArCWVsc2UgaWYgKGRwaHlfb3B0cy0+aHNfY2xr X3JhdGUgPCBNQlBTKDkwKSkNCj4gKwkJY2ZnLT5yeGhzX3NldHRsZSA9IDB4MGM7DQo+ICsJZWxz ZSBpZiAoZHBoeV9vcHRzLT5oc19jbGtfcmF0ZSA8IE1CUFMoMTI1KSkNCj4gKwkJY2ZnLT5yeGhz X3NldHRsZSA9IDB4MGI7DQo+ICsJZWxzZSBpZiAoZHBoeV9vcHRzLT5oc19jbGtfcmF0ZSA8IE1C UFMoMTUwKSkNCj4gKwkJY2ZnLT5yeGhzX3NldHRsZSA9IDB4MGE7DQo+ICsJZWxzZSBpZiAoZHBo eV9vcHRzLT5oc19jbGtfcmF0ZSA8IE1CUFMoMjI1KSkNCj4gKwkJY2ZnLT5yeGhzX3NldHRsZSA9 IDB4MDk7DQo+ICsJZWxzZSBpZiAoZHBoeV9vcHRzLT5oc19jbGtfcmF0ZSA8IE1CUFMoNTAwKSkN Cj4gKwkJY2ZnLT5yeGhzX3NldHRsZSA9IDB4MDg7DQo+ICsJZWxzZQ0KPiArCQljZmctPnJ4aHNf c2V0dGxlID0gMHgwNzsNCj4gKw0KPiArCWRldl9kYmcoJnBoeS0+ZGV2LCAiaHNfcHJlcGFyZTog JXUsIGNsa19wcmVwYXJlOiAldSwgIg0KPiArCQkiaHNfcHJlcGFyZTogJXUsIGNsa19wcmVwYXJl OiAldSwgIg0KPiArCQkiaHNfdHJhaWw6ICV1LCBjbGtfdHJhaWw6ICV1LCAiDQo+ICsJCSJyeGhz X3NldHRsZTogJXVcbiIsDQo+ICsJCWNmZy0+bV9wcmdfaHNfcHJlcGFyZSwgY2ZnLT5tY19wcmdf aHNfcHJlcGFyZSwNCj4gKwkJY2ZnLT5tX3ByZ19oc196ZXJvLCBjZmctPm1jX3ByZ19oc196ZXJv LA0KPiArCQljZmctPm1fcHJnX2hzX3RyYWlsLCBjZmctPm1jX3ByZ19oc190cmFpbCwNCj4gKwkJ Y2ZnLT5yeGhzX3NldHRsZSk7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3Rh dGljIHZvaWQgbWl4ZWxfcGh5X3NldF9oc190aW1pbmdzKHN0cnVjdCBwaHkgKnBoeSkNCj4gK3sN Cj4gKwlzdHJ1Y3QgbWl4ZWxfZHBoeV9wcml2ICpwcml2ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7 DQo+ICsNCj4gKwlwaHlfd3JpdGUocGh5LCBwcml2LT5jZmcubV9wcmdfaHNfcHJlcGFyZSwNCj4g RFBIWV9NX1BSR19IU19QUkVQQVJFKTsNCj4gKwlwaHlfd3JpdGUocGh5LCBwcml2LT5jZmcubWNf cHJnX2hzX3ByZXBhcmUsDQo+IERQSFlfTUNfUFJHX0hTX1BSRVBBUkUpOw0KPiArCXBoeV93cml0 ZShwaHksIHByaXYtPmNmZy5tX3ByZ19oc196ZXJvLCBEUEhZX01fUFJHX0hTX1pFUk8pOw0KPiAr CXBoeV93cml0ZShwaHksIHByaXYtPmNmZy5tY19wcmdfaHNfemVybywNCj4gRFBIWV9NQ19QUkdf SFNfWkVSTyk7DQo+ICsJcGh5X3dyaXRlKHBoeSwgcHJpdi0+Y2ZnLm1fcHJnX2hzX3RyYWlsLA0K PiBEUEhZX01fUFJHX0hTX1RSQUlMKTsNCj4gKwlwaHlfd3JpdGUocGh5LCBwcml2LT5jZmcubWNf cHJnX2hzX3RyYWlsLA0KPiBEUEhZX01DX1BSR19IU19UUkFJTCk7DQo+ICsJcGh5X3dyaXRlKHBo eSwgcHJpdi0+Y2ZnLnJ4aHNfc2V0dGxlLCBwcml2LT5kZXZkYXRhLQ0KPiA+cmVnX3J4aHNfc2V0 dGxlKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBtaXhlbF9kcGh5X3NldF9wbGxfcGFyYW1z KHN0cnVjdCBwaHkgKnBoeSkNCj4gK3sNCj4gKwlzdHJ1Y3QgbWl4ZWxfZHBoeV9wcml2ICpwcml2 ID0gZGV2X2dldF9kcnZkYXRhKHBoeS0NCj4gPmRldi5wYXJlbnQpOw0KPiArDQo+ICsJaWYgKHBy aXYtPmNmZy5jbSA8IDE2IHx8IHByaXYtPmNmZy5jbSA+IDI1NSB8fA0KPiArCcKgwqDCoMKgcHJp di0+Y2ZnLmNuIDwgMSB8fCBwcml2LT5jZmcuY24gPiAzMiB8fA0KPiArCcKgwqDCoMKgcHJpdi0+ Y2ZnLmNvIDwgMSB8fCBwcml2LT5jZmcuY28gPiA4KSB7DQo+ICsJCWRldl9lcnIoJnBoeS0+ZGV2 LCAiSW52YWxpZCBDTS9DTi9DTyB2YWx1ZXMhDQo+ICgldS8ldS8ldSlcbiIsDQo+ICsJCQlwcml2 LT5jZmcuY20sIHByaXYtPmNmZy5jbiwgcHJpdi0+Y2ZnLmNvKTsNCj4gKwkJcmV0dXJuIC1FSU5W QUw7DQo+ICsJfQ0KPiArCWRldl9kYmcoJnBoeS0+ZGV2LCAiVXNpbmcgQ006JXUgQ046JXUgQ086 JXVcbiIsDQo+ICsJCXByaXYtPmNmZy5jbSwgcHJpdi0+Y2ZnLmNuLCBwcml2LT5jZmcuY28pOw0K PiArCXBoeV93cml0ZShwaHksIENNKHByaXYtPmNmZy5jbSksIERQSFlfQ00pOw0KPiArCXBoeV93 cml0ZShwaHksIENOKHByaXYtPmNmZy5jbiksIERQSFlfQ04pOw0KPiArCXBoeV93cml0ZShwaHks IENPKHByaXYtPmNmZy5jbyksIERQSFlfQ08pOw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgaW50IG1peGVsX2RwaHlfY29uZmlndXJlKHN0cnVjdCBwaHkgKnBoeSwgdW5pb24N Cj4gcGh5X2NvbmZpZ3VyZV9vcHRzICpvcHRzKQ0KPiArew0KPiArCXN0cnVjdCBtaXhlbF9kcGh5 X3ByaXYgKnByaXYgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsNCj4gKwlzdHJ1Y3QgbWl4ZWxfZHBo eV9jZmcgY2ZnID0geyAwIH07DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCXJldCA9IG1peGVsX2Rw aHlfY29uZmlnX2Zyb21fb3B0cyhwaHksICZvcHRzLT5taXBpX2RwaHksDQo+ICZjZmcpOw0KPiAr CWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwkvKiBVcGRhdGUgdGhlIGNvbmZp Z3VyYXRpb24gKi8NCj4gKwltZW1jcHkoJnByaXYtPmNmZywgJmNmZywgc2l6ZW9mKHN0cnVjdCBt aXhlbF9kcGh5X2NmZykpOw0KPiArDQo+ICsJZGV2X2RiZygmcGh5LT5kZXYsICJVc2luZyBDTTol dSBDTjoldSBDTzoldVxuIiwNCj4gKwkJcHJpdi0+Y2ZnLmNtLCBwcml2LT5jZmcuY24sIHByaXYt PmNmZy5jbyk7DQo+ICsNCj4gKwlwaHlfd3JpdGUocGh5LCAweDAwLCBEUEhZX0xPQ0tfQllQKTsN Cj4gKwlwaHlfd3JpdGUocGh5LCAweDAxLCBwcml2LT5kZXZkYXRhLT5yZWdfdHhfcmNhbCk7DQo+ ICsJcGh5X3dyaXRlKHBoeSwgMHgwMCwgcHJpdi0+ZGV2ZGF0YS0+cmVnX2F1dG9fcGRfZW4pOw0K PiArCXBoeV93cml0ZShwaHksIDB4MDIsIHByaXYtPmRldmRhdGEtPnJlZ19yeGxwcnApOw0KPiAr CXBoeV93cml0ZShwaHksIDB4MDIsIHByaXYtPmRldmRhdGEtPnJlZ19yeGNkcnApOw0KPiArCXBo eV93cml0ZShwaHksIDB4MjUsIERQSFlfVFNUKTsNCj4gKw0KPiArCW1peGVsX3BoeV9zZXRfaHNf dGltaW5ncyhwaHkpOw0KPiArCXJldCA9IG1peGVsX2RwaHlfc2V0X3BsbF9wYXJhbXMocGh5KTsN Cj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCXJldHVybiAwOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IG1peGVsX2RwaHlfdmFsaWRhdGUoc3RydWN0IHBoeSAq cGh5LCBlbnVtIHBoeV9tb2RlIG1vZGUsDQo+IGludCBzdWJtb2RlLA0KPiArCQkJwqDCoMKgwqDC oMKgwqB1bmlvbiBwaHlfY29uZmlndXJlX29wdHMgKm9wdHMpDQo+ICt7DQo+ICsJc3RydWN0IG1p eGVsX2RwaHlfY2ZnIGNmZyA9IHsgMCB9Ow0KPiArDQo+ICsJaWYgKG1vZGUgIT0gUEhZX01PREVf TUlQSV9EUEhZKQ0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiArCXJldHVybiBtaXhlbF9k cGh5X2NvbmZpZ19mcm9tX29wdHMocGh5LCAmb3B0cy0+bWlwaV9kcGh5LA0KPiAmY2ZnKTsNCj4g K30NCj4gKw0KPiArc3RhdGljIGludCBtaXhlbF9kcGh5X3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBo eSkNCj4gK3sNCj4gKwlzdHJ1Y3QgbWl4ZWxfZHBoeV9wcml2ICpwcml2ID0gcGh5X2dldF9kcnZk YXRhKHBoeSk7DQo+ICsJdTMyIGxvY2tlZDsNCj4gKw0KPiArCWNsa19wcmVwYXJlX2VuYWJsZShw cml2LT5waHlfcmVmX2Nsayk7DQo+ICsNCj4gKwlwaHlfd3JpdGUocGh5LCBQV1JfT04sIERQSFlf UERfRFBIWSk7DQo+ICsJcGh5X3dyaXRlKHBoeSwgUFdSX09OLCBEUEhZX1BEX1BMTCk7DQoNCkFj Y29yZGluZyB0byB0aGUgTWl4ZWwgUk0sIHRoZSBwb3dlciBvbiBzZXF1ZW5jZSBpcyB0aGUgZm9s bG93aW5nOg0KMS4gRGVhc3NlcnQgUERfUExMDQoyLiBXYWl0IGZvciBEUEhZX0xPQ0sNCjMuIERl YXNzZXJ0IFBEX0RQSFkNClRoZXJlZm9yZSwgdGhlIFBEX0RQSFkgZGVhc3NlcnRpb24gc2hvdWxk IGJlIG1vdmVkIGFmdGVyIHRoZSByZWFkX3BvbGwNCg0KQW5vdGhlciB0aGluZyByZWdhcmRpbmcg dGhlIHBvd2VyLW9uIHNlcXVlbmNlOiBQRF9QTEwgYW5kIFBEX0RQSFkNCnN0YXRlcyBtdXN0IGJl IGFzc2VydGVkIGJlZm9yZSBwb3dlcmluZy1vbi4gSW4gdGhlIE5YUCB0cmVlIHRoaXMgd2FzDQpk b25lIGluIHRoZSBpbml0IHN0YWdlLCBidXQgdGhpcyBzdGFnZSBpcyBtaXNzaW5nIGhlcmUuIEkg dGhpbmsgeW91DQpjb3VsZCBhZGQgdGhpcywgb3IgeW91IGNvdWxkIGFzc2VydCB0aGVtICh3cml0 ZSBQV1JfT0ZGKSBpbiBjb25maWd1cmUNCnN0YWdlLg0KDQo+ICsNCj4gKwlpZiAocmVnbWFwX3Jl YWRfcG9sbF90aW1lb3V0KHByaXYtPnJlZ3MsIERQSFlfTE9DSywgbG9ja2VkLA0KPiArCQkJCcKg wqDCoMKgwqBsb2NrZWQsIDEwLCAxMDAwKSA8IDApIHsNCj4gKwkJZGV2X2VycigmcGh5LT5kZXYs ICJDb3VsZCBub3QgZ2V0IERQSFkgbG9jayFcbiIpOw0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4g Kwl9DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBtaXhlbF9k cGh5X3Bvd2VyX29mZihzdHJ1Y3QgcGh5ICpwaHkpDQo+ICt7DQo+ICsJc3RydWN0IG1peGVsX2Rw aHlfcHJpdiAqcHJpdiA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOw0KPiArDQo+ICsJcGh5X3dyaXRl KHBoeSwgUFdSX09GRiwgRFBIWV9QRF9QTEwpOw0KPiArCXBoeV93cml0ZShwaHksIFBXUl9PRkYs IERQSFlfUERfRFBIWSk7DQo+ICsNCj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+cGh5 X3JlZl9jbGspOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgcGh5X29wcyBtaXhlbF9kcGh5X3BoeV9vcHMgPSB7DQo+ICsJLnBvd2VyX29uID0g bWl4ZWxfZHBoeV9wb3dlcl9vbiwNCj4gKwkucG93ZXJfb2ZmID0gbWl4ZWxfZHBoeV9wb3dlcl9v ZmYsDQo+ICsJLmNvbmZpZ3VyZSA9IG1peGVsX2RwaHlfY29uZmlndXJlLA0KPiArCS52YWxpZGF0 ZSA9IG1peGVsX2RwaHlfdmFsaWRhdGUsDQo+ICsJLm93bmVyID0gVEhJU19NT0RVTEUsDQo+ICt9 Ow0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtaXhlbF9kcGh5X29m X21hdGNoW10gPSB7DQo+ICsJeyAuY29tcGF0aWJsZSA9ICJtaXhlbCxpbXg4bXEtbWlwaS1kcGh5 IiwNCj4gKwnCoMKgLmRhdGEgPSAmbWl4ZWxfZHBoeV9kZXZkYXRhW01JWEVMX0lNWDhNUV0gfSwN Cj4gKwl7IC8qIHNlbnRpbmVsICovIH0sDQo+ICt9Ow0KPiArTU9EVUxFX0RFVklDRV9UQUJMRShv ZiwgbWl4ZWxfZHBoeV9vZl9tYXRjaCk7DQo+ICsNCj4gK3N0YXRpYyBpbnQgbWl4ZWxfZHBoeV9w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiArew0KPiArCXN0cnVjdCBkZXZp Y2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+ICsJc3RydWN0IGRldmljZV9ub2RlICpucCA9IGRldi0+ b2Zfbm9kZTsNCj4gKwlzdHJ1Y3QgcGh5X3Byb3ZpZGVyICpwaHlfcHJvdmlkZXI7DQo+ICsJc3Ry dWN0IG1peGVsX2RwaHlfcHJpdiAqcHJpdjsNCj4gKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsNCj4g KwlzdHJ1Y3QgcGh5ICpwaHk7DQo+ICsJdm9pZCBfX2lvbWVtICpyZWdzOw0KPiArDQo+ICsJaWYg KCFucCkNCj4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ICsNCj4gKwlwcml2ID0gZGV2bV9remFsbG9j KGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCFwcml2KQ0KPiArCQly ZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArCXByaXYtPmRldmRhdGEgPSBvZl9kZXZpY2VfZ2V0X21h dGNoX2RhdGEoJnBkZXYtPmRldik7DQo+ICsJaWYgKCFwcml2LT5kZXZkYXRhKQ0KPiArCQlyZXR1 cm4gLUVJTlZBTDsNCj4gKw0KPiArCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJ T1JFU09VUkNFX01FTSwgMCk7DQo+ICsJaWYgKCFyZXMpDQo+ICsJCXJldHVybiAtRU5PREVWOw0K PiArDQo+ICsJcmVncyA9IGRldm1faW9yZW1hcChkZXYsIHJlcy0+c3RhcnQsIHJlc291cmNlX3Np emUocmVzKSk7DQo+ICsJaWYgKElTX0VSUihwcml2LT5yZWdzKSkgew0KPiArCQlkZXZfZXJyKGRl diwgIkNvdWxkbid0IG1hcCB0aGUgRFBIWSByZWdpc3RlcnNcbiIpOw0KPiArCQlyZXR1cm4gUFRS X0VSUihwcml2LT5yZWdzKTsNCj4gKwl9DQo+ICsNCj4gKwlwcml2LT5yZWdzID0gZGV2bV9yZWdt YXBfaW5pdF9tbWlvKCZwZGV2LT5kZXYsIHJlZ3MsDQo+ICsJCQkJCcKgwqDCoCZtaXhlbF9kcGh5 X3JlZ21hcF9jb25maWcNCj4gKTsNCj4gKwlpZiAoSVNfRVJSKHByaXYtPnJlZ3MpKSB7DQo+ICsJ CWRldl9lcnIoZGV2LCAiQ291bGRuJ3QgY3JlYXRlIHRoZSBEUEhZIHJlZ21hcFxuIik7DQo+ICsJ CXJldHVybiBQVFJfRVJSKHByaXYtPnJlZ3MpOw0KPiArCX0NCj4gKw0KPiArCXByaXYtPnBoeV9y ZWZfY2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJwaHlfcmVmIik7DQo+ICsJaWYgKElT X0VSUihwcml2LT5waHlfcmVmX2NsaykpIHsNCj4gKwkJZGV2X2VycihkZXYsICJObyBwaHlfcmVm IGNsb2NrIGZvdW5kXG4iKTsNCj4gKwkJcmV0dXJuIFBUUl9FUlIocHJpdi0+cGh5X3JlZl9jbGsp Ow0KPiArCX0NCj4gKwlkZXZfZGJnKGRldiwgInBoeV9yZWYgY2xvY2sgcmF0ZTogJWx1XG4iLA0K PiArCQljbGtfZ2V0X3JhdGUocHJpdi0+cGh5X3JlZl9jbGspKTsNCj4gKw0KPiArCWRldl9zZXRf ZHJ2ZGF0YShkZXYsIHByaXYpOw0KPiArDQo+ICsJcGh5ID0gZGV2bV9waHlfY3JlYXRlKGRldiwg bnAsICZtaXhlbF9kcGh5X3BoeV9vcHMpOw0KPiArCWlmIChJU19FUlIocGh5KSkgew0KPiArCQlk ZXZfZXJyKGRldiwgIkZhaWxlZCB0byBjcmVhdGUgcGh5ICVsZFxuIiwNCj4gUFRSX0VSUihwaHkp KTsNCj4gKwkJcmV0dXJuIFBUUl9FUlIocGh5KTsNCj4gKwl9DQo+ICsJcGh5X3NldF9kcnZkYXRh KHBoeSwgcHJpdik7DQo+ICsNCj4gKwlwaHlfcHJvdmlkZXIgPSBkZXZtX29mX3BoeV9wcm92aWRl cl9yZWdpc3RlcihkZXYsDQo+IG9mX3BoeV9zaW1wbGVfeGxhdGUpOw0KPiArDQo+ICsJcmV0dXJu IFBUUl9FUlJfT1JfWkVSTyhwaHlfcHJvdmlkZXIpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgc3Ry dWN0IHBsYXRmb3JtX2RyaXZlciBtaXhlbF9kcGh5X2RyaXZlciA9IHsNCj4gKwkucHJvYmUJPSBt aXhlbF9kcGh5X3Byb2JlLA0KPiArCS5kcml2ZXIgPSB7DQo+ICsJCS5uYW1lID0gIm1peGVsLW1p cGktZHBoeSIsDQo+ICsJCS5vZl9tYXRjaF90YWJsZQk9IG1peGVsX2RwaHlfb2ZfbWF0Y2gsDQo+ ICsJfQ0KPiArfTsNCj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWl4ZWxfZHBoeV9kcml2ZXIp Ow0KPiArDQo+ICtNT0RVTEVfQVVUSE9SKCJOWFAgU2VtaWNvbmR1Y3RvciIpOw0KPiArTU9EVUxF X0RFU0NSSVBUSU9OKCJNaXhlbCBNSVBJLURTSSBQSFkgZHJpdmVyIik7DQo+ICtNT0RVTEVfTElD RU5TRSgiR1BMIHYyIik7Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LWFybS1rZXJuZWwK