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=-9.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 8CE37C43461 for ; Mon, 14 Sep 2020 14:32:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2C10C207EA for ; Mon, 14 Sep 2020 14:32:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="N7qD/TJ7"; dkim=pass (1024-bit key) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.b="YyITq8Lm" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726570AbgINObr (ORCPT ); Mon, 14 Sep 2020 10:31:47 -0400 Received: from esa1.microchip.iphmx.com ([68.232.147.91]:47090 "EHLO esa1.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726664AbgINOba (ORCPT ); Mon, 14 Sep 2020 10:31:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1600093889; x=1631629889; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=jiPGvfyz1YfOd4qe2rvP4x3av5h2YEZlG7nSA17wwY8=; b=N7qD/TJ7OiHRA9aD/0NcC098METXUp1lwQtynqk4vYOPXvPaSpQGuFKw ZVcE+pUzDRbwI45ArhqKGoDMGj8ezvwNaWmT4zqCkBsJe4lEqXtuNXEIN +ZLeRuKQhZc38Q+wxKw3Ecl9jqyr1ehHx3LHKW7+XKxQqU1eCu0E+v+A/ e2seZulUAihar4RmRZtXl4zsFsWDPtykMVdvZsqUVBqOgCX7JTE8HjF2V wZfMCYFg51//r4U5kHkufhT4cQydW2zlF8nu8+T9akGQ+RLh5hUNGW2Y6 ZTgQo/wINI0di1ptI1l45E48YN+Bva/7JEAh8Bva3bgqetWlB2xwNFqFU g==; IronPort-SDR: RonbKbE3p2pdB69YC+0Vso46oze/RRvPS4xBzky3B5yEE9h0zs+BUtqwfFwRCWFCiH4xN10B9+ 2mg2BPGMqeFdlcKqvbsh9ev6XdYoTy6iAhkCPPLo8tgzwTgf6aUbSRMtQO0yolWo/f11+YQPtk YWQydocILfR9SJiHF6tO4twKrwdQiI1MA07xV+41F6HmrMf4BwoVpLRvJiymTr7YPqucENXWrM JV5X/tl57VG2DD+Ost/SWzydB8ifrBi2eNZ+p85q05NftZHyX5NvUSWBuYD8u+o4D93fQxYnk5 yi0= X-IronPort-AV: E=Sophos;i="5.76,426,1592895600"; d="scan'208";a="95649831" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa1.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 14 Sep 2020 07:31:28 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Mon, 14 Sep 2020 07:31:25 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3 via Frontend Transport; Mon, 14 Sep 2020 07:31:25 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BmmFadhVKy9B9i5Alrwp5HWcVOWiT/jqsWLs4oaZcNMFfYieGXZlfWrva+F6OxmPuXlo359pSoH3wCnwifhK6QFtAVa5WuOwbAfMtMmtVQjvlSXb0FVfnVFTyOL2RJ0sWyrRGJ+f6D+jGf4ef5QILUwsaEe9onAD0U7wafIRvx31oWfbAqzip+adchmUH9S6nUv2UY+ShmpXmm/BgEo5YNwzxp7b2qSRFIA0t9SQU01wwJeyBL7I0KUyktDZM2pbtbTTQIMEgz79C7lpvmWyp5+LxotpCWQq92Ckik873pryubTx6Zw9NuU+YPH/AO/ZcLxL/G4OsT6pX3SrpzR1Hw== 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=jiPGvfyz1YfOd4qe2rvP4x3av5h2YEZlG7nSA17wwY8=; b=j9E01C/3HrZVXlVsRGfhlnt4Y7xRfmakLTZVjTRAT+XfwZzE6qcuZg5/KqVCA2O1Y8sVB56rzURZxsjDL9JiGkBqt7Zk3bOds7OKiv/bBiQ49N2MxPJWBNu3T7dgqgmQ7yZ1fRouATJHD5p74SnAkV64eArjf9yVpaIQiw6dojJWIK4aHVUD7Z93im79YpiMI8kHTpICpuD7GHw/GB4bqHQb3DP/C8H+7kewFSbiZpNM/RdsCfmbrNF/FW0qzZ5yyZzs4HtxMbnT1+YgnwFFqlVlI41ljcVReu8bsOj6OqJw+zzDObPGsdv0okw/N7DnhqLaNWWXXnuUpia/TRFHUQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jiPGvfyz1YfOd4qe2rvP4x3av5h2YEZlG7nSA17wwY8=; b=YyITq8Lm5Mxnr/yQ0CIuSNbhH6yjp+Dc3EAVWDYJB8iWjfzT8FUPM6Dzxe+xbaY3OF+8Tx7Tj0xMczxp19SNXv0bv2lQTRpgL17XF9hfZp/lLKehlbGViEB4f3eyHR6Xms2dtH+1XcKfCB+mY8IszVyNR4gNSV+kd4K9Pa4F6dA= Received: from MN2PR11MB4269.namprd11.prod.outlook.com (2603:10b6:208:190::32) by MN2PR11MB4630.namprd11.prod.outlook.com (2603:10b6:208:24e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3370.16; Mon, 14 Sep 2020 14:31:26 +0000 Received: from MN2PR11MB4269.namprd11.prod.outlook.com ([fe80::38d4:de41:43a4:4642]) by MN2PR11MB4269.namprd11.prod.outlook.com ([fe80::38d4:de41:43a4:4642%7]) with mapi id 15.20.3370.019; Mon, 14 Sep 2020 14:31:26 +0000 From: To: , , , , , CC: Subject: Re: [PATCH v16 3/3] PCI: microchip: Add host driver for Microchip PCIe controller Thread-Topic: [PATCH v16 3/3] PCI: microchip: Add host driver for Microchip PCIe controller Thread-Index: AQHWiqO6PB98IVOrfUej/eYbWI+rog== Date: Mon, 14 Sep 2020 14:31:26 +0000 Message-ID: <2d3156c7-9203-f3f8-097f-e52599758b0e@microchip.com> References: <6bd2bce1-1241-e2e1-cab7-c48813584248@microchip.com> In-Reply-To: <6bd2bce1-1241-e2e1-cab7-c48813584248@microchip.com> Accept-Language: en-IE, en-US Content-Language: en-IE X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=microchip.com; x-originating-ip: [88.87.191.50] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e62063a1-e1bc-487b-5f50-08d858badcfe x-ms-traffictypediagnostic: MN2PR11MB4630: x-microsoft-antispam-prvs: x-bypassexternaltag: True x-ms-oob-tlc-oobclassifiers: OLM:7219; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: SpzXO/cDZ+z9hH/J+htDBDq6YjL1aolmBzbiGF9WMA0WYQzge22MLbLEw9S9J9NBL15nNrPugQ9bkc3zDsEUCdKqFiVsJfTWvxCwobPp/lyQ+dNlKXeIgI9vDFjpg1hDtq28xW3qAZesunsu/ieh3oXZeG8EFufEUl3qxnUHs8klke/nEQzLniP+eFJQdewuB/eiKDUnsIvqU4y1RRH0XykjjqPZBWgGPC5RL656lFXT5rcTOSup48zh/QmP7WJw0vZdJbhL6pryrbVjWLXVYwIHaEOoSqxqa9wGMzJmT6wGaGSaj4fKsi6G9MqKPp9MqzyjYFaqPZ7RyKtAF3Uyjg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR11MB4269.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(346002)(366004)(376002)(39860400002)(136003)(396003)(8936002)(71200400001)(76116006)(2906002)(91956017)(6512007)(110136005)(6486002)(31696002)(26005)(186003)(86362001)(30864003)(36756003)(478600001)(31686004)(6506007)(66476007)(4326008)(316002)(83380400001)(66446008)(64756008)(8676002)(66556008)(5660300002)(2616005)(66946007);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: ZQ1eolhcGV30GaHDv58H+7vCkdimJA9Sea5Xl+o/011HKGzaAtN4Kne2iENGnDN7Ck+dFlrtG/Z4wN0LwXH+c8hq2MBQ0Tnab1gTyvVVEB4x0rTzyLPG6PzuA8DENQ7nvMIqk/zz2HBrgQVXC/kADWZ45GOLdUSXhDetdQNM9JmEU9gPKVx2AqtsZFfAFxouiE4BsAAoQcaQ20QqPtSNT4+atRcAMSFDo9tffrOlKxCCC5Qj5Y4iAggW7qE4aaW9UdEjpmYfHvLwL5FP5Aq2dvhIYu7i8bMx1UO7uy3FcXXnVdVDwy7hXD1zaipgyiJru9lDy+Yowvs1gQz/ICjzNETToJ61pt2nsWK2Rvr20obZ6c+ncd2P00Pv5YPZFfNKXsF4Jdyukczy54YmpFkT0rhlcE/+OY4vpgkhoZGqsnqwSNsVyA7YiTKv6dzb997CtWRqPMVS6hWQp5qgd2ci/6VbmI7+A1VFfAnI4Sa1ML5wc0+h7TiTmr8cut+7LQ0ijU4tW/4vndCru7pUwTNJA2aT1/Ou9EhFIjZHoRK25kH8haA+bJH9xoQkkk1dJ4qIgwvFSnagEe22NqpkytjRVj6z8myoRxiAo/ZmQcdTezNaQjplcFGfKHmn5upZgQX+cXsL9PH+W06crO0iWB3jLg== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB4269.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e62063a1-e1bc-487b-5f50-08d858badcfe X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Sep 2020 14:31:26.6035 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Y/WSkIdynR8ZYvClBSq9gwM/vNvFLLPvXVI3pagssEa1BIlWX6s6e5wazAxoz/P/MFZ2gxHl6MGjusj0Ka2BldKG9T/D3XP9qeOoRVfnppU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4630 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org DQpBZGQgc3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBQb2xhckZpcmUgUENJZSBjb250cm9sbGVy IHdoZW4NCmNvbmZpZ3VyZWQgaW4gaG9zdCAoUm9vdCBDb21wbGV4KSBtb2RlLg0KDQpTaWduZWQt b2ZmLWJ5OiBEYWlyZSBNY05hbWFyYSA8ZGFpcmUubWNuYW1hcmFAbWljcm9jaGlwLmNvbT4NCi0t LQ0KIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZyAgICAgICAgICAgICAgIHwgICA5ICsN CiBkcml2ZXJzL3BjaS9jb250cm9sbGVyL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMSArDQog ZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLW1pY3JvY2hpcC1ob3N0LmMgfCA1NDEgKysrKysr KysrKysrKysrKysrKw0KIDMgZmlsZXMgY2hhbmdlZCwgNTUxIGluc2VydGlvbnMoKykNCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLW1pY3JvY2hpcC1ob3N0 LmMNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZyBiL2RyaXZl cnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZw0KaW5kZXggZjE4YzM3MjVlZjgwLi5kNzI2NGU2NTYx MWQgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWcNCisrKyBiL2Ry aXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZw0KQEAgLTI5NCw2ICsyOTQsMTUgQEAgY29uZmln IFBDSV9MT09OR1NPTg0KIAkgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gZW5hYmxlIFBDSSBj b250cm9sbGVyIHN1cHBvcnQgb24NCiAJICBMb29uZ3NvbiBzeXN0ZW1zLg0KIA0KK2NvbmZpZyBQ Q0lFX01JQ1JPQ0hJUF9IT1NUDQorCWJvb2wgIk1pY3JvY2hpcCBBWEkgUENJZSBob3N0IGJyaWRn ZSBzdXBwb3J0Ig0KKwlkZXBlbmRzIG9uIFBDSV9NU0kgJiYgT0YNCisJc2VsZWN0IFBDSV9NU0lf SVJRX0RPTUFJTg0KKwlzZWxlY3QgR0VORVJJQ19NU0lfSVJRX0RPTUFJTg0KKwloZWxwDQorCSAg U2F5IFkgaGVyZSBpZiB5b3Ugd2FudCBrZXJuZWwgdG8gc3VwcG9ydCB0aGUgTWljcm9jaGlwIEFY SSBQQ0llDQorCSAgSG9zdCBCcmlkZ2UgZHJpdmVyLg0KKw0KIHNvdXJjZSAiZHJpdmVycy9wY2kv Y29udHJvbGxlci9kd2MvS2NvbmZpZyINCiBzb3VyY2UgImRyaXZlcnMvcGNpL2NvbnRyb2xsZXIv bW9iaXZlaWwvS2NvbmZpZyINCiBzb3VyY2UgImRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5j ZS9LY29uZmlnIg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvTWFrZWZpbGUg Yi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL01ha2VmaWxlDQppbmRleCBiY2RiZjQ5YWIxZTQuLmZj YmJlZTk0ZGM1MSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvTWFrZWZpbGUN CisrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvTWFrZWZpbGUNCkBAIC0yOCw2ICsyOCw3IEBA IG9iai0kKENPTkZJR19QQ0lFX1JPQ0tDSElQX0VQKSArPSBwY2llLXJvY2tjaGlwLWVwLm8NCiBv YmotJChDT05GSUdfUENJRV9ST0NLQ0hJUF9IT1NUKSArPSBwY2llLXJvY2tjaGlwLWhvc3Qubw0K IG9iai0kKENPTkZJR19QQ0lFX01FRElBVEVLKSArPSBwY2llLW1lZGlhdGVrLm8NCiBvYmotJChD T05GSUdfUENJRV9UQU5HT19TTVA4NzU5KSArPSBwY2llLXRhbmdvLm8NCitvYmotJChDT05GSUdf UENJRV9NSUNST0NISVBfSE9TVCkgKz0gcGNpZS1taWNyb2NoaXAtaG9zdC5vDQogb2JqLSQoQ09O RklHX1ZNRCkgKz0gdm1kLm8NCiBvYmotJChDT05GSUdfUENJRV9CUkNNU1RCKSArPSBwY2llLWJy Y21zdGIubw0KIG9iai0kKENPTkZJR19QQ0lfTE9PTkdTT04pICs9IHBjaS1sb29uZ3Nvbi5vDQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLW1pY3JvY2hpcC1ob3N0LmMg Yi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbWljcm9jaGlwLWhvc3QuYw0KbmV3IGZpbGUg bW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uMTYwOTkxNTQ0NThmDQotLS0gL2Rldi9u dWxsDQorKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbWljcm9jaGlwLWhvc3QuYw0K QEAgLTAsMCArMSw1NDEgQEANCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0K Ky8qDQorICogTWljcm9jaGlwIEFYSSBQQ0llIEJyaWRnZSBob3N0IGNvbnRyb2xsZXIgZHJpdmVy DQorICoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTggLSAyMDIwIE1pY3JvY2hpcCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIEF1dGhvcjogRGFpcmUgTWNOYW1hcmEg PGRhaXJlLm1jbmFtYXJhQG1pY3JvY2hpcC5jb20+DQorICoNCisgKiBCYXNlZCBvbjoNCisgKglw Y2llLXJjYXIuYw0KKyAqCXBjaWUteGlsaW54LmMNCisgKglwY2llLWFsdGVyYS5jDQorICovDQor DQorI2luY2x1ZGUgPGxpbnV4L2lycWNoaXAvY2hhaW5lZF9pcnEuaD4NCisjaW5jbHVkZSA8bGlu dXgvbW9kdWxlLmg+DQorI2luY2x1ZGUgPGxpbnV4L21zaS5oPg0KKyNpbmNsdWRlIDxsaW51eC9v Zl9hZGRyZXNzLmg+DQorI2luY2x1ZGUgPGxpbnV4L29mX2lycS5oPg0KKyNpbmNsdWRlIDxsaW51 eC9vZl9wY2kuaD4NCisjaW5jbHVkZSA8bGludXgvcGNpLWVjYW0uaD4NCisjaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+DQorDQorI2luY2x1ZGUgIi4uL3BjaS5oIg0KKw0KKy8qIE51 bWJlciBvZiBNU0kgSVJRcyAqLw0KKyNkZWZpbmUgTUNfTlVNX01TSV9JUlFTCQkJCTMyDQorI2Rl ZmluZSBNQ19OVU1fTVNJX0lSUVNfQ09ERUQJCQk1DQorDQorLyogUENJZSBCcmlkZ2UgUGh5IGFu ZCBDb250cm9sbGVyIFBoeSBvZmZzZXRzICovDQorI2RlZmluZSBNQ19QQ0lFMV9CUklER0VfQURE UgkJCTB4MDAwMDgwMDB1DQorI2RlZmluZSBNQ19QQ0lFMV9DVFJMX0FERFIJCQkweDAwMDBhMDAw dQ0KKw0KKy8qIFBDSWUgQ29udHJvbGxlciBQaHkgUmVncyAqLw0KKyNkZWZpbmUgTUNfU0VDX0VS Uk9SX0lOVAkJCTB4MjgNCisjZGVmaW5lICBTRUNfRVJST1JfSU5UX1RYX1JBTV9TRUNfRVJSX0lO VAlHRU5NQVNLKDMsIDApDQorI2RlZmluZSAgU0VDX0VSUk9SX0lOVF9SWF9SQU1fU0VDX0VSUl9J TlQJR0VOTUFTSyg3LCA0KQ0KKyNkZWZpbmUgIFNFQ19FUlJPUl9JTlRfUENJRTJBWElfUkFNX1NF Q19FUlJfSU5UCUdFTk1BU0soMTEsIDgpDQorI2RlZmluZSAgU0VDX0VSUk9SX0lOVF9BWEkyUENJ RV9SQU1fU0VDX0VSUl9JTlQJR0VOTUFTSygxNSwgMTIpDQorI2RlZmluZSBNQ19TRUNfRVJST1Jf SU5UX01BU0sJCQkweDJjDQorI2RlZmluZSBNQ19ERURfRVJST1JfSU5UCQkJMHgzMA0KKyNkZWZp bmUgIERFRF9FUlJPUl9JTlRfVFhfUkFNX0RFRF9FUlJfSU5UCUdFTk1BU0soMywgMCkNCisjZGVm aW5lICBERURfRVJST1JfSU5UX1JYX1JBTV9ERURfRVJSX0lOVAlHRU5NQVNLKDcsIDQpDQorI2Rl ZmluZSAgREVEX0VSUk9SX0lOVF9QQ0lFMkFYSV9SQU1fREVEX0VSUl9JTlQJR0VOTUFTSygxMSwg OCkNCisjZGVmaW5lICBERURfRVJST1JfSU5UX0FYSTJQQ0lFX1JBTV9ERURfRVJSX0lOVAlHRU5N QVNLKDE1LCAxMikNCisjZGVmaW5lIE1DX0RFRF9FUlJPUl9JTlRfTUFTSwkJCTB4MzQNCisjZGVm aW5lIE1DX0VDQ19DT05UUk9MCQkJCTB4MzgNCisjZGVmaW5lICBFQ0NfQ09OVFJPTF9BWEkyUENJ RV9SQU1fRUNDX0JZUEFTUwlCSVQoMjcpDQorI2RlZmluZSAgRUNDX0NPTlRST0xfUENJRTJBWElf UkFNX0VDQ19CWVBBU1MJQklUKDI2KQ0KKyNkZWZpbmUgIEVDQ19DT05UUk9MX1JYX1JBTV9FQ0Nf QllQQVNTCQlCSVQoMjUpDQorI2RlZmluZSAgRUNDX0NPTlRST0xfVFhfUkFNX0VDQ19CWVBBU1MJ CUJJVCgyNCkNCisjZGVmaW5lIE1DX0xUU1NNX1NUQVRFCQkJCTB4NWMNCisjZGVmaW5lICBMVFNT TV9MMF9TVEFURQkJCQkweDEwDQorI2RlZmluZSBNQ19QQ0lFX0VWRU5UX0lOVAkJCTB4MTRjDQor I2RlZmluZSAgUENJRV9FVkVOVF9JTlRfTDJfRVhJVF9JTlQJCUJJVCgwKQ0KKyNkZWZpbmUgIFBD SUVfRVZFTlRfSU5UX0hPVFJTVF9FWElUX0lOVAkJQklUKDEpDQorI2RlZmluZSAgUENJRV9FVkVO VF9JTlRfRExVUF9FWElUX0lOVAkJQklUKDIpDQorI2RlZmluZSAgUENJRV9FVkVOVF9JTlRfTDJf RVhJVF9JTlRfTUFTSwlCSVQoMTYpDQorI2RlZmluZSAgUENJRV9FVkVOVF9JTlRfSE9UUlNUX0VY SVRfSU5UX01BU0sJQklUKDE3KQ0KKyNkZWZpbmUgIFBDSUVfRVZFTlRfSU5UX0RMVVBfRVhJVF9J TlRfTUFTSwlCSVQoMTgpDQorDQorLyogUENJZSBCcmlkZ2UgUGh5IFJlZ3MgKi8NCisjZGVmaW5l IE1DX1BDSUVfUENJX0lEU19EVzEJCQkweDljDQorDQorLyogUENJZSBDb25maWcgc3BhY2UgTVNJ IGNhcGFiaWxpdHkgc3RydWN0dXJlICovDQorI2RlZmluZSBNQ19NU0lfQ0FQX0NUUkxfT0ZGU0VU CQkJMHhlMHUNCisjZGVmaW5lICBNQ19NU0lfTUFYX1FfQVZBSUwJCQkoTUNfTlVNX01TSV9JUlFT X0NPREVEIDw8IDEpDQorI2RlZmluZSAgTUNfTVNJX1FfU0laRQkJCQkoTUNfTlVNX01TSV9JUlFT X0NPREVEIDw8IDQpDQorDQorI2RlZmluZSBNQ19JTUFTS19MT0NBTAkJCQkweDE4MA0KKyNkZWZp bmUgIFBDSUVfTE9DQUxfSU5UX0VOQUJMRQkJCTB4MGYwMDAwMDB1DQorI2RlZmluZSAgUENJX0lO VFMJCQkJMHgwZjAwMDAwMHUNCisjZGVmaW5lICBQTV9NU0lfSU5UX1NISUZUCQkJMjQNCisjZGVm aW5lICBQQ0lFX0VOQUJMRV9NU0kJCQkweDEwMDAwMDAwdQ0KKyNkZWZpbmUgIE1TSV9JTlQJCQkJ MHgxMDAwMDAwMHUNCisjZGVmaW5lICBNU0lfSU5UX1NISUZUCQkJCTI4DQorI2RlZmluZSBNQ19J U1RBVFVTX0xPQ0FMCQkJMHgxODQNCisjZGVmaW5lIE1DX0lNQVNLX0hPU1QJCQkJMHgxODgNCisj ZGVmaW5lIE1DX0lTVEFUVVNfSE9TVAkJCQkweDE4Yw0KKyNkZWZpbmUgTUNfTVNJX0FERFIJCQkJ MHgxOTANCisjZGVmaW5lIE1DX0lTVEFUVVNfTVNJCQkJCTB4MTk0DQorDQorLyogUENJZSBNYXN0 ZXIgdGFibGUgaW5pdCBkZWZpbmVzICovDQorI2RlZmluZSBNQ19BVFIwX1BDSUVfV0lOMF9TUkNB RERSX1BBUkFNCQkweDYwMHUNCisjZGVmaW5lICBBVFIwX1BDSUVfQVRSX1NJWkUJCQkweDFmDQor I2RlZmluZSAgQVRSMF9QQ0lFX0FUUl9TSVpFX1NISUZUCQkxDQorI2RlZmluZSBNQ19BVFIwX1BD SUVfV0lOMF9TUkNfQUREUgkJMHg2MDR1DQorI2RlZmluZSBNQ19BVFIwX1BDSUVfV0lOMF9UUlNM X0FERFJfTFNCCQkweDYwOHUNCisjZGVmaW5lIE1DX0FUUjBfUENJRV9XSU4wX1RSU0xfQUREUl9V RFcJCTB4NjBjdQ0KKyNkZWZpbmUgTUNfQVRSMF9QQ0lFX1dJTjBfVFJTTF9QQVJBTQkJMHg2MTB1 DQorDQorLyogUENJZSBBWEkgc2xhdmUgdGFibGUgaW5pdCBkZWZpbmVzICovDQorI2RlZmluZSBN Q19BVFIwX0FYSTRfU0xWMF9TUkNBRERSX1BBUkFNCQkweDgwMHUNCisjZGVmaW5lICBBVFJfU0la RV9TSElGVAkJCQkxDQorI2RlZmluZSAgQVRSX0lNUExfRU5BQkxFCQkJMQ0KKyNkZWZpbmUgTUNf QVRSMF9BWEk0X1NMVjBfU1JDX0FERFIJCTB4ODA0dQ0KKyNkZWZpbmUgTUNfQVRSMF9BWEk0X1NM VjBfVFJTTF9BRERSX0xTQgkJMHg4MDh1DQorI2RlZmluZSBNQ19BVFIwX0FYSTRfU0xWMF9UUlNM X0FERFJfVURXCQkweDgwY3UNCisjZGVmaW5lIE1DX0FUUjBfQVhJNF9TTFYwX1RSU0xfUEFSQU0J CTB4ODEwdQ0KKyNkZWZpbmUgIFBDSUVfVFhfUlhfSU5URVJGQUNFCQkJMHgwMDAwMDAwMHUNCisj ZGVmaW5lICBQQ0lFX0NPTkZJR19JTlRFUkZBQ0UJCQkweDAwMDAwMDAxdQ0KKw0KKyNkZWZpbmUg QVRSX0VOVFJZX1NJWkUJCQkJMzINCisNCitzdHJ1Y3QgbWNfbXNpIHsNCisJc3RydWN0IG11dGV4 IGxvY2s7CQkvKiBQcm90ZWN0IHVzZWQgYml0bWFwICovDQorCXN0cnVjdCBpcnFfZG9tYWluICpt c2lfZG9tYWluOw0KKwlzdHJ1Y3QgaXJxX2RvbWFpbiAqZGV2X2RvbWFpbjsNCisJdTMyIG51bV92 ZWN0b3JzOw0KKwl1NjQgdmVjdG9yX3BoeTsNCisJREVDTEFSRV9CSVRNQVAodXNlZCwgTUNfTlVN X01TSV9JUlFTKTsNCit9Ow0KKw0KK3N0cnVjdCBtY19wb3J0IHsNCisJdm9pZCBfX2lvbWVtICph eGlfYmFzZV9hZGRyOw0KKwlzdHJ1Y3QgZGV2aWNlICpkZXY7DQorCXN0cnVjdCBpcnFfZG9tYWlu ICppbnR4X2RvbWFpbjsNCisJcmF3X3NwaW5sb2NrX3QgaW50eF9tYXNrX2xvY2s7DQorCXN0cnVj dCBtY19tc2kgbXNpOw0KK307DQorDQorc3RhdGljIHZvaWQgbWNfcGNpZV9pc3Ioc3RydWN0IGly cV9kZXNjICpkZXNjKQ0KK3sNCisJc3RydWN0IGlycV9jaGlwICpjaGlwID0gaXJxX2Rlc2NfZ2V0 X2NoaXAoZGVzYyk7DQorCXN0cnVjdCBtY19wb3J0ICpwb3J0ID0gaXJxX2Rlc2NfZ2V0X2hhbmRs ZXJfZGF0YShkZXNjKTsNCisJc3RydWN0IGRldmljZSAqZGV2ID0gcG9ydC0+ZGV2Ow0KKwlzdHJ1 Y3QgbWNfbXNpICptc2kgPSAmcG9ydC0+bXNpOw0KKwl2b2lkIF9faW9tZW0gKmJyaWRnZV9iYXNl X2FkZHIgPSBwb3J0LT5heGlfYmFzZV9hZGRyICsgTUNfUENJRTFfQlJJREdFX0FERFI7DQorCXUz MiBzdGF0dXM7DQorCXVuc2lnbmVkIGxvbmcgaW50eF9zdGF0dXM7DQorCXVuc2lnbmVkIGxvbmcg bXNpX3N0YXR1czsNCisJdTMyIGJpdDsNCisJdTMyIHZpcnE7DQorDQorCS8qDQorCSAqIFRoZSBj b3JlIHByb3ZpZGVzIGEgc2luZ2xlIGludGVycnVwdCBmb3IgYm90aCBJTlR4L01TSSBtZXNzYWdl cy4NCisJICogU28gd2UnbGwgcmVhZCBib3RoIElOVHggYW5kIE1TSSBzdGF0dXMuDQorCSAqLw0K KwljaGFpbmVkX2lycV9lbnRlcihjaGlwLCBkZXNjKTsNCisNCisJc3RhdHVzID0gcmVhZGxfcmVs YXhlZChicmlkZ2VfYmFzZV9hZGRyICsgTUNfSVNUQVRVU19MT0NBTCk7DQorCXdoaWxlIChzdGF0 dXMgJiAoUENJX0lOVFMgfCBNU0lfSU5UKSkgew0KKwkJaW50eF9zdGF0dXMgPSAoc3RhdHVzICYg UENJX0lOVFMpID4+IFBNX01TSV9JTlRfU0hJRlQ7DQorCQlmb3JfZWFjaF9zZXRfYml0KGJpdCwg JmludHhfc3RhdHVzLCBQQ0lfTlVNX0lOVFgpIHsNCisJCQl2aXJxID0gaXJxX2ZpbmRfbWFwcGlu Zyhwb3J0LT5pbnR4X2RvbWFpbiwgYml0ICsgMSk7DQorCQkJaWYgKHZpcnEpDQorCQkJCWdlbmVy aWNfaGFuZGxlX2lycSh2aXJxKTsNCisJCQllbHNlDQorCQkJCWRldl9lcnJfcmF0ZWxpbWl0ZWQo ZGV2LCAiYmFkIElOVHggSVJRICVkXG4iLCBiaXQpOw0KKw0KKwkJCS8qIENsZWFyIHRoYXQgaW50 ZXJydXB0IGJpdCAqLw0KKwkJCXdyaXRlbF9yZWxheGVkKDEgPDwgKGJpdCArIFBNX01TSV9JTlRf U0hJRlQpLCBicmlkZ2VfYmFzZV9hZGRyICsNCisJCQkJICAgICAgIE1DX0lTVEFUVVNfTE9DQUwp Ow0KKwkJfQ0KKw0KKwkJbXNpX3N0YXR1cyA9IChzdGF0dXMgJiBNU0lfSU5UKTsNCisJCWlmICht c2lfc3RhdHVzKSB7DQorCQkJbXNpX3N0YXR1cyA9IHJlYWRsX3JlbGF4ZWQoYnJpZGdlX2Jhc2Vf YWRkciArIE1DX0lTVEFUVVNfTVNJKTsNCisJCQlmb3JfZWFjaF9zZXRfYml0KGJpdCwgJm1zaV9z dGF0dXMsIG1zaS0+bnVtX3ZlY3RvcnMpIHsNCisJCQkJdmlycSA9IGlycV9maW5kX21hcHBpbmco bXNpLT5kZXZfZG9tYWluLCBiaXQpOw0KKwkJCQlpZiAodmlycSkNCisJCQkJCWdlbmVyaWNfaGFu ZGxlX2lycSh2aXJxKTsNCisJCQkJZWxzZQ0KKwkJCQkJZGV2X2Vycl9yYXRlbGltaXRlZChkZXYs ICJiYWQgTVNJIElSUSAlZFxuIiwgYml0KTsNCisNCisJCQkJLyogQ2xlYXIgdGhhdCBNU0kgaW50 ZXJydXB0IGJpdCAqLw0KKwkJCQl3cml0ZWxfcmVsYXhlZCgoMSA8PCBiaXQpLCBicmlkZ2VfYmFz ZV9hZGRyICsgTUNfSVNUQVRVU19NU0kpOw0KKwkJCX0NCisJCQkvKiBDbGVhciB0aGUgSVNUQVRV UyBNU0kgYml0ICovDQorCQkJd3JpdGVsX3JlbGF4ZWQoMSA8PCBNU0lfSU5UX1NISUZULCBicmlk Z2VfYmFzZV9hZGRyICsgTUNfSVNUQVRVU19MT0NBTCk7DQorCQl9DQorDQorCQlzdGF0dXMgPSBy ZWFkbF9yZWxheGVkKGJyaWRnZV9iYXNlX2FkZHIgKyBNQ19JU1RBVFVTX0xPQ0FMKTsNCisJfQ0K Kw0KKwljaGFpbmVkX2lycV9leGl0KGNoaXAsIGRlc2MpOw0KK30NCisNCitzdGF0aWMgdm9pZCBt Y19wY2llX2VuYWJsZV9tc2koc3RydWN0IG1jX3BvcnQgKnBvcnQsIHZvaWQgX19pb21lbSAqYmFz ZSkNCit7DQorCXN0cnVjdCBtY19tc2kgKm1zaSA9ICZwb3J0LT5tc2k7DQorCXUzMiBjYXBfb2Zm c2V0ID0gTUNfTVNJX0NBUF9DVFJMX09GRlNFVDsNCisJdTE2IG1zZ19jdHJsID0gcmVhZHdfcmVs YXhlZChiYXNlICsgY2FwX29mZnNldCArIFBDSV9NU0lfRkxBR1MpOw0KKw0KKwltc2dfY3RybCB8 PSBQQ0lfTVNJX0ZMQUdTX0VOQUJMRTsNCisJbXNnX2N0cmwgJj0gflBDSV9NU0lfRkxBR1NfUU1B U0s7DQorCW1zZ19jdHJsIHw9IE1DX01TSV9NQVhfUV9BVkFJTDsNCisJbXNnX2N0cmwgJj0gflBD SV9NU0lfRkxBR1NfUVNJWkU7DQorCW1zZ19jdHJsIHw9IE1DX01TSV9RX1NJWkU7DQorCW1zZ19j dHJsIHw9IFBDSV9NU0lfRkxBR1NfNjRCSVQ7DQorDQorCXdyaXRld19yZWxheGVkKG1zZ19jdHJs LCBiYXNlICsgY2FwX29mZnNldCArIFBDSV9NU0lfRkxBR1MpOw0KKw0KKwl3cml0ZWxfcmVsYXhl ZChsb3dlcl8zMl9iaXRzKG1zaS0+dmVjdG9yX3BoeSksIGJhc2UgKyBjYXBfb2Zmc2V0ICsgUENJ X01TSV9BRERSRVNTX0xPKTsNCisJd3JpdGVsX3JlbGF4ZWQodXBwZXJfMzJfYml0cyhtc2ktPnZl Y3Rvcl9waHkpLCBiYXNlICsgY2FwX29mZnNldCArIFBDSV9NU0lfQUREUkVTU19ISSk7DQorfQ0K Kw0KK3N0YXRpYyB2b2lkIG1jX2NvbXBvc2VfbXNpX21zZyhzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEs IHN0cnVjdCBtc2lfbXNnICptc2cpDQorew0KKwlzdHJ1Y3QgbWNfcG9ydCAqcG9ydCA9IGlycV9k YXRhX2dldF9pcnFfY2hpcF9kYXRhKGRhdGEpOw0KKwlwaHlzX2FkZHJfdCBhZGRyID0gcG9ydC0+ bXNpLnZlY3Rvcl9waHk7DQorDQorCW1zZy0+YWRkcmVzc19sbyA9IGxvd2VyXzMyX2JpdHMoYWRk cik7DQorCW1zZy0+YWRkcmVzc19oaSA9IHVwcGVyXzMyX2JpdHMoYWRkcik7DQorCW1zZy0+ZGF0 YSA9IGRhdGEtPmh3aXJxOw0KKw0KKwlkZXZfZGJnKHBvcnQtPmRldiwgIm1zaSMleCBhZGRyZXNz X2hpICUjeCBhZGRyZXNzX2xvICUjeFxuIiwgKGludClkYXRhLT5od2lycSwNCisJCW1zZy0+YWRk cmVzc19oaSwgbXNnLT5hZGRyZXNzX2xvKTsNCit9DQorDQorc3RhdGljIGludCBtY19tc2lfc2V0 X2FmZmluaXR5KHN0cnVjdCBpcnFfZGF0YSAqaXJxX2RhdGEsIGNvbnN0IHN0cnVjdCBjcHVtYXNr ICptYXNrLCBib29sIGZvcmNlKQ0KK3sNCisJcmV0dXJuIC1FSU5WQUw7DQorfQ0KKw0KK3N0YXRp YyBzdHJ1Y3QgaXJxX2NoaXAgbWNfbXNpX2JvdHRvbV9pcnFfY2hpcCA9IHsNCisJLm5hbWUgPSAi TWljcm9jaGlwIE1TSSIsDQorCS5pcnFfY29tcG9zZV9tc2lfbXNnID0gbWNfY29tcG9zZV9tc2lf bXNnLA0KKwkuaXJxX3NldF9hZmZpbml0eSA9IG1jX21zaV9zZXRfYWZmaW5pdHksDQorfTsNCisN CitzdGF0aWMgaW50IG1jX2lycV9tc2lfZG9tYWluX2FsbG9jKHN0cnVjdCBpcnFfZG9tYWluICpk b21haW4sIHVuc2lnbmVkIGludCB2aXJxLA0KKwkJCQkgICB1bnNpZ25lZCBpbnQgbnJfaXJxcywg dm9pZCAqYXJncykNCit7DQorCXN0cnVjdCBtY19wb3J0ICpwb3J0ID0gZG9tYWluLT5ob3N0X2Rh dGE7DQorCXN0cnVjdCBtY19tc2kgKm1zaSA9ICZwb3J0LT5tc2k7DQorCXZvaWQgX19pb21lbSAq YnJpZGdlX2Jhc2VfYWRkciA9IHBvcnQtPmF4aV9iYXNlX2FkZHIgKyBNQ19QQ0lFMV9CUklER0Vf QUREUjsNCisJdW5zaWduZWQgbG9uZyBiaXQ7DQorCXUzMiByZWc7DQorDQorCVdBUk5fT04obnJf aXJxcyAhPSAxKTsNCisJbXV0ZXhfbG9jaygmbXNpLT5sb2NrKTsNCisJYml0ID0gZmluZF9maXJz dF96ZXJvX2JpdChtc2ktPnVzZWQsIG1zaS0+bnVtX3ZlY3RvcnMpOw0KKwlpZiAoYml0ID49IG1z aS0+bnVtX3ZlY3RvcnMpIHsNCisJCW11dGV4X3VubG9jaygmbXNpLT5sb2NrKTsNCisJCXJldHVy biAtRU5PU1BDOw0KKwl9DQorDQorCXNldF9iaXQoYml0LCBtc2ktPnVzZWQpOw0KKw0KKwlpcnFf ZG9tYWluX3NldF9pbmZvKGRvbWFpbiwgdmlycSwgYml0LCAmbWNfbXNpX2JvdHRvbV9pcnFfY2hp cCwgZG9tYWluLT5ob3N0X2RhdGEsDQorCQkJICAgIGhhbmRsZV9zaW1wbGVfaXJxLCBOVUxMLCBO VUxMKTsNCisNCisJLyogRW5hYmxlIE1TSSBpbnRlcnJ1cHRzICovDQorCXJlZyA9IHJlYWRsX3Jl bGF4ZWQoYnJpZGdlX2Jhc2VfYWRkciArIE1DX0lNQVNLX0xPQ0FMKTsNCisJcmVnIHw9IFBDSUVf RU5BQkxFX01TSTsNCisJd3JpdGVsX3JlbGF4ZWQocmVnLCBicmlkZ2VfYmFzZV9hZGRyICsgTUNf SU1BU0tfTE9DQUwpOw0KKw0KKwltdXRleF91bmxvY2soJm1zaS0+bG9jayk7DQorDQorCXJldHVy biAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBtY19pcnFfbXNpX2RvbWFpbl9mcmVlKHN0cnVjdCBp cnFfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGludCB2aXJxLA0KKwkJCQkgICB1bnNpZ25lZCBp bnQgbnJfaXJxcykNCit7DQorCXN0cnVjdCBpcnFfZGF0YSAqZCA9IGlycV9kb21haW5fZ2V0X2ly cV9kYXRhKGRvbWFpbiwgdmlycSk7DQorCXN0cnVjdCBtY19wb3J0ICpwb3J0ID0gaXJxX2RhdGFf Z2V0X2lycV9jaGlwX2RhdGEoZCk7DQorCXN0cnVjdCBtY19tc2kgKm1zaSA9ICZwb3J0LT5tc2k7 DQorDQorCW11dGV4X2xvY2soJm1zaS0+bG9jayk7DQorDQorCWlmICh0ZXN0X2JpdChkLT5od2ly cSwgbXNpLT51c2VkKSkNCisJCV9fY2xlYXJfYml0KGQtPmh3aXJxLCBtc2ktPnVzZWQpOw0KKwll bHNlDQorCQlkZXZfZXJyKHBvcnQtPmRldiwgInRyeWluZyB0byBmcmVlIHVudXNlZCBNU0klbHVc biIsIGQtPmh3aXJxKTsNCisNCisJbXV0ZXhfdW5sb2NrKCZtc2ktPmxvY2spOw0KK30NCisNCitz dGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIG1zaV9kb21haW5fb3BzID0gew0KKwku YWxsb2MJPSBtY19pcnFfbXNpX2RvbWFpbl9hbGxvYywNCisJLmZyZWUJPSBtY19pcnFfbXNpX2Rv bWFpbl9mcmVlLA0KK307DQorDQorc3RhdGljIHN0cnVjdCBpcnFfY2hpcCBtY19tc2lfaXJxX2No aXAgPSB7DQorCS5uYW1lID0gIk1pY3JvY2hpcCBQQ0llIE1TSSIsDQorCS5pcnFfbWFzayA9IHBj aV9tc2lfbWFza19pcnEsDQorCS5pcnFfdW5tYXNrID0gcGNpX21zaV91bm1hc2tfaXJxLA0KK307 DQorDQorc3RhdGljIHN0cnVjdCBtc2lfZG9tYWluX2luZm8gbWNfbXNpX2RvbWFpbl9pbmZvID0g ew0KKwkuZmxhZ3MgPSAoTVNJX0ZMQUdfVVNFX0RFRl9ET01fT1BTIHwgTVNJX0ZMQUdfVVNFX0RF Rl9DSElQX09QUyB8IE1TSV9GTEFHX1BDSV9NU0lYKSwNCisJLmNoaXAgPSAmbWNfbXNpX2lycV9j aGlwLA0KK307DQorDQorc3RhdGljIGludCBtY19hbGxvY2F0ZV9tc2lfZG9tYWlucyhzdHJ1Y3Qg bWNfcG9ydCAqcG9ydCkNCit7DQorCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBvcnQtPmRldjsNCisJ c3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSA9IG9mX25vZGVfdG9fZndub2RlKGRldi0+b2Zf bm9kZSk7DQorCXN0cnVjdCBtY19tc2kgKm1zaSA9ICZwb3J0LT5tc2k7DQorDQorCW11dGV4X2lu aXQoJnBvcnQtPm1zaS5sb2NrKTsNCisNCisJbXNpLT5kZXZfZG9tYWluID0gaXJxX2RvbWFpbl9h ZGRfbGluZWFyKE5VTEwsIG1zaS0+bnVtX3ZlY3RvcnMsICZtc2lfZG9tYWluX29wcywgcG9ydCk7 DQorCWlmICghbXNpLT5kZXZfZG9tYWluKSB7DQorCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBj cmVhdGUgSVJRIGRvbWFpblxuIik7DQorCQlyZXR1cm4gLUVOT01FTTsNCisJfQ0KKw0KKwltc2kt Pm1zaV9kb21haW4gPSBwY2lfbXNpX2NyZWF0ZV9pcnFfZG9tYWluKGZ3bm9kZSwgJm1jX21zaV9k b21haW5faW5mbywgbXNpLT5kZXZfZG9tYWluKTsNCisJaWYgKCFtc2ktPm1zaV9kb21haW4pIHsN CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBNU0kgZG9tYWluXG4iKTsNCisJCWly cV9kb21haW5fcmVtb3ZlKG1zaS0+ZGV2X2RvbWFpbik7DQorCQlyZXR1cm4gLUVOT01FTTsNCisJ fQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIHZvaWQgbWNfbWFza19pbnR4X2lycShz dHJ1Y3QgaXJxX2RhdGEgKmRhdGEpDQorew0KKwlzdHJ1Y3QgbWNfcG9ydCAqcG9ydCA9IGlycV9k YXRhX2dldF9pcnFfY2hpcF9kYXRhKGRhdGEpOw0KKwl2b2lkIF9faW9tZW0gKmJyaWRnZV9iYXNl X2FkZHIgPSBwb3J0LT5heGlfYmFzZV9hZGRyICsgTUNfUENJRTFfQlJJREdFX0FERFI7DQorCXVu c2lnbmVkIGxvbmcgZmxhZ3M7DQorCXUzMiB2YWw7DQorDQorCXJhd19zcGluX2xvY2tfaXJxc2F2 ZSgmcG9ydC0+aW50eF9tYXNrX2xvY2ssIGZsYWdzKTsNCisJdmFsID0gcmVhZGxfcmVsYXhlZChi cmlkZ2VfYmFzZV9hZGRyICsgTUNfSU1BU0tfTE9DQUwpOw0KKwl2YWwgJj0gflBDSUVfTE9DQUxf SU5UX0VOQUJMRTsNCisJd3JpdGVsX3JlbGF4ZWQodmFsLCBicmlkZ2VfYmFzZV9hZGRyICsgTUNf SU1BU0tfTE9DQUwpOw0KKwlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcG9ydC0+aW50eF9t YXNrX2xvY2ssIGZsYWdzKTsNCit9DQorDQorc3RhdGljIHZvaWQgbWNfdW5tYXNrX2ludHhfaXJx KHN0cnVjdCBpcnFfZGF0YSAqZGF0YSkNCit7DQorCXN0cnVjdCBtY19wb3J0ICpwb3J0ID0gaXJx X2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZGF0YSk7DQorCXZvaWQgX19pb21lbSAqYnJpZGdlX2Jh c2VfYWRkciA9IHBvcnQtPmF4aV9iYXNlX2FkZHIgKyBNQ19QQ0lFMV9CUklER0VfQUREUjsNCisJ dW5zaWduZWQgbG9uZyBmbGFnczsNCisJdTMyIHZhbDsNCisNCisJcmF3X3NwaW5fbG9ja19pcnFz YXZlKCZwb3J0LT5pbnR4X21hc2tfbG9jaywgZmxhZ3MpOw0KKwl2YWwgPSByZWFkbF9yZWxheGVk KGJyaWRnZV9iYXNlX2FkZHIgKyBNQ19JTUFTS19MT0NBTCk7DQorCXZhbCB8PSBQQ0lFX0xPQ0FM X0lOVF9FTkFCTEU7DQorCXdyaXRlbF9yZWxheGVkKHZhbCwgYnJpZGdlX2Jhc2VfYWRkciArIE1D X0lNQVNLX0xPQ0FMKTsNCisJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBvcnQtPmludHhf bWFza19sb2NrLCBmbGFncyk7DQorfQ0KKw0KK3N0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgbWNfaW50 eF9pcnFfY2hpcCA9IHsNCisJLm5hbWUgPSAiTWljcm9jaGlwIFBDSWUgSU5UeCIsDQorCS5pcnFf bWFzayA9IG1jX21hc2tfaW50eF9pcnEsDQorCS5pcnFfdW5tYXNrID0gbWNfdW5tYXNrX2ludHhf aXJxLA0KK307DQorDQorc3RhdGljIGludCBtY19wY2llX2ludHhfbWFwKHN0cnVjdCBpcnFfZG9t YWluICpkb21haW4sIHVuc2lnbmVkIGludCBpcnEsDQorCQkJICAgIGlycV9od19udW1iZXJfdCBo d2lycSkNCit7DQorCWlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsICZtY19pbnR4X2lycV9j aGlwLCBoYW5kbGVfc2ltcGxlX2lycSk7DQorCWlycV9zZXRfY2hpcF9kYXRhKGlycSwgZG9tYWlu LT5ob3N0X2RhdGEpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGNvbnN0IHN0cnVj dCBpcnFfZG9tYWluX29wcyBpbnR4X2RvbWFpbl9vcHMgPSB7DQorCS5tYXAgPSBtY19wY2llX2lu dHhfbWFwLA0KK307DQorDQorc3RhdGljIGludCBtY19wY2llX2luaXRfaXJxX2RvbWFpbnMoc3Ry dWN0IG1jX3BvcnQgKnBvcnQpDQorew0KKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwb3J0LT5kZXY7 DQorCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IGRldi0+b2Zfbm9kZTsNCisNCisJcG9ydC0+ aW50eF9kb21haW4gPSBpcnFfZG9tYWluX2FkZF9saW5lYXIobm9kZSwgUENJX05VTV9JTlRYLCAm aW50eF9kb21haW5fb3BzLCBwb3J0KTsNCisJaWYgKCFwb3J0LT5pbnR4X2RvbWFpbikgew0KKwkJ ZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IGFuIElOVHggSVJRIGRvbWFpblxuIik7DQorCQly ZXR1cm4gLUVOT01FTTsNCisJfQ0KKwlyYXdfc3Bpbl9sb2NrX2luaXQoJnBvcnQtPmludHhfbWFz a19sb2NrKTsNCisNCisJcmV0dXJuIG1jX2FsbG9jYXRlX21zaV9kb21haW5zKHBvcnQpOw0KK30N CisNCitzdGF0aWMgdm9pZCBtY19zZXR1cF93aW5kb3codm9pZCBfX2lvbWVtICpicmlkZ2VfYmFz ZV9hZGRyLCB1MzIgaW5kZXgsIHBoeXNfYWRkcl90IGF4aV9hZGRyLA0KKwkJCSAgICBwaHlzX2Fk ZHJfdCBwY2lfYWRkciwgc2l6ZV90IHNpemUpDQorew0KKwl1MzIgYXRyX3N6ID0gaWxvZzIoc2l6 ZSkgLSAxOw0KKwl1MzIgdmFsOw0KKw0KKwlpZiAoaW5kZXggPT0gMCkNCisJCXZhbCA9IFBDSUVf Q09ORklHX0lOVEVSRkFDRTsNCisJZWxzZQ0KKwkJdmFsID0gUENJRV9UWF9SWF9JTlRFUkZBQ0U7 DQorDQorCXdyaXRlbCh2YWwsIGJyaWRnZV9iYXNlX2FkZHIgKyAoaW5kZXggKiBBVFJfRU5UUllf U0laRSkgKyBNQ19BVFIwX0FYSTRfU0xWMF9UUlNMX1BBUkFNKTsNCisNCisJdmFsID0gbG93ZXJf MzJfYml0cyhheGlfYWRkcikgfCAoYXRyX3N6IDw8IEFUUl9TSVpFX1NISUZUKSB8IEFUUl9JTVBM X0VOQUJMRTsNCisJd3JpdGVsKHZhbCwgYnJpZGdlX2Jhc2VfYWRkciArIChpbmRleCAqIEFUUl9F TlRSWV9TSVpFKSArDQorCSAgICAgICBNQ19BVFIwX0FYSTRfU0xWMF9TUkNBRERSX1BBUkFNKTsN CisNCisJdmFsID0gdXBwZXJfMzJfYml0cyhheGlfYWRkcik7DQorDQorCXdyaXRlbCh2YWwsIGJy aWRnZV9iYXNlX2FkZHIgKyAoaW5kZXggKiBBVFJfRU5UUllfU0laRSkgKw0KKwkgICAgICAgTUNf QVRSMF9BWEk0X1NMVjBfU1JDX0FERFIpOw0KKw0KKwl2YWwgPSBsb3dlcl8zMl9iaXRzKHBjaV9h ZGRyKTsNCisJd3JpdGVsKHZhbCwgYnJpZGdlX2Jhc2VfYWRkciArIChpbmRleCAqIEFUUl9FTlRS WV9TSVpFKSArDQorCSAgICAgICBNQ19BVFIwX0FYSTRfU0xWMF9UUlNMX0FERFJfTFNCKTsNCisN CisJdmFsID0gdXBwZXJfMzJfYml0cyhwY2lfYWRkcik7DQorCXdyaXRlbCh2YWwsIGJyaWRnZV9i YXNlX2FkZHIgKyAoaW5kZXggKiBBVFJfRU5UUllfU0laRSkgKw0KKwkgICAgICAgTUNfQVRSMF9B WEk0X1NMVjBfVFJTTF9BRERSX1VEVyk7DQorDQorCXZhbCA9IHJlYWRsKGJyaWRnZV9iYXNlX2Fk ZHIgKyBNQ19BVFIwX1BDSUVfV0lOMF9TUkNBRERSX1BBUkFNKTsNCisJdmFsIHw9IChBVFIwX1BD SUVfQVRSX1NJWkUgPDwgQVRSMF9QQ0lFX0FUUl9TSVpFX1NISUZUKTsNCisJd3JpdGVsKHZhbCwg YnJpZGdlX2Jhc2VfYWRkciArIE1DX0FUUjBfUENJRV9XSU4wX1NSQ0FERFJfUEFSQU0pOw0KKwl3 cml0ZWwoMCwgYnJpZGdlX2Jhc2VfYWRkciArIE1DX0FUUjBfUENJRV9XSU4wX1NSQ19BRERSKTsN Cit9DQorDQorc3RhdGljIGludCBtY19zZXR1cF93aW5kb3dzKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYsIHN0cnVjdCBtY19wb3J0ICpwb3J0KQ0KK3sNCisJdm9pZCBfX2lvbWVtICpicmlk Z2VfYmFzZV9hZGRyID0gcG9ydC0+YXhpX2Jhc2VfYWRkciArIE1DX1BDSUUxX0JSSURHRV9BRERS Ow0KKwlzdHJ1Y3QgcGNpX2hvc3RfYnJpZGdlICpicmlkZ2UgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0 YShwZGV2KTsNCisJc3RydWN0IHJlc291cmNlX2VudHJ5ICplbnRyeTsNCisJdTY0IHBjaV9hZGRy Ow0KKwl1MzIgaW5kZXggPSAxOw0KKw0KKwlyZXNvdXJjZV9saXN0X2Zvcl9lYWNoX2VudHJ5KGVu dHJ5LCAmYnJpZGdlLT53aW5kb3dzKSB7DQorCQlpZiAocmVzb3VyY2VfdHlwZShlbnRyeS0+cmVz KSA9PSBJT1JFU09VUkNFX01FTSkgew0KKwkJCXBjaV9hZGRyID0gZW50cnktPnJlcy0+c3RhcnQg LSBlbnRyeS0+b2Zmc2V0Ow0KKwkJCW1jX3NldHVwX3dpbmRvdyhicmlkZ2VfYmFzZV9hZGRyLCBp bmRleCwgZW50cnktPnJlcy0+c3RhcnQsDQorCQkJCQlwY2lfYWRkciwgcmVzb3VyY2Vfc2l6ZShl bnRyeS0+cmVzKSk7DQorCQkJaW5kZXgrKzsNCisJCX0NCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9 DQorDQorc3RhdGljIGludCBtY19wbGF0Zm9ybV9pbml0KHN0cnVjdCBwY2lfY29uZmlnX3dpbmRv dyAqY2ZnKQ0KK3sNCisJc3RydWN0IGRldmljZSAqZGV2ID0gY2ZnLT5wYXJlbnQ7DQorCXN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2UoZGV2KTsNCisJc3Ry dWN0IG1jX3BvcnQgKnBvcnQ7DQorCXZvaWQgX19pb21lbSAqYnJpZGdlX2Jhc2VfYWRkcjsNCisJ dm9pZCBfX2lvbWVtICpjdHJsX2Jhc2VfYWRkcjsNCisJaW50IHJldDsNCisJaW50IGlycTsNCisJ dTMyIHZhbDsNCisNCisJcG9ydCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcG9ydCksIEdG UF9LRVJORUwpOw0KKwlpZiAoIXBvcnQpDQorCQlyZXR1cm4gLUVOT01FTTsNCisJcG9ydC0+ZGV2 ID0gZGV2Ow0KKw0KKwlwb3J0LT5heGlfYmFzZV9hZGRyID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFw X3Jlc291cmNlKHBkZXYsIDEpOw0KKwlpZiAoSVNfRVJSKHBvcnQtPmF4aV9iYXNlX2FkZHIpKQ0K KwkJcmV0dXJuIFBUUl9FUlIocG9ydC0+YXhpX2Jhc2VfYWRkcik7DQorDQorCWJyaWRnZV9iYXNl X2FkZHIgPSBwb3J0LT5heGlfYmFzZV9hZGRyICsgTUNfUENJRTFfQlJJREdFX0FERFI7DQorCWN0 cmxfYmFzZV9hZGRyID0gcG9ydC0+YXhpX2Jhc2VfYWRkciArIE1DX1BDSUUxX0NUUkxfQUREUjsN CisNCisJcG9ydC0+bXNpLnZlY3Rvcl9waHkgPSBNQ19NU0lfQUREUjsNCisJcG9ydC0+bXNpLm51 bV92ZWN0b3JzID0gTUNfTlVNX01TSV9JUlFTOw0KKwlyZXQgPSBtY19wY2llX2luaXRfaXJxX2Rv bWFpbnMocG9ydCk7DQorCWlmIChyZXQpIHsNCisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIGNyZWF0 aW5nIElSUSBkb21haW5zXG4iKTsNCisJCXJldHVybiByZXQ7DQorCX0NCisNCisJaXJxID0gcGxh dGZvcm1fZ2V0X2lycShwZGV2LCAwKTsNCisJaWYgKGlycSA8IDApIHsNCisJCWRldl9lcnIoZGV2 LCAidW5hYmxlIHRvIHJlcXVlc3QgSVJRJWRcbiIsIGlycSk7DQorCQlyZXR1cm4gLUVOT0RFVjsN CisJfQ0KKw0KKwlpcnFfc2V0X2NoYWluZWRfaGFuZGxlcl9hbmRfZGF0YShpcnEsIG1jX3BjaWVf aXNyLCBwb3J0KTsNCisNCisJLyogSGFyZHdhcmUgZG9lc24ndCBzZXR1cCBNU0kgYnkgZGVmYXVs dCAqLw0KKwltY19wY2llX2VuYWJsZV9tc2kocG9ydCwgY2ZnLT53aW4pOw0KKw0KKwl2YWwgPSBQ Q0lFX0VOQUJMRV9NU0kgfCBQQ0lFX0xPQ0FMX0lOVF9FTkFCTEU7DQorCXdyaXRlbF9yZWxheGVk KHZhbCwgYnJpZGdlX2Jhc2VfYWRkciArIE1DX0lNQVNLX0xPQ0FMKTsNCisNCisJdmFsID0gcmVh ZGxfcmVsYXhlZChicmlkZ2VfYmFzZV9hZGRyICsgTUNfTFRTU01fU1RBVEUpOw0KKwl2YWwgfD0g TFRTU01fTDBfU1RBVEU7DQorCXdyaXRlbF9yZWxheGVkKHZhbCwgYnJpZGdlX2Jhc2VfYWRkciAr IE1DX0xUU1NNX1NUQVRFKTsNCisNCisJdmFsID0gRUNDX0NPTlRST0xfQVhJMlBDSUVfUkFNX0VD Q19CWVBBU1MgfCBFQ0NfQ09OVFJPTF9QQ0lFMkFYSV9SQU1fRUNDX0JZUEFTUyB8DQorCSAgICAg IEVDQ19DT05UUk9MX1JYX1JBTV9FQ0NfQllQQVNTIHwgRUNDX0NPTlRST0xfVFhfUkFNX0VDQ19C WVBBU1M7DQorCXdyaXRlbF9yZWxheGVkKHZhbCwgY3RybF9iYXNlX2FkZHIgKyBNQ19FQ0NfQ09O VFJPTCk7DQorDQorCXZhbCA9IFBDSUVfRVZFTlRfSU5UX0wyX0VYSVRfSU5UIHwgUENJRV9FVkVO VF9JTlRfSE9UUlNUX0VYSVRfSU5UIHwNCisJICAgICAgUENJRV9FVkVOVF9JTlRfRExVUF9FWElU X0lOVCB8IFBDSUVfRVZFTlRfSU5UX0wyX0VYSVRfSU5UX01BU0sgfA0KKwkgICAgICBQQ0lFX0VW RU5UX0lOVF9IT1RSU1RfRVhJVF9JTlRfTUFTSyB8IFBDSUVfRVZFTlRfSU5UX0RMVVBfRVhJVF9J TlRfTUFTSzsNCisJd3JpdGVsX3JlbGF4ZWQodmFsLCBjdHJsX2Jhc2VfYWRkciArIE1DX1BDSUVf RVZFTlRfSU5UKTsNCisNCisJdmFsID0gU0VDX0VSUk9SX0lOVF9UWF9SQU1fU0VDX0VSUl9JTlQg fCBTRUNfRVJST1JfSU5UX1JYX1JBTV9TRUNfRVJSX0lOVCB8DQorCSAgICAgIFNFQ19FUlJPUl9J TlRfUENJRTJBWElfUkFNX1NFQ19FUlJfSU5UIHwgU0VDX0VSUk9SX0lOVF9BWEkyUENJRV9SQU1f U0VDX0VSUl9JTlQ7DQorCXdyaXRlbF9yZWxheGVkKHZhbCwgY3RybF9iYXNlX2FkZHIgKyBNQ19T RUNfRVJST1JfSU5UKTsNCisJd3JpdGVsX3JlbGF4ZWQodmFsLCBjdHJsX2Jhc2VfYWRkciArIE1D X1NFQ19FUlJPUl9JTlRfTUFTSyk7DQorDQorCXZhbCA9IERFRF9FUlJPUl9JTlRfVFhfUkFNX0RF RF9FUlJfSU5UIHwgREVEX0VSUk9SX0lOVF9SWF9SQU1fREVEX0VSUl9JTlQgfA0KKwkgICAgICBE RURfRVJST1JfSU5UX1BDSUUyQVhJX1JBTV9ERURfRVJSX0lOVCB8IERFRF9FUlJPUl9JTlRfQVhJ MlBDSUVfUkFNX0RFRF9FUlJfSU5UOw0KKwl3cml0ZWxfcmVsYXhlZCh2YWwsIGN0cmxfYmFzZV9h ZGRyICsgTUNfREVEX0VSUk9SX0lOVCk7DQorCXdyaXRlbF9yZWxheGVkKHZhbCwgY3RybF9iYXNl X2FkZHIgKyBNQ19ERURfRVJST1JfSU5UX01BU0spOw0KKw0KKwl3cml0ZWxfcmVsYXhlZCgwLCBi cmlkZ2VfYmFzZV9hZGRyICsgTUNfSU1BU0tfTE9DQUwpOw0KKwl3cml0ZWxfcmVsYXhlZChHRU5N QVNLKDMxLCAwKSwgYnJpZGdlX2Jhc2VfYWRkciArIE1DX0lTVEFUVVNfTE9DQUwpOw0KKwl3cml0 ZWxfcmVsYXhlZCgwLCBicmlkZ2VfYmFzZV9hZGRyICsgTUNfSU1BU0tfSE9TVCk7DQorCXdyaXRl bF9yZWxheGVkKEdFTk1BU0soMzEsIDApLCBicmlkZ2VfYmFzZV9hZGRyICsgTUNfSVNUQVRVU19I T1NUKTsNCisNCisJLyogQ29uZmlndXJlIEFkZHJlc3MgVHJhbnNsYXRpb24gVGFibGUgMCBmb3Ig UENJZSBjb25maWcgc3BhY2UgKi8NCisJbWNfc2V0dXBfd2luZG93KGJyaWRnZV9iYXNlX2FkZHIs IDAsIGNmZy0+cmVzLnN0YXJ0ICYgMHhmZmZmZmZmZiwgY2ZnLT5yZXMuc3RhcnQsDQorCQkJcmVz b3VyY2Vfc2l6ZSgmY2ZnLT5yZXMpKTsNCisNCisJcmV0dXJuIG1jX3NldHVwX3dpbmRvd3MocGRl diwgcG9ydCk7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2VjYW1fb3BzIG1jX2Vj YW1fb3BzID0gew0KKwkuYnVzX3NoaWZ0ID0gMjAsDQorCS5pbml0ID0gbWNfcGxhdGZvcm1faW5p dCwNCisJLnBjaV9vcHMgPSB7DQorCQkubWFwX2J1cyA9IHBjaV9lY2FtX21hcF9idXMsDQorCQku cmVhZCA9IHBjaV9nZW5lcmljX2NvbmZpZ19yZWFkLA0KKwkJLndyaXRlID0gcGNpX2dlbmVyaWNf Y29uZmlnX3dyaXRlLA0KKwl9DQorfTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rldmlj ZV9pZCBtY19wY2llX29mX21hdGNoW10gPSB7DQorCXsNCisJCS5jb21wYXRpYmxlID0gIm1pY3Jv Y2hpcCxwY2llLWhvc3QtMS4wIiwNCisJCS5kYXRhID0gJm1jX2VjYW1fb3BzLA0KKwl9LA0KKwl7 fSwNCit9Ow0KKw0KK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1jX3BjaWVfb2ZfbWF0Y2gpDQor DQorc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWNfcGNpZV9kcml2ZXIgPSB7DQorCS5w cm9iZSA9IHBjaV9ob3N0X2NvbW1vbl9wcm9iZSwNCisJLmRyaXZlciA9IHsNCisJCS5uYW1lID0g Im1pY3JvY2hpcC1wY2llIiwNCisJCS5vZl9tYXRjaF90YWJsZSA9IG1jX3BjaWVfb2ZfbWF0Y2gs DQorCQkuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsDQorCX0sDQorfTsNCisNCitidWlsdGlu X3BsYXRmb3JtX2RyaXZlcihtY19wY2llX2RyaXZlcik7DQorTU9EVUxFX0xJQ0VOU0UoIkdQTCB2 MiIpOw0KK01PRFVMRV9ERVNDUklQVElPTigiTWljcm9jaGlwIFBDSWUgaG9zdCBjb250cm9sbGVy IGRyaXZlciIpOw0KK01PRFVMRV9BVVRIT1IoIkRhaXJlIE1jTmFtYXJhIDxkYWlyZS5tY25hbWFy YUBtaWNyb2NoaXAuY29tPiIpOw0KLS0gDQoyLjI1LjENCg0K