Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 60DB8C6379F for ; Fri, 17 Feb 2023 16:27:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229784AbjBQQ11 (ORCPT ); Fri, 17 Feb 2023 11:27:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35528 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229704AbjBQQ1X (ORCPT ); Fri, 17 Feb 2023 11:27:23 -0500 Received: from FRA01-PR2-obe.outbound.protection.outlook.com (mail-pr2fra01on2080.outbound.protection.outlook.com [40.107.12.80]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9F5CD5FC66; Fri, 17 Feb 2023 08:26:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fa8dcUGaHbycmIH5eSo6/hnZKS0EMG6goMCDKpJb5DqujhQ3dwyYamNt9Olhy+PIE/Teynt5mvmvGKTS+uGN9EuHRvvND/Z8YUkfjgA+hWpG4yFrnIXwl+xNWMq/X9HvsXnf6eGu33kJRUHWL72bXxK0Hrf5ruEABIlImjOkcmZCd1mffNEsd1ziXtMd6fr/VEp8gv9R6qUSp0UI9sevdRQXZ/Otja/nLm4sjomoh1QKbtOZ/lg1+J+HV23e/BqIh2CFSNczmkt+w3PjeQ2E7jihKy6LsjgnNSPWQ8YI7uIjMcYo3WiMRWfVKHqWl7np+6Oph5MyiygO/45lGAj0EA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=hLddTXAHJUkPx61viDx1Vw5OBoojk0dlrjja5NvPq00=; b=R1CmFgANvpugeUx+eL98fX0xa5/xpMIOU8y7bsEV/LDT7luA9xBmEP2DQf4bIQqt7CSXXHXai/3XzMrsnh2NOSUAO9HrRkvDYhzdE//5RgdAhC469BRvpEMBq9BBDDM+4SUIXs303ZGiL9Cj8R+4nzNjV4ofzuYCbrrzpc6Sypk0lTSZgOVvqwG9hWgZMCNXWG6k3lru6OL8gDZz41+/ZWGmRpef6IFD9mhR03Ft7Mnz3uLXD9rfntPchau0bGWhUJdXFzaibYD/r09Sm1jVxhoeVM10F47P57e+e3CRygEFm2GBb71A2HWgptj/WPtjRetwRR2/mpLzGvmIuiNcCw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=csgroup.eu; dmarc=pass action=none header.from=csgroup.eu; dkim=pass header.d=csgroup.eu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=csgroup.eu; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hLddTXAHJUkPx61viDx1Vw5OBoojk0dlrjja5NvPq00=; b=wuD5Fw4TMaQVbyjHrRe3mIxCzku51Hu11ZqYVsZBAbtbmDHW6QWSK8eaQrbbZd99/AG1VMk2YoHOCs2BaFnEp6zhn1jqfPKtQwtjZhpcRAnWuz9equqnpT0jYOdMRSxKY+rlCM7srFQKagtkHtixNIxZWKySZ+lLU0iL4b/Peqx3VWYXJGbeqIR5sTEco8b65Amqhv9Ky7lPiZYICegfl/CbyPnzq+k9IRffyJ219VqxV7OR6BfAsU85WExA9TExqkyIevJOZENoN1g56VQSSQSfkVZv6kRyDZDCseV1rp5dpsGXWCyAIBze1qG7bxmFx9q9kGSNzAGnE8JCHC3FYQ== Received: from MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:31::15) by MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:31::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.13; Fri, 17 Feb 2023 16:26:53 +0000 Received: from MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM ([fe80::2cfb:d4c:1932:b097]) by MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM ([fe80::2cfb:d4c:1932:b097%4]) with mapi id 15.20.6111.013; Fri, 17 Feb 2023 16:26:53 +0000 From: Christophe Leroy To: Herve Codina , Li Yang , Rob Herring , Krzysztof Kozlowski , Liam Girdwood , Mark Brown , Michael Ellerman , Nicholas Piggin , Qiang Zhao , Jaroslav Kysela , Takashi Iwai , Shengjiu Wang , Xiubo Li , Fabio Estevam , Nicolin Chen CC: "linuxppc-dev@lists.ozlabs.org" , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "alsa-devel@alsa-project.org" , Thomas Petazzoni Subject: Re: [PATCH v6 02/10] soc: fsl: cpm1: Add support for TSA Thread-Topic: [PATCH v6 02/10] soc: fsl: cpm1: Add support for TSA Thread-Index: AQHZQuAX85gbyFriMkek2HvmaIbAoa7TU4gA Date: Fri, 17 Feb 2023 16:26:53 +0000 Message-ID: <3b9ad0ac-e938-3e4b-4c40-c6988fcea856@csgroup.eu> References: <20230217145645.1768659-1-herve.codina@bootlin.com> <20230217145645.1768659-3-herve.codina@bootlin.com> In-Reply-To: <20230217145645.1768659-3-herve.codina@bootlin.com> Accept-Language: fr-FR, en-US Content-Language: fr-FR X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=csgroup.eu; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MRZP264MB2988:EE_ x-ms-office365-filtering-correlation-id: 21216e82-9983-4222-dfda-08db1103c785 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /9o89HKxWlef0FCsnVNuyYGtoR2qcbAbtN6JfLrJaC03af49IbjuZh5BSKoQEumzxBgIbbBQElGvcpNrPQ0aA0Ywl5RLFWgnJCp6UhFSQFt5n4EnHlSwHnKkOCQ8GflDKvq8HkKM+B/wOjBhjFSpjpT2dMwkzzCs1Iet5AJhBLhoPLKe+yzizqsteJM85SPAGIOrcPop4JD4TLm8L035TweU19FAVpQErKobCAZORTRQQ0dYECbpgQr35d4wcvhuWRerPDEy65k4xXIXZi9U4JAVuPj4Lr68oxC6exc8vdgALMFXziv0B6iks9HiMriksIQLWv9UrPY6w9oSl2bXJdbAiwIJylvLslRNx3aw1QeXvMIF40AU4/j02mjGmEd8A7znlGqaIxnSU4kKhWX8LNkXTR7KEglU075BXumyAtJkYxUwsn5NGafuZOh6S6vFaaIb6wBy44sYHBAB2vTzs/CZXGqRuplKOIW3n9zHUgCrU9GFQ+iETB6IbYkYvj2JSGQQxBlnGxWk0qLzBbRsq5RGl5FkXFNmgfKGfI3LOx/NLUXgg43NOccKQHyaH8QgYhIDnvcP2oqnFu0ytNe3C5tEEmmEMr6lqeZ1Ta7kzkJKjisSjjI8E9EH/6SNYWBdvC9r15X620StGOT7cAxVK+RdZYqjJ3cDGnsel79u7CzU0lb9uyJweC7mGhOD9KF9pn2xz4OP10o11pm+fdEtzz+AvOn5cfqlAIe/MMRob7k3EtycNGXREfWvZG+W0n86kkRnIRe8ZdNKGPoSG0QjxOEJgRoRFhrqgMyVr2hHTrY= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(39850400004)(376002)(346002)(136003)(396003)(451199018)(5660300002)(110136005)(7416002)(66946007)(71200400001)(66556008)(8936002)(316002)(44832011)(54906003)(66446008)(2906002)(4326008)(30864003)(478600001)(76116006)(91956017)(66476007)(41300700001)(8676002)(64756008)(36756003)(6506007)(2616005)(122000001)(38100700002)(66574015)(83380400001)(31696002)(6512007)(186003)(26005)(921005)(6486002)(86362001)(38070700005)(31686004)(43740500002)(45980500001)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Y1l1d1o0dk1XUDZvNlp3RVk4dHNvVWdhN05DOVR5cXdnWlJIRDBoazNsREpE?= =?utf-8?B?V0djcVFEZlE4bGk4Q2VqQ01ERFNpem5Lb2t2aCt4NlhXU2ttZFo3WWlzNDVQ?= =?utf-8?B?bEU0ZlYvMWJ6SEZuUVpSNTA2QjdvaWtaOU5tZGdPWjJIeFBzTDlCejZsZkdU?= =?utf-8?B?SEU3R2ZUTkVrWDNoTHJyc3V0UnRRaGlvODRVQ3BvWVdEVFNlSGVMaFhWNEFa?= =?utf-8?B?R2dyZTc0eUdrM2xHT0RRMVNVNW9PM3dVcXVocXMrcUxDNmxBclVON09hMDI3?= =?utf-8?B?a0EyNmtRMWtHTU9hY0tEOTRnT0tuenVUZ2RpOXlZdUhaMTh2SVVXbTJTOFZC?= =?utf-8?B?RWlvTTVkb0JzaTRTQitqQmM3dk9oVmppalMyQ1Y5RmlML2ZURXBrVDZYSldK?= =?utf-8?B?NUY3TFdRU2pRZk5JcjU3cHkvZ3gzT0RUaDZQVWg1VzJRM09aTnZneDkvaE84?= =?utf-8?B?Y3JYZDVJb09PVTRjZ3A5eTJiK0tmRnBqT0Jua0NqN2JpdDJzdXFQTEt3ZjVy?= =?utf-8?B?N2V5QXl5QmhPY29HVEpyaTRZdDlVQlhVZzBxeGRmMDFrS1hYQzNhRU94Q2tO?= =?utf-8?B?MUdLYlJWVDkyeDZxZnJjdVUyaWE3cG9uZm5FVVdNQlJNZ1lDdk93S1dCM1dV?= =?utf-8?B?MHNVbm5rSVc5SEtCaHM2YkdyYkdvdnAzOHorQWNSQXZYT1hVK2ZPL2NDV0tu?= =?utf-8?B?MHhKQ2p3dG9HdHV0MDNNRE5XNHlHbE54QjJjUVlPREFIQzJCYjY2QzlDSUtP?= =?utf-8?B?ZFhCVEE0Nm5qVExlM21jNUwzZ0xhYndnQ1NyQUFERVQrYkxhN2NwUXB3dHgv?= =?utf-8?B?OHpSbDBBRkRyS0QySmZRRHhtYTEyY2V1K0ozTkFpaEVTdDZLbGFOWUVybnhW?= =?utf-8?B?eEJNMy9HZTRVQlg0U2l3VndVUHlUL0ZDNkI2a2s1cHE5YTVJclpDUVQ1VHBr?= =?utf-8?B?TSthNUJNdG9GNXJLTFFycUR5T0RiQ2IydjlkZjlrZjVnZTBKOXExU09mQTUz?= =?utf-8?B?WE1nRkN1NU5saXlkVUlhTUg2K3RoOTZhdzl3aDdIRE9aRDY1SlBSbUJKbE1v?= =?utf-8?B?VVZqZmNDWUp5MXRmaHJHWmNFTTlhMU9JSGNKYVgzbVJvajg0VVZ4WTNJcDJB?= =?utf-8?B?MWdLdkJHN3FOczY1ejArb2t0ZjdpWHhSTjhSVWtQd0lrK0F2RXgrYXo5OFpC?= =?utf-8?B?dzNRdXZvZWd6aHI4b3FtSHVMam5WOVFpb3FXSk9hQ3dHTkhpam43M2VTM2dT?= =?utf-8?B?L2R6ZHZtM0xKL0ZOd2ZpUyt6cFI5d2FvdU5KeUp6MlJvTVdvQm0xVFM0THA2?= =?utf-8?B?aEtnM2hKaHd0Uk5kLzdQK3NieDkvVUZjVUljejdNb0ZJYmxHckNBb2pLWXAv?= =?utf-8?B?SS93R05RQTlPMEMvWk5mYlVNMmRzZkZRNk5xcW9EOXlYZ00rejYvRjdWeWFF?= =?utf-8?B?WEZSYmRJaGFyL3V0UDYvSlpMaUtRd2ZFOUhyekhkZEFiUXZqZTEyK3EwM3Qz?= =?utf-8?B?MmladnpvRkpFS2pNbGNFT01qOHpKUWNYL0Q1RDRFM1B0QnF5NWZhMVZlc1ls?= =?utf-8?B?dGJaS1FOcFNjRzc4OVN4QS92Q3FDUndBSXRGQjYrWGdLaVpJZGs4YjJYYU84?= =?utf-8?B?YTd4SXlUTzNuUWlFdXNndjV5OFdBNzdaU3R3bTV1QXhGVFo4eUpTbG9mZ1E4?= =?utf-8?B?SmVUTGIzKzFTNGNXTUhDSXNzTkxXOEJBQUlWM3NRUE5FUTZ3OVRBRXl1KytB?= =?utf-8?B?K1BGZVVrblhNcWZyQlB1bHBmei80YWlYTnJpNHhvdDcvTGNoV2lwTkYwOU9L?= =?utf-8?B?VzhsUXVUYWZLMTRnV29Kb1VUWFNVT2F5Yzdha3JteEt3VTVkMHJFTTB3NWF0?= =?utf-8?B?ZFI5c3NyY0xGdzZnSW42NDBMN0FnYXZhbjF0d2I0NTZKZ0QrVHMvL1VxL2VU?= =?utf-8?B?RFJvWXUwMWYyZmVYTGJJVzBtcEZ1K0RZRTdJanVyeHVqTkkrczdqWS9Dc2wz?= =?utf-8?B?aDZUdDd2ZWdMaGprTDdDY1E4SEh4dnYyTzFZOU56dE54ZFBHdUJiR3NMT1I0?= =?utf-8?B?N2pQSW13bGhrRGZFVXRDNW54SDRxblVvaHQwM01iWlgzWktMZU1sckZIY3JX?= =?utf-8?B?MzIrd0ljbTBvV0JxL1RFWmRYTW8xU2xNUVJFUDkrNjZCaHVLSEZRNnJWK3RP?= =?utf-8?B?R2c9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: csgroup.eu X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 21216e82-9983-4222-dfda-08db1103c785 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Feb 2023 16:26:53.2445 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9914def7-b676-4fda-8815-5d49fb3b45c8 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: zMv1Pernl+blzHDH4L2nR6G8Fms5Tw0sbzUJJc5uKrPZY+ctz3hWfZLjjXDIYeshAgySEobcYLWIlx6Nre+hpoQ141j9ujBBl7BgkVcJ7A0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRZP264MB2988 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCkxlIDE3LzAyLzIwMjMgw6AgMTU6NTYsIEhlcnZlIENvZGluYSBhIMOpY3JpdMKgOg0KPiBU aGUgVFNBIChUaW1lIFNsb3QgQXNzaWduZXIpIHB1cnBvc2UgaXMgdG8gcm91dGUgc29tZQ0KPiBU RE0gdGltZS1zbG90cyB0byBvdGhlciBpbnRlcm5hbCBzZXJpYWwgY29udHJvbGxlcnMuDQo+IA0K PiBJdCBpcyBhdmFpbGFibGUgaW4gc29tZSBQb3dlclFVSUNDIFNvQyBzdWNoIGFzIHRoZQ0KPiBN UEM4ODUgb3IgTVBDODY2Lg0KPiANCj4gSXQgaXMgYWxzbyBhdmFpbGFibGUgb24gc29tZSBRdWlj YyBFbmdpbmUgU29Dcy4NCj4gVGhpcyBjdXJyZW50IHZlcnNpb24gc3VwcG9ydCBDUE0xIFNvQ3Mg b25seSBhbmQgc29tZQ0KPiBlbmhhbmNlbWVudCBhcmUgbmVlZGVkIHRvIHN1cHBvcnQgUXVpY2Mg RW5naW5lIFNvQ3MuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBIZXJ2ZSBDb2RpbmEgPGhlcnZlLmNv ZGluYUBib290bGluLmNvbT4NCj4gQWNrZWQtYnk6IExpIFlhbmcgPGxlb3lhbmcubGlAbnhwLmNv bT4NCg0KUmV2aWV3ZWQtYnk6IENocmlzdG9waGUgTGVyb3kgPGNocmlzdG9waGUubGVyb3lAY3Nn cm91cC5ldT4NCg0KPiAtLS0NCj4gICBkcml2ZXJzL3NvYy9mc2wvcWUvS2NvbmZpZyAgfCAgMTEg Kw0KPiAgIGRyaXZlcnMvc29jL2ZzbC9xZS9NYWtlZmlsZSB8ICAgMSArDQo+ICAgZHJpdmVycy9z b2MvZnNsL3FlL3RzYS5jICAgIHwgODQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKw0KPiAgIGRyaXZlcnMvc29jL2ZzbC9xZS90c2EuaCAgICB8ICA0MiArKw0KPiAgIDQgZmls ZXMgY2hhbmdlZCwgOTAwIGluc2VydGlvbnMoKykNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9zb2MvZnNsL3FlL3RzYS5jDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc29j L2ZzbC9xZS90c2EuaA0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29jL2ZzbC9xZS9LY29u ZmlnIGIvZHJpdmVycy9zb2MvZnNsL3FlL0tjb25maWcNCj4gaW5kZXggMzU3YzU4MDBiMTEyLi5i MDA4ODQ5NWMzMjMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvc29jL2ZzbC9xZS9LY29uZmlnDQo+ ICsrKyBiL2RyaXZlcnMvc29jL2ZzbC9xZS9LY29uZmlnDQo+IEBAIC0zMyw2ICszMywxNyBAQCBj b25maWcgVUNDDQo+ICAgCWJvb2wNCj4gICAJZGVmYXVsdCB5IGlmIFVDQ19GQVNUIHx8IFVDQ19T TE9XDQo+ICAgDQo+ICtjb25maWcgQ1BNX1RTQQ0KPiArCXRyaXN0YXRlICJDUE0gVFNBIHN1cHBv cnQiDQo+ICsJZGVwZW5kcyBvbiBPRiAmJiBIQVNfSU9NRU0NCj4gKwlkZXBlbmRzIG9uIENQTTEg fHwgQ09NUElMRV9URVNUDQo+ICsJaGVscA0KPiArCSAgRnJlZXNjYWxlIENQTSBUaW1lIFNsb3Qg QXNzaWduZXIgKFRTQSkNCj4gKwkgIGNvbnRyb2xsZXIuDQo+ICsNCj4gKwkgIFRoaXMgb3B0aW9u IGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhpcw0KPiArCSAgY29udHJvbGxlcg0KPiArDQo+ICAgY29u ZmlnIFFFX1RETQ0KPiAgIAlib29sDQo+ICAgCWRlZmF1bHQgeSBpZiBGU0xfVUNDX0hETEMNCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29jL2ZzbC9xZS9NYWtlZmlsZSBiL2RyaXZlcnMvc29jL2Zz bC9xZS9NYWtlZmlsZQ0KPiBpbmRleCA1NWE1NTUzMDRmM2EuLjQ1Yzk2MWFjYzgxYiAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy9zb2MvZnNsL3FlL01ha2VmaWxlDQo+ICsrKyBiL2RyaXZlcnMvc29j L2ZzbC9xZS9NYWtlZmlsZQ0KPiBAQCAtNCw2ICs0LDcgQEANCj4gICAjDQo+ICAgb2JqLSQoQ09O RklHX1FVSUNDX0VOR0lORSkrPSBxZS5vIHFlX2NvbW1vbi5vIHFlX2ljLm8gcWVfaW8ubw0KPiAg IG9iai0kKENPTkZJR19DUE0pCSs9IHFlX2NvbW1vbi5vDQo+ICtvYmotJChDT05GSUdfQ1BNX1RT QSkJKz0gdHNhLm8NCj4gICBvYmotJChDT05GSUdfVUNDKQkrPSB1Y2Mubw0KPiAgIG9iai0kKENP TkZJR19VQ0NfU0xPVykJKz0gdWNjX3Nsb3cubw0KPiAgIG9iai0kKENPTkZJR19VQ0NfRkFTVCkJ Kz0gdWNjX2Zhc3Qubw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2MvZnNsL3FlL3RzYS5jIGIv ZHJpdmVycy9zb2MvZnNsL3FlL3RzYS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDAwMDAwMDAwMDAwMC4uMzY0NjE1MzExN2IzDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJp dmVycy9zb2MvZnNsL3FlL3RzYS5jDQo+IEBAIC0wLDAgKzEsODQ2IEBADQo+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiArLyoNCj4gKyAqIFRTQSBkcml2ZXINCj4gKyAq DQo+ICsgKiBDb3B5cmlnaHQgMjAyMiBDUyBHUk9VUCBGcmFuY2UNCj4gKyAqDQo+ICsgKiBBdXRo b3I6IEhlcnZlIENvZGluYSA8aGVydmUuY29kaW5hQGJvb3RsaW4uY29tPg0KPiArICovDQo+ICsN Cj4gKyNpbmNsdWRlICJ0c2EuaCINCj4gKyNpbmNsdWRlIDxkdC1iaW5kaW5ncy9zb2MvY3BtMS1m c2wsdHNhLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+ICsjaW5jbHVkZSA8bGludXgv aW8uaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9v Zi5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+DQo+ICsjaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KPiArDQo+ ICsNCj4gKy8qIFRTQSBTSSBSQU0gcm91dGluZyB0YWJsZXMgZW50cnkgKi8NCj4gKyNkZWZpbmUg VFNBX1NJUkFNX0VOVFJZX0xBU1QJCSgxIDw8IDE2KQ0KPiArI2RlZmluZSBUU0FfU0lSQU1fRU5U UllfQllURQkJKDEgPDwgMTcpDQo+ICsjZGVmaW5lIFRTQV9TSVJBTV9FTlRSWV9DTlQoeCkJCSgo KHgpICYgMHgwZikgPDwgMTgpDQo+ICsjZGVmaW5lIFRTQV9TSVJBTV9FTlRSWV9DU0VMX01BU0sJ KDB4NyA8PCAyMikNCj4gKyNkZWZpbmUgVFNBX1NJUkFNX0VOVFJZX0NTRUxfTlUJCSgweDAgPDwg MjIpDQo+ICsjZGVmaW5lIFRTQV9TSVJBTV9FTlRSWV9DU0VMX1NDQzIJKDB4MiA8PCAyMikNCj4g KyNkZWZpbmUgVFNBX1NJUkFNX0VOVFJZX0NTRUxfU0NDMwkoMHgzIDw8IDIyKQ0KPiArI2RlZmlu ZSBUU0FfU0lSQU1fRU5UUllfQ1NFTF9TQ0M0CSgweDQgPDwgMjIpDQo+ICsjZGVmaW5lIFRTQV9T SVJBTV9FTlRSWV9DU0VMX1NNQzEJKDB4NSA8PCAyMikNCj4gKyNkZWZpbmUgVFNBX1NJUkFNX0VO VFJZX0NTRUxfU01DMgkoMHg2IDw8IDIyKQ0KPiArDQo+ICsvKiBTSSBtb2RlIHJlZ2lzdGVyICgz MiBiaXRzKSAqLw0KPiArI2RlZmluZSBUU0FfU0lNT0RFCTB4MDANCj4gKyNkZWZpbmUgICBUU0Ff U0lNT0RFX1NNQzIJCQkweDgwMDAwMDAwDQo+ICsjZGVmaW5lICAgVFNBX1NJTU9ERV9TTUMxCQkJ MHgwMDAwODAwMA0KPiArI2RlZmluZSAgIFRTQV9TSU1PREVfVERNQSh4KQkJCSgoeCkgPDwgMCkN Cj4gKyNkZWZpbmUgICBUU0FfU0lNT0RFX1RETUIoeCkJCQkoKHgpIDw8IDE2KQ0KPiArI2RlZmlu ZSAgICAgVFNBX1NJTU9ERV9URE1fTUFTSwkJCTB4MGZmZg0KPiArI2RlZmluZSAgICAgVFNBX1NJ TU9ERV9URE1fU0RNX01BU0sJCTB4MGMwMA0KPiArI2RlZmluZSAgICAgICBUU0FfU0lNT0RFX1RE TV9TRE1fTk9STQkJMHgwMDAwDQo+ICsjZGVmaW5lICAgICAgIFRTQV9TSU1PREVfVERNX1NETV9F Q0hPCQkweDA0MDANCj4gKyNkZWZpbmUgICAgICAgVFNBX1NJTU9ERV9URE1fU0RNX0lOVExfTE9P UAkweDA4MDANCj4gKyNkZWZpbmUgICAgICAgVFNBX1NJTU9ERV9URE1fU0RNX0xPT1BfQ1RSTAkw eDBjMDANCj4gKyNkZWZpbmUgICAgIFRTQV9TSU1PREVfVERNX1JGU0QoeCkJCSgoeCkgPDwgOCkN Cj4gKyNkZWZpbmUgICAgIFRTQV9TSU1PREVfVERNX0RTQwkJCTB4MDA4MA0KPiArI2RlZmluZSAg ICAgVFNBX1NJTU9ERV9URE1fQ1JUCQkJMHgwMDQwDQo+ICsjZGVmaW5lICAgICBUU0FfU0lNT0RF X1RETV9TVFoJCQkweDAwMjANCj4gKyNkZWZpbmUgICAgIFRTQV9TSU1PREVfVERNX0NFCQkJMHgw MDEwDQo+ICsjZGVmaW5lICAgICBUU0FfU0lNT0RFX1RETV9GRQkJCTB4MDAwOA0KPiArI2RlZmlu ZSAgICAgVFNBX1NJTU9ERV9URE1fR00JCQkweDAwMDQNCj4gKyNkZWZpbmUgICAgIFRTQV9TSU1P REVfVERNX1RGU0QoeCkJCSgoeCkgPDwgMCkNCj4gKw0KPiArLyogU0kgZ2xvYmFsIG1vZGUgcmVn aXN0ZXIgKDggYml0cykgKi8NCj4gKyNkZWZpbmUgVFNBX1NJR01SCTB4MDQNCj4gKyNkZWZpbmUg VFNBX1NJR01SX0VOQgkJCSgxPDwzKQ0KPiArI2RlZmluZSBUU0FfU0lHTVJfRU5BCQkJKDE8PDIp DQo+ICsjZGVmaW5lIFRTQV9TSUdNUl9SRE1fTUFTSwkJMHgwMw0KPiArI2RlZmluZSAgIFRTQV9T SUdNUl9SRE1fU1RBVElDX1RETUEJMHgwMA0KPiArI2RlZmluZSAgIFRTQV9TSUdNUl9SRE1fRFlO X1RETUEJMHgwMQ0KPiArI2RlZmluZSAgIFRTQV9TSUdNUl9SRE1fU1RBVElDX1RETUFCCTB4MDIN Cj4gKyNkZWZpbmUgICBUU0FfU0lHTVJfUkRNX0RZTl9URE1BQgkweDAzDQo+ICsNCj4gKy8qIFNJ IHN0YXR1cyByZWdpc3RlciAoOCBiaXRzKSAqLw0KPiArI2RlZmluZSBUU0FfU0lTVFIJMHgwNg0K PiArDQo+ICsvKiBTSSBjb21tYW5kIHJlZ2lzdGVyICg4IGJpdHMpICovDQo+ICsjZGVmaW5lIFRT QV9TSUNNUgkweDA3DQo+ICsNCj4gKy8qIFNJIGNsb2NrIHJvdXRlIHJlZ2lzdGVyICgzMiBiaXRz KSAqLw0KPiArI2RlZmluZSBUU0FfU0lDUgkweDBDDQo+ICsjZGVmaW5lICAgVFNBX1NJQ1JfU0ND Mih4KQkJKCh4KSA8PCA4KQ0KPiArI2RlZmluZSAgIFRTQV9TSUNSX1NDQzMoeCkJCSgoeCkgPDwg MTYpDQo+ICsjZGVmaW5lICAgVFNBX1NJQ1JfU0NDNCh4KQkJKCh4KSA8PCAyNCkNCj4gKyNkZWZp bmUgICAgIFRTQV9TSUNSX1NDQ19NQVNLCQkweDBmZg0KPiArI2RlZmluZSAgICAgVFNBX1NJQ1Jf U0NDX0dSWAkJKDEgPDwgNykNCj4gKyNkZWZpbmUgICAgIFRTQV9TSUNSX1NDQ19TQ1hfVFNBCSgx IDw8IDYpDQo+ICsjZGVmaW5lICAgICBUU0FfU0lDUl9TQ0NfUlhDU19NQVNLCSgweDcgPDwgMykN Cj4gKyNkZWZpbmUgICAgICAgVFNBX1NJQ1JfU0NDX1JYQ1NfQlJHMQkoMHgwIDw8IDMpDQo+ICsj ZGVmaW5lICAgICAgIFRTQV9TSUNSX1NDQ19SWENTX0JSRzIJKDB4MSA8PCAzKQ0KPiArI2RlZmlu ZSAgICAgICBUU0FfU0lDUl9TQ0NfUlhDU19CUkczCSgweDIgPDwgMykNCj4gKyNkZWZpbmUgICAg ICAgVFNBX1NJQ1JfU0NDX1JYQ1NfQlJHNAkoMHgzIDw8IDMpDQo+ICsjZGVmaW5lICAgICAgIFRT QV9TSUNSX1NDQ19SWENTX0NMSzE1CSgweDQgPDwgMykNCj4gKyNkZWZpbmUgICAgICAgVFNBX1NJ Q1JfU0NDX1JYQ1NfQ0xLMjYJKDB4NSA8PCAzKQ0KPiArI2RlZmluZSAgICAgICBUU0FfU0lDUl9T Q0NfUlhDU19DTEszNwkoMHg2IDw8IDMpDQo+ICsjZGVmaW5lICAgICAgIFRTQV9TSUNSX1NDQ19S WENTX0NMSzQ4CSgweDcgPDwgMykNCj4gKyNkZWZpbmUgICAgIFRTQV9TSUNSX1NDQ19UWENTX01B U0sJKDB4NyA8PCAwKQ0KPiArI2RlZmluZSAgICAgICBUU0FfU0lDUl9TQ0NfVFhDU19CUkcxCSgw eDAgPDwgMCkNCj4gKyNkZWZpbmUgICAgICAgVFNBX1NJQ1JfU0NDX1RYQ1NfQlJHMgkoMHgxIDw8 IDApDQo+ICsjZGVmaW5lICAgICAgIFRTQV9TSUNSX1NDQ19UWENTX0JSRzMJKDB4MiA8PCAwKQ0K PiArI2RlZmluZSAgICAgICBUU0FfU0lDUl9TQ0NfVFhDU19CUkc0CSgweDMgPDwgMCkNCj4gKyNk ZWZpbmUgICAgICAgVFNBX1NJQ1JfU0NDX1RYQ1NfQ0xLMTUJKDB4NCA8PCAwKQ0KPiArI2RlZmlu ZSAgICAgICBUU0FfU0lDUl9TQ0NfVFhDU19DTEsyNgkoMHg1IDw8IDApDQo+ICsjZGVmaW5lICAg ICAgIFRTQV9TSUNSX1NDQ19UWENTX0NMSzM3CSgweDYgPDwgMCkNCj4gKyNkZWZpbmUgICAgICAg VFNBX1NJQ1JfU0NDX1RYQ1NfQ0xLNDgJKDB4NyA8PCAwKQ0KPiArDQo+ICsvKiBTZXJpYWwgaW50 ZXJmYWNlIFJBTSBwb2ludGVyIHJlZ2lzdGVyICgzMiBiaXRzKSAqLw0KPiArI2RlZmluZSBUU0Ff U0lSUAkweDEwDQo+ICsNCj4gK3N0cnVjdCB0c2FfZW50cmllc19hcmVhIHsNCj4gKwl2b2lkICpf X2lvbWVtIGVudHJpZXNfc3RhcnQ7DQo+ICsJdm9pZCAqX19pb21lbSBlbnRyaWVzX25leHQ7DQo+ ICsJdm9pZCAqX19pb21lbSBsYXN0X2VudHJ5Ow0KPiArfTsNCj4gKw0KPiArc3RydWN0IHRzYV90 ZG0gew0KPiArCWJvb2wgaXNfZW5hYmxlOw0KPiArCXN0cnVjdCBjbGsgKmwxcmNsa19jbGs7DQo+ ICsJc3RydWN0IGNsayAqbDFyc3luY19jbGs7DQo+ICsJc3RydWN0IGNsayAqbDF0Y2xrX2NsazsN Cj4gKwlzdHJ1Y3QgY2xrICpsMXRzeW5jX2NsazsNCj4gKwl1MzIgc2ltb2RlX3RkbTsNCj4gK307 DQo+ICsNCj4gKyNkZWZpbmUgVFNBX1RETUEJMA0KPiArI2RlZmluZSBUU0FfVERNQgkxDQo+ICsN Cj4gK3N0cnVjdCB0c2Egew0KPiArCXN0cnVjdCBkZXZpY2UgKmRldjsNCj4gKwl2b2lkICpfX2lv bWVtIHNpX3JlZ3M7DQo+ICsJdm9pZCAqX19pb21lbSBzaV9yYW07DQo+ICsJcmVzb3VyY2Vfc2l6 ZV90IHNpX3JhbV9zejsNCj4gKwlzcGlubG9ja190CWxvY2s7DQo+ICsJaW50IHRkbXM7IC8qIFRT QV9URE14IE9SZWQgKi8NCj4gKwlzdHJ1Y3QgdHNhX3RkbSB0ZG1bMl07IC8qIFRETWEgYW5kIFRE TWIgKi8NCj4gKwlzdHJ1Y3QgdHNhX3NlcmlhbCB7DQo+ICsJCXVuc2lnbmVkIGludCBpZDsNCj4g KwkJc3RydWN0IHRzYV9zZXJpYWxfaW5mbyBpbmZvOw0KPiArCX0gc2VyaWFsc1s2XTsNCj4gK307 DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHRzYSAqdHNhX3NlcmlhbF9nZXRfdHNhKHN0 cnVjdCB0c2Ffc2VyaWFsICp0c2Ffc2VyaWFsKQ0KPiArew0KPiArCS8qIFRoZSBzZXJpYWxzIHRh YmxlIGlzIGluZGV4ZWQgYnkgdGhlIHNlcmlhbCBpZCAqLw0KPiArCXJldHVybiBjb250YWluZXJf b2YodHNhX3NlcmlhbCwgc3RydWN0IHRzYSwgc2VyaWFsc1t0c2Ffc2VyaWFsLT5pZF0pOw0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgdHNhX3dyaXRlMzIodm9pZCAqX19pb21lbSBh ZGRyLCB1MzIgdmFsKQ0KPiArew0KPiArCWlvd3JpdGUzMmJlKHZhbCwgYWRkcik7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB0c2Ffd3JpdGU4KHZvaWQgKl9faW9tZW0gYWRkciwg dTMyIHZhbCkNCj4gK3sNCj4gKwlpb3dyaXRlOCh2YWwsIGFkZHIpOw0KPiArfQ0KPiArDQo+ICtz dGF0aWMgaW5saW5lIHUzMiB0c2FfcmVhZDMyKHZvaWQgKl9faW9tZW0gYWRkcikNCj4gK3sNCj4g KwlyZXR1cm4gaW9yZWFkMzJiZShhZGRyKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSB2 b2lkIHRzYV9jbHJiaXRzMzIodm9pZCAqX19pb21lbSBhZGRyLCB1MzIgY2xyKQ0KPiArew0KPiAr CXRzYV93cml0ZTMyKGFkZHIsIHRzYV9yZWFkMzIoYWRkcikgJiB+Y2xyKTsNCj4gK30NCj4gKw0K PiArc3RhdGljIGlubGluZSB2b2lkIHRzYV9jbHJzZXRiaXRzMzIodm9pZCAqX19pb21lbSBhZGRy LCB1MzIgY2xyLCB1MzIgc2V0KQ0KPiArew0KPiArCXRzYV93cml0ZTMyKGFkZHIsICh0c2FfcmVh ZDMyKGFkZHIpICYgfmNscikgfCBzZXQpOw0KPiArfQ0KPiArDQo+ICtpbnQgdHNhX3NlcmlhbF9j b25uZWN0KHN0cnVjdCB0c2Ffc2VyaWFsICp0c2Ffc2VyaWFsKQ0KPiArew0KPiArCXN0cnVjdCB0 c2EgKnRzYSA9IHRzYV9zZXJpYWxfZ2V0X3RzYSh0c2Ffc2VyaWFsKTsNCj4gKwl1bnNpZ25lZCBs b25nIGZsYWdzOw0KPiArCXUzMiBjbGVhcjsNCj4gKwl1MzIgc2V0Ow0KPiArDQo+ICsJc3dpdGNo ICh0c2Ffc2VyaWFsLT5pZCkgew0KPiArCWNhc2UgRlNMX0NQTV9UU0FfU0NDMjoNCj4gKwkJY2xl YXIgPSBUU0FfU0lDUl9TQ0MyKFRTQV9TSUNSX1NDQ19NQVNLKTsNCj4gKwkJc2V0ID0gVFNBX1NJ Q1JfU0NDMihUU0FfU0lDUl9TQ0NfU0NYX1RTQSk7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgRlNM X0NQTV9UU0FfU0NDMzoNCj4gKwkJY2xlYXIgPSBUU0FfU0lDUl9TQ0MzKFRTQV9TSUNSX1NDQ19N QVNLKTsNCj4gKwkJc2V0ID0gVFNBX1NJQ1JfU0NDMyhUU0FfU0lDUl9TQ0NfU0NYX1RTQSk7DQo+ ICsJCWJyZWFrOw0KPiArCWNhc2UgRlNMX0NQTV9UU0FfU0NDNDoNCj4gKwkJY2xlYXIgPSBUU0Ff U0lDUl9TQ0M0KFRTQV9TSUNSX1NDQ19NQVNLKTsNCj4gKwkJc2V0ID0gVFNBX1NJQ1JfU0NDNChU U0FfU0lDUl9TQ0NfU0NYX1RTQSk7DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCWRl dl9lcnIodHNhLT5kZXYsICJVbnN1cHBvcnRlZCBzZXJpYWwgaWQgJXVcbiIsIHRzYV9zZXJpYWwt PmlkKTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArDQo+ICsJc3Bpbl9sb2NrX2ly cXNhdmUoJnRzYS0+bG9jaywgZmxhZ3MpOw0KPiArCXRzYV9jbHJzZXRiaXRzMzIodHNhLT5zaV9y ZWdzICsgVFNBX1NJQ1IsIGNsZWFyLCBzZXQpOw0KPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JnRzYS0+bG9jaywgZmxhZ3MpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICtFWFBPUlRf U1lNQk9MKHRzYV9zZXJpYWxfY29ubmVjdCk7DQo+ICsNCj4gK2ludCB0c2Ffc2VyaWFsX2Rpc2Nv bm5lY3Qoc3RydWN0IHRzYV9zZXJpYWwgKnRzYV9zZXJpYWwpDQo+ICt7DQo+ICsJc3RydWN0IHRz YSAqdHNhID0gdHNhX3NlcmlhbF9nZXRfdHNhKHRzYV9zZXJpYWwpOw0KPiArCXVuc2lnbmVkIGxv bmcgZmxhZ3M7DQo+ICsJdTMyIGNsZWFyOw0KPiArDQo+ICsJc3dpdGNoICh0c2Ffc2VyaWFsLT5p ZCkgew0KPiArCWNhc2UgRlNMX0NQTV9UU0FfU0NDMjoNCj4gKwkJY2xlYXIgPSBUU0FfU0lDUl9T Q0MyKFRTQV9TSUNSX1NDQ19NQVNLKTsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBGU0xfQ1BNX1RT QV9TQ0MzOg0KPiArCQljbGVhciA9IFRTQV9TSUNSX1NDQzMoVFNBX1NJQ1JfU0NDX01BU0spOw0K PiArCQlicmVhazsNCj4gKwljYXNlIEZTTF9DUE1fVFNBX1NDQzQ6DQo+ICsJCWNsZWFyID0gVFNB X1NJQ1JfU0NDNChUU0FfU0lDUl9TQ0NfTUFTSyk7DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6 DQo+ICsJCWRldl9lcnIodHNhLT5kZXYsICJVbnN1cHBvcnRlZCBzZXJpYWwgaWQgJXVcbiIsIHRz YV9zZXJpYWwtPmlkKTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArDQo+ICsJc3Bp bl9sb2NrX2lycXNhdmUoJnRzYS0+bG9jaywgZmxhZ3MpOw0KPiArCXRzYV9jbHJzZXRiaXRzMzIo dHNhLT5zaV9yZWdzICsgVFNBX1NJQ1IsIGNsZWFyLCAwKTsNCj4gKwlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZ0c2EtPmxvY2ssIGZsYWdzKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiAr RVhQT1JUX1NZTUJPTCh0c2Ffc2VyaWFsX2Rpc2Nvbm5lY3QpOw0KPiArDQo+ICtpbnQgdHNhX3Nl cmlhbF9nZXRfaW5mbyhzdHJ1Y3QgdHNhX3NlcmlhbCAqdHNhX3NlcmlhbCwgc3RydWN0IHRzYV9z ZXJpYWxfaW5mbyAqaW5mbykNCj4gK3sNCj4gKwltZW1jcHkoaW5mbywgJnRzYV9zZXJpYWwtPmlu Zm8sIHNpemVvZigqaW5mbykpOw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArRVhQT1JUX1NZTUJP TCh0c2Ffc2VyaWFsX2dldF9pbmZvKTsNCj4gKw0KPiArc3RhdGljIHZvaWQgdHNhX2luaXRfZW50 cmllc19hcmVhKHN0cnVjdCB0c2EgKnRzYSwgc3RydWN0IHRzYV9lbnRyaWVzX2FyZWEgKmFyZWEs DQo+ICsJCQkJICB1MzIgdGRtcywgdTMyIHRkbV9pZCwgYm9vbCBpc19yeCkNCj4gK3sNCj4gKwly ZXNvdXJjZV9zaXplX3QgcXVhcnRlcjsNCj4gKwlyZXNvdXJjZV9zaXplX3QgaGFsZjsNCj4gKw0K PiArCXF1YXJ0ZXIgPSB0c2EtPnNpX3JhbV9zei80Ow0KPiArCWhhbGYgPSB0c2EtPnNpX3JhbV9z ei8yOw0KPiArDQo+ICsJaWYgKHRkbXMgPT0gQklUKFRTQV9URE1BKSkgew0KPiArCQkvKiBPbmx5 IFRETUEgKi8NCj4gKwkJaWYgKGlzX3J4KSB7DQo+ICsJCQkvKiBGaXJzdCBoYWxmIG9mIHNpX3Jh bSAqLw0KPiArCQkJYXJlYS0+ZW50cmllc19zdGFydCA9IHRzYS0+c2lfcmFtOw0KPiArCQkJYXJl YS0+ZW50cmllc19uZXh0ID0gYXJlYS0+ZW50cmllc19zdGFydCArIGhhbGY7DQo+ICsJCQlhcmVh LT5sYXN0X2VudHJ5ID0gTlVMTDsNCj4gKwkJfSBlbHNlIHsNCj4gKwkJCS8qIFNlY29uZCBoYWxm IG9mIHNpX3JhbSAqLw0KPiArCQkJYXJlYS0+ZW50cmllc19zdGFydCA9IHRzYS0+c2lfcmFtICsg aGFsZjsNCj4gKwkJCWFyZWEtPmVudHJpZXNfbmV4dCA9IGFyZWEtPmVudHJpZXNfc3RhcnQgKyBo YWxmOw0KPiArCQkJYXJlYS0+bGFzdF9lbnRyeSA9IE5VTEw7DQo+ICsJCX0NCj4gKwl9IGVsc2Ug ew0KPiArCQkvKiBPbmx5IFRETUIgb3IgYm90aCBURE1zICovDQo+ICsJCWlmICh0ZG1faWQgPT0g VFNBX1RETUEpIHsNCj4gKwkJCWlmIChpc19yeCkgew0KPiArCQkJCS8qIEZpcnN0IGhhbGYgb2Yg Zmlyc3QgaGFsZiBvZiBzaV9yYW0gKi8NCj4gKwkJCQlhcmVhLT5lbnRyaWVzX3N0YXJ0ID0gdHNh LT5zaV9yYW07DQo+ICsJCQkJYXJlYS0+ZW50cmllc19uZXh0ID0gYXJlYS0+ZW50cmllc19zdGFy dCArIHF1YXJ0ZXI7DQo+ICsJCQkJYXJlYS0+bGFzdF9lbnRyeSA9IE5VTEw7DQo+ICsJCQl9IGVs c2Ugew0KPiArCQkJCS8qIEZpcnN0IGhhbGYgb2Ygc2Vjb25kIGhhbGYgb2Ygc2lfcmFtICovDQo+ ICsJCQkJYXJlYS0+ZW50cmllc19zdGFydCA9IHRzYS0+c2lfcmFtICsgKDIgKiBxdWFydGVyKTsN Cj4gKwkJCQlhcmVhLT5lbnRyaWVzX25leHQgPSBhcmVhLT5lbnRyaWVzX3N0YXJ0ICsgcXVhcnRl cjsNCj4gKwkJCQlhcmVhLT5sYXN0X2VudHJ5ID0gTlVMTDsNCj4gKwkJCX0NCj4gKwkJfSBlbHNl IHsNCj4gKwkJCWlmIChpc19yeCkgew0KPiArCQkJCS8qIFNlY29uZCBoYWxmIG9mIGZpcnN0IGhh bGYgb2Ygc2lfcmFtICovDQo+ICsJCQkJYXJlYS0+ZW50cmllc19zdGFydCA9IHRzYS0+c2lfcmFt ICsgcXVhcnRlcjsNCj4gKwkJCQlhcmVhLT5lbnRyaWVzX25leHQgPSBhcmVhLT5lbnRyaWVzX3N0 YXJ0ICsgcXVhcnRlcjsNCj4gKwkJCQlhcmVhLT5sYXN0X2VudHJ5ID0gTlVMTDsNCj4gKwkJCX0g ZWxzZSB7DQo+ICsJCQkJLyogU2Vjb25kIGhhbGYgb2Ygc2Vjb25kIGhhbGYgb2Ygc2lfcmFtICov DQo+ICsJCQkJYXJlYS0+ZW50cmllc19zdGFydCA9IHRzYS0+c2lfcmFtICsgKDMgKiBxdWFydGVy KTsNCj4gKwkJCQlhcmVhLT5lbnRyaWVzX25leHQgPSBhcmVhLT5lbnRyaWVzX3N0YXJ0ICsgcXVh cnRlcjsNCj4gKwkJCQlhcmVhLT5sYXN0X2VudHJ5ID0gTlVMTDsNCj4gKwkJCX0NCj4gKwkJfQ0K PiArCX0NCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IGNoYXIgKnRzYV9zZXJpYWxfaWQybmFt ZShzdHJ1Y3QgdHNhICp0c2EsIHUzMiBzZXJpYWxfaWQpDQo+ICt7DQo+ICsJc3dpdGNoIChzZXJp YWxfaWQpIHsNCj4gKwljYXNlIEZTTF9DUE1fVFNBX05VOglyZXR1cm4gIk5vdCB1c2VkIjsNCj4g KwljYXNlIEZTTF9DUE1fVFNBX1NDQzI6CXJldHVybiAiU0NDMiI7DQo+ICsJY2FzZSBGU0xfQ1BN X1RTQV9TQ0MzOglyZXR1cm4gIlNDQzMiOw0KPiArCWNhc2UgRlNMX0NQTV9UU0FfU0NDNDoJcmV0 dXJuICJTQ0M0IjsNCj4gKwljYXNlIEZTTF9DUE1fVFNBX1NNQzE6CXJldHVybiAiU01DMSI7DQo+ ICsJY2FzZSBGU0xfQ1BNX1RTQV9TTUMyOglyZXR1cm4gIlNNQzIiOw0KPiArCWRlZmF1bHQ6DQo+ ICsJCWJyZWFrOw0KPiArCX0NCj4gKwlyZXR1cm4gTlVMTDsNCj4gK30NCj4gKw0KPiArc3RhdGlj IHUzMiB0c2Ffc2VyaWFsX2lkMmNzZWwoc3RydWN0IHRzYSAqdHNhLCB1MzIgc2VyaWFsX2lkKQ0K PiArew0KPiArCXN3aXRjaCAoc2VyaWFsX2lkKSB7DQo+ICsJY2FzZSBGU0xfQ1BNX1RTQV9TQ0My OglyZXR1cm4gVFNBX1NJUkFNX0VOVFJZX0NTRUxfU0NDMjsNCj4gKwljYXNlIEZTTF9DUE1fVFNB X1NDQzM6CXJldHVybiBUU0FfU0lSQU1fRU5UUllfQ1NFTF9TQ0MzOw0KPiArCWNhc2UgRlNMX0NQ TV9UU0FfU0NDNDoJcmV0dXJuIFRTQV9TSVJBTV9FTlRSWV9DU0VMX1NDQzQ7DQo+ICsJY2FzZSBG U0xfQ1BNX1RTQV9TTUMxOglyZXR1cm4gVFNBX1NJUkFNX0VOVFJZX0NTRUxfU01DMTsNCj4gKwlj YXNlIEZTTF9DUE1fVFNBX1NNQzI6CXJldHVybiBUU0FfU0lSQU1fRU5UUllfQ1NFTF9TTUMyOw0K PiArCWRlZmF1bHQ6DQo+ICsJCWJyZWFrOw0KPiArCX0NCj4gKwlyZXR1cm4gVFNBX1NJUkFNX0VO VFJZX0NTRUxfTlU7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgdHNhX2FkZF9lbnRyeShzdHJ1 Y3QgdHNhICp0c2EsIHN0cnVjdCB0c2FfZW50cmllc19hcmVhICphcmVhLA0KPiArCQkJIHUzMiBj b3VudCwgdTMyIHNlcmlhbF9pZCkNCj4gK3sNCj4gKwl2b2lkICpfX2lvbWVtIGFkZHI7DQo+ICsJ dTMyIGxlZnQ7DQo+ICsJdTMyIHZhbDsNCj4gKwl1MzIgY250Ow0KPiArCXUzMiBuYjsNCj4gKw0K PiArCWFkZHIgPSBhcmVhLT5sYXN0X2VudHJ5ID8gYXJlYS0+bGFzdF9lbnRyeSArIDQgOiBhcmVh LT5lbnRyaWVzX3N0YXJ0Ow0KPiArDQo+ICsJbmIgPSBESVZfUk9VTkRfVVAoY291bnQsIDgpOw0K PiArCWlmICgoYWRkciArIChuYiAqIDQpKSA+IGFyZWEtPmVudHJpZXNfbmV4dCkgew0KPiArCQlk ZXZfZXJyKHRzYS0+ZGV2LCAic2kgcmFtIGFyZWEgZnVsbFxuIik7DQo+ICsJCXJldHVybiAtRU5P U1BDOw0KPiArCX0NCj4gKw0KPiArCWlmIChhcmVhLT5sYXN0X2VudHJ5KSB7DQo+ICsJCS8qIENs ZWFyIGxhc3QgZmxhZyAqLw0KPiArCQl0c2FfY2xyYml0czMyKGFyZWEtPmxhc3RfZW50cnksIFRT QV9TSVJBTV9FTlRSWV9MQVNUKTsNCj4gKwl9DQo+ICsNCj4gKwlsZWZ0ID0gY291bnQ7DQo+ICsJ d2hpbGUgKGxlZnQpIHsNCj4gKwkJdmFsID0gVFNBX1NJUkFNX0VOVFJZX0JZVEUgfCB0c2Ffc2Vy aWFsX2lkMmNzZWwodHNhLCBzZXJpYWxfaWQpOw0KPiArDQo+ICsJCWlmIChsZWZ0ID4gMTYpIHsN Cj4gKwkJCWNudCA9IDE2Ow0KPiArCQl9IGVsc2Ugew0KPiArCQkJY250ID0gbGVmdDsNCj4gKwkJ CXZhbCB8PSBUU0FfU0lSQU1fRU5UUllfTEFTVDsNCj4gKwkJCWFyZWEtPmxhc3RfZW50cnkgPSBh ZGRyOw0KPiArCQl9DQo+ICsJCXZhbCB8PSBUU0FfU0lSQU1fRU5UUllfQ05UKGNudCAtIDEpOw0K PiArDQo+ICsJCXRzYV93cml0ZTMyKGFkZHIsIHZhbCk7DQo+ICsJCWFkZHIgKz0gNDsNCj4gKwkJ bGVmdCAtPSBjbnQ7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0 YXRpYyBpbnQgdHNhX29mX3BhcnNlX3RkbV9yb3V0ZShzdHJ1Y3QgdHNhICp0c2EsIHN0cnVjdCBk ZXZpY2Vfbm9kZSAqdGRtX25wLA0KPiArCQkJCSAgdTMyIHRkbXMsIHUzMiB0ZG1faWQsIGJvb2wg aXNfcngpDQo+ICt7DQo+ICsJc3RydWN0IHRzYV9lbnRyaWVzX2FyZWEgYXJlYTsNCj4gKwljb25z dCBjaGFyICpyb3V0ZV9uYW1lOw0KPiArCXUzMiBzZXJpYWxfaWQ7DQo+ICsJaW50IGxlbiwgaTsN Cj4gKwl1MzIgY291bnQ7DQo+ICsJY29uc3QgY2hhciAqc2VyaWFsX25hbWU7DQo+ICsJc3RydWN0 IHRzYV9zZXJpYWxfaW5mbyAqc2VyaWFsX2luZm87DQo+ICsJc3RydWN0IHRzYV90ZG0gKnRkbTsN Cj4gKwlpbnQgcmV0Ow0KPiArCXUzMiB0czsNCj4gKw0KPiArCXJvdXRlX25hbWUgPSBpc19yeCA/ ICJmc2wscngtdHMtcm91dGVzIiA6ICJmc2wsdHgtdHMtcm91dGVzIjsNCj4gKw0KPiArCWxlbiA9 IG9mX3Byb3BlcnR5X2NvdW50X3UzMl9lbGVtcyh0ZG1fbnAsICByb3V0ZV9uYW1lKTsNCj4gKwlp ZiAobGVuIDwgMCkgew0KPiArCQlkZXZfZXJyKHRzYS0+ZGV2LCAiJXBPRjogZmFpbGVkIHRvIHJl YWQgJXNcbiIsIHRkbV9ucCwgcm91dGVfbmFtZSk7DQo+ICsJCXJldHVybiBsZW47DQo+ICsJfQ0K PiArCWlmIChsZW4gJSAyICE9IDApIHsNCj4gKwkJZGV2X2Vycih0c2EtPmRldiwgIiVwT0Y6IHdy b25nICVzIGZvcm1hdFxuIiwgdGRtX25wLCByb3V0ZV9uYW1lKTsNCj4gKwkJcmV0dXJuIC1FSU5W QUw7DQo+ICsJfQ0KPiArDQo+ICsJdHNhX2luaXRfZW50cmllc19hcmVhKHRzYSwgJmFyZWEsIHRk bXMsIHRkbV9pZCwgaXNfcngpOw0KPiArCXRzID0gMDsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgbGVu OyBpICs9IDIpIHsNCj4gKwkJb2ZfcHJvcGVydHlfcmVhZF91MzJfaW5kZXgodGRtX25wLCByb3V0 ZV9uYW1lLCBpLCAmY291bnQpOw0KPiArCQlvZl9wcm9wZXJ0eV9yZWFkX3UzMl9pbmRleCh0ZG1f bnAsIHJvdXRlX25hbWUsIGkgKyAxLCAmc2VyaWFsX2lkKTsNCj4gKw0KPiArCQlpZiAoc2VyaWFs X2lkID49IEFSUkFZX1NJWkUodHNhLT5zZXJpYWxzKSkgew0KPiArCQkJZGV2X2Vycih0c2EtPmRl diwgIiVwT0Y6IGludmFsaWQgc2VyaWFsIGlkICgldSlcbiIsDQo+ICsJCQkJdGRtX25wLCBzZXJp YWxfaWQpOw0KPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJCX0NCj4gKw0KPiArCQlzZXJpYWxf bmFtZSA9IHRzYV9zZXJpYWxfaWQybmFtZSh0c2EsIHNlcmlhbF9pZCk7DQo+ICsJCWlmICghc2Vy aWFsX25hbWUpIHsNCj4gKwkJCWRldl9lcnIodHNhLT5kZXYsICIlcE9GOiB1bnN1cHBvcnRlZCBz ZXJpYWwgaWQgKCV1KVxuIiwNCj4gKwkJCQl0ZG1fbnAsIHNlcmlhbF9pZCk7DQo+ICsJCQlyZXR1 cm4gLUVJTlZBTDsNCj4gKwkJfQ0KPiArDQo+ICsJCWRldl9kYmcodHNhLT5kZXYsICJ0ZG1faWQ9 JXUsICVzIHRzICV1Li4ldSAtPiAlc1xuIiwNCj4gKwkJCXRkbV9pZCwgcm91dGVfbmFtZSwgdHMs IHRzK2NvdW50LTEsIHNlcmlhbF9uYW1lKTsNCj4gKwkJdHMgKz0gY291bnQ7DQo+ICsNCj4gKwkJ cmV0ID0gdHNhX2FkZF9lbnRyeSh0c2EsICZhcmVhLCBjb3VudCwgc2VyaWFsX2lkKTsNCj4gKwkJ aWYgKHJldCkNCj4gKwkJCXJldHVybiByZXQ7DQo+ICsNCj4gKwkJc2VyaWFsX2luZm8gPSAmdHNh LT5zZXJpYWxzW3NlcmlhbF9pZF0uaW5mbzsNCj4gKwkJdGRtID0gJnRzYS0+dGRtW3RkbV9pZF07 DQo+ICsJCWlmIChpc19yeCkgew0KPiArCQkJc2VyaWFsX2luZm8tPnJ4X2ZzX3JhdGUgPSBjbGtf Z2V0X3JhdGUodGRtLT5sMXJzeW5jX2Nsayk7DQo+ICsJCQlzZXJpYWxfaW5mby0+cnhfYml0X3Jh dGUgPSBjbGtfZ2V0X3JhdGUodGRtLT5sMXJjbGtfY2xrKTsNCj4gKwkJCXNlcmlhbF9pbmZvLT5u Yl9yeF90cyArPSBjb3VudDsNCj4gKwkJfSBlbHNlIHsNCj4gKwkJCXNlcmlhbF9pbmZvLT50eF9m c19yYXRlID0gdGRtLT5sMXRzeW5jX2NsayA/DQo+ICsJCQkJY2xrX2dldF9yYXRlKHRkbS0+bDF0 c3luY19jbGspIDoNCj4gKwkJCQljbGtfZ2V0X3JhdGUodGRtLT5sMXJzeW5jX2Nsayk7DQo+ICsJ CQlzZXJpYWxfaW5mby0+dHhfYml0X3JhdGUgPSB0ZG0tPmwxdGNsa19jbGsgPw0KPiArCQkJCWNs a19nZXRfcmF0ZSh0ZG0tPmwxdGNsa19jbGspIDoNCj4gKwkJCQljbGtfZ2V0X3JhdGUodGRtLT5s MXJjbGtfY2xrKTsNCj4gKwkJCXNlcmlhbF9pbmZvLT5uYl90eF90cyArPSBjb3VudDsNCj4gKwkJ fQ0KPiArCX0NCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSBpbnQg dHNhX29mX3BhcnNlX3RkbV9yeF9yb3V0ZShzdHJ1Y3QgdHNhICp0c2EsDQo+ICsJCQkJCSAgICBz dHJ1Y3QgZGV2aWNlX25vZGUgKnRkbV9ucCwNCj4gKwkJCQkJICAgIHUzMiB0ZG1zLCB1MzIgdGRt X2lkKQ0KPiArew0KPiArCXJldHVybiB0c2Ffb2ZfcGFyc2VfdGRtX3JvdXRlKHRzYSwgdGRtX25w LCB0ZG1zLCB0ZG1faWQsIHRydWUpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIGludCB0 c2Ffb2ZfcGFyc2VfdGRtX3R4X3JvdXRlKHN0cnVjdCB0c2EgKnRzYSwNCj4gKwkJCQkJICAgIHN0 cnVjdCBkZXZpY2Vfbm9kZSAqdGRtX25wLA0KPiArCQkJCQkgICAgdTMyIHRkbXMsIHUzMiB0ZG1f aWQpDQo+ICt7DQo+ICsJcmV0dXJuIHRzYV9vZl9wYXJzZV90ZG1fcm91dGUodHNhLCB0ZG1fbnAs IHRkbXMsIHRkbV9pZCwgZmFsc2UpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHRzYV9vZl9w YXJzZV90ZG1zKHN0cnVjdCB0c2EgKnRzYSwgc3RydWN0IGRldmljZV9ub2RlICpucCkNCj4gK3sN Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnRkbV9ucDsNCj4gKwlzdHJ1Y3QgdHNhX3RkbSAqdGRt Ow0KPiArCXN0cnVjdCBjbGsgKmNsazsNCj4gKwl1MzIgdGRtX2lkLCB2YWw7DQo+ICsJaW50IHJl dDsNCj4gKwlpbnQgaTsNCj4gKw0KPiArCXRzYS0+dGRtcyA9IDA7DQo+ICsJdHNhLT50ZG1bMF0u aXNfZW5hYmxlID0gZmFsc2U7DQo+ICsJdHNhLT50ZG1bMV0uaXNfZW5hYmxlID0gZmFsc2U7DQo+ ICsNCj4gKwlmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZShucCwgdGRtX25wKSB7DQo+ ICsJCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKHRkbV9ucCwgInJlZyIsICZ0ZG1faWQpOw0K PiArCQlpZiAocmV0KSB7DQo+ICsJCQlkZXZfZXJyKHRzYS0+ZGV2LCAiJXBPRjogZmFpbGVkIHRv IHJlYWQgcmVnXG4iLCB0ZG1fbnApOw0KPiArCQkJb2Zfbm9kZV9wdXQodGRtX25wKTsNCj4gKwkJ CXJldHVybiByZXQ7DQo+ICsJCX0NCj4gKwkJc3dpdGNoICh0ZG1faWQpIHsNCj4gKwkJY2FzZSAw Og0KPiArCQkJdHNhLT50ZG1zIHw9IEJJVChUU0FfVERNQSk7DQo+ICsJCQlicmVhazsNCj4gKwkJ Y2FzZSAxOg0KPiArCQkJdHNhLT50ZG1zIHw9IEJJVChUU0FfVERNQik7DQo+ICsJCQlicmVhazsN Cj4gKwkJZGVmYXVsdDoNCj4gKwkJCWRldl9lcnIodHNhLT5kZXYsICIlcE9GOiBJbnZhbGlkIHRk bV9pZCAoJXUpXG4iLCB0ZG1fbnAsDQo+ICsJCQkJdGRtX2lkKTsNCj4gKwkJCW9mX25vZGVfcHV0 KHRkbV9ucCk7DQo+ICsJCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwkJfQ0KPiArCX0NCj4gKw0KPiAr CWZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKG5wLCB0ZG1fbnApIHsNCj4gKwkJcmV0 ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIodGRtX25wLCAicmVnIiwgJnRkbV9pZCk7DQo+ICsJCWlm IChyZXQpIHsNCj4gKwkJCWRldl9lcnIodHNhLT5kZXYsICIlcE9GOiBmYWlsZWQgdG8gcmVhZCBy ZWdcbiIsIHRkbV9ucCk7DQo+ICsJCQlvZl9ub2RlX3B1dCh0ZG1fbnApOw0KPiArCQkJcmV0dXJu IHJldDsNCj4gKwkJfQ0KPiArDQo+ICsJCXRkbSA9ICZ0c2EtPnRkbVt0ZG1faWRdOw0KPiArCQl0 ZG0tPnNpbW9kZV90ZG0gPSBUU0FfU0lNT0RFX1RETV9TRE1fTk9STTsNCj4gKw0KPiArCQl2YWwg PSAwOw0KPiArCQlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMih0ZG1fbnAsICJmc2wscngtZnJh bWUtc3luYy1kZWxheS1iaXRzIiwNCj4gKwkJCQkJICAgJnZhbCk7DQo+ICsJCWlmIChyZXQgJiYg cmV0ICE9IC1FSU5WQUwpIHsNCj4gKwkJCWRldl9lcnIodHNhLT5kZXYsDQo+ICsJCQkJIiVwT0Y6 IGZhaWxlZCB0byByZWFkIGZzbCxyeC1mcmFtZS1zeW5jLWRlbGF5LWJpdHNcbiIsDQo+ICsJCQkJ dGRtX25wKTsNCj4gKwkJCW9mX25vZGVfcHV0KHRkbV9ucCk7DQo+ICsJCQlyZXR1cm4gcmV0Ow0K PiArCQl9DQo+ICsJCWlmICh2YWwgPiAzKSB7DQo+ICsJCQlkZXZfZXJyKHRzYS0+ZGV2LA0KPiAr CQkJCSIlcE9GOiBJbnZhbGlkIGZzbCxyeC1mcmFtZS1zeW5jLWRlbGF5LWJpdHMgKCV1KVxuIiwN Cj4gKwkJCQl0ZG1fbnAsIHZhbCk7DQo+ICsJCQlvZl9ub2RlX3B1dCh0ZG1fbnApOw0KPiArCQkJ cmV0dXJuIC1FSU5WQUw7DQo+ICsJCX0NCj4gKwkJdGRtLT5zaW1vZGVfdGRtIHw9IFRTQV9TSU1P REVfVERNX1JGU0QodmFsKTsNCj4gKw0KPiArCQl2YWwgPSAwOw0KPiArCQlyZXQgPSBvZl9wcm9w ZXJ0eV9yZWFkX3UzMih0ZG1fbnAsICJmc2wsdHgtZnJhbWUtc3luYy1kZWxheS1iaXRzIiwNCj4g KwkJCQkJICAgJnZhbCk7DQo+ICsJCWlmIChyZXQgJiYgcmV0ICE9IC1FSU5WQUwpIHsNCj4gKwkJ CWRldl9lcnIodHNhLT5kZXYsDQo+ICsJCQkJIiVwT0Y6IGZhaWxlZCB0byByZWFkIGZzbCx0eC1m cmFtZS1zeW5jLWRlbGF5LWJpdHNcbiIsDQo+ICsJCQkJdGRtX25wKTsNCj4gKwkJCW9mX25vZGVf cHV0KHRkbV9ucCk7DQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiArCQl9DQo+ICsJCWlmICh2YWwgPiAz KSB7DQo+ICsJCQlkZXZfZXJyKHRzYS0+ZGV2LA0KPiArCQkJCSIlcE9GOiBJbnZhbGlkIGZzbCx0 eC1mcmFtZS1zeW5jLWRlbGF5LWJpdHMgKCV1KVxuIiwNCj4gKwkJCQl0ZG1fbnAsIHZhbCk7DQo+ ICsJCQlvZl9ub2RlX3B1dCh0ZG1fbnApOw0KPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJCX0N Cj4gKwkJdGRtLT5zaW1vZGVfdGRtIHw9IFRTQV9TSU1PREVfVERNX1RGU0QodmFsKTsNCj4gKw0K PiArCQlpZiAob2ZfcHJvcGVydHlfcmVhZF9ib29sKHRkbV9ucCwgImZzbCxjb21tb24tcnh0eC1w aW5zIikpDQo+ICsJCQl0ZG0tPnNpbW9kZV90ZG0gfD0gVFNBX1NJTU9ERV9URE1fQ1JUOw0KPiAr DQo+ICsJCWlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wodGRtX25wLCAiZnNsLGNsb2NrLWZhbGxp bmctZWRnZSIpKQ0KPiArCQkJdGRtLT5zaW1vZGVfdGRtIHw9IFRTQV9TSU1PREVfVERNX0NFOw0K PiArDQo+ICsJCWlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wodGRtX25wLCAiZnNsLGZzeW5jLXJp c2luZy1lZGdlIikpDQo+ICsJCQl0ZG0tPnNpbW9kZV90ZG0gfD0gVFNBX1NJTU9ERV9URE1fRkU7 DQo+ICsNCj4gKwkJaWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbCh0ZG1fbnAsICJmc2wsZG91Ymxl LXNwZWVkLWNsb2NrIikpDQo+ICsJCQl0ZG0tPnNpbW9kZV90ZG0gfD0gVFNBX1NJTU9ERV9URE1f RFNDOw0KPiArDQo+ICsJCWNsayA9IG9mX2Nsa19nZXRfYnlfbmFtZSh0ZG1fbnAsICJsMXJzeW5j Iik7DQo+ICsJCWlmIChJU19FUlIoY2xrKSkgew0KPiArCQkJcmV0ID0gUFRSX0VSUihjbGspOw0K PiArCQkJb2Zfbm9kZV9wdXQodGRtX25wKTsNCj4gKwkJCWdvdG8gZXJyOw0KPiArCQl9DQo+ICsJ CXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShjbGspOw0KPiArCQlpZiAocmV0KSB7DQo+ICsJCQlj bGtfcHV0KGNsayk7DQo+ICsJCQlvZl9ub2RlX3B1dCh0ZG1fbnApOw0KPiArCQkJZ290byBlcnI7 DQo+ICsJCX0NCj4gKwkJdGRtLT5sMXJzeW5jX2NsayA9IGNsazsNCj4gKw0KPiArCQljbGsgPSBv Zl9jbGtfZ2V0X2J5X25hbWUodGRtX25wLCAibDFyY2xrIik7DQo+ICsJCWlmIChJU19FUlIoY2xr KSkgew0KPiArCQkJcmV0ID0gUFRSX0VSUihjbGspOw0KPiArCQkJb2Zfbm9kZV9wdXQodGRtX25w KTsNCj4gKwkJCWdvdG8gZXJyOw0KPiArCQl9DQo+ICsJCXJldCA9IGNsa19wcmVwYXJlX2VuYWJs ZShjbGspOw0KPiArCQlpZiAocmV0KSB7DQo+ICsJCQljbGtfcHV0KGNsayk7DQo+ICsJCQlvZl9u b2RlX3B1dCh0ZG1fbnApOw0KPiArCQkJZ290byBlcnI7DQo+ICsJCX0NCj4gKwkJdGRtLT5sMXJj bGtfY2xrID0gY2xrOw0KPiArDQo+ICsJCWlmICghKHRkbS0+c2ltb2RlX3RkbSAmIFRTQV9TSU1P REVfVERNX0NSVCkpIHsNCj4gKwkJCWNsayA9IG9mX2Nsa19nZXRfYnlfbmFtZSh0ZG1fbnAsICJs MXRzeW5jIik7DQo+ICsJCQlpZiAoSVNfRVJSKGNsaykpIHsNCj4gKwkJCQlyZXQgPSBQVFJfRVJS KGNsayk7DQo+ICsJCQkJb2Zfbm9kZV9wdXQodGRtX25wKTsNCj4gKwkJCQlnb3RvIGVycjsNCj4g KwkJCX0NCj4gKwkJCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShjbGspOw0KPiArCQkJaWYgKHJl dCkgew0KPiArCQkJCWNsa19wdXQoY2xrKTsNCj4gKwkJCQlvZl9ub2RlX3B1dCh0ZG1fbnApOw0K PiArCQkJCWdvdG8gZXJyOw0KPiArCQkJfQ0KPiArCQkJdGRtLT5sMXRzeW5jX2NsayA9IGNsazsN Cj4gKw0KPiArCQkJY2xrID0gb2ZfY2xrX2dldF9ieV9uYW1lKHRkbV9ucCwgImwxdGNsayIpOw0K PiArCQkJaWYgKElTX0VSUihjbGspKSB7DQo+ICsJCQkJcmV0ID0gUFRSX0VSUihjbGspOw0KPiAr CQkJCW9mX25vZGVfcHV0KHRkbV9ucCk7DQo+ICsJCQkJZ290byBlcnI7DQo+ICsJCQl9DQo+ICsJ CQlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoY2xrKTsNCj4gKwkJCWlmIChyZXQpIHsNCj4gKwkJ CQljbGtfcHV0KGNsayk7DQo+ICsJCQkJb2Zfbm9kZV9wdXQodGRtX25wKTsNCj4gKwkJCQlnb3Rv IGVycjsNCj4gKwkJCX0NCj4gKwkJCXRkbS0+bDF0Y2xrX2NsayA9IGNsazsNCj4gKwkJfQ0KPiAr DQo+ICsJCXJldCA9IHRzYV9vZl9wYXJzZV90ZG1fcnhfcm91dGUodHNhLCB0ZG1fbnAsIHRzYS0+ dGRtcywgdGRtX2lkKTsNCj4gKwkJaWYgKHJldCkgew0KPiArCQkJb2Zfbm9kZV9wdXQodGRtX25w KTsNCj4gKwkJCWdvdG8gZXJyOw0KPiArCQl9DQo+ICsNCj4gKwkJcmV0ID0gdHNhX29mX3BhcnNl X3RkbV90eF9yb3V0ZSh0c2EsIHRkbV9ucCwgdHNhLT50ZG1zLCB0ZG1faWQpOw0KPiArCQlpZiAo cmV0KSB7DQo+ICsJCQlvZl9ub2RlX3B1dCh0ZG1fbnApOw0KPiArCQkJZ290byBlcnI7DQo+ICsJ CX0NCj4gKw0KPiArCQl0ZG0tPmlzX2VuYWJsZSA9IHRydWU7DQo+ICsJfQ0KPiArCXJldHVybiAw Ow0KPiArDQo+ICtlcnI6DQo+ICsJZm9yIChpID0gMDsgaSA8IDI7IGkrKykgew0KPiArCQlpZiAo dHNhLT50ZG1baV0ubDFyc3luY19jbGspIHsNCj4gKwkJCWNsa19kaXNhYmxlX3VucHJlcGFyZSh0 c2EtPnRkbVtpXS5sMXJzeW5jX2Nsayk7DQo+ICsJCQljbGtfcHV0KHRzYS0+dGRtW2ldLmwxcnN5 bmNfY2xrKTsNCj4gKwkJfQ0KPiArCQlpZiAodHNhLT50ZG1baV0ubDFyY2xrX2Nsaykgew0KPiAr CQkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHRzYS0+dGRtW2ldLmwxcmNsa19jbGspOw0KPiArCQkJ Y2xrX3B1dCh0c2EtPnRkbVtpXS5sMXJjbGtfY2xrKTsNCj4gKwkJfQ0KPiArCQlpZiAodHNhLT50 ZG1baV0ubDF0c3luY19jbGspIHsNCj4gKwkJCWNsa19kaXNhYmxlX3VucHJlcGFyZSh0c2EtPnRk bVtpXS5sMXJzeW5jX2Nsayk7DQo+ICsJCQljbGtfcHV0KHRzYS0+dGRtW2ldLmwxcnN5bmNfY2xr KTsNCj4gKwkJfQ0KPiArCQlpZiAodHNhLT50ZG1baV0ubDF0Y2xrX2Nsaykgew0KPiArCQkJY2xr X2Rpc2FibGVfdW5wcmVwYXJlKHRzYS0+dGRtW2ldLmwxcmNsa19jbGspOw0KPiArCQkJY2xrX3B1 dCh0c2EtPnRkbVtpXS5sMXJjbGtfY2xrKTsNCj4gKwkJfQ0KPiArCX0NCj4gKwlyZXR1cm4gcmV0 Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB0c2FfaW5pdF9zaV9yYW0oc3RydWN0IHRzYSAq dHNhKQ0KPiArew0KPiArCXJlc291cmNlX3NpemVfdCBpOw0KPiArDQo+ICsJLyogRmlsbCBhbGwg ZW50cmllcyBhcyB0aGUgbGFzdCBvbmUgKi8NCj4gKwlmb3IgKGkgPSAwOyBpIDwgdHNhLT5zaV9y YW1fc3o7IGkgKz0gNCkNCj4gKwkJdHNhX3dyaXRlMzIodHNhLT5zaV9yYW0gKyBpLCBUU0FfU0lS QU1fRU5UUllfTEFTVCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgdHNhX3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICt7DQo+ICsJc3RydWN0IGRldmljZV9ub2RlICpu cCA9IHBkZXYtPmRldi5vZl9ub2RlOw0KPiArCXN0cnVjdCByZXNvdXJjZSAqcmVzOw0KPiArCXN0 cnVjdCB0c2EgKnRzYTsNCj4gKwl1bnNpZ25lZCBpbnQgaTsNCj4gKwl1MzIgdmFsOw0KPiArCWlu dCByZXQ7DQo+ICsNCj4gKwl0c2EgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCp0 c2EpLCBHRlBfS0VSTkVMKTsNCj4gKwlpZiAoIXRzYSkNCj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ ICsNCj4gKwl0c2EtPmRldiA9ICZwZGV2LT5kZXY7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwg QVJSQVlfU0laRSh0c2EtPnNlcmlhbHMpOyBpKyspDQo+ICsJCXRzYS0+c2VyaWFsc1tpXS5pZCA9 IGk7DQo+ICsNCj4gKwlzcGluX2xvY2tfaW5pdCgmdHNhLT5sb2NrKTsNCj4gKw0KPiArCXRzYS0+ c2lfcmVncyA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgInNp X3JlZ3MiKTsNCj4gKwlpZiAoSVNfRVJSKHRzYS0+c2lfcmVncykpDQo+ICsJCXJldHVybiBQVFJf RVJSKHRzYS0+c2lfcmVncyk7DQo+ICsNCj4gKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2Vf YnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAic2lfcmFtIik7DQo+ICsJaWYgKCFyZXMpIHsN Cj4gKwkJZGV2X2Vycih0c2EtPmRldiwgInNpX3JhbSByZXNvdXJjZSBtaXNzaW5nXG4iKTsNCj4g KwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArCXRzYS0+c2lfcmFtX3N6ID0gcmVzb3VyY2Vf c2l6ZShyZXMpOw0KPiArCXRzYS0+c2lfcmFtID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2 LT5kZXYsIHJlcyk7DQo+ICsJaWYgKElTX0VSUih0c2EtPnNpX3JhbSkpDQo+ICsJCXJldHVybiBQ VFJfRVJSKHRzYS0+c2lfcmFtKTsNCj4gKw0KPiArCXRzYV9pbml0X3NpX3JhbSh0c2EpOw0KPiAr DQo+ICsJcmV0ID0gdHNhX29mX3BhcnNlX3RkbXModHNhLCBucCk7DQo+ICsJaWYgKHJldCkNCj4g KwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCS8qIFNldCBTSU1PREUgKi8NCj4gKwl2YWwgPSAwOw0K PiArCWlmICh0c2EtPnRkbVswXS5pc19lbmFibGUpDQo+ICsJCXZhbCB8PSBUU0FfU0lNT0RFX1RE TUEodHNhLT50ZG1bMF0uc2ltb2RlX3RkbSk7DQo+ICsJaWYgKHRzYS0+dGRtWzFdLmlzX2VuYWJs ZSkNCj4gKwkJdmFsIHw9IFRTQV9TSU1PREVfVERNQih0c2EtPnRkbVsxXS5zaW1vZGVfdGRtKTsN Cj4gKw0KPiArCXRzYV9jbHJzZXRiaXRzMzIodHNhLT5zaV9yZWdzICsgVFNBX1NJTU9ERSwNCj4g KwkJCSBUU0FfU0lNT0RFX1RETUEoVFNBX1NJTU9ERV9URE1fTUFTSykgfA0KPiArCQkJIFRTQV9T SU1PREVfVERNQihUU0FfU0lNT0RFX1RETV9NQVNLKSwNCj4gKwkJCSB2YWwpOw0KPiArDQo+ICsJ LyogU2V0IFNJR01SICovDQo+ICsJdmFsID0gKHRzYS0+dGRtcyA9PSBCSVQoVFNBX1RETUEpKSA/ DQo+ICsJCVRTQV9TSUdNUl9SRE1fU1RBVElDX1RETUEgOiBUU0FfU0lHTVJfUkRNX1NUQVRJQ19U RE1BQjsNCj4gKwlpZiAodHNhLT50ZG1zICYgQklUKFRTQV9URE1BKSkNCj4gKwkJdmFsIHw9IFRT QV9TSUdNUl9FTkE7DQo+ICsJaWYgKHRzYS0+dGRtcyAmIEJJVChUU0FfVERNQikpDQo+ICsJCXZh bCB8PSBUU0FfU0lHTVJfRU5COw0KPiArCXRzYV93cml0ZTgodHNhLT5zaV9yZWdzICsgVFNBX1NJ R01SLCB2YWwpOw0KPiArDQo+ICsJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgdHNhKTsNCj4g Kw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHRzYV9yZW1vdmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgdHNhICp0c2EgPSBw bGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4gKwlpbnQgaTsNCj4gKw0KPiArCWZvciAoaSA9 IDA7IGkgPCAyOyBpKyspIHsNCj4gKwkJaWYgKHRzYS0+dGRtW2ldLmwxcnN5bmNfY2xrKSB7DQo+ ICsJCQljbGtfZGlzYWJsZV91bnByZXBhcmUodHNhLT50ZG1baV0ubDFyc3luY19jbGspOw0KPiAr CQkJY2xrX3B1dCh0c2EtPnRkbVtpXS5sMXJzeW5jX2Nsayk7DQo+ICsJCX0NCj4gKwkJaWYgKHRz YS0+dGRtW2ldLmwxcmNsa19jbGspIHsNCj4gKwkJCWNsa19kaXNhYmxlX3VucHJlcGFyZSh0c2Et PnRkbVtpXS5sMXJjbGtfY2xrKTsNCj4gKwkJCWNsa19wdXQodHNhLT50ZG1baV0ubDFyY2xrX2Ns ayk7DQo+ICsJCX0NCj4gKwkJaWYgKHRzYS0+dGRtW2ldLmwxdHN5bmNfY2xrKSB7DQo+ICsJCQlj bGtfZGlzYWJsZV91bnByZXBhcmUodHNhLT50ZG1baV0ubDFyc3luY19jbGspOw0KPiArCQkJY2xr X3B1dCh0c2EtPnRkbVtpXS5sMXJzeW5jX2Nsayk7DQo+ICsJCX0NCj4gKwkJaWYgKHRzYS0+dGRt W2ldLmwxdGNsa19jbGspIHsNCj4gKwkJCWNsa19kaXNhYmxlX3VucHJlcGFyZSh0c2EtPnRkbVtp XS5sMXJjbGtfY2xrKTsNCj4gKwkJCWNsa19wdXQodHNhLT50ZG1baV0ubDFyY2xrX2Nsayk7DQo+ ICsJCX0NCj4gKwl9DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgb2ZfZGV2aWNlX2lkIHRzYV9pZF90YWJsZVtdID0gew0KPiArCXsgLmNvbXBhdGlibGUg PSAiZnNsLGNwbTEtdHNhIiB9LA0KPiArCXt9IC8qIHNlbnRpbmVsICovDQo+ICt9Ow0KPiArTU9E VUxFX0RFVklDRV9UQUJMRShvZiwgdHNhX2lkX3RhYmxlKTsNCj4gKw0KPiArc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgdHNhX2RyaXZlciA9IHsNCj4gKwkuZHJpdmVyID0gew0KPiArCQku bmFtZSA9ICJmc2wtdHNhIiwNCj4gKwkJLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKHRz YV9pZF90YWJsZSksDQo+ICsJfSwNCj4gKwkucHJvYmUgPSB0c2FfcHJvYmUsDQo+ICsJLnJlbW92 ZSA9IHRzYV9yZW1vdmUsDQo+ICt9Ow0KPiArbW9kdWxlX3BsYXRmb3JtX2RyaXZlcih0c2FfZHJp dmVyKTsNCj4gKw0KPiArc3RydWN0IHRzYV9zZXJpYWwgKnRzYV9zZXJpYWxfZ2V0X2J5cGhhbmRs ZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLA0KPiArCQkJCQkgICAgY29uc3QgY2hhciAqcGhhbmRs ZV9uYW1lKQ0KPiArew0KPiArCXN0cnVjdCBvZl9waGFuZGxlX2FyZ3Mgb3V0X2FyZ3M7DQo+ICsJ c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsNCj4gKwlzdHJ1Y3QgdHNhX3NlcmlhbCAqdHNh X3NlcmlhbDsNCj4gKwlzdHJ1Y3QgdHNhICp0c2E7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCXJl dCA9IG9mX3BhcnNlX3BoYW5kbGVfd2l0aF9maXhlZF9hcmdzKG5wLCBwaGFuZGxlX25hbWUsIDEs IDAsICZvdXRfYXJncyk7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCXJldHVybiBFUlJfUFRSKHJl dCk7DQo+ICsNCj4gKwlpZiAoIW9mX21hdGNoX25vZGUodHNhX2RyaXZlci5kcml2ZXIub2ZfbWF0 Y2hfdGFibGUsIG91dF9hcmdzLm5wKSkgew0KPiArCQlvZl9ub2RlX3B1dChvdXRfYXJncy5ucCk7 DQo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOw0KPiArCX0NCj4gKw0KPiArCXBkZXYgPSBv Zl9maW5kX2RldmljZV9ieV9ub2RlKG91dF9hcmdzLm5wKTsNCj4gKwlvZl9ub2RlX3B1dChvdXRf YXJncy5ucCk7DQo+ICsJaWYgKCFwZGV2KQ0KPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsN Cj4gKw0KPiArCXRzYSA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOw0KPiArCWlmICghdHNh KSB7DQo+ICsJCXBsYXRmb3JtX2RldmljZV9wdXQocGRldik7DQo+ICsJCXJldHVybiBFUlJfUFRS KC1FUFJPQkVfREVGRVIpOw0KPiArCX0NCj4gKw0KPiArCWlmIChvdXRfYXJncy5hcmdzX2NvdW50 ICE9IDEpIHsNCj4gKwkJcGxhdGZvcm1fZGV2aWNlX3B1dChwZGV2KTsNCj4gKwkJcmV0dXJuIEVS Ul9QVFIoLUVJTlZBTCk7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKG91dF9hcmdzLmFyZ3NbMF0gPj0g QVJSQVlfU0laRSh0c2EtPnNlcmlhbHMpKSB7DQo+ICsJCXBsYXRmb3JtX2RldmljZV9wdXQocGRl dik7DQo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOw0KPiArCX0NCj4gKw0KPiArCXRzYV9z ZXJpYWwgPSAmdHNhLT5zZXJpYWxzW291dF9hcmdzLmFyZ3NbMF1dOw0KPiArDQo+ICsJLyoNCj4g KwkgKiBCZSBzdXJlIHRoYXQgdGhlIHNlcmlhbCBpZCBtYXRjaGVzIHRoZSBwaGFuZGxlIGFyZy4N Cj4gKwkgKiBUaGUgdHNhX3NlcmlhbHMgdGFibGUgaXMgaW5kZXhlZCBieSBzZXJpYWwgaWRzLiBU aGUgc2VyaWFsIGlkIGlzIHNldA0KPiArCSAqIGR1cmluZyB0aGUgcHJvYmUoKSBjYWxsIGFuZCBu ZWVkcyB0byBiZSBjb2hlcmVudC4NCj4gKwkgKi8NCj4gKwlpZiAoV0FSTl9PTih0c2Ffc2VyaWFs LT5pZCAhPSBvdXRfYXJncy5hcmdzWzBdKSkgew0KPiArCQlwbGF0Zm9ybV9kZXZpY2VfcHV0KHBk ZXYpOw0KPiArCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1 cm4gdHNhX3NlcmlhbDsNCj4gK30NCj4gK0VYUE9SVF9TWU1CT0wodHNhX3NlcmlhbF9nZXRfYnlw aGFuZGxlKTsNCj4gKw0KPiArdm9pZCB0c2Ffc2VyaWFsX3B1dChzdHJ1Y3QgdHNhX3NlcmlhbCAq dHNhX3NlcmlhbCkNCj4gK3sNCj4gKwlzdHJ1Y3QgdHNhICp0c2EgPSB0c2Ffc2VyaWFsX2dldF90 c2EodHNhX3NlcmlhbCk7DQo+ICsNCj4gKwlwdXRfZGV2aWNlKHRzYS0+ZGV2KTsNCj4gK30NCj4g K0VYUE9SVF9TWU1CT0wodHNhX3NlcmlhbF9wdXQpOw0KPiArDQo+ICtzdGF0aWMgdm9pZCBkZXZt X3RzYV9zZXJpYWxfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnJlcykNCj4gK3sN Cj4gKwlzdHJ1Y3QgdHNhX3NlcmlhbCAqKnRzYV9zZXJpYWwgPSByZXM7DQo+ICsNCj4gKwl0c2Ff c2VyaWFsX3B1dCgqdHNhX3NlcmlhbCk7DQo+ICt9DQo+ICsNCj4gK3N0cnVjdCB0c2Ffc2VyaWFs ICpkZXZtX3RzYV9zZXJpYWxfZ2V0X2J5cGhhbmRsZShzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ICsJ CQkJCQkgc3RydWN0IGRldmljZV9ub2RlICpucCwNCj4gKwkJCQkJCSBjb25zdCBjaGFyICpwaGFu ZGxlX25hbWUpDQo+ICt7DQo+ICsJc3RydWN0IHRzYV9zZXJpYWwgKnRzYV9zZXJpYWw7DQo+ICsJ c3RydWN0IHRzYV9zZXJpYWwgKipkcjsNCj4gKw0KPiArCWRyID0gZGV2cmVzX2FsbG9jKGRldm1f dHNhX3NlcmlhbF9yZWxlYXNlLCBzaXplb2YoKmRyKSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCFk cikNCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7DQo+ICsNCj4gKwl0c2Ffc2VyaWFsID0g dHNhX3NlcmlhbF9nZXRfYnlwaGFuZGxlKG5wLCBwaGFuZGxlX25hbWUpOw0KPiArCWlmICghSVNf RVJSKHRzYV9zZXJpYWwpKSB7DQo+ICsJCSpkciA9IHRzYV9zZXJpYWw7DQo+ICsJCWRldnJlc19h ZGQoZGV2LCBkcik7DQo+ICsJfSBlbHNlIHsNCj4gKwkJZGV2cmVzX2ZyZWUoZHIpOw0KPiArCX0N Cj4gKw0KPiArCXJldHVybiB0c2Ffc2VyaWFsOw0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTChkZXZt X3RzYV9zZXJpYWxfZ2V0X2J5cGhhbmRsZSk7DQo+ICsNCj4gK01PRFVMRV9BVVRIT1IoIkhlcnZl IENvZGluYSA8aGVydmUuY29kaW5hQGJvb3RsaW4uY29tPiIpOw0KPiArTU9EVUxFX0RFU0NSSVBU SU9OKCJDUE0gVFNBIGRyaXZlciIpOw0KPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9zb2MvZnNsL3FlL3RzYS5oIGIvZHJpdmVycy9zb2MvZnNsL3FlL3Rz YS5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZDlkZjg5 YjZkYTNlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9zb2MvZnNsL3FlL3RzYS5o DQo+IEBAIC0wLDAgKzEsNDIgQEANCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wICovDQo+ICsvKg0KPiArICogVFNBIG1hbmFnZW1lbnQNCj4gKyAqDQo+ICsgKiBDb3B5cmln aHQgMjAyMiBDUyBHUk9VUCBGcmFuY2UNCj4gKyAqDQo+ICsgKiBBdXRob3I6IEhlcnZlIENvZGlu YSA8aGVydmUuY29kaW5hQGJvb3RsaW4uY29tPg0KPiArICovDQo+ICsjaWZuZGVmIF9fU09DX0ZT TF9UU0FfSF9fDQo+ICsjZGVmaW5lIF9fU09DX0ZTTF9UU0FfSF9fDQo+ICsNCj4gKyNpbmNsdWRl IDxsaW51eC90eXBlcy5oPg0KPiArDQo+ICtzdHJ1Y3QgZGV2aWNlX25vZGU7DQo+ICtzdHJ1Y3Qg ZGV2aWNlOw0KPiArc3RydWN0IHRzYV9zZXJpYWw7DQo+ICsNCj4gK3N0cnVjdCB0c2Ffc2VyaWFs ICp0c2Ffc2VyaWFsX2dldF9ieXBoYW5kbGUoc3RydWN0IGRldmljZV9ub2RlICpucCwNCj4gKwkJ CQkJICAgIGNvbnN0IGNoYXIgKnBoYW5kbGVfbmFtZSk7DQo+ICt2b2lkIHRzYV9zZXJpYWxfcHV0 KHN0cnVjdCB0c2Ffc2VyaWFsICp0c2Ffc2VyaWFsKTsNCj4gK3N0cnVjdCB0c2Ffc2VyaWFsICpk ZXZtX3RzYV9zZXJpYWxfZ2V0X2J5cGhhbmRsZShzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ICsJCQkJ CQkgc3RydWN0IGRldmljZV9ub2RlICpucCwNCj4gKwkJCQkJCSBjb25zdCBjaGFyICpwaGFuZGxl X25hbWUpOw0KPiArDQo+ICsvKiBDb25uZWN0IGFuZCBkaXNjb25uZWN0IHRoZSBUU0Egc2VyaWFs ICovDQo+ICtpbnQgdHNhX3NlcmlhbF9jb25uZWN0KHN0cnVjdCB0c2Ffc2VyaWFsICp0c2Ffc2Vy aWFsKTsNCj4gK2ludCB0c2Ffc2VyaWFsX2Rpc2Nvbm5lY3Qoc3RydWN0IHRzYV9zZXJpYWwgKnRz YV9zZXJpYWwpOw0KPiArDQo+ICsvKiBDZWxsIGluZm9ybWF0aW9uICovDQo+ICtzdHJ1Y3QgdHNh X3NlcmlhbF9pbmZvIHsNCj4gKwl1bnNpZ25lZCBsb25nIHJ4X2ZzX3JhdGU7DQo+ICsJdW5zaWdu ZWQgbG9uZyByeF9iaXRfcmF0ZTsNCj4gKwl1OCBuYl9yeF90czsNCj4gKwl1bnNpZ25lZCBsb25n IHR4X2ZzX3JhdGU7DQo+ICsJdW5zaWduZWQgbG9uZyB0eF9iaXRfcmF0ZTsNCj4gKwl1OCBuYl90 eF90czsNCj4gK307DQo+ICsNCj4gKy8qIEdldCBpbmZvcm1hdGlvbiAqLw0KPiAraW50IHRzYV9z ZXJpYWxfZ2V0X2luZm8oc3RydWN0IHRzYV9zZXJpYWwgKnRzYV9zZXJpYWwsIHN0cnVjdCB0c2Ff c2VyaWFsX2luZm8gKmluZm8pOw0KPiArDQo+ICsjZW5kaWYgLyogX19TT0NfRlNMX1RTQV9IX18g Ki8NCg==