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.7 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 E1FC7C433E1 for ; Wed, 19 Aug 2020 16:33:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id AE49920885 for ; Wed, 19 Aug 2020 16:33:26 +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="NQqYzP1D"; dkim=pass (1024-bit key) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.b="ZlL0scTM" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726846AbgHSQdZ (ORCPT ); Wed, 19 Aug 2020 12:33:25 -0400 Received: from esa1.microchip.iphmx.com ([68.232.147.91]:40581 "EHLO esa1.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726461AbgHSQdQ (ORCPT ); Wed, 19 Aug 2020 12:33:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1597854794; x=1629390794; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=Z0roO4kIsytWBVQV2iSximFUdA92mCWrO01GPntLwCs=; b=NQqYzP1DJ5J+Wi10cc2tpWznSRuNvffVJHGaRttU2+wc71QJok/mCnub tyMHb8E+gStaGecLeowgJaS8y+evNAY7RpvxGWAkxDxJIUrdetYqdTJWi egDE59shLNEkzxDPQMX01zNR8BmZ5kilA+kbt7XExZz2Tn+VcAB3o0DTn 7ZVU4br64cMp9BopGEQgyBVduFm7e7deoPAE4m0oXvNrz8zpU58pYPFtl BoSkd7ypKpFqZ7w3FEpj7GybVyB3qikNeJrdkHPZCn8lRlrOUuRUXq9Om FUHaIBWrmrGfPTLmMm+CNv9CONABENgEfVcjmTXPSIE6u3bN2dRHToXvo Q==; IronPort-SDR: 4lc/IOzHzyEXz0Uwuje6vZ+NM6Bd1wYuaFWv8t53pfYMqlwKsYgF3T/6p/sChxVrDopLLx3Tp1 ScDp9K1t1mDAy+p70B7GZcw7rXvbphXfCo3yy44HsDOFZIHzGtW6crf7U2Qp19WCtk6Yi8Z69R WVhm+lbm+B7JYWRtH6ADO+232FzIusavIIQcqSl8zvFEizBG3H0vrKy6FBJa5+hmQ2Q/pimWD6 uqSJknul9XtLw+IRc0E4A/DXwNfAkQCFqqzptDI2NOYvtgChqz802wrclqdih0XsgRXUaxl1VM a4c= X-IronPort-AV: E=Sophos;i="5.76,332,1592895600"; d="scan'208";a="92385807" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa1.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 19 Aug 2020 09:33:12 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) 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; Wed, 19 Aug 2020 09:33:08 -0700 Received: from NAM04-CO1-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3 via Frontend Transport; Wed, 19 Aug 2020 09:33:08 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E1iKBbFt8inmC/3crXP2LEIrITU8M0Nybh7cjD3sh75gYsJTtpFhMNDINWUFklIjVgX/a4rlzD2tBqBJs1dbumniv8QgZJbN7NJPFG9g+Nc2mdtEF7YATIMZ/wCIOcb+kwxQqLWLCVrebIRSzwVde82kdIfXsD5f/w0vP7nTGl0Fp/NZNfSI22a1e0AQzDtVcuhCTtkxJz/nWeqJ4Y6YR4aoaTJ2E2GlHKfvmqYTuK8NpHZScTVvndbZDsW5pjmGkJTvYsA6Yk2yemPCsBBN/yx+P+ew9+xoD3fy1Jtrxlu0QRXs0fYPuClDzC9xo5HyHvGB2EO8i/CGO7DK4V/NIw== 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=Z0roO4kIsytWBVQV2iSximFUdA92mCWrO01GPntLwCs=; b=Ip5j7I53+v0ZHQ2EV3JRZA0zbMrif1d9Qux8x4IkTh5g6riCvOxRlPCgKgd5jWTA90YfS91sOGJWtzIkTZINsHO23wd4pXtedBHqqCiwI5Vyvfz2Z86jTDit/AO6EU20ed0cGPAM14VzDzlTNNiXH+c3euzGZ/rRBKhnSgqwf8ujs9RoF6M8dzb4iG7hyGbB4QQ07yxXN3IVPCgBAVAlXjpjxqmwvyNar5XuSfyDex9vMSECwfS7MQgwdwLSnDT66orjsXSNtfGqfTbC1uM8UwUCsy5Djzwf40IdBvAz/j+twXL/ykQ4oXfbqsg49YvY/aRBSzO3YNk1ch7g5hwulw== 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=Z0roO4kIsytWBVQV2iSximFUdA92mCWrO01GPntLwCs=; b=ZlL0scTMnEThIjuTmfTJPSKT4EIat8+R1VtpHE1woTUJFkruNJ2vrwO5xHWuwopCgwDfRG3oRfjdKgNbOT6Wr74didLz32AQUPvO6Tb7RtWPdo5xFFLuW89YDbJCZ2FZw00e4/bUf6380dXyl7DRYQiLswW7YvtYH5lvrVvvHUQ= Received: from MN2PR11MB4269.namprd11.prod.outlook.com (2603:10b6:208:190::32) by BL0PR11MB2916.namprd11.prod.outlook.com (2603:10b6:208:72::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3305.24; Wed, 19 Aug 2020 16:33:10 +0000 Received: from MN2PR11MB4269.namprd11.prod.outlook.com ([fe80::2015:b551:35a7:4c12]) by MN2PR11MB4269.namprd11.prod.outlook.com ([fe80::2015:b551:35a7:4c12%7]) with mapi id 15.20.3305.024; Wed, 19 Aug 2020 16:33:10 +0000 From: To: , , , , , CC: Subject: [PATCH v15 2/2] PCI: microchip: Add host driver for Microchip PCIe controller Thread-Topic: [PATCH v15 2/2] PCI: microchip: Add host driver for Microchip PCIe controller Thread-Index: AQHWdkZtmyuYQk0L50G5TeP5PDNGsQ== Date: Wed, 19 Aug 2020 16:33:10 +0000 Message-ID: References: <954a9f86bbfe929bc37653f1e616e8acff8b4bd8.camel@microchip.com> In-Reply-To: <954a9f86bbfe929bc37653f1e616e8acff8b4bd8.camel@microchip.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: kernel.org; dkim=none (message not signed) header.d=none;kernel.org; dmarc=none action=none header.from=microchip.com; x-originating-ip: [87.42.139.3] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3c6e0924-a821-47e2-e1c4-08d8445d8f90 x-ms-traffictypediagnostic: BL0PR11MB2916: x-ms-exchange-transport-forked: True 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: XWbw8HRb8ZeaOtyQ4SY4i+C8F1iJXSPqdGZPCwUYcYnLsh244wg8lrfKnAUszf8z+rTcOfMPlmKOR13GPZLrj9xmlSyiESDtqrGXYq8rqI3a6oNgQRP6RBwjNKkNvS5xTmVQeK9Mxzu9M/fTa1BwSSuq5CihbbcKM06//kzvx6dnN11dKjSPUwTI4UWI3o/VfPy1zLsrAKPbbWtWvkZaVCuVQF9wicPHfGKytN3+OcyrbOFctgtL7XWh5KfMk6b7nccA+WMJyrFcZrDGVA2Vk9eUnzKAPPikOH66aPQXXlL5o44o5rPKeJ1GCDIGb6SlFcLU3XvarPV/MQl4LR1xSQ== 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:(396003)(376002)(346002)(366004)(39860400002)(136003)(91956017)(30864003)(64756008)(36756003)(83380400001)(6506007)(66446008)(66476007)(5660300002)(66556008)(186003)(6486002)(8936002)(2616005)(8676002)(2906002)(26005)(110136005)(4326008)(6512007)(71200400001)(76116006)(66946007)(316002)(86362001)(478600001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: PqDpgd8UOm7XnI935yjEacL3xR0iH0zlOBOX+clV1i7so4QcSOTnHFkP9O184gvHTrdRt7Exd1/PYwQqm8S+QBTYnuAgKYoDeeKZmpxjMdUJ8IXldtjNARwSnydWJOsZtUvM0gvCFMmTyxISLG/IIyMV2ovCgZwTPzuTazPRkhVvzBjXovv9HdMgQx+yCgOtjumD9RLIXNBPNgdJJF3UXJv7CsFrk+M4bELXdg4WKXWkrYi4Nmuh5TX6gbrPL1xEtel50jQv59Mp30aq/s6HbdoeA8Q+LBy/NBVfGlUpQPqS3KznWiOCHPN2maYvJWV9RX7oGJYLE34uemIgNJLlajyYD982X8qh1qkSfaZfIxfFO0M2NJkfnOiFZk5NRBbWSx9U/gLI1EnC2eIgqj6ZVTsrfILOCKTFbFfLzBSbAfeo3qIEQwA0MisLADrSMbjKzhr2OM7a7QPcLdOb8E7PXOn1BnkZuTQJJWOG6d6/js5M+L6CmGc/JzMS/i5xqSPq62Wd341jaR1hgNgEN0x0Gxd9A8s1NBAMKptIYLPv4ueRCA/avHejDxYgxdSgA5ApqfZQvVdrsNfj1upxhWrbZV9HYUztFJ0HkKTyLUu/Ic2mDgYRzjkvSPO+jIuGQ28MAckqsn/RbzYarQoZ6E3T9Q== 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: 3c6e0924-a821-47e2-e1c4-08d8445d8f90 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Aug 2020 16:33:10.3359 (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: HXJ+/Bb3hTraMJif9fhhODDuZWYv4rZGSWAWyZeNIPsYHMTfZt+v+PdVc8+ueLGzd8Z3lWCBGsGQRogkn1ji4ujWRscNwOUH+afmL0+Gnm4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR11MB2916 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org DQpBZGQgc3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBQb2xhckZpcmUgUENJZSBjb250cm9sbGVy IHdoZW4NCmNvbmZpZ3VyZWQgaW4gaG9zdCAoUm9vdCBDb21wbGV4KSBtb2RlLg0KDQpTaWduZWQt b2ZmLWJ5OiBEYWlyZSBNY05hbWFyYSA8ZGFpcmUubWNuYW1hcmFAbWljcm9jaGlwLmNvbT4NCi0t LQ0KIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZyAgICAgICAgICAgICAgIHwgICA5ICsN CiBkcml2ZXJzL3BjaS9jb250cm9sbGVyL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMSArDQog ZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLW1pY3JvY2hpcC1ob3N0LmMgfCA1NjAgKysrKysr KysrKysrKysrKysrKw0KIDMgZmlsZXMgY2hhbmdlZCwgNTcwIGluc2VydGlvbnMoKykNCiBjcmVh 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 bW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uNTJmZWZkMmQyYzE0DQotLS0gL2Rldi9u dWxsDQorKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbWljcm9jaGlwLWhvc3QuYw0K QEAgLTAsMCArMSw1NjAgQEANCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0K Ky8qDQorICogTWljcm9jaGlwIEFYSSBQQ0llIEJyaWRnZSBob3N0IGNvbnRyb2xsZXIgZHJpdmVy DQorICoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTggLSAyMDIwIE1pY3JvY2hpcCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIEF1dGhvcjogRGFpcmUgTWNOYW1hcmEg PGRhaXJlLm1jbmFtYXJhQG1pY3JvY2hpcC5jb20+DQorICoNCisgKiBCYXNlZCBvbjoNCisgKglw Y2llLXJjYXIuYw0KKyAqCXBjaWUteGlsaW54LmMNCisgKglwY2llLWFsdGVyYS5jDQorICovDQor I2luY2x1ZGUgPGxpbnV4L2lycWNoaXAvY2hhaW5lZF9pcnEuaD4NCisjaW5jbHVkZSA8bGludXgv bW9kdWxlLmg+DQorI2luY2x1ZGUgPGxpbnV4L21zaS5oPg0KKyNpbmNsdWRlIDxsaW51eC9vZl9h ZGRyZXNzLmg+DQorI2luY2x1ZGUgPGxpbnV4L29mX2lycS5oPg0KKyNpbmNsdWRlIDxsaW51eC9v Zl9wY2kuaD4NCisjaW5jbHVkZSA8bGludXgvcGNpLWVjYW0uaD4NCisjaW5jbHVkZSA8bGludXgv cGxhdGZvcm1fZGV2aWNlLmg+DQorDQorI2luY2x1ZGUgIi4uL3BjaS5oIg0KKw0KKy8qIE51bWJl ciBvZiBNU0kgSVJRcyAqLw0KKyNkZWZpbmUgTUNfTlVNX01TSV9JUlFTCQkJCTMyDQorI2RlZmlu ZSBNQ19OVU1fTVNJX0lSUVNfQ09ERUQJCQk1DQorDQorLyogUENJZSBCcmlkZ2UgUGh5IGFuZCBD b250cm9sbGVyIFBoeSBvZmZzZXRzICovDQorI2RlZmluZSBNQ19QQ0lFMV9CUklER0VfQUREUgkJ CTB4MDAwMDgwMDB1DQorI2RlZmluZSBNQ19QQ0lFMV9DVFJMX0FERFIJCQkweDAwMDBhMDAwdQ0K Kw0KKy8qIFBDSWUgQ29udHJvbGxlciBQaHkgUmVncyAqLw0KKyNkZWZpbmUgTUNfU0VDX0VSUk9S X0lOVAkJCTB4MjgNCisjZGVmaW5lICBTRUNfRVJST1JfSU5UX1RYX1JBTV9TRUNfRVJSX0lOVAlH RU5NQVNLKDMsIDApDQorI2RlZmluZSAgU0VDX0VSUk9SX0lOVF9SWF9SQU1fU0VDX0VSUl9JTlQJ R0VOTUFTSyg3LCA0KQ0KKyNkZWZpbmUgIFNFQ19FUlJPUl9JTlRfUENJRTJBWElfUkFNX1NFQ19F UlJfSU5UCUdFTk1BU0soMTEsIDgpDQorI2RlZmluZSAgU0VDX0VSUk9SX0lOVF9BWEkyUENJRV9S QU1fU0VDX0VSUl9JTlQJR0VOTUFTSygxNSwgMTIpDQorI2RlZmluZSBNQ19TRUNfRVJST1JfSU5U X01BU0sJCQkweDJjDQorI2RlZmluZSBNQ19ERURfRVJST1JfSU5UCQkJMHgzMA0KKyNkZWZpbmUg IERFRF9FUlJPUl9JTlRfVFhfUkFNX0RFRF9FUlJfSU5UCUdFTk1BU0soMywgMCkNCisjZGVmaW5l ICBERURfRVJST1JfSU5UX1JYX1JBTV9ERURfRVJSX0lOVAlHRU5NQVNLKDcsIDQpDQorI2RlZmlu ZSAgREVEX0VSUk9SX0lOVF9QQ0lFMkFYSV9SQU1fREVEX0VSUl9JTlQJR0VOTUFTSygxMSwgOCkN CisjZGVmaW5lICBERURfRVJST1JfSU5UX0FYSTJQQ0lFX1JBTV9ERURfRVJSX0lOVAlHRU5NQVNL KDE1LCAxMikNCisjZGVmaW5lIE1DX0RFRF9FUlJPUl9JTlRfTUFTSwkJCTB4MzQNCisjZGVmaW5l IE1DX0VDQ19DT05UUk9MCQkJCTB4MzgNCisjZGVmaW5lICBFQ0NfQ09OVFJPTF9BWEkyUENJRV9S QU1fRUNDX0JZUEFTUwlCSVQoMjcpDQorI2RlZmluZSAgRUNDX0NPTlRST0xfUENJRTJBWElfUkFN X0VDQ19CWVBBU1MJQklUKDI2KQ0KKyNkZWZpbmUgIEVDQ19DT05UUk9MX1JYX1JBTV9FQ0NfQllQ QVNTCQlCSVQoMjUpDQorI2RlZmluZSAgRUNDX0NPTlRST0xfVFhfUkFNX0VDQ19CWVBBU1MJCUJJ VCgyNCkNCisjZGVmaW5lIE1DX0xUU1NNX1NUQVRFCQkJCTB4NWMNCisjZGVmaW5lICBMVFNTTV9M MF9TVEFURQkJCQkweDEwDQorI2RlZmluZSBNQ19QQ0lFX0VWRU5UX0lOVAkJCTB4MTRjDQorI2Rl ZmluZSAgUENJRV9FVkVOVF9JTlRfTDJfRVhJVF9JTlQJCUJJVCgwKQ0KKyNkZWZpbmUgIFBDSUVf RVZFTlRfSU5UX0hPVFJTVF9FWElUX0lOVAkJQklUKDEpDQorI2RlZmluZSAgUENJRV9FVkVOVF9J TlRfRExVUF9FWElUX0lOVAkJQklUKDIpDQorI2RlZmluZSAgUENJRV9FVkVOVF9JTlRfTDJfRVhJ VF9JTlRfTUFTSwlCSVQoMTYpDQorI2RlZmluZSAgUENJRV9FVkVOVF9JTlRfSE9UUlNUX0VYSVRf SU5UX01BU0sJQklUKDE3KQ0KKyNkZWZpbmUgIFBDSUVfRVZFTlRfSU5UX0RMVVBfRVhJVF9JTlRf TUFTSwlCSVQoMTgpDQorDQorLyogUENJZSBCcmlkZ2UgUGh5IFJlZ3MgKi8NCisjZGVmaW5lIE1D X1BDSUVfUENJX0lEU19EVzEJCQkweDljDQorDQorLyogUENJZSBDb25maWcgc3BhY2UgTVNJIGNh cGFiaWxpdHkgc3RydWN0dXJlICovDQorI2RlZmluZSBNQ19NU0lfQ0FQX0NUUkxfT0ZGU0VUCQkJ MHhlMHUNCisjZGVmaW5lICBNQ19NU0lfTUFYX1FfQVZBSUwJCQkoTUNfTlVNX01TSV9JUlFTX0NP REVEIDw8IDEpDQorI2RlZmluZSAgTUNfTVNJX1FfU0laRQkJCQkoTUNfTlVNX01TSV9JUlFTX0NP REVEIDw8IDQpDQorDQorI2RlZmluZSBNQ19JTUFTS19MT0NBTAkJCQkweDE4MA0KKyNkZWZpbmUg IFBDSUVfTE9DQUxfSU5UX0VOQUJMRQkJCTB4MGYwMDAwMDB1DQorI2RlZmluZSAgUENJX0lOVFMJ CQkJMHgwZjAwMDAwMHUNCisjZGVmaW5lICBQTV9NU0lfSU5UX1NISUZUCQkJMjQNCisjZGVmaW5l ICBQQ0lFX0VOQUJMRV9NU0kJCQkweDEwMDAwMDAwdQ0KKyNkZWZpbmUgIE1TSV9JTlQJCQkJMHgx MDAwMDAwMHUNCisjZGVmaW5lICBNU0lfSU5UX1NISUZUCQkJCTI4DQorI2RlZmluZSBNQ19JU1RB VFVTX0xPQ0FMCQkJMHgxODQNCisjZGVmaW5lIE1DX0lNQVNLX0hPU1QJCQkJMHgxODgNCisjZGVm aW5lIE1DX0lTVEFUVVNfSE9TVAkJCQkweDE4Yw0KKyNkZWZpbmUgTUNfTVNJX0FERFIJCQkJMHgx OTANCisjZGVmaW5lIE1DX0lTVEFUVVNfTVNJCQkJCTB4MTk0DQorDQorLyogUENJZSBNYXN0ZXIg dGFibGUgaW5pdCBkZWZpbmVzICovDQorI2RlZmluZSBNQ19BVFIwX1BDSUVfV0lOMF9TUkNBRERS X1BBUkFNCQkweDYwMHUNCisjZGVmaW5lICBBVFIwX1BDSUVfQVRSX1NJWkUJCQkweDFmDQorI2Rl ZmluZSAgQVRSMF9QQ0lFX0FUUl9TSVpFX1NISUZUCQkxDQorI2RlZmluZSBNQ19BVFIwX1BDSUVf V0lOMF9TUkNfQUREUgkJMHg2MDR1DQorI2RlZmluZSBNQ19BVFIwX1BDSUVfV0lOMF9UUlNMX0FE RFJfTFNCCQkweDYwOHUNCisjZGVmaW5lIE1DX0FUUjBfUENJRV9XSU4wX1RSU0xfQUREUl9VRFcJ CTB4NjBjdQ0KKyNkZWZpbmUgTUNfQVRSMF9QQ0lFX1dJTjBfVFJTTF9QQVJBTQkJMHg2MTB1DQor DQorLyogUENJZSBBWEkgc2xhdmUgdGFibGUgaW5pdCBkZWZpbmVzICovDQorI2RlZmluZSBNQ19B VFIwX0FYSTRfU0xWMF9TUkNBRERSX1BBUkFNCQkweDgwMHUNCisjZGVmaW5lICBBVFJfU0laRV9T SElGVAkJCQkxDQorI2RlZmluZSAgQVRSX0lNUExfRU5BQkxFCQkJMQ0KKyNkZWZpbmUgTUNfQVRS MF9BWEk0X1NMVjBfU1JDX0FERFIJCTB4ODA0dQ0KKyNkZWZpbmUgTUNfQVRSMF9BWEk0X1NMVjBf VFJTTF9BRERSX0xTQgkJMHg4MDh1DQorI2RlZmluZSBNQ19BVFIwX0FYSTRfU0xWMF9UUlNMX0FE RFJfVURXCQkweDgwY3UNCisjZGVmaW5lIE1DX0FUUjBfQVhJNF9TTFYwX1RSU0xfUEFSQU0JCTB4 ODEwdQ0KKyNkZWZpbmUgIFBDSUVfVFhfUlhfSU5URVJGQUNFCQkJMHgwMDAwMDAwMHUNCisjZGVm aW5lICBQQ0lFX0NPTkZJR19JTlRFUkZBQ0UJCQkweDAwMDAwMDAxdQ0KKw0KKyNkZWZpbmUgQVRS X0VOVFJZX1NJWkUJCQkJMzINCisNCitzdHJ1Y3QgbWNfbXNpIHsNCisJc3RydWN0IG11dGV4IGxv Y2s7CQkvKiBQcm90ZWN0IHVzZWQgYml0bWFwICovDQorCXN0cnVjdCBpcnFfZG9tYWluICptc2lf ZG9tYWluOw0KKwlzdHJ1Y3QgaXJxX2RvbWFpbiAqZGV2X2RvbWFpbjsNCisJdTMyIG51bV92ZWN0 b3JzOw0KKwl1NjQgdmVjdG9yX3BoeTsNCisJREVDTEFSRV9CSVRNQVAodXNlZCwgTUNfTlVNX01T SV9JUlFTKTsNCit9Ow0KKw0KK3N0cnVjdCBtY19wb3J0IHsNCisJdm9pZCBfX2lvbWVtICpheGlf YmFzZV9hZGRyOw0KKwlzdHJ1Y3QgZGV2aWNlICpkZXY7DQorCXN0cnVjdCBpcnFfZG9tYWluICpp bnR4X2RvbWFpbjsNCisJcmF3X3NwaW5sb2NrX3QgaW50eF9tYXNrX2xvY2s7DQorCXN0cnVjdCBt Y19tc2kgbXNpOw0KK307DQorDQorc3RhdGljIHN0cnVjdCBtY19wb3J0ICpwb3J0Ow0KKw0KK3N0 YXRpYyB2b2lkIG1jX3BjaWVfaXNyKHN0cnVjdCBpcnFfZGVzYyAqZGVzYykNCit7DQorCXN0cnVj dCBpcnFfY2hpcCAqY2hpcCA9IGlycV9kZXNjX2dldF9jaGlwKGRlc2MpOw0KKwlzdHJ1Y3QgbWNf cG9ydCAqcG9ydCA9IGlycV9kZXNjX2dldF9oYW5kbGVyX2RhdGEoZGVzYyk7DQorCXN0cnVjdCBk ZXZpY2UgKmRldiA9IHBvcnQtPmRldjsNCisJc3RydWN0IG1jX21zaSAqbXNpID0gJnBvcnQtPm1z aTsNCisJdm9pZCBfX2lvbWVtICpicmlkZ2VfYmFzZV9hZGRyID0gcG9ydC0+YXhpX2Jhc2VfYWRk ciArIE1DX1BDSUUxX0JSSURHRV9BRERSOw0KKwl1bnNpZ25lZCBsb25nIHN0YXR1czsNCisJdW5z aWduZWQgbG9uZyBpbnR4X3N0YXR1czsNCisJdW5zaWduZWQgbG9uZyBtc2lfc3RhdHVzOw0KKwl1 MzIgYml0Ow0KKwl1MzIgdmlycTsNCisNCisJLyoNCisJICogVGhlIGNvcmUgcHJvdmlkZXMgYSBz aW5nbGUgaW50ZXJydXB0IGZvciBib3RoIElOVHgvTVNJIG1lc3NhZ2VzLg0KKwkgKiBTbyB3ZSds bCByZWFkIGJvdGggSU5UeCBhbmQgTVNJIHN0YXR1cy4NCisJICovDQorCWNoYWluZWRfaXJxX2Vu dGVyKGNoaXAsIGRlc2MpOw0KKw0KKwlzdGF0dXMgPSByZWFkbF9yZWxheGVkKGJyaWRnZV9iYXNl X2FkZHIgKyBNQ19JU1RBVFVTX0xPQ0FMKTsNCisJd2hpbGUgKHN0YXR1cyAmIChQQ0lfSU5UUyB8 IE1TSV9JTlQpKSB7DQorCQlpbnR4X3N0YXR1cyA9IChzdGF0dXMgJiBQQ0lfSU5UUykgPj4gUE1f TVNJX0lOVF9TSElGVDsNCisJCWZvcl9lYWNoX3NldF9iaXQoYml0LCAmaW50eF9zdGF0dXMsIFBD SV9OVU1fSU5UWCkgew0KKwkJCXZpcnEgPSBpcnFfZmluZF9tYXBwaW5nKHBvcnQtPmludHhfZG9t YWluLCBiaXQgKyAxKTsNCisJCQlpZiAodmlycSkNCisJCQkJZ2VuZXJpY19oYW5kbGVfaXJxKHZp cnEpOw0KKwkJCWVsc2UNCisJCQkJZGV2X2Vycl9yYXRlbGltaXRlZChkZXYsICJiYWQgSU5UeCBJ UlEgJWRcbiIsIGJpdCk7DQorDQorCQkJLyogQ2xlYXIgdGhhdCBpbnRlcnJ1cHQgYml0ICovDQor CQkJd3JpdGVsX3JlbGF4ZWQoMSA8PCAoYml0ICsgUE1fTVNJX0lOVF9TSElGVCksIGJyaWRnZV9i YXNlX2FkZHIgKw0KKwkJCQkgICAgICAgTUNfSVNUQVRVU19MT0NBTCk7DQorCQl9DQorDQorCQlt c2lfc3RhdHVzID0gKHN0YXR1cyAmIE1TSV9JTlQpOw0KKwkJaWYgKG1zaV9zdGF0dXMpIHsNCisJ CQltc2lfc3RhdHVzID0gcmVhZGxfcmVsYXhlZChicmlkZ2VfYmFzZV9hZGRyICsgTUNfSVNUQVRV U19NU0kpOw0KKwkJCWZvcl9lYWNoX3NldF9iaXQoYml0LCAmbXNpX3N0YXR1cywgbXNpLT5udW1f dmVjdG9ycykgew0KKwkJCQl2aXJxID0gaXJxX2ZpbmRfbWFwcGluZyhtc2ktPmRldl9kb21haW4s IGJpdCk7DQorCQkJCWlmICh2aXJxKQ0KKwkJCQkJZ2VuZXJpY19oYW5kbGVfaXJxKHZpcnEpOw0K KwkJCQllbHNlDQorCQkJCQlkZXZfZXJyX3JhdGVsaW1pdGVkKGRldiwgImJhZCBNU0kgSVJRICVk XG4iLCBiaXQpOw0KKw0KKwkJCQkvKiBDbGVhciB0aGF0IE1TSSBpbnRlcnJ1cHQgYml0ICovDQor CQkJCXdyaXRlbF9yZWxheGVkKCgxIDw8IGJpdCksIGJyaWRnZV9iYXNlX2FkZHIgKyBNQ19JU1RB VFVTX01TSSk7DQorCQkJfQ0KKwkJCS8qIENsZWFyIHRoZSBJU1RBVFVTIE1TSSBiaXQgKi8NCisJ CQl3cml0ZWxfcmVsYXhlZCgxIDw8IE1TSV9JTlRfU0hJRlQsIGJyaWRnZV9iYXNlX2FkZHIgKyBN Q19JU1RBVFVTX0xPQ0FMKTsNCisJCX0NCisNCisJCXN0YXR1cyA9IHJlYWRsX3JlbGF4ZWQoYnJp ZGdlX2Jhc2VfYWRkciArIE1DX0lTVEFUVVNfTE9DQUwpOw0KKwl9DQorDQorCWNoYWluZWRfaXJx X2V4aXQoY2hpcCwgZGVzYyk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG1jX3BjaWVfZW5hYmxlX21z aShzdHJ1Y3QgbWNfcG9ydCAqcG9ydCwgdm9pZCBfX2lvbWVtICpiYXNlKQ0KK3sNCisJc3RydWN0 IG1jX21zaSAqbXNpID0gJnBvcnQtPm1zaTsNCisJdTMyIGNhcF9vZmZzZXQgPSBNQ19NU0lfQ0FQ X0NUUkxfT0ZGU0VUOw0KKw0KKwl1MTYgbXNnX2N0cmwgPSByZWFkd19yZWxheGVkKGJhc2UgKyBj YXBfb2Zmc2V0ICsgUENJX01TSV9GTEFHUyk7DQorDQorCW1zZ19jdHJsIHw9IFBDSV9NU0lfRkxB R1NfRU5BQkxFOw0KKwltc2dfY3RybCAmPSB+UENJX01TSV9GTEFHU19RTUFTSzsNCisJbXNnX2N0 cmwgfD0gTUNfTVNJX01BWF9RX0FWQUlMOw0KKwltc2dfY3RybCAmPSB+UENJX01TSV9GTEFHU19R U0laRTsNCisJbXNnX2N0cmwgfD0gTUNfTVNJX1FfU0laRTsNCisJbXNnX2N0cmwgfD0gUENJX01T SV9GTEFHU182NEJJVDsNCisNCisJd3JpdGV3X3JlbGF4ZWQobXNnX2N0cmwsIGJhc2UgKyBjYXBf b2Zmc2V0ICsgUENJX01TSV9GTEFHUyk7DQorDQorCXdyaXRlbF9yZWxheGVkKGxvd2VyXzMyX2Jp dHMobXNpLT52ZWN0b3JfcGh5KSwgYmFzZSArIGNhcF9vZmZzZXQgKyBQQ0lfTVNJX0FERFJFU1Nf TE8pOw0KKwl3cml0ZWxfcmVsYXhlZCh1cHBlcl8zMl9iaXRzKG1zaS0+dmVjdG9yX3BoeSksIGJh c2UgKyBjYXBfb2Zmc2V0ICsgUENJX01TSV9BRERSRVNTX0hJKTsNCit9DQorDQorc3RhdGljIHZv aWQgbWNfY29tcG9zZV9tc2lfbXNnKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSwgc3RydWN0IG1zaV9t c2cgKm1zZykNCit7DQorCXN0cnVjdCBtY19wb3J0ICpwb3J0ID0gaXJxX2RhdGFfZ2V0X2lycV9j aGlwX2RhdGEoZGF0YSk7DQorCXBoeXNfYWRkcl90IGFkZHIgPSBwb3J0LT5tc2kudmVjdG9yX3Bo eTsNCisNCisJbXNnLT5hZGRyZXNzX2xvID0gbG93ZXJfMzJfYml0cyhhZGRyKTsNCisJbXNnLT5h ZGRyZXNzX2hpID0gdXBwZXJfMzJfYml0cyhhZGRyKTsNCisJbXNnLT5kYXRhID0gZGF0YS0+aHdp cnE7DQorDQorCWRldl9kYmcocG9ydC0+ZGV2LCAibXNpIyV4IGFkZHJlc3NfaGkgJSN4IGFkZHJl c3NfbG8gJSN4XG4iLCAoaW50KWRhdGEtPmh3aXJxLA0KKwkJbXNnLT5hZGRyZXNzX2hpLCBtc2ct PmFkZHJlc3NfbG8pOw0KK30NCisNCitzdGF0aWMgaW50IG1jX21zaV9zZXRfYWZmaW5pdHkoc3Ry dWN0IGlycV9kYXRhICppcnFfZGF0YSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm1hc2ssIGJvb2wg Zm9yY2UpDQorew0KKwlyZXR1cm4gLUVJTlZBTDsNCit9DQorDQorc3RhdGljIHN0cnVjdCBpcnFf Y2hpcCBtY19tc2lfYm90dG9tX2lycV9jaGlwID0gew0KKwkubmFtZSA9ICJNaWNyb2NoaXAgTVNJ IiwNCisJLmlycV9jb21wb3NlX21zaV9tc2cgPSBtY19jb21wb3NlX21zaV9tc2csDQorCS5pcnFf c2V0X2FmZmluaXR5ID0gbWNfbXNpX3NldF9hZmZpbml0eSwNCit9Ow0KKw0KK3N0YXRpYyBpbnQg bWNfaXJxX21zaV9kb21haW5fYWxsb2Moc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgdW5zaWdu ZWQgaW50IHZpcnEsDQorCQkJCSAgIHVuc2lnbmVkIGludCBucl9pcnFzLCB2b2lkICphcmdzKQ0K K3sNCisJc3RydWN0IG1jX3BvcnQgKnBvcnQgPSBkb21haW4tPmhvc3RfZGF0YTsNCisJc3RydWN0 IG1jX21zaSAqbXNpID0gJnBvcnQtPm1zaTsNCisJdm9pZCBfX2lvbWVtICpicmlkZ2VfYmFzZV9h ZGRyID0gcG9ydC0+YXhpX2Jhc2VfYWRkciArIE1DX1BDSUUxX0JSSURHRV9BRERSOw0KKwl1bnNp Z25lZCBsb25nIGJpdDsNCisJdTMyIHJlZzsNCisNCisJV0FSTl9PTihucl9pcnFzICE9IDEpOw0K KwltdXRleF9sb2NrKCZtc2ktPmxvY2spOw0KKwliaXQgPSBmaW5kX2ZpcnN0X3plcm9fYml0KG1z aS0+dXNlZCwgbXNpLT5udW1fdmVjdG9ycyk7DQorCWlmIChiaXQgPj0gbXNpLT5udW1fdmVjdG9y cykgew0KKwkJbXV0ZXhfdW5sb2NrKCZtc2ktPmxvY2spOw0KKwkJcmV0dXJuIC1FTk9TUEM7DQor CX0NCisNCisJc2V0X2JpdChiaXQsIG1zaS0+dXNlZCk7DQorDQorCWlycV9kb21haW5fc2V0X2lu Zm8oZG9tYWluLCB2aXJxLCBiaXQsICZtY19tc2lfYm90dG9tX2lycV9jaGlwLCBkb21haW4tPmhv c3RfZGF0YSwNCisJCQkgICAgaGFuZGxlX3NpbXBsZV9pcnEsIE5VTEwsIE5VTEwpOw0KKw0KKwkv KiBFbmFibGUgTVNJIGludGVycnVwdHMgKi8NCisJcmVnID0gcmVhZGxfcmVsYXhlZChicmlkZ2Vf YmFzZV9hZGRyICsgTUNfSU1BU0tfTE9DQUwpOw0KKwlyZWcgfD0gUENJRV9FTkFCTEVfTVNJOw0K Kwl3cml0ZWxfcmVsYXhlZChyZWcsIGJyaWRnZV9iYXNlX2FkZHIgKyBNQ19JTUFTS19MT0NBTCk7 DQorDQorCW11dGV4X3VubG9jaygmbXNpLT5sb2NrKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0K K3N0YXRpYyB2b2lkIG1jX2lycV9tc2lfZG9tYWluX2ZyZWUoc3RydWN0IGlycV9kb21haW4gKmRv bWFpbiwgdW5zaWduZWQgaW50IHZpcnEsDQorCQkJCSAgIHVuc2lnbmVkIGludCBucl9pcnFzKQ0K K3sNCisJc3RydWN0IGlycV9kYXRhICpkID0gaXJxX2RvbWFpbl9nZXRfaXJxX2RhdGEoZG9tYWlu LCB2aXJxKTsNCisJc3RydWN0IG1jX3BvcnQgKnBvcnQgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBf ZGF0YShkKTsNCisJc3RydWN0IG1jX21zaSAqbXNpID0gJnBvcnQtPm1zaTsNCisNCisJbXV0ZXhf bG9jaygmbXNpLT5sb2NrKTsNCisNCisJaWYgKHRlc3RfYml0KGQtPmh3aXJxLCBtc2ktPnVzZWQp KQ0KKwkJX19jbGVhcl9iaXQoZC0+aHdpcnEsIG1zaS0+dXNlZCk7DQorCWVsc2UNCisJCWRldl9l cnIocG9ydC0+ZGV2LCAidHJ5aW5nIHRvIGZyZWUgdW51c2VkIE1TSSVsdVxuIiwgZC0+aHdpcnEp Ow0KKw0KKwltdXRleF91bmxvY2soJm1zaS0+bG9jayk7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBz dHJ1Y3QgaXJxX2RvbWFpbl9vcHMgbXNpX2RvbWFpbl9vcHMgPSB7DQorCS5hbGxvYwk9IG1jX2ly cV9tc2lfZG9tYWluX2FsbG9jLA0KKwkuZnJlZQk9IG1jX2lycV9tc2lfZG9tYWluX2ZyZWUsDQor fTsNCisNCitzdGF0aWMgc3RydWN0IGlycV9jaGlwIG1jX21zaV9pcnFfY2hpcCA9IHsNCisJLm5h bWUgPSAiTWljcm9jaGlwIFBDSWUgTVNJIiwNCisJLmlycV9tYXNrID0gcGNpX21zaV9tYXNrX2ly cSwNCisJLmlycV91bm1hc2sgPSBwY2lfbXNpX3VubWFza19pcnEsDQorfTsNCisNCitzdGF0aWMg c3RydWN0IG1zaV9kb21haW5faW5mbyBtY19tc2lfZG9tYWluX2luZm8gPSB7DQorCS5mbGFncyA9 IChNU0lfRkxBR19VU0VfREVGX0RPTV9PUFMgfCBNU0lfRkxBR19VU0VfREVGX0NISVBfT1BTIHwg TVNJX0ZMQUdfUENJX01TSVgpLA0KKwkuY2hpcCA9ICZtY19tc2lfaXJxX2NoaXAsDQorfTsNCisN CitzdGF0aWMgaW50IG1jX2FsbG9jYXRlX21zaV9kb21haW5zKHN0cnVjdCBtY19wb3J0ICpwb3J0 KQ0KK3sNCisJc3RydWN0IGRldmljZSAqZGV2ID0gcG9ydC0+ZGV2Ow0KKwlzdHJ1Y3QgZndub2Rl X2hhbmRsZSAqZndub2RlID0gb2Zfbm9kZV90b19md25vZGUoZGV2LT5vZl9ub2RlKTsNCisJc3Ry dWN0IG1jX21zaSAqbXNpID0gJnBvcnQtPm1zaTsNCisNCisJbXV0ZXhfaW5pdCgmcG9ydC0+bXNp LmxvY2spOw0KKw0KKwltc2ktPmRldl9kb21haW4gPSBpcnFfZG9tYWluX2FkZF9saW5lYXIoTlVM TCwgbXNpLT5udW1fdmVjdG9ycywgJm1zaV9kb21haW5fb3BzLCBwb3J0KTsNCisJaWYgKCFtc2kt PmRldl9kb21haW4pIHsNCisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBJUlEgZG9t YWluXG4iKTsNCisJCXJldHVybiAtRU5PTUVNOw0KKwl9DQorDQorCW1zaS0+bXNpX2RvbWFpbiA9 IHBjaV9tc2lfY3JlYXRlX2lycV9kb21haW4oZndub2RlLCAmbWNfbXNpX2RvbWFpbl9pbmZvLCBt c2ktPmRldl9kb21haW4pOw0KKwlpZiAoIW1zaS0+bXNpX2RvbWFpbikgew0KKwkJZGV2X2Vycihk ZXYsICJmYWlsZWQgdG8gY3JlYXRlIE1TSSBkb21haW5cbiIpOw0KKwkJaXJxX2RvbWFpbl9yZW1v dmUobXNpLT5kZXZfZG9tYWluKTsNCisJCXJldHVybiAtRU5PTUVNOw0KKwl9DQorDQorCXJldHVy biAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBtY19tYXNrX2ludHhfaXJxKHN0cnVjdCBpcnFfZGF0 YSAqZGF0YSkNCit7DQorCXN0cnVjdCBtY19wb3J0ICpwb3J0ID0gaXJxX2RhdGFfZ2V0X2lycV9j aGlwX2RhdGEoZGF0YSk7DQorCXZvaWQgX19pb21lbSAqYnJpZGdlX2Jhc2VfYWRkciA9IHBvcnQt PmF4aV9iYXNlX2FkZHIgKyBNQ19QQ0lFMV9CUklER0VfQUREUjsNCisJdW5zaWduZWQgbG9uZyBm bGFnczsNCisJdTMyIG1hc2ssIHZhbDsNCisNCisJbWFzayA9IFBDSUVfTE9DQUxfSU5UX0VOQUJM RTsNCisJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZwb3J0LT5pbnR4X21hc2tfbG9jaywgZmxhZ3Mp Ow0KKwl2YWwgPSByZWFkbF9yZWxheGVkKGJyaWRnZV9iYXNlX2FkZHIgKyBNQ19JTUFTS19MT0NB TCk7DQorCXZhbCAmPSB+bWFzazsNCisJd3JpdGVsX3JlbGF4ZWQodmFsLCBicmlkZ2VfYmFzZV9h ZGRyICsgTUNfSU1BU0tfTE9DQUwpOw0KKwlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcG9y dC0+aW50eF9tYXNrX2xvY2ssIGZsYWdzKTsNCit9DQorDQorc3RhdGljIHZvaWQgbWNfdW5tYXNr X2ludHhfaXJxKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSkNCit7DQorCXN0cnVjdCBtY19wb3J0ICpw b3J0ID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZGF0YSk7DQorCXZvaWQgX19pb21lbSAq YnJpZGdlX2Jhc2VfYWRkciA9IHBvcnQtPmF4aV9iYXNlX2FkZHIgKyBNQ19QQ0lFMV9CUklER0Vf QUREUjsNCisJdW5zaWduZWQgbG9uZyBmbGFnczsNCisJdTMyIG1hc2ssIHZhbDsNCisNCisJbWFz ayA9IFBDSUVfTE9DQUxfSU5UX0VOQUJMRTsNCisJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZwb3J0 LT5pbnR4X21hc2tfbG9jaywgZmxhZ3MpOw0KKwl2YWwgPSByZWFkbF9yZWxheGVkKGJyaWRnZV9i YXNlX2FkZHIgKyBNQ19JTUFTS19MT0NBTCk7DQorCXZhbCB8PSBtYXNrOw0KKwl3cml0ZWxfcmVs YXhlZCh2YWwsIGJyaWRnZV9iYXNlX2FkZHIgKyBNQ19JTUFTS19MT0NBTCk7DQorCXJhd19zcGlu X3VubG9ja19pcnFyZXN0b3JlKCZwb3J0LT5pbnR4X21hc2tfbG9jaywgZmxhZ3MpOw0KK30NCisN CitzdGF0aWMgc3RydWN0IGlycV9jaGlwIG1jX2ludHhfaXJxX2NoaXAgPSB7DQorCS5uYW1lID0g Ik1pY3JvY2hpcCBQQ0llIElOVHgiLA0KKwkuaXJxX21hc2sgPSBtY19tYXNrX2ludHhfaXJxLA0K KwkuaXJxX3VubWFzayA9IG1jX3VubWFza19pbnR4X2lycSwNCit9Ow0KKw0KK3N0YXRpYyBpbnQg bWNfcGNpZV9pbnR4X21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQg aXJxLA0KKwkJCSAgICBpcnFfaHdfbnVtYmVyX3QgaHdpcnEpDQorew0KKwlpcnFfc2V0X2NoaXBf YW5kX2hhbmRsZXIoaXJxLCAmbWNfaW50eF9pcnFfY2hpcCwgaGFuZGxlX3NpbXBsZV9pcnEpOw0K KwlpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGRvbWFpbi0+aG9zdF9kYXRhKTsNCisNCisJcmV0dXJu IDA7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgaW50eF9kb21h aW5fb3BzID0gew0KKwkubWFwID0gbWNfcGNpZV9pbnR4X21hcCwNCit9Ow0KKw0KK3N0YXRpYyBp bnQgbWNfcGNpZV9pbml0X2lycV9kb21haW5zKHN0cnVjdCBtY19wb3J0ICpwb3J0KQ0KK3sNCisJ c3RydWN0IGRldmljZSAqZGV2ID0gcG9ydC0+ZGV2Ow0KKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5v ZGUgPSBkZXYtPm9mX25vZGU7DQorDQorCXBvcnQtPmludHhfZG9tYWluID0gaXJxX2RvbWFpbl9h ZGRfbGluZWFyKG5vZGUsIFBDSV9OVU1fSU5UWCwgJmludHhfZG9tYWluX29wcywgcG9ydCk7DQor CWlmICghcG9ydC0+aW50eF9kb21haW4pIHsNCisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdl dCBhbiBJTlR4IElSUSBkb21haW5cbiIpOw0KKwkJcmV0dXJuIC1FTk9NRU07DQorCX0NCisJcmF3 X3NwaW5fbG9ja19pbml0KCZwb3J0LT5pbnR4X21hc2tfbG9jayk7DQorDQorCXJldHVybiBtY19h bGxvY2F0ZV9tc2lfZG9tYWlucyhwb3J0KTsNCit9DQorDQorc3RhdGljIHZvaWQgbWNfc2V0dXBf d2luZG93KHZvaWQgX19pb21lbSAqYnJpZGdlX2Jhc2VfYWRkciwgdTMyIGluZGV4LCBwaHlzX2Fk ZHJfdCBheGlfYWRkciwNCisJCQkgICAgcGh5c19hZGRyX3QgcGNpX2FkZHIsIHNpemVfdCBzaXpl KQ0KK3sNCisJdTMyIGF0cl9zeiA9IGlsb2cyKHNpemUpIC0gMTsNCisJdTMyIHZhbDsNCisNCisJ aWYgKGluZGV4ID09IDApDQorCQl2YWwgPSBQQ0lFX0NPTkZJR19JTlRFUkZBQ0U7DQorCWVsc2UN CisJCXZhbCA9IFBDSUVfVFhfUlhfSU5URVJGQUNFOw0KKw0KKwl3cml0ZWwodmFsLCBicmlkZ2Vf YmFzZV9hZGRyICsgKGluZGV4ICogQVRSX0VOVFJZX1NJWkUpICsgTUNfQVRSMF9BWEk0X1NMVjBf VFJTTF9QQVJBTSk7DQorDQorCXZhbCA9IGxvd2VyXzMyX2JpdHMoYXhpX2FkZHIpIHwgKGF0cl9z eiA8PCBBVFJfU0laRV9TSElGVCkgfCBBVFJfSU1QTF9FTkFCTEU7DQorCXdyaXRlbCh2YWwsIGJy aWRnZV9iYXNlX2FkZHIgKyAoaW5kZXggKiBBVFJfRU5UUllfU0laRSkgKw0KKwkgICAgICAgTUNf QVRSMF9BWEk0X1NMVjBfU1JDQUREUl9QQVJBTSk7DQorDQorCXZhbCA9IHVwcGVyXzMyX2JpdHMo YXhpX2FkZHIpOw0KKw0KKwl3cml0ZWwodmFsLCBicmlkZ2VfYmFzZV9hZGRyICsgKGluZGV4ICog QVRSX0VOVFJZX1NJWkUpICsNCisJICAgICAgIE1DX0FUUjBfQVhJNF9TTFYwX1NSQ19BRERSKTsN CisNCisJdmFsID0gbG93ZXJfMzJfYml0cyhwY2lfYWRkcik7DQorCXdyaXRlbCh2YWwsIGJyaWRn ZV9iYXNlX2FkZHIgKyAoaW5kZXggKiBBVFJfRU5UUllfU0laRSkgKw0KKwkgICAgICAgTUNfQVRS MF9BWEk0X1NMVjBfVFJTTF9BRERSX0xTQik7DQorDQorCXZhbCA9IHVwcGVyXzMyX2JpdHMocGNp X2FkZHIpOw0KKwl3cml0ZWwodmFsLCBicmlkZ2VfYmFzZV9hZGRyICsgKGluZGV4ICogQVRSX0VO VFJZX1NJWkUpICsNCisJICAgICAgIE1DX0FUUjBfQVhJNF9TTFYwX1RSU0xfQUREUl9VRFcpOw0K Kw0KKwl2YWwgPSByZWFkbChicmlkZ2VfYmFzZV9hZGRyICsgTUNfQVRSMF9QQ0lFX1dJTjBfU1JD QUREUl9QQVJBTSk7DQorCXZhbCB8PSAoQVRSMF9QQ0lFX0FUUl9TSVpFIDw8IEFUUjBfUENJRV9B VFJfU0laRV9TSElGVCk7DQorCXdyaXRlbCh2YWwsIGJyaWRnZV9iYXNlX2FkZHIgKyBNQ19BVFIw X1BDSUVfV0lOMF9TUkNBRERSX1BBUkFNKTsNCisJd3JpdGVsKDAsIGJyaWRnZV9iYXNlX2FkZHIg KyBNQ19BVFIwX1BDSUVfV0lOMF9TUkNfQUREUik7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbWNfcGxh dGZvcm1faW5pdChzdHJ1Y3QgcGNpX2NvbmZpZ193aW5kb3cgKmNmZykNCit7DQorCXN0cnVjdCBk ZXZpY2UgKmRldiA9IGNmZy0+cGFyZW50Ow0KKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7DQorCXZvaWQgX19pb21lbSAqYnJpZGdlX2Jhc2Vf YWRkcjsNCisJdm9pZCBfX2lvbWVtICpjdHJsX2Jhc2VfYWRkcjsNCisJaW50IHJldDsNCisJdTMy IGlycTsNCisJdTMyIHZhbDsNCisNCisJcG9ydCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigq cG9ydCksIEdGUF9LRVJORUwpOw0KKwlpZiAoIXBvcnQpDQorCQlyZXR1cm4gLUVOT01FTTsNCisJ cG9ydC0+ZGV2ID0gZGV2Ow0KKw0KKwlwb3J0LT5heGlfYmFzZV9hZGRyID0gZGV2bV9wbGF0Zm9y bV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDEpOw0KKwlpZiAoSVNfRVJSKHBvcnQtPmF4aV9iYXNl X2FkZHIpKQ0KKwkJcmV0dXJuIFBUUl9FUlIocG9ydC0+YXhpX2Jhc2VfYWRkcik7DQorDQorCWJy aWRnZV9iYXNlX2FkZHIgPSBwb3J0LT5heGlfYmFzZV9hZGRyICsgTUNfUENJRTFfQlJJREdFX0FE RFI7DQorCWN0cmxfYmFzZV9hZGRyID0gcG9ydC0+YXhpX2Jhc2VfYWRkciArIE1DX1BDSUUxX0NU UkxfQUREUjsNCisNCisJcG9ydC0+bXNpLnZlY3Rvcl9waHkgPSBNQ19NU0lfQUREUjsNCisJcG9y dC0+bXNpLm51bV92ZWN0b3JzID0gTUNfTlVNX01TSV9JUlFTOw0KKwlyZXQgPSBtY19wY2llX2lu aXRfaXJxX2RvbWFpbnMocG9ydCk7DQorCWlmIChyZXQpIHsNCisJCWRldl9lcnIoZGV2LCAiZmFp bGVkIGNyZWF0aW5nIElSUSBkb21haW5zXG4iKTsNCisJCXJldHVybiByZXQ7DQorCX0NCisNCisJ aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsNCisJaWYgKGlycSA8IDApIHsNCisJCWRl dl9lcnIoZGV2LCAidW5hYmxlIHRvIHJlcXVlc3QgSVJRJWRcbiIsIGlycSk7DQorCQlyZXR1cm4g LUVOT0RFVjsNCisJfQ0KKw0KKwlpcnFfc2V0X2NoYWluZWRfaGFuZGxlcl9hbmRfZGF0YShpcnEs IG1jX3BjaWVfaXNyLCBwb3J0KTsNCisNCisJLyogSGFyZHdhcmUgZG9lc24ndCBzZXR1cCBNU0kg YnkgZGVmYXVsdCAqLw0KKwltY19wY2llX2VuYWJsZV9tc2kocG9ydCwgY2ZnLT53aW4pOw0KKw0K Kwl2YWwgPSBQQ0lFX0VOQUJMRV9NU0kgfCBQQ0lFX0xPQ0FMX0lOVF9FTkFCTEU7DQorCXdyaXRl bF9yZWxheGVkKHZhbCwgYnJpZGdlX2Jhc2VfYWRkciArIE1DX0lNQVNLX0xPQ0FMKTsNCisNCisJ dmFsID0gcmVhZGxfcmVsYXhlZChicmlkZ2VfYmFzZV9hZGRyICsgTUNfTFRTU01fU1RBVEUpOw0K Kwl2YWwgfD0gTFRTU01fTDBfU1RBVEU7DQorCXdyaXRlbF9yZWxheGVkKHZhbCwgYnJpZGdlX2Jh c2VfYWRkciArIE1DX0xUU1NNX1NUQVRFKTsNCisNCisJdmFsID0gRUNDX0NPTlRST0xfQVhJMlBD SUVfUkFNX0VDQ19CWVBBU1MgfCBFQ0NfQ09OVFJPTF9QQ0lFMkFYSV9SQU1fRUNDX0JZUEFTUyB8 DQorCSAgICAgIEVDQ19DT05UUk9MX1JYX1JBTV9FQ0NfQllQQVNTIHwgRUNDX0NPTlRST0xfVFhf UkFNX0VDQ19CWVBBU1M7DQorCXdyaXRlbF9yZWxheGVkKHZhbCwgY3RybF9iYXNlX2FkZHIgKyBN Q19FQ0NfQ09OVFJPTCk7DQorDQorCXZhbCA9IFBDSUVfRVZFTlRfSU5UX0wyX0VYSVRfSU5UIHwg UENJRV9FVkVOVF9JTlRfSE9UUlNUX0VYSVRfSU5UIHwNCisJICAgICAgUENJRV9FVkVOVF9JTlRf RExVUF9FWElUX0lOVCB8IFBDSUVfRVZFTlRfSU5UX0wyX0VYSVRfSU5UX01BU0sgfA0KKwkgICAg ICBQQ0lFX0VWRU5UX0lOVF9IT1RSU1RfRVhJVF9JTlRfTUFTSyB8IFBDSUVfRVZFTlRfSU5UX0RM VVBfRVhJVF9JTlRfTUFTSzsNCisJd3JpdGVsX3JlbGF4ZWQodmFsLCBjdHJsX2Jhc2VfYWRkciAr IE1DX1BDSUVfRVZFTlRfSU5UKTsNCisNCisJdmFsID0gU0VDX0VSUk9SX0lOVF9UWF9SQU1fU0VD X0VSUl9JTlQgfCBTRUNfRVJST1JfSU5UX1JYX1JBTV9TRUNfRVJSX0lOVCB8DQorCSAgICAgIFNF Q19FUlJPUl9JTlRfUENJRTJBWElfUkFNX1NFQ19FUlJfSU5UIHwgU0VDX0VSUk9SX0lOVF9BWEky UENJRV9SQU1fU0VDX0VSUl9JTlQ7DQorCXdyaXRlbF9yZWxheGVkKHZhbCwgY3RybF9iYXNlX2Fk ZHIgKyBNQ19TRUNfRVJST1JfSU5UKTsNCisJd3JpdGVsX3JlbGF4ZWQodmFsLCBjdHJsX2Jhc2Vf YWRkciArIE1DX1NFQ19FUlJPUl9JTlRfTUFTSyk7DQorDQorCXZhbCA9IERFRF9FUlJPUl9JTlRf VFhfUkFNX0RFRF9FUlJfSU5UIHwgREVEX0VSUk9SX0lOVF9SWF9SQU1fREVEX0VSUl9JTlQgfA0K KwkgICAgICBERURfRVJST1JfSU5UX1BDSUUyQVhJX1JBTV9ERURfRVJSX0lOVCB8IERFRF9FUlJP Ul9JTlRfQVhJMlBDSUVfUkFNX0RFRF9FUlJfSU5UOw0KKwl3cml0ZWxfcmVsYXhlZCh2YWwsIGN0 cmxfYmFzZV9hZGRyICsgTUNfREVEX0VSUk9SX0lOVCk7DQorCXdyaXRlbF9yZWxheGVkKHZhbCwg Y3RybF9iYXNlX2FkZHIgKyBNQ19ERURfRVJST1JfSU5UX01BU0spOw0KKw0KKwl3cml0ZWxfcmVs YXhlZCgwLCBicmlkZ2VfYmFzZV9hZGRyICsgTUNfSU1BU0tfTE9DQUwpOw0KKwl3cml0ZWxfcmVs YXhlZChHRU5NQVNLKDMxLCAwKSwgYnJpZGdlX2Jhc2VfYWRkciArIE1DX0lTVEFUVVNfTE9DQUwp Ow0KKwl3cml0ZWxfcmVsYXhlZCgwLCBicmlkZ2VfYmFzZV9hZGRyICsgTUNfSU1BU0tfSE9TVCk7 DQorCXdyaXRlbF9yZWxheGVkKEdFTk1BU0soMzEsIDApLCBicmlkZ2VfYmFzZV9hZGRyICsgTUNf SVNUQVRVU19IT1NUKTsNCisNCisJLyogQ29uZmlndXJlIEFkZHJlc3MgVHJhbnNsYXRpb24gVGFi bGUgMCBmb3IgUENJZSBjb25maWcgc3BhY2UgKi8NCisJbWNfc2V0dXBfd2luZG93KGJyaWRnZV9i YXNlX2FkZHIsIDAsIGNmZy0+cmVzLnN0YXJ0ICYgMHhmZmZmZmZmZiwgY2ZnLT5yZXMuc3RhcnQs DQorCQkJcmVzb3VyY2Vfc2l6ZSgmY2ZnLT5yZXMpKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0K K3N0YXRpYyBpbnQgbWNfc2V0dXBfd2luZG93cyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQ0KK3sNCisJdm9pZCBfX2lvbWVtICpicmlkZ2VfYmFzZV9hZGRyID0gcG9ydC0+YXhpX2Jhc2Vf YWRkciArIE1DX1BDSUUxX0JSSURHRV9BRERSOw0KKwlzdHJ1Y3QgcGNpX2hvc3RfYnJpZGdlICpi cmlkZ2UgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCisJc3RydWN0IHJlc291cmNlX2Vu dHJ5ICplbnRyeTsNCisJdTY0IHBjaV9hZGRyOw0KKwl1MzIgaW5kZXggPSAxOw0KKw0KKwlyZXNv dXJjZV9saXN0X2Zvcl9lYWNoX2VudHJ5KGVudHJ5LCAmYnJpZGdlLT53aW5kb3dzKSB7DQorCQlp ZiAocmVzb3VyY2VfdHlwZShlbnRyeS0+cmVzKSA9PSBJT1JFU09VUkNFX01FTSkgew0KKwkJCXBj aV9hZGRyID0gZW50cnktPnJlcy0+c3RhcnQgLSBlbnRyeS0+b2Zmc2V0Ow0KKwkJCW1jX3NldHVw X3dpbmRvdyhicmlkZ2VfYmFzZV9hZGRyLCBpbmRleCwgZW50cnktPnJlcy0+c3RhcnQsDQorCQkJ CQlwY2lfYWRkciwgcmVzb3VyY2Vfc2l6ZShlbnRyeS0+cmVzKSk7DQorCQkJaW5kZXgrKzsNCisJ CX0NCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBtY19wY2lfaG9zdF9w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KK3sNCisJaW50IHJldDsNCisNCisJ cmV0ID0gcGNpX2hvc3RfY29tbW9uX3Byb2JlKHBkZXYpOw0KKwlpZiAocmV0KQ0KKwkJcmV0dXJu IHJldDsNCisNCisJLyoNCisJICogc2V0dXAgaHcgd2luZG93cyBoZXJlDQorCSAqIGJyaWRnZSBp c24ndCBhc3NvY2lhdGVkIHdpdGggcGRldiB1bnRpbA0KKwkgKiBhZnRlciBwY2lfaG9zdF9jb21t b25fcHJvYmUgcnVucw0KKwkgKi8NCisJcmV0dXJuIG1jX3NldHVwX3dpbmRvd3MocGRldik7DQor fQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2VjYW1fb3BzIG1jX2VjYW1fb3BzID0gew0K KwkuYnVzX3NoaWZ0ID0gMjAsDQorCS5pbml0ID0gbWNfcGxhdGZvcm1faW5pdCwNCisJLnBjaV9v cHMgPSB7DQorCQkubWFwX2J1cyA9IHBjaV9lY2FtX21hcF9idXMsDQorCQkucmVhZCA9IHBjaV9n ZW5lcmljX2NvbmZpZ19yZWFkLA0KKwkJLndyaXRlID0gcGNpX2dlbmVyaWNfY29uZmlnX3dyaXRl LA0KKwl9DQorfTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtY19wY2ll X29mX21hdGNoW10gPSB7DQorCXsNCisJCS5jb21wYXRpYmxlID0gIm1pY3JvY2hpcCxwY2llLWhv c3QtMS4wIiwNCisJCS5kYXRhID0gJm1jX2VjYW1fb3BzLA0KKwl9LA0KKwl7fSwNCit9Ow0KKw0K K01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1jX3BjaWVfb2ZfbWF0Y2gpDQorDQorc3RhdGljIHN0 cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWNfcGNpZV9kcml2ZXIgPSB7DQorCS5wcm9iZSA9IG1jX3Bj aV9ob3N0X3Byb2JlLA0KKwkuZHJpdmVyID0gew0KKwkJLm5hbWUgPSAibWljcm9jaGlwLXBjaWUi LA0KKwkJLm9mX21hdGNoX3RhYmxlID0gbWNfcGNpZV9vZl9tYXRjaCwNCisJCS5zdXBwcmVzc19i aW5kX2F0dHJzID0gdHJ1ZSwNCisJfSwNCit9Ow0KKw0KK2J1aWx0aW5fcGxhdGZvcm1fZHJpdmVy KG1jX3BjaWVfZHJpdmVyKTsNCitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7DQorTU9EVUxFX0RF U0NSSVBUSU9OKCJNaWNyb2NoaXAgUENJZSBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIik7DQorTU9E VUxFX0FVVEhPUigiRGFpcmUgTWNOYW1hcmEgPGRhaXJlLm1jbmFtYXJhQG1pY3JvY2hpcC5jb20+ Iik7DQotLSANCjIuMTcuMQ0KDQo=