From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS 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 37F57C433E0 for ; Wed, 8 Jul 2020 15:00:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0503320720 for ; Wed, 8 Jul 2020 15:00:59 +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="ltJZ1QcB"; dkim=pass (1024-bit key) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.b="MWhime7j" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730076AbgGHPA5 (ORCPT ); Wed, 8 Jul 2020 11:00:57 -0400 Received: from esa1.microchip.iphmx.com ([68.232.147.91]:61154 "EHLO esa1.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730075AbgGHPA4 (ORCPT ); Wed, 8 Jul 2020 11:00:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1594220456; x=1625756456; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=bZKHr1wjpYRPN8BATH6Mb6RofOPwcf4G2AWjBRgOhjE=; b=ltJZ1QcBzDbik+yRusvpfBS8kBUSOUSW4MA5zefPuU4TF3hz6OpaoLVA 71AnQ0a61xmTwpnHZtJL+4II+Kj+Le0LrFCPhfM3vVTFJuiD45C/nP+fY afjOzAMjjFl6ncprsKhEsyROyd+8SxJb27UxBG8De9hLxbFj8ppAdjHvt ovvl4+kkG1AYifOLwDFjmecHWBBffP42cIU5HOdrUMtkL6qvr5LR4MGTU pZw2zj1wH4CEhmdhmYe8HBMEQ6WFfG4qBk/bU+NFahS+ilB+aSkHQHLFb 0v8lTLJVThhX0hDywzbvEfyCuuAWuHpNKvdf0U3BRdYwou+gbT18PkdOw w==; IronPort-SDR: 1qkHbt+rYhpXFD2WWF+4KDEZOLYg4fhSDCP43Pci42JrurJgNsv2T+yNd1yBFfgTeVfJBPlus+ Ka4lC55v/9QDfuyAV5CEBbi9ATh0k0q088eEsQjl4ZoKu3cDBlPRs/KfhFYeMVtwkTDkUT5Cjr ncfAqZFiL5VrqyqC4oiJJWpLHZ8ioiD29A9B8pMq5N4T8g1io7lsluJLdUvkJOJJVXI4XADNDs EDG3dU5N9A7JjBL7MtlstVchkNkc/8uOxRWRgFEdKnoZga8c4Be0g7RxWnhhUalgLYYTjK3MPq 6Pg= X-IronPort-AV: E=Sophos;i="5.75,327,1589266800"; d="scan'208";a="86669540" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa1.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 08 Jul 2020 08:00:55 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Wed, 8 Jul 2020 08:00:29 -0700 Received: from NAM12-DM6-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; Wed, 8 Jul 2020 08:00:27 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Dz5hpJrodvk2iPmU1EIbX/oHw4txq+NcSabhpvU7ClzHb1GYAS4uMCpRsOWfvxJPuXazewGTbgy0D2H7PQ+m7mPg3Nn1YfuT8QvFd5aLnXNmheeYJfZ2CYGD44RauKAVAD0WnccMxkgXgxd+K1BtzgDyPkf2Y2tDUfu2CrZnwNv8dDLkA9L4sXGAAEulDXLu0qnphvuB2IhHLojfiyHuE+S/j0UQbXD+CXcmsRZba2cG+w7aCc2aORm+ljt+BKXiqJbgevRjAOpsplClMPbUuy+uY/G/ts5x+DINjaJLUOshuwo2yU9IAjsBGrTpyVcOTUgJpVjs/TfgtkkmL5Fs+A== 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=bZKHr1wjpYRPN8BATH6Mb6RofOPwcf4G2AWjBRgOhjE=; b=lOPRRz0WnpnOFjsAgbCoNuOdbnrKu3Xa0Np8yDRThzQueUIZPuIDbbiQ/FETml9pmcm5uLPFkE7UXMvoqremsE/tuUlkrKqxn7y8tgGqYH8X6/M+tFmxuUhcIHg77W6Ijgwi2ELi4G9WaVM3YT6Zteismty8x90dodhaceFVPqYPDzJkWwQJc35O90JC8TTvRAqK5kj84MMSuUaMM/0NX+7ho/5PhL3Ea2GRIerxX4HrY44NAC/T1FTA1ES7tWg51NSLkYdn+d0I139mSMNMDiz4Up/bllZiGjnxbIdOyI8ayqK1zyLaOW2vuTdtrAE71GzgnOGRTz+oCbE8GxFiEw== 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=bZKHr1wjpYRPN8BATH6Mb6RofOPwcf4G2AWjBRgOhjE=; b=MWhime7jOWEt65vFYyMj6iRNv3Z9+rrooOuAN4qd8OUs+cNEOt8cA0jZPJUSJLxMTqcQwtg9EJfUbQZWKw4a9Lj5URY1ffqaLlrdP5ijNBCHvmGsCJFPtDP9MotVP+n6T9rGTQwN6U93KjXJRsbk6gwPK9NbvYk/UsW6JKzNQxk= Received: from MN2PR11MB4269.namprd11.prod.outlook.com (2603:10b6:208:190::32) by BL0PR11MB2946.namprd11.prod.outlook.com (2603:10b6:208:78::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.20; Wed, 8 Jul 2020 15:00:52 +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.3174.021; Wed, 8 Jul 2020 15:00:52 +0000 From: To: , , , , , CC: Subject: [PATCH v13 2/2] PCI: microchip: Add host driver for Microchip PCIe controller Thread-Topic: [PATCH v13 2/2] PCI: microchip: Add host driver for Microchip PCIe controller Thread-Index: AQHWVTiS3OrWyY0NY0iAv9WVuh814A== Date: Wed, 8 Jul 2020 15:00:52 +0000 Message-ID: References: <56d2a9855f93455c6150b92682178c93fe70ed72.camel@microchip.com> In-Reply-To: <56d2a9855f93455c6150b92682178c93fe70ed72.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: [89.101.219.210] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 4863bb6f-8818-4b82-0081-08d8234fb57e x-ms-traffictypediagnostic: BL0PR11MB2946: 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: Op/ymxqSla3FyEDHD4T86AsQ8m8wU1ZPgqKsErcNZBMGRBiwhRcZ7t1i/EB2ef+zOTCL95F+XbBC+LAHVVxgqQdD7/KAgQiWAqAGRNpD1JkDdHTR1qQpqXMh9btP8AJE6yePY3XXGz0o6zs8Ewpyrzjm63BnFQMiYqZsNPRamzL2vYz5oY1iHuZ/NDcHJujxuJP/j7AlUFGPjSkA6S0kanbI/VICXh7bVFFT2F0D9YiZ+aq2cWC1tShtVFwCvXGXDZJoZ7Y8mr0fHsOqx1DWew3d6N0ok9UE+lXkfWRB0o8oEQpSGaV4SQWQRVuAfxMSzEyHRwNwejGVIxckKVWBoQ== 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;SFTY:;SFS:(376002)(39860400002)(346002)(136003)(366004)(396003)(8676002)(8936002)(316002)(6486002)(2616005)(71200400001)(478600001)(5660300002)(30864003)(76116006)(66946007)(66556008)(66476007)(91956017)(66446008)(64756008)(186003)(2906002)(4326008)(26005)(110136005)(83380400001)(36756003)(86362001)(6512007)(6506007)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: JqImUcu4pSulfwb+EFdCnFtcVlXi5mkv3yi/7Ol+EfYVQnVac3hgNc8i8Cvi0rKqXB/GRJtpqSrOkq7nNZF0t1B8BZg7tVpevM/cxH+7y+CfhwbymkUqJt59fAh66s6j5QQ9QpRkV2QUkJDp0BNjOK/rmbhtNfdLtOjngcFa4vl48EAFt9lhFzQ4w1T/tx2/TqplK9qovHPB58Fas9umzWR7/xmeGHeL2nk6+gBb86D0YhxlMyvuZVG7kq7o0EBjqJ+hfUH0RcQHY+ILTyyvyvsFI+VVd+mAOLEcZo9we+OcQScAveywDLIKnx9owGvSc1F657xGAdZz4V6SRyqPm5Mk0PUE1fa+djT4jlhCRzSVQtQ2SeA0YJn1bnJUzXRVKIEcotq5qy1yYq4Y4GTPOC/qLKtZQCNs3gCPK/cPhvxm7jLV6vKQQi6RzqKeKaXvt//HqoAny4EQRPmSmwTZmQ1+mGMmBFskgr54Eag7vttyuoEC9mEjNViS/CEg6SA7 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: 4863bb6f-8818-4b82-0081-08d8234fb57e X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jul 2020 15:00:52.5478 (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: 0Xh5BUayQibQ5rzuHXT4rqm2o1Zca6hbHjJUtnXeSx1ClV5rjn5Y8tpFV/WwPk401z6wWrwk1ThDDkFABtfroWkF7agOj1Y0+vWo+0VFq44= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR11MB2946 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org QWRkIHN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgUG9sYXJGaXJlIFBDSWUgY29udHJvbGxlciB3 aGVuDQpjb25maWd1cmVkIGluIGhvc3QgKFJvb3QgQ29tcGxleCkgbW9kZS4NCg0KU2lnbmVkLW9m Zi1ieTogRGFpcmUgTWNOYW1hcmEgPGRhaXJlLm1jbmFtYXJhQG1pY3JvY2hpcC5jb20+DQotLS0N CiBkcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWcgICAgICAgICAgICAgICB8ICAgOSArDQog ZHJpdmVycy9wY2kvY29udHJvbGxlci9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDEgKw0KIGRy aXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1taWNyb2NoaXAtaG9zdC5jIHwgNjgzICsrKysrKysr KysrKysrKysrKysNCiAzIGZpbGVzIGNoYW5nZWQsIDY5MyBpbnNlcnRpb25zKCspDQogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1taWNyb2NoaXAtaG9zdC5j DQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWcgYi9kcml2ZXJz L3BjaS9jb250cm9sbGVyL0tjb25maWcNCmluZGV4IGFkZGRmMjFmYTM4MS4uZDllMTE1ODExMTlh IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnDQorKysgYi9kcml2 ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWcNCkBAIC0yODYsNiArMjg2LDE1IEBAIGNvbmZpZyBQ Q0lfTE9PTkdTT04NCiAJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBQQ0kgY29u dHJvbGxlciBzdXBwb3J0IG9uDQogCSAgTG9vbmdzb24gc3lzdGVtcy4NCiANCitjb25maWcgUENJ RV9NSUNST0NISVBfSE9TVA0KKwlib29sICJNaWNyb2NoaXAgQVhJIFBDSWUgaG9zdCBicmlkZ2Ug c3VwcG9ydCINCisJZGVwZW5kcyBvbiBQQ0lfTVNJICYmIE9GDQorCXNlbGVjdCBQQ0lfTVNJX0lS UV9ET01BSU4NCisJc2VsZWN0IEdFTkVSSUNfTVNJX0lSUV9ET01BSU4NCisJaGVscA0KKwkgIFNh eSBZIGhlcmUgaWYgeW91IHdhbnQga2VybmVsIHRvIHN1cHBvcnQgdGhlIE1pY3JvY2hpcCBBWEkg UENJZQ0KKwkgIEhvc3QgQnJpZGdlIGRyaXZlci4NCisNCiBzb3VyY2UgImRyaXZlcnMvcGNpL2Nv bnRyb2xsZXIvZHdjL0tjb25maWciDQogc291cmNlICJkcml2ZXJzL3BjaS9jb250cm9sbGVyL21v Yml2ZWlsL0tjb25maWciDQogc291cmNlICJkcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2Uv S2NvbmZpZyINCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL01ha2VmaWxlIGIv ZHJpdmVycy9wY2kvY29udHJvbGxlci9NYWtlZmlsZQ0KaW5kZXggZWZkOTczM2VhZDI2Li4yN2Y4 OWI0OTljNmUgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL01ha2VmaWxlDQor KysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL01ha2VmaWxlDQpAQCAtMjcsNiArMjcsNyBAQCBv YmotJChDT05GSUdfUENJRV9ST0NLQ0hJUF9FUCkgKz0gcGNpZS1yb2NrY2hpcC1lcC5vDQogb2Jq LSQoQ09ORklHX1BDSUVfUk9DS0NISVBfSE9TVCkgKz0gcGNpZS1yb2NrY2hpcC1ob3N0Lm8NCiBv YmotJChDT05GSUdfUENJRV9NRURJQVRFSykgKz0gcGNpZS1tZWRpYXRlay5vDQogb2JqLSQoQ09O RklHX1BDSUVfVEFOR09fU01QODc1OSkgKz0gcGNpZS10YW5nby5vDQorb2JqLSQoQ09ORklHX1BD SUVfTUlDUk9DSElQX0hPU1QpICs9IHBjaWUtbWljcm9jaGlwLWhvc3Qubw0KIG9iai0kKENPTkZJ R19WTUQpICs9IHZtZC5vDQogb2JqLSQoQ09ORklHX1BDSUVfQlJDTVNUQikgKz0gcGNpZS1icmNt c3RiLm8NCiBvYmotJChDT05GSUdfUENJX0xPT05HU09OKSArPSBwY2ktbG9vbmdzb24ubw0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1taWNyb2NoaXAtaG9zdC5jIGIv ZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLW1pY3JvY2hpcC1ob3N0LmMNCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjkwZDA1MTEwMDE4MQ0KLS0tIC9kZXYvbnVs bA0KKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLW1pY3JvY2hpcC1ob3N0LmMNCkBA IC0wLDAgKzEsNjgzIEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCisv Kg0KKyAqIE1pY3JvY2hpcCBBWEkgUENJZSBCcmlkZ2UgaG9zdCBjb250cm9sbGVyIGRyaXZlcg0K KyAqDQorICogQ29weXJpZ2h0IChjKSAyMDE4IC0gMjAxOSBNaWNyb2NoaXAgQ29ycG9yYXRpb24u IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBBdXRob3I6IERhaXJlIE1jTmFtYXJhIDxk YWlyZS5tY25hbWFyYUBtaWNyb2NoaXAuY29tPg0KKyAqDQorICogQmFzZWQgb246DQorICoJcGNp ZS1yY2FyLmMNCisgKglwY2llLXhpbGlueC5jDQorICoJcGNpZS1hbHRlcmEuYw0KKyAqLw0KKyNp bmNsdWRlIDxsaW51eC9pcnFjaGlwL2NoYWluZWRfaXJxLmg+DQorI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9tc2kuaD4NCisjaW5jbHVkZSA8bGludXgvb2ZfYWRk cmVzcy5oPg0KKyNpbmNsdWRlIDxsaW51eC9vZl9pcnEuaD4NCisjaW5jbHVkZSA8bGludXgvb2Zf cGNpLmg+DQorI2luY2x1ZGUgPGxpbnV4L3BjaS1lY2FtLmg+DQorI2luY2x1ZGUgPGxpbnV4L3Bs YXRmb3JtX2RldmljZS5oPg0KKw0KKyNpbmNsdWRlICIuLi9wY2kuaCINCisNCisvKiBOdW1iZXIg b2YgTVNJIElSUXMgKi8NCisjZGVmaW5lIE1DX05VTV9NU0lfSVJRUwkJCQkzMg0KKyNkZWZpbmUg TUNfTlVNX01TSV9JUlFTX0NPREVECQkJNQ0KKw0KKy8qIFBDSWUgQnJpZGdlIFBoeSBhbmQgQ29u dHJvbGxlciBQaHkgb2Zmc2V0cyAqLw0KKyNkZWZpbmUgTUNfUENJRTFfQlJJREdFX0FERFIJCQkw eDAwMDA4MDAwdQ0KKyNkZWZpbmUgTUNfUENJRTFfQ1RSTF9BRERSCQkJMHgwMDAwYTAwMHUNCisN CisvKiBQQ0llIENvbnRyb2xsZXIgUGh5IFJlZ3MgKi8NCisjZGVmaW5lIE1DX1NFQ19FUlJPUl9J TlQJCQkweDI4DQorI2RlZmluZSAgU0VDX0VSUk9SX0lOVF9UWF9SQU1fU0VDX0VSUl9JTlQJR0VO TUFTSygzLCAwKQ0KKyNkZWZpbmUgIFNFQ19FUlJPUl9JTlRfUlhfUkFNX1NFQ19FUlJfSU5UCUdF Tk1BU0soNywgNCkNCisjZGVmaW5lICBTRUNfRVJST1JfSU5UX1BDSUUyQVhJX1JBTV9TRUNfRVJS X0lOVAlHRU5NQVNLKDExLCA4KQ0KKyNkZWZpbmUgIFNFQ19FUlJPUl9JTlRfQVhJMlBDSUVfUkFN X1NFQ19FUlJfSU5UCUdFTk1BU0soMTUsIDEyKQ0KKyNkZWZpbmUgTUNfU0VDX0VSUk9SX0lOVF9N QVNLCQkJMHgyYw0KKyNkZWZpbmUgTUNfREVEX0VSUk9SX0lOVAkJCTB4MzANCisjZGVmaW5lICBE RURfRVJST1JfSU5UX1RYX1JBTV9ERURfRVJSX0lOVAlHRU5NQVNLKDMsIDApDQorI2RlZmluZSAg REVEX0VSUk9SX0lOVF9SWF9SQU1fREVEX0VSUl9JTlQJR0VOTUFTSyg3LCA0KQ0KKyNkZWZpbmUg IERFRF9FUlJPUl9JTlRfUENJRTJBWElfUkFNX0RFRF9FUlJfSU5UCUdFTk1BU0soMTEsIDgpDQor I2RlZmluZSAgREVEX0VSUk9SX0lOVF9BWEkyUENJRV9SQU1fREVEX0VSUl9JTlQJR0VOTUFTSygx NSwgMTIpDQorI2RlZmluZSBNQ19ERURfRVJST1JfSU5UX01BU0sJCQkweDM0DQorI2RlZmluZSBN Q19FQ0NfQ09OVFJPTAkJCQkweDM4DQorI2RlZmluZSAgRUNDX0NPTlRST0xfQVhJMlBDSUVfUkFN X0VDQ19CWVBBU1MJQklUKDI3KQ0KKyNkZWZpbmUgIEVDQ19DT05UUk9MX1BDSUUyQVhJX1JBTV9F Q0NfQllQQVNTCUJJVCgyNikNCisjZGVmaW5lICBFQ0NfQ09OVFJPTF9SWF9SQU1fRUNDX0JZUEFT UwkJQklUKDI1KQ0KKyNkZWZpbmUgIEVDQ19DT05UUk9MX1RYX1JBTV9FQ0NfQllQQVNTCQlCSVQo MjQpDQorI2RlZmluZSBNQ19MVFNTTV9TVEFURQkJCQkweDVjDQorI2RlZmluZSAgTFRTU01fTDBf U1RBVEUJCQkJMHgxMA0KKyNkZWZpbmUgTUNfUENJRV9FVkVOVF9JTlQJCQkweDE0Yw0KKyNkZWZp bmUgIFBDSUVfRVZFTlRfSU5UX0wyX0VYSVRfSU5UCQlCSVQoMCkNCisjZGVmaW5lICBQQ0lFX0VW RU5UX0lOVF9IT1RSU1RfRVhJVF9JTlQJCUJJVCgxKQ0KKyNkZWZpbmUgIFBDSUVfRVZFTlRfSU5U X0RMVVBfRVhJVF9JTlQJCUJJVCgyKQ0KKyNkZWZpbmUgIFBDSUVfRVZFTlRfSU5UX0wyX0VYSVRf SU5UX01BU0sJQklUKDE2KQ0KKyNkZWZpbmUgIFBDSUVfRVZFTlRfSU5UX0hPVFJTVF9FWElUX0lO VF9NQVNLCUJJVCgxNykNCisjZGVmaW5lICBQQ0lFX0VWRU5UX0lOVF9ETFVQX0VYSVRfSU5UX01B U0sJQklUKDE4KQ0KKw0KKy8qIFBDSWUgQnJpZGdlIFBoeSBSZWdzICovDQorI2RlZmluZSBNQ19Q Q0lFX1BDSV9JRFNfRFcxCQkJMHg5Yw0KKw0KKy8qIFBDSWUgQ29uZmlnIHNwYWNlIE1TSSBjYXBh YmlsaXR5IHN0cnVjdHVyZSAqLw0KKyNkZWZpbmUgTUNfTVNJX0NBUF9DVFJMX09GRlNFVAkJCTB4 ZTB1DQorI2RlZmluZSAgTUNfTVNJX01BWF9RX0FWQUlMCQkJKE1DX05VTV9NU0lfSVJRU19DT0RF RCA8PCAxKQ0KKyNkZWZpbmUgIE1DX01TSV9RX1NJWkUJCQkJKE1DX05VTV9NU0lfSVJRU19DT0RF RCA8PCA0KQ0KKw0KKyNkZWZpbmUgTUNfSU1BU0tfTE9DQUwJCQkJMHgxODANCisjZGVmaW5lICBQ Q0lFX0xPQ0FMX0lOVF9FTkFCTEUJCQkweDBmMDAwMDAwdQ0KKyNkZWZpbmUgIFBDSV9JTlRTCQkJ CTB4MGYwMDAwMDB1DQorI2RlZmluZSAgUE1fTVNJX0lOVF9TSElGVAkJCTI0DQorI2RlZmluZSAg UENJRV9FTkFCTEVfTVNJCQkJMHgxMDAwMDAwMHUNCisjZGVmaW5lICBNU0lfSU5UCQkJCTB4MTAw MDAwMDB1DQorI2RlZmluZSAgTVNJX0lOVF9TSElGVAkJCQkyOA0KKyNkZWZpbmUgTUNfSVNUQVRV U19MT0NBTAkJCTB4MTg0DQorI2RlZmluZSBNQ19JTUFTS19IT1NUCQkJCTB4MTg4DQorI2RlZmlu ZSBNQ19JU1RBVFVTX0hPU1QJCQkJMHgxOGMNCisjZGVmaW5lIE1DX01TSV9BRERSCQkJCTB4MTkw DQorI2RlZmluZSBNQ19JU1RBVFVTX01TSQkJCQkweDE5NA0KKw0KKy8qIFBDSWUgTWFzdGVyIHRh YmxlIGluaXQgZGVmaW5lcyAqLw0KKyNkZWZpbmUgTUNfQVRSMF9QQ0lFX1dJTjBfU1JDQUREUl9Q QVJBTQkJMHg2MDB1DQorI2RlZmluZSAgQVRSMF9QQ0lFX0FUUl9TSVpFCQkJMHgxZg0KKyNkZWZp bmUgIEFUUjBfUENJRV9BVFJfU0laRV9TSElGVAkJMQ0KKyNkZWZpbmUgTUNfQVRSMF9QQ0lFX1dJ TjBfU1JDX0FERFIJCTB4NjA0dQ0KKyNkZWZpbmUgTUNfQVRSMF9QQ0lFX1dJTjBfVFJTTF9BRERS X0xTQgkJMHg2MDh1DQorI2RlZmluZSBNQ19BVFIwX1BDSUVfV0lOMF9UUlNMX0FERFJfVURXCQkw eDYwY3UNCisjZGVmaW5lIE1DX0FUUjBfUENJRV9XSU4wX1RSU0xfUEFSQU0JCTB4NjEwdQ0KKw0K Ky8qIFBDSWUgQVhJIHNsYXZlIHRhYmxlIGluaXQgZGVmaW5lcyAqLw0KKyNkZWZpbmUgTUNfQVRS MF9BWEk0X1NMVjBfU1JDQUREUl9QQVJBTQkJMHg4MDB1DQorI2RlZmluZSAgQVRSX1NJWkVfU0hJ RlQJCQkJMQ0KKyNkZWZpbmUgIEFUUl9JTVBMX0VOQUJMRQkJCTENCisjZGVmaW5lIE1DX0FUUjBf QVhJNF9TTFYwX1NSQ19BRERSCQkweDgwNHUNCisjZGVmaW5lIE1DX0FUUjBfQVhJNF9TTFYwX1RS U0xfQUREUl9MU0IJCTB4ODA4dQ0KKyNkZWZpbmUgTUNfQVRSMF9BWEk0X1NMVjBfVFJTTF9BRERS X1VEVwkJMHg4MGN1DQorI2RlZmluZSBNQ19BVFIwX0FYSTRfU0xWMF9UUlNMX1BBUkFNCQkweDgx MHUNCisjZGVmaW5lICBQQ0lFX1RYX1JYX0lOVEVSRkFDRQkJCTB4MDAwMDAwMDB1DQorI2RlZmlu ZSAgUENJRV9DT05GSUdfSU5URVJGQUNFCQkJMHgwMDAwMDAwMXUNCisNCisjZGVmaW5lIEFUVF9F TlRSWV9TSVpFCQkJCTMyDQorDQorc3RydWN0IG1jX21zaSB7DQorCXN0cnVjdCBtdXRleCBsb2Nr OwkJLyogUHJvdGVjdCB1c2VkIGJpdG1hcCAqLw0KKwlzdHJ1Y3QgaXJxX2RvbWFpbiAqbXNpX2Rv bWFpbjsNCisJc3RydWN0IGlycV9kb21haW4gKmRldl9kb21haW47DQorCXUzMiBudW1fdmVjdG9y czsNCisJdTY0IHZlY3Rvcl9waHk7DQorCURFQ0xBUkVfQklUTUFQKHVzZWQsIE1DX05VTV9NU0lf SVJRUyk7DQorfTsNCisNCitzdHJ1Y3QgbWNfcGNpZSB7DQorCXN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXY7DQorCXZvaWQgX19pb21lbSAqY2ZnX2Jhc2VfYWRkcjsNCisJdm9pZCBfX2lvbWVt ICpicmlkZ2VfYmFzZV9hZGRyOw0KKwl2b2lkIF9faW9tZW0gKmN0cmxfYmFzZV9hZGRyOw0KKwlz dHJ1Y3QgaXJxX2RvbWFpbiAqaW50eF9kb21haW47DQorCXJhd19zcGlubG9ja190IGludHhfbWFz a19sb2NrOw0KKwlzdHJ1Y3QgbWNfbXNpIG1zaTsNCit9Ow0KKw0KK3N0YXRpYyBpbmxpbmUgdTMy IGNmZ19yZWFkbChzdHJ1Y3QgbWNfcGNpZSAqcGNpZSwgY29uc3QgdTMyIHJlZykNCit7DQorCXJl dHVybiByZWFkbF9yZWxheGVkKHBjaWUtPmNmZ19iYXNlX2FkZHIgKyByZWcpOw0KK30NCisNCitz dGF0aWMgaW5saW5lIHUxNiBjZmdfcmVhZHcoc3RydWN0IG1jX3BjaWUgKnBjaWUsIGNvbnN0IHUx NiByZWcpDQorew0KKwlyZXR1cm4gcmVhZHdfcmVsYXhlZChwY2llLT5jZmdfYmFzZV9hZGRyICsg cmVnKTsNCit9DQorDQorc3RhdGljIGlubGluZSB2b2lkIGNmZ193cml0ZWwoc3RydWN0IG1jX3Bj aWUgKnBjaWUsIGNvbnN0IHUzMiB2YWwsDQorCQkJICAgICAgY29uc3QgdTMyIHJlZykNCit7DQor CXdyaXRlbF9yZWxheGVkKHZhbCwgcGNpZS0+Y2ZnX2Jhc2VfYWRkciArIHJlZyk7DQorfQ0KKw0K K3N0YXRpYyBpbmxpbmUgdm9pZCBjZmdfd3JpdGV3KHN0cnVjdCBtY19wY2llICpwY2llLCBjb25z dCB1MTYgdmFsLA0KKwkJCSAgICAgIGNvbnN0IHUxNiByZWcpDQorew0KKwl3cml0ZXdfcmVsYXhl ZCh2YWwsIHBjaWUtPmNmZ19iYXNlX2FkZHIgKyByZWcpOw0KK30NCisNCitzdGF0aWMgdm9pZCBt Y19wY2llX2VuYWJsZShzdHJ1Y3QgbWNfcGNpZSAqcGNpZSkNCit7DQorCXUzMiBlbmI7DQorDQor CWVuYiA9IHJlYWRsX3JlbGF4ZWQocGNpZS0+YnJpZGdlX2Jhc2VfYWRkciArIE1DX0xUU1NNX1NU QVRFKTsNCisJZW5iIHw9IExUU1NNX0wwX1NUQVRFOw0KKwl3cml0ZWxfcmVsYXhlZChlbmIsIHBj aWUtPmJyaWRnZV9iYXNlX2FkZHIgKyBNQ19MVFNTTV9TVEFURSk7DQorfQ0KKw0KK3N0YXRpYyB2 b2lkIG1jX3BjaWVfaXNyKHN0cnVjdCBpcnFfZGVzYyAqZGVzYykNCit7DQorCXN0cnVjdCBpcnFf Y2hpcCAqY2hpcCA9IGlycV9kZXNjX2dldF9jaGlwKGRlc2MpOw0KKwlzdHJ1Y3QgbWNfcGNpZSAq cGNpZSA9IGlycV9kZXNjX2dldF9oYW5kbGVyX2RhdGEoZGVzYyk7DQorCXN0cnVjdCBkZXZpY2Ug KmRldiA9ICZwY2llLT5wZGV2LT5kZXY7DQorCXN0cnVjdCBtY19tc2kgKm1zaSA9ICZwY2llLT5t c2k7DQorCXVuc2lnbmVkIGxvbmcgc3RhdHVzOw0KKwl1bnNpZ25lZCBsb25nIGludHhfc3RhdHVz Ow0KKwl1bnNpZ25lZCBsb25nIG1zaV9zdGF0dXM7DQorCXUzMiBiaXQ7DQorCXUzMiB2aXJxOw0K Kw0KKwkvKg0KKwkgKiBUaGUgY29yZSBwcm92aWRlcyBhIHNpbmdsZSBpbnRlcnJ1cHQgZm9yIGJv dGggSU5UeC9NU0kgbWVzc2FnZXMuDQorCSAqIFNvIHdlJ2xsIHJlYWQgYm90aCBJTlR4IGFuZCBN U0kgc3RhdHVzLg0KKwkgKi8NCisJY2hhaW5lZF9pcnFfZW50ZXIoY2hpcCwgZGVzYyk7DQorDQor CXN0YXR1cyA9IHJlYWRsX3JlbGF4ZWQocGNpZS0+YnJpZGdlX2Jhc2VfYWRkciArIE1DX0lTVEFU VVNfTE9DQUwpOw0KKwl3aGlsZSAoc3RhdHVzICYgKFBDSV9JTlRTIHwgTVNJX0lOVCkpIHsNCisJ CWludHhfc3RhdHVzID0gKHN0YXR1cyAmIFBDSV9JTlRTKSA+PiBQTV9NU0lfSU5UX1NISUZUOw0K KwkJZm9yX2VhY2hfc2V0X2JpdChiaXQsICZpbnR4X3N0YXR1cywgUENJX05VTV9JTlRYKSB7DQor CQkJdmlycSA9IGlycV9maW5kX21hcHBpbmcocGNpZS0+aW50eF9kb21haW4sIGJpdCArIDEpOw0K KwkJCWlmICh2aXJxKQ0KKwkJCQlnZW5lcmljX2hhbmRsZV9pcnEodmlycSk7DQorCQkJZWxzZQ0K KwkJCQlkZXZfZXJyX3JhdGVsaW1pdGVkKGRldiwgImJhZCBJTlR4IElSUSAlZFxuIiwNCisJCQkJ CQkgICAgYml0KTsNCisNCisJCQkvKiBDbGVhciB0aGF0IGludGVycnVwdCBiaXQgKi8NCisJCQl3 cml0ZWxfcmVsYXhlZCgxIDw8IChiaXQgKyBQTV9NU0lfSU5UX1NISUZUKSwNCisJCQkJICAgICAg IHBjaWUtPmJyaWRnZV9iYXNlX2FkZHIgKw0KKwkJCQkgICAgICAgTUNfSVNUQVRVU19MT0NBTCk7 DQorCQl9DQorDQorCQltc2lfc3RhdHVzID0gKHN0YXR1cyAmIE1TSV9JTlQpOw0KKwkJaWYgKG1z aV9zdGF0dXMpIHsNCisJCQltc2lfc3RhdHVzID0gcmVhZGxfcmVsYXhlZChwY2llLT5icmlkZ2Vf YmFzZV9hZGRyICsNCisJCQkJCSAgIE1DX0lTVEFUVVNfTVNJKTsNCisJCQlmb3JfZWFjaF9zZXRf Yml0KGJpdCwgJm1zaV9zdGF0dXMsIG1zaS0+bnVtX3ZlY3RvcnMpIHsNCisJCQkJdmlycSA9IGly cV9maW5kX21hcHBpbmcobXNpLT5kZXZfZG9tYWluLCBiaXQpOw0KKwkJCQlpZiAodmlycSkNCisJ CQkJCWdlbmVyaWNfaGFuZGxlX2lycSh2aXJxKTsNCisJCQkJZWxzZQ0KKwkJCQkJZGV2X2Vycl9y YXRlbGltaXRlZChkZXYsDQorCQkJCQkJCSAgICAiYmFkIE1TSSBJUlEgJWRcbiIsDQorCQkJCQkJ CSAgICBiaXQpOw0KKw0KKwkJCQkvKiBDbGVhciB0aGF0IE1TSSBpbnRlcnJ1cHQgYml0ICovDQor CQkJCXdyaXRlbF9yZWxheGVkKCgxIDw8IGJpdCksDQorCQkJCQkgICAgICAgcGNpZS0+YnJpZGdl X2Jhc2VfYWRkciArDQorCQkJCQkgICAgICAgTUNfSVNUQVRVU19NU0kpOw0KKwkJCX0NCisJCQkv KiBDbGVhciB0aGUgSVNUQVRVUyBNU0kgYml0ICovDQorCQkJd3JpdGVsX3JlbGF4ZWQoMSA8PCBN U0lfSU5UX1NISUZULA0KKwkJCQkgICAgICAgcGNpZS0+YnJpZGdlX2Jhc2VfYWRkciArDQorCQkJ CSAgICAgICBNQ19JU1RBVFVTX0xPQ0FMKTsNCisJCX0NCisNCisJCXN0YXR1cyA9IHJlYWRsX3Jl bGF4ZWQocGNpZS0+YnJpZGdlX2Jhc2VfYWRkciArDQorCQkJCSAgICAgICBNQ19JU1RBVFVTX0xP Q0FMKTsNCisJfQ0KKw0KKwljaGFpbmVkX2lycV9leGl0KGNoaXAsIGRlc2MpOw0KK30NCisNCitz dGF0aWMgaW50IG1jX3BjaWVfcGFyc2VfZHQoc3RydWN0IG1jX3BjaWUgKnBjaWUpDQorew0KKwlz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gcGNpZS0+cGRldjsNCisJc3RydWN0IGRldmlj ZSAqZGV2ID0gJnBjaWUtPnBkZXYtPmRldjsNCisJc3RydWN0IG1jX21zaSAqbXNpID0gJnBjaWUt Pm1zaTsNCisJc3RydWN0IHJlc291cmNlICpyZXM7DQorCXZvaWQgX19pb21lbSAqYXhpX2Jhc2Vf YWRkcjsNCisJdTMyIGlycTsNCisNCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYs IElPUkVTT1VSQ0VfTUVNLCAxKTsNCisJYXhpX2Jhc2VfYWRkciA9IGRldm1faW9yZW1hcF9yZXNv dXJjZShkZXYsIHJlcyk7DQorCWlmIChJU19FUlIoYXhpX2Jhc2VfYWRkcikpDQorCQlyZXR1cm4g UFRSX0VSUihheGlfYmFzZV9hZGRyKTsNCisNCisJcGNpZS0+YnJpZGdlX2Jhc2VfYWRkciA9IGF4 aV9iYXNlX2FkZHIgKyBNQ19QQ0lFMV9CUklER0VfQUREUjsNCisJcGNpZS0+Y3RybF9iYXNlX2Fk ZHIgPSBheGlfYmFzZV9hZGRyICsgTUNfUENJRTFfQ1RSTF9BRERSOw0KKw0KKwltc2ktPnZlY3Rv cl9waHkgPSBNQ19NU0lfQUREUjsNCisNCisJbXNpLT5udW1fdmVjdG9ycyA9IE1DX05VTV9NU0lf SVJRUzsNCisNCisJaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsNCisJaWYgKGlycSA8 IDApIHsNCisJCWRldl9lcnIoZGV2LCAidW5hYmxlIHRvIHJlcXVlc3QgSVJRJWRcbiIsIGlycSk7 DQorCQlyZXR1cm4gLUVOT0RFVjsNCisJfQ0KKw0KKwlpcnFfc2V0X2NoYWluZWRfaGFuZGxlcl9h bmRfZGF0YShpcnEsIG1jX3BjaWVfaXNyLCBwY2llKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0K K3N0YXRpYyB2b2lkIG1jX3BjaWVfZW5hYmxlX21zaShzdHJ1Y3QgbWNfcGNpZSAqcGNpZSkNCit7 DQorCXN0cnVjdCBtY19tc2kgKm1zaSA9ICZwY2llLT5tc2k7DQorCXUzMiBjYXBfb2Zmc2V0ID0g TUNfTVNJX0NBUF9DVFJMX09GRlNFVDsNCisNCisJdTE2IG1zZ19jdHJsID0gY2ZnX3JlYWR3KHBj aWUsIGNhcF9vZmZzZXQgKyBQQ0lfTVNJX0ZMQUdTKTsNCisNCisJbXNnX2N0cmwgfD0gUENJX01T SV9GTEFHU19FTkFCTEU7DQorCW1zZ19jdHJsICY9IH5QQ0lfTVNJX0ZMQUdTX1FNQVNLOw0KKwlt c2dfY3RybCB8PSBNQ19NU0lfTUFYX1FfQVZBSUw7DQorCW1zZ19jdHJsICY9IH5QQ0lfTVNJX0ZM QUdTX1FTSVpFOw0KKwltc2dfY3RybCB8PSBNQ19NU0lfUV9TSVpFOw0KKwltc2dfY3RybCB8PSBQ Q0lfTVNJX0ZMQUdTXzY0QklUOw0KKwljZmdfd3JpdGV3KHBjaWUsIG1zZ19jdHJsLCBjYXBfb2Zm c2V0ICsgUENJX01TSV9GTEFHUyk7DQorDQorCWNmZ193cml0ZWwocGNpZSwgbG93ZXJfMzJfYml0 cyhtc2ktPnZlY3Rvcl9waHkpLA0KKwkJICAgY2FwX29mZnNldCArIFBDSV9NU0lfQUREUkVTU19M Tyk7DQorCWNmZ193cml0ZWwocGNpZSwgdXBwZXJfMzJfYml0cyhtc2ktPnZlY3Rvcl9waHkpLA0K KwkJICAgY2FwX29mZnNldCArIFBDSV9NU0lfQUREUkVTU19ISSk7DQorfQ0KKw0KK3N0YXRpYyBp bnQgbWNfaG9zdF9pbml0KHN0cnVjdCBtY19wY2llICpwY2llLCB1NjQgY2ZnaHdfYmFzZV9hZGRy LCB1MzIgYXRyX3N6KQ0KK3sNCisJdTMyIHZhbDsNCisNCisJbWNfcGNpZV9lbmFibGUocGNpZSk7 DQorDQorCXZhbCA9IEVDQ19DT05UUk9MX0FYSTJQQ0lFX1JBTV9FQ0NfQllQQVNTIHwNCisJICAg ICAgRUNDX0NPTlRST0xfUENJRTJBWElfUkFNX0VDQ19CWVBBU1MgfA0KKwkgICAgICBFQ0NfQ09O VFJPTF9SWF9SQU1fRUNDX0JZUEFTUyB8IEVDQ19DT05UUk9MX1RYX1JBTV9FQ0NfQllQQVNTOw0K Kwl3cml0ZWxfcmVsYXhlZCh2YWwsIHBjaWUtPmN0cmxfYmFzZV9hZGRyICsgTUNfRUNDX0NPTlRS T0wpOw0KKw0KKwl2YWwgPSBQQ0lFX0VWRU5UX0lOVF9MMl9FWElUX0lOVCB8IFBDSUVfRVZFTlRf SU5UX0hPVFJTVF9FWElUX0lOVCB8DQorCSAgICAgIFBDSUVfRVZFTlRfSU5UX0RMVVBfRVhJVF9J TlQgfCBQQ0lFX0VWRU5UX0lOVF9MMl9FWElUX0lOVF9NQVNLIHwNCisJICAgICAgUENJRV9FVkVO VF9JTlRfSE9UUlNUX0VYSVRfSU5UX01BU0sgfA0KKwkgICAgICBQQ0lFX0VWRU5UX0lOVF9ETFVQ X0VYSVRfSU5UX01BU0s7DQorCXdyaXRlbF9yZWxheGVkKHZhbCwgcGNpZS0+Y3RybF9iYXNlX2Fk ZHIgKyBNQ19QQ0lFX0VWRU5UX0lOVCk7DQorDQorCXZhbCA9IFNFQ19FUlJPUl9JTlRfVFhfUkFN X1NFQ19FUlJfSU5UIHwNCisJICAgICAgU0VDX0VSUk9SX0lOVF9SWF9SQU1fU0VDX0VSUl9JTlQg fA0KKwkgICAgICBTRUNfRVJST1JfSU5UX1BDSUUyQVhJX1JBTV9TRUNfRVJSX0lOVCB8DQorCSAg ICAgIFNFQ19FUlJPUl9JTlRfQVhJMlBDSUVfUkFNX1NFQ19FUlJfSU5UOw0KKwl3cml0ZWxfcmVs YXhlZCh2YWwsIHBjaWUtPmN0cmxfYmFzZV9hZGRyICsgTUNfU0VDX0VSUk9SX0lOVCk7DQorCXdy aXRlbF9yZWxheGVkKHZhbCwgcGNpZS0+Y3RybF9iYXNlX2FkZHIgKyBNQ19TRUNfRVJST1JfSU5U X01BU0spOw0KKw0KKwl2YWwgPSBERURfRVJST1JfSU5UX1RYX1JBTV9ERURfRVJSX0lOVCB8DQor CSAgICAgIERFRF9FUlJPUl9JTlRfUlhfUkFNX0RFRF9FUlJfSU5UIHwNCisJICAgICAgREVEX0VS Uk9SX0lOVF9QQ0lFMkFYSV9SQU1fREVEX0VSUl9JTlQgfA0KKwkgICAgICBERURfRVJST1JfSU5U X0FYSTJQQ0lFX1JBTV9ERURfRVJSX0lOVDsNCisJd3JpdGVsX3JlbGF4ZWQodmFsLCBwY2llLT5j dHJsX2Jhc2VfYWRkciArIE1DX0RFRF9FUlJPUl9JTlQpOw0KKwl3cml0ZWxfcmVsYXhlZCh2YWws IHBjaWUtPmN0cmxfYmFzZV9hZGRyICsgTUNfREVEX0VSUk9SX0lOVF9NQVNLKTsNCisNCisJd3Jp dGVsX3JlbGF4ZWQoMCwgcGNpZS0+YnJpZGdlX2Jhc2VfYWRkciArIE1DX0lNQVNLX0xPQ0FMKTsN CisJd3JpdGVsX3JlbGF4ZWQoR0VOTUFTSygzMSwgMCksIHBjaWUtPmJyaWRnZV9iYXNlX2FkZHIg Kw0KKwkJICAgICAgIE1DX0lTVEFUVVNfTE9DQUwpOw0KKwl3cml0ZWxfcmVsYXhlZCgwLCBwY2ll LT5icmlkZ2VfYmFzZV9hZGRyICsgTUNfSU1BU0tfSE9TVCk7DQorCXdyaXRlbF9yZWxheGVkKEdF Tk1BU0soMzEsIDApLCBwY2llLT5icmlkZ2VfYmFzZV9hZGRyICsNCisJCSAgICAgICBNQ19JU1RB VFVTX0hPU1QpOw0KKw0KKwkvKiBDb25maWd1cmUgQWRkcmVzcyBUcmFuc2xhdGlvbiBUYWJsZSAw IGZvciBQQ0llIGNvbmZpZyBzcGFjZSAqLw0KKwl3cml0ZWxfcmVsYXhlZChQQ0lFX0NPTkZJR19J TlRFUkZBQ0UsIHBjaWUtPmJyaWRnZV9iYXNlX2FkZHIgKw0KKwkgICAgICAgTUNfQVRSMF9BWEk0 X1NMVjBfVFJTTF9QQVJBTSk7DQorDQorCXZhbCA9IGxvd2VyXzMyX2JpdHMoY2ZnaHdfYmFzZV9h ZGRyKSB8DQorCSAgICAgIChhdHJfc3ogPDwgQVRSX1NJWkVfU0hJRlQpIHwgQVRSX0lNUExfRU5B QkxFOw0KKwl3cml0ZWxfcmVsYXhlZCh2YWwsIHBjaWUtPmJyaWRnZV9iYXNlX2FkZHIgKw0KKwkJ ICAgICAgIE1DX0FUUjBfQVhJNF9TTFYwX1NSQ0FERFJfUEFSQU0pOw0KKwl3cml0ZWxfcmVsYXhl ZCgwLCBwY2llLT5icmlkZ2VfYmFzZV9hZGRyICsNCisJCSAgICAgICBNQ19BVFIwX0FYSTRfU0xW MF9TUkNfQUREUik7DQorDQorCXZhbCA9IGxvd2VyXzMyX2JpdHMoY2ZnaHdfYmFzZV9hZGRyKTsN CisJd3JpdGVsX3JlbGF4ZWQodmFsLCBwY2llLT5icmlkZ2VfYmFzZV9hZGRyICsNCisJCSAgICAg ICBNQ19BVFIwX0FYSTRfU0xWMF9UUlNMX0FERFJfTFNCKTsNCisJdmFsID0gdXBwZXJfMzJfYml0 cyhjZmdod19iYXNlX2FkZHIpOw0KKwl3cml0ZWxfcmVsYXhlZCh2YWwsIHBjaWUtPmJyaWRnZV9i YXNlX2FkZHIgKw0KKwkJCSAgICBNQ19BVFIwX0FYSTRfU0xWMF9UUlNMX0FERFJfVURXKTsNCisN CisJdmFsID0gcmVhZGxfcmVsYXhlZChwY2llLT5icmlkZ2VfYmFzZV9hZGRyICsNCisJCQkgICAg TUNfQVRSMF9QQ0lFX1dJTjBfU1JDQUREUl9QQVJBTSk7DQorCXZhbCB8PSAoQVRSMF9QQ0lFX0FU Ul9TSVpFIDw8IEFUUjBfUENJRV9BVFJfU0laRV9TSElGVCk7DQorCXdyaXRlbF9yZWxheGVkKHZh bCwgcGNpZS0+YnJpZGdlX2Jhc2VfYWRkciArDQorCQkgICAgICAgTUNfQVRSMF9QQ0lFX1dJTjBf U1JDQUREUl9QQVJBTSk7DQorCXdyaXRlbF9yZWxheGVkKDAsIHBjaWUtPmJyaWRnZV9iYXNlX2Fk ZHIgKyBNQ19BVFIwX1BDSUVfV0lOMF9TUkNfQUREUik7DQorDQorCXJldHVybiAwOw0KK30NCisN CitzdGF0aWMgdm9pZCBtY19tYXNrX2ludHhfaXJxKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSkNCit7 DQorCXN0cnVjdCBpcnFfZGVzYyAqZGVzYyA9IGlycV90b19kZXNjKGRhdGEtPmlycSk7DQorCXN0 cnVjdCBtY19wY2llICpwY2llOw0KKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KKwl1MzIgbWFzaywg dmFsOw0KKw0KKwlwY2llID0gaXJxX2Rlc2NfZ2V0X2NoaXBfZGF0YShkZXNjKTsNCisJbWFzayA9 IFBDSUVfTE9DQUxfSU5UX0VOQUJMRTsNCisJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZwY2llLT5p bnR4X21hc2tfbG9jaywgZmxhZ3MpOw0KKwl2YWwgPSByZWFkbF9yZWxheGVkKHBjaWUtPmJyaWRn ZV9iYXNlX2FkZHIgKyBNQ19JTUFTS19MT0NBTCk7DQorCXZhbCAmPSB+bWFzazsNCisJd3JpdGVs X3JlbGF4ZWQodmFsLCBwY2llLT5icmlkZ2VfYmFzZV9hZGRyICsgTUNfSU1BU0tfTE9DQUwpOw0K KwlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGNpZS0+aW50eF9tYXNrX2xvY2ssIGZsYWdz KTsNCit9DQorDQorc3RhdGljIHZvaWQgbWNfdW5tYXNrX2ludHhfaXJxKHN0cnVjdCBpcnFfZGF0 YSAqZGF0YSkNCit7DQorCXN0cnVjdCBpcnFfZGVzYyAqZGVzYyA9IGlycV90b19kZXNjKGRhdGEt PmlycSk7DQorCXN0cnVjdCBtY19wY2llICpwY2llOw0KKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0K Kwl1MzIgbWFzaywgdmFsOw0KKw0KKwlwY2llID0gaXJxX2Rlc2NfZ2V0X2NoaXBfZGF0YShkZXNj KTsNCisJbWFzayA9IFBDSUVfTE9DQUxfSU5UX0VOQUJMRTsNCisJcmF3X3NwaW5fbG9ja19pcnFz YXZlKCZwY2llLT5pbnR4X21hc2tfbG9jaywgZmxhZ3MpOw0KKwl2YWwgPSByZWFkbF9yZWxheGVk KHBjaWUtPmJyaWRnZV9iYXNlX2FkZHIgKyBNQ19JTUFTS19MT0NBTCk7DQorCXZhbCB8PSBtYXNr Ow0KKwl3cml0ZWxfcmVsYXhlZCh2YWwsIHBjaWUtPmJyaWRnZV9iYXNlX2FkZHIgKyBNQ19JTUFT S19MT0NBTCk7DQorCXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZwY2llLT5pbnR4X21hc2tf bG9jaywgZmxhZ3MpOw0KK30NCisNCitzdGF0aWMgc3RydWN0IGlycV9jaGlwIG1jX2ludHhfaXJx X2NoaXAgPSB7DQorCS5uYW1lID0gIm1pY3JvY2hpcF9wY2llOmludHgiLA0KKwkuaXJxX21hc2sg PSBtY19tYXNrX2ludHhfaXJxLA0KKwkuaXJxX3VubWFzayA9IG1jX3VubWFza19pbnR4X2lycSwN Cit9Ow0KKw0KK3N0YXRpYyBpbnQgbWNfcGNpZV9pbnR4X21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAq ZG9tYWluLCB1bnNpZ25lZCBpbnQgaXJxLA0KKwkJCSAgICBpcnFfaHdfbnVtYmVyX3QgaHdpcnEp DQorew0KKwlpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCAmbWNfaW50eF9pcnFfY2hpcCwg aGFuZGxlX3NpbXBsZV9pcnEpOw0KKwlpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGRvbWFpbi0+aG9z dF9kYXRhKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJx X2RvbWFpbl9vcHMgaW50eF9kb21haW5fb3BzID0gew0KKwkubWFwID0gbWNfcGNpZV9pbnR4X21h cCwNCit9Ow0KKw0KK3N0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgbWNfbXNpX2lycV9jaGlwID0gew0K KwkubmFtZSA9ICJNaWNyb2NoaXAgUENJZSBNU0kiLA0KKwkuaXJxX21hc2sgPSBwY2lfbXNpX21h c2tfaXJxLA0KKwkuaXJxX3VubWFzayA9IHBjaV9tc2lfdW5tYXNrX2lycSwNCit9Ow0KKw0KK3N0 YXRpYyBzdHJ1Y3QgbXNpX2RvbWFpbl9pbmZvIG1jX21zaV9kb21haW5faW5mbyA9IHsNCisJLmZs YWdzID0gKE1TSV9GTEFHX1VTRV9ERUZfRE9NX09QUyB8IE1TSV9GTEFHX1VTRV9ERUZfQ0hJUF9P UFMgfA0KKwkJICBNU0lfRkxBR19QQ0lfTVNJWCksDQorCS5jaGlwID0gJm1jX21zaV9pcnFfY2hp cCwNCit9Ow0KKw0KK3N0YXRpYyB2b2lkIG1jX2NvbXBvc2VfbXNpX21zZyhzdHJ1Y3QgaXJxX2Rh dGEgKmRhdGEsIHN0cnVjdCBtc2lfbXNnICptc2cpDQorew0KKwlzdHJ1Y3QgbWNfcGNpZSAqcGNp ZSA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGRhdGEpOw0KKwlwaHlzX2FkZHJfdCBhZGRy ID0gcGNpZS0+bXNpLnZlY3Rvcl9waHk7DQorDQorCW1zZy0+YWRkcmVzc19sbyA9IGxvd2VyXzMy X2JpdHMoYWRkcik7DQorCW1zZy0+YWRkcmVzc19oaSA9IHVwcGVyXzMyX2JpdHMoYWRkcik7DQor CW1zZy0+ZGF0YSA9IGRhdGEtPmh3aXJxOw0KKw0KKwlkZXZfZGJnKCZwY2llLT5wZGV2LT5kZXYs ICJtc2kjJXggYWRkcmVzc19oaSAlI3ggYWRkcmVzc19sbyAlI3hcbiIsDQorCQkoaW50KWRhdGEt Pmh3aXJxLCBtc2ctPmFkZHJlc3NfaGksIG1zZy0+YWRkcmVzc19sbyk7DQorfQ0KKw0KK3N0YXRp YyBpbnQgbWNfbXNpX3NldF9hZmZpbml0eShzdHJ1Y3QgaXJxX2RhdGEgKmlycV9kYXRhLA0KKwkJ CSAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzaywgYm9vbCBmb3JjZSkNCit7DQorCXJl dHVybiAtRUlOVkFMOw0KK30NCisNCitzdGF0aWMgc3RydWN0IGlycV9jaGlwIG1jX21zaV9ib3R0 b21faXJxX2NoaXAgPSB7DQorCS5uYW1lID0gIk1pY3JvY2hpcCBNU0kiLA0KKwkuaXJxX2NvbXBv c2VfbXNpX21zZyA9IG1jX2NvbXBvc2VfbXNpX21zZywNCisJLmlycV9zZXRfYWZmaW5pdHkgPSBt Y19tc2lfc2V0X2FmZmluaXR5LA0KK307DQorDQorc3RhdGljIGludCBtY19pcnFfbXNpX2RvbWFp bl9hbGxvYyhzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLA0KKwkJCQkgICB1bnNpZ25lZCBpbnQg dmlycSwgdW5zaWduZWQgaW50IG5yX2lycXMsDQorCQkJCSAgIHZvaWQgKmFyZ3MpDQorew0KKwlz dHJ1Y3QgbWNfcGNpZSAqcGNpZSA9IGRvbWFpbi0+aG9zdF9kYXRhOw0KKwlzdHJ1Y3QgbWNfbXNp ICptc2kgPSAmcGNpZS0+bXNpOw0KKwl1bnNpZ25lZCBsb25nIGJpdDsNCisJdTMyIHJlZzsNCisN CisJV0FSTl9PTihucl9pcnFzICE9IDEpOw0KKwltdXRleF9sb2NrKCZtc2ktPmxvY2spOw0KKwli aXQgPSBmaW5kX2ZpcnN0X3plcm9fYml0KG1zaS0+dXNlZCwgbXNpLT5udW1fdmVjdG9ycyk7DQor CWlmIChiaXQgPj0gbXNpLT5udW1fdmVjdG9ycykgew0KKwkJbXV0ZXhfdW5sb2NrKCZtc2ktPmxv Y2spOw0KKwkJcmV0dXJuIC1FTk9TUEM7DQorCX0NCisNCisJc2V0X2JpdChiaXQsIG1zaS0+dXNl ZCk7DQorDQorCWlycV9kb21haW5fc2V0X2luZm8oZG9tYWluLCB2aXJxLCBiaXQsICZtY19tc2lf Ym90dG9tX2lycV9jaGlwLA0KKwkJCSAgICBkb21haW4tPmhvc3RfZGF0YSwgaGFuZGxlX3NpbXBs ZV9pcnEsIE5VTEwsIE5VTEwpOw0KKw0KKwkvKiBFbmFibGUgTVNJIGludGVycnVwdHMgKi8NCisJ cmVnID0gcmVhZGxfcmVsYXhlZChwY2llLT5icmlkZ2VfYmFzZV9hZGRyICsgTUNfSU1BU0tfTE9D QUwpOw0KKwlyZWcgfD0gUENJRV9FTkFCTEVfTVNJOw0KKwl3cml0ZWxfcmVsYXhlZChyZWcsIHBj aWUtPmJyaWRnZV9iYXNlX2FkZHIgKyBNQ19JTUFTS19MT0NBTCk7DQorDQorCW11dGV4X3VubG9j aygmbXNpLT5sb2NrKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG1jX2ly cV9tc2lfZG9tYWluX2ZyZWUoc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwNCisJCQkJICAgdW5z aWduZWQgaW50IHZpcnEsIHVuc2lnbmVkIGludCBucl9pcnFzKQ0KK3sNCisJc3RydWN0IGlycV9k YXRhICpkID0gaXJxX2RvbWFpbl9nZXRfaXJxX2RhdGEoZG9tYWluLCB2aXJxKTsNCisJc3RydWN0 IG1jX3BjaWUgKnBjaWUgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTsNCisJc3RydWN0 IG1jX21zaSAqbXNpID0gJnBjaWUtPm1zaTsNCisNCisJbXV0ZXhfbG9jaygmbXNpLT5sb2NrKTsN CisNCisJaWYgKHRlc3RfYml0KGQtPmh3aXJxLCBtc2ktPnVzZWQpKQ0KKwkJX19jbGVhcl9iaXQo ZC0+aHdpcnEsIG1zaS0+dXNlZCk7DQorCWVsc2UNCisJCWRldl9lcnIoJnBjaWUtPnBkZXYtPmRl diwgInRyeWluZyB0byBmcmVlIHVudXNlZCBNU0klbHVcbiIsDQorCQkJZC0+aHdpcnEpOw0KKw0K KwltdXRleF91bmxvY2soJm1zaS0+bG9jayk7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg aXJxX2RvbWFpbl9vcHMgbXNpX2RvbWFpbl9vcHMgPSB7DQorCS5hbGxvYwk9IG1jX2lycV9tc2lf ZG9tYWluX2FsbG9jLA0KKwkuZnJlZQk9IG1jX2lycV9tc2lfZG9tYWluX2ZyZWUsDQorfTsNCisN CitzdGF0aWMgaW50IG1jX2FsbG9jYXRlX21zaV9kb21haW5zKHN0cnVjdCBtY19wY2llICpwY2ll KQ0KK3sNCisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBjaWUtPnBkZXYtPmRldjsNCisJc3RydWN0 IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSA9IG9mX25vZGVfdG9fZndub2RlKGRldi0+b2Zfbm9kZSk7 DQorCXN0cnVjdCBtY19tc2kgKm1zaSA9ICZwY2llLT5tc2k7DQorDQorCW11dGV4X2luaXQoJnBj aWUtPm1zaS5sb2NrKTsNCisNCisJbXNpLT5kZXZfZG9tYWluID0gaXJxX2RvbWFpbl9hZGRfbGlu ZWFyKE5VTEwsIG1zaS0+bnVtX3ZlY3RvcnMsDQorCQkJCQkJJm1zaV9kb21haW5fb3BzLCBwY2ll KTsNCisJaWYgKCFtc2ktPmRldl9kb21haW4pIHsNCisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRv IGNyZWF0ZSBJUlEgZG9tYWluXG4iKTsNCisJCXJldHVybiAtRU5PTUVNOw0KKwl9DQorDQorCW1z aS0+bXNpX2RvbWFpbiA9IHBjaV9tc2lfY3JlYXRlX2lycV9kb21haW4oZndub2RlLA0KKwkJCQkJ CSAgICAmbWNfbXNpX2RvbWFpbl9pbmZvLA0KKwkJCQkJCSAgICBtc2ktPmRldl9kb21haW4pOw0K KwlpZiAoIW1zaS0+bXNpX2RvbWFpbikgew0KKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gY3Jl YXRlIE1TSSBkb21haW5cbiIpOw0KKwkJaXJxX2RvbWFpbl9yZW1vdmUobXNpLT5kZXZfZG9tYWlu KTsNCisJCXJldHVybiAtRU5PTUVNOw0KKwl9DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0 aWMgaW50IG1jX3BjaWVfaW5pdF9pcnFfZG9tYWlucyhzdHJ1Y3QgbWNfcGNpZSAqcGNpZSkNCit7 DQorCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwY2llLT5wZGV2LT5kZXY7DQorCXN0cnVjdCBkZXZp Y2Vfbm9kZSAqbm9kZSA9IGRldi0+b2Zfbm9kZTsNCisNCisJcGNpZS0+aW50eF9kb21haW4gPSBp cnFfZG9tYWluX2FkZF9saW5lYXIobm9kZSwgUENJX05VTV9JTlRYLA0KKwkJCQkJCSAgJmludHhf ZG9tYWluX29wcywgcGNpZSk7DQorCWlmICghcGNpZS0+aW50eF9kb21haW4pIHsNCisJCWRldl9l cnIoZGV2LCAiZmFpbGVkIHRvIGdldCBhbiBJTlR4IElSUSBkb21haW5cbiIpOw0KKwkJcmV0dXJu IC1FTk9NRU07DQorCX0NCisJcmF3X3NwaW5fbG9ja19pbml0KCZwY2llLT5pbnR4X21hc2tfbG9j ayk7DQorDQorCXJldHVybiBtY19hbGxvY2F0ZV9tc2lfZG9tYWlucyhwY2llKTsNCit9DQorDQor c3RhdGljIHZvaWQgbWNfcGNpX3VubWFwX2NmZyh2b2lkICpwdHIpDQorew0KKwlwY2lfZWNhbV9m cmVlKChzdHJ1Y3QgcGNpX2NvbmZpZ193aW5kb3cgKilwdHIpOw0KK30NCisNCitzdGF0aWMgaW50 IG1jX3BjaWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCit7DQorCXN0cnVj dCBtY19wY2llICpwY2llOw0KKwlzdHJ1Y3QgcGNpX2hvc3RfYnJpZGdlICpicmlkZ2U7DQorCXN0 cnVjdCBwY2lfY29uZmlnX3dpbmRvdyAqY2ZnOw0KKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRl di0+ZGV2Ow0KKwlzdHJ1Y3QgcmVzb3VyY2VfZW50cnkgKndpbjsNCisJc3RydWN0IHJlc291cmNl ICpidXNfcmFuZ2UgPSBOVUxMOw0KKwlzdHJ1Y3QgcmVzb3VyY2UgKmNmZ3JlczsNCisJaW50IHJl dDsNCisJcmVzb3VyY2Vfc2l6ZV90IHNpemU7DQorCXUzMiBpbmRleDsNCisJdTMyIGF0cl9zejsN CisJdTMyIHZhbDsNCisNCisJaWYgKCFkZXYtPm9mX25vZGUpDQorCQlyZXR1cm4gLUVOT0RFVjsN CisNCisJLyogQWxsb2NhdGUgdGhlIFBDSWUgcG9ydCAqLw0KKwlicmlkZ2UgPSBkZXZtX3BjaV9h bGxvY19ob3N0X2JyaWRnZShkZXYsIHNpemVvZigqcGNpZSkpOw0KKwlpZiAoIWJyaWRnZSkNCisJ CXJldHVybiAtRU5PTUVNOw0KKw0KKwlwY2llID0gcGNpX2hvc3RfYnJpZGdlX3ByaXYoYnJpZGdl KTsNCisNCisJcGNpZS0+cGRldiA9IHBkZXY7DQorDQorCWNmZ3JlcyA9IHBsYXRmb3JtX2dldF9y ZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQorCXNpemUgPSByZXNvdXJjZV9zaXpl KGNmZ3Jlcyk7DQorCWF0cl9zeiA9IGlsb2cyKHNpemUpIC0gMTsNCisNCisJcmV0ID0gbWNfcGNp ZV9wYXJzZV9kdChwY2llKTsNCisJaWYgKHJldCkgew0KKwkJZGV2X2VycihkZXYsICJwYXJzaW5n IGRldmljZXRyZWUgZmFpbGVkLCByZXQgJXhcbiIsIHJldCk7DQorCQlyZXR1cm4gcmV0Ow0KKwl9 DQorDQorCXJldCA9IG1jX2hvc3RfaW5pdChwY2llLCBjZmdyZXMtPnN0YXJ0LCBhdHJfc3opOw0K KwlpZiAocmV0KSB7DQorCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBpbml0aWFsaXplIGhvc3Rc biIpOw0KKwkJcmV0dXJuIHJldDsNCisJfQ0KKw0KKwkvKg0KKwkgKiBDb25maWd1cmUgYWxsIGlu Ym91bmQgYW5kIG91dGJvdW5kIHdpbmRvd3MgYW5kIHByZXBhcmUNCisJICogZm9yIGNvbmZpZyBh Y2Nlc3MNCisJICovDQorCXJldCA9IHBjaV9wYXJzZV9yZXF1ZXN0X29mX3BjaV9yYW5nZXMoZGV2 LCAmYnJpZGdlLT53aW5kb3dzLA0KKwkJCQkJICAgICAgJmJyaWRnZS0+ZG1hX3JhbmdlcywgJmJ1 c19yYW5nZSk7DQorCWlmIChyZXQpIHsNCisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIHBhcnNl IFBDSSByYW5nZXNcbiIpOw0KKwkJcmV0dXJuIHJldDsNCisJfQ0KKw0KKwlpbmRleCA9IDE7DQor CXJlc291cmNlX2xpc3RfZm9yX2VhY2hfZW50cnkod2luLCAmYnJpZGdlLT53aW5kb3dzKSB7DQor CQlpZiAoKHJlc291cmNlX3R5cGUod2luLT5yZXMpICE9IElPUkVTT1VSQ0VfTUVNKSAmJg0KKwkJ ICAgIChyZXNvdXJjZV90eXBlKHdpbi0+cmVzKSAhPSBJT1JFU09VUkNFX0lPKSkNCisJCQljb250 aW51ZTsNCisNCisJCXNpemUgPSByZXNvdXJjZV9zaXplKHdpbi0+cmVzKTsNCisJCWF0cl9zeiA9 IGlsb2cyKHNpemUpIC0gMTsNCisNCisJCS8qDQorCQkgKiBDb25maWd1cmUgQWRkcmVzcyBUcmFu c2xhdGlvbiBUYWJsZSBpbmRleCBmb3IgUENJDQorCQkgKiBtZW0gc3BhY2UNCisJCSAqLw0KKwkJ d3JpdGVsX3JlbGF4ZWQoUENJRV9UWF9SWF9JTlRFUkZBQ0UsIHBjaWUtPmJyaWRnZV9iYXNlX2Fk ZHIgKw0KKwkJICAgICAgIChpbmRleCAqIEFUVF9FTlRSWV9TSVpFKSArDQorCQkgICAgICAgTUNf QVRSMF9BWEk0X1NMVjBfVFJTTF9QQVJBTSk7DQorDQorCQl2YWwgPSBsb3dlcl8zMl9iaXRzKHdp bi0+cmVzLT5zdGFydCkgfA0KKwkJCQkgICAgKGF0cl9zeiA8PCBBVFJfU0laRV9TSElGVCkgfA0K KwkJCQkgICAgQVRSX0lNUExfRU5BQkxFOw0KKw0KKwkJd3JpdGVsX3JlbGF4ZWQodmFsLCBwY2ll LT5icmlkZ2VfYmFzZV9hZGRyICsNCisJCSAgICAgICAoaW5kZXggKiBBVFRfRU5UUllfU0laRSkg Kw0KKwkJICAgICAgIE1DX0FUUjBfQVhJNF9TTFYwX1NSQ0FERFJfUEFSQU0pOw0KKw0KKwkJdmFs ID0gdXBwZXJfMzJfYml0cyh3aW4tPnJlcy0+c3RhcnQpOw0KKwkJd3JpdGVsX3JlbGF4ZWQodmFs LCBwY2llLT5icmlkZ2VfYmFzZV9hZGRyICsNCisJCQkJKGluZGV4ICogQVRUX0VOVFJZX1NJWkUp ICsNCisJCQkJTUNfQVRSMF9BWEk0X1NMVjBfU1JDX0FERFIpOw0KKw0KKwkJdmFsID0gbG93ZXJf MzJfYml0cyh3aW4tPnJlcy0+c3RhcnQgLSB3aW4tPm9mZnNldCk7DQorCQl3cml0ZWxfcmVsYXhl ZCh2YWwsIHBjaWUtPmJyaWRnZV9iYXNlX2FkZHIgKw0KKwkJICAgICAgIChpbmRleCAqIEFUVF9F TlRSWV9TSVpFKSArDQorCQkgICAgICAgTUNfQVRSMF9BWEk0X1NMVjBfVFJTTF9BRERSX0xTQik7 DQorDQorCQl2YWwgPSB1cHBlcl8zMl9iaXRzKHdpbi0+cmVzLT5zdGFydCk7DQorCQl3cml0ZWxf cmVsYXhlZCh2YWwsIHBjaWUtPmJyaWRnZV9iYXNlX2FkZHIgKw0KKwkJCQkgICAgKGluZGV4ICog QVRUX0VOVFJZX1NJWkUpICsNCisJCQkJICAgIE1DX0FUUjBfQVhJNF9TTFYwX1RSU0xfQUREUl9V RFcpOw0KKw0KKwkJaW5kZXgrKzsNCisJfQ0KKw0KKwlyZXQgPSBtY19wY2llX2luaXRfaXJxX2Rv bWFpbnMocGNpZSk7DQorCWlmIChyZXQpIHsNCisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIGNyZWF0 aW5nIElSUSBkb21haW5zXG4iKTsNCisJCXJldHVybiByZXQ7DQorCX0NCisNCisJLyogUGFyc2Ug YW5kIG1hcCBvdXIgQ29uZmlndXJhdGlvbiBTcGFjZSB3aW5kb3dzICovDQorCWNmZyA9IHBjaV9l Y2FtX2NyZWF0ZShkZXYsIGNmZ3JlcywgYnVzX3JhbmdlLCAmcGNpX2dlbmVyaWNfZWNhbV9vcHMp Ow0KKwlpZiAoSVNfRVJSKGNmZykpIHsNCisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIGNyZWF0aW5n IENvbmZpZ3VyYXRpb24gU3BhY2VcbiIpOw0KKwkJcmV0dXJuIFBUUl9FUlIoY2ZnKTsNCisJfQ0K Kw0KKwlwY2llLT5jZmdfYmFzZV9hZGRyID0gY2ZnLT53aW47DQorDQorCS8qIEhhcmR3YXJlIGRv ZXNuJ3Qgc2V0dXAgTVNJIGJ5IGRlZmF1bHQgKi8NCisJbWNfcGNpZV9lbmFibGVfbXNpKHBjaWUp Ow0KKw0KKwl2YWwgPSBQQ0lFX0VOQUJMRV9NU0kgfCBQQ0lFX0xPQ0FMX0lOVF9FTkFCTEU7DQor CXdyaXRlbF9yZWxheGVkKHZhbCwgcGNpZS0+YnJpZGdlX2Jhc2VfYWRkciArIE1DX0lNQVNLX0xP Q0FMKTsNCisNCisJcmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgbWNfcGNpX3Vu bWFwX2NmZywgY2ZnKTsNCisJaWYgKHJldCkNCisJCXJldHVybiByZXQ7DQorDQorCS8qIEluaXRp YWxpemUgYnJpZGdlICovDQorCWJyaWRnZS0+ZGV2LnBhcmVudCA9IGRldjsNCisJYnJpZGdlLT5z eXNkYXRhID0gY2ZnOw0KKwlicmlkZ2UtPmJ1c25yID0gY2ZnLT5idXNyLnN0YXJ0Ow0KKwlicmlk Z2UtPm9wcyA9IChzdHJ1Y3QgcGNpX29wcyAqKSZwY2lfZ2VuZXJpY19lY2FtX29wcy5wY2lfb3Bz Ow0KKwlicmlkZ2UtPm1hcF9pcnEgPSBvZl9pcnFfcGFyc2VfYW5kX21hcF9wY2k7DQorCWJyaWRn ZS0+c3dpenpsZV9pcnEgPSBwY2lfY29tbW9uX3N3aXp6bGU7DQorDQorCXJldHVybiBwY2lfaG9z dF9wcm9iZShicmlkZ2UpOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9p ZCBtY19wY2llX29mX21hdGNoW10gPSB7DQorCXsgLmNvbXBhdGlibGUgPSAibWljcm9jaGlwLHBj aWUtaG9zdC0xLjAiIH0sDQorCXt9LA0KK307DQorDQorTU9EVUxFX0RFVklDRV9UQUJMRShvZiwg bWNfcGNpZV9vZl9tYXRjaCkNCisNCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtY19w Y2llX2RyaXZlciA9IHsNCisJLnByb2JlID0gbWNfcGNpZV9wcm9iZSwNCisJLmRyaXZlciA9IHsN CisJCS5uYW1lID0gIm1pY3JvY2hpcC1wY2llIiwNCisJCS5vZl9tYXRjaF90YWJsZSA9IG1jX3Bj aWVfb2ZfbWF0Y2gsDQorCQkuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsDQorCX0sDQorfTsN CisNCitidWlsdGluX3BsYXRmb3JtX2RyaXZlcihtY19wY2llX2RyaXZlcik7DQorDQorTU9EVUxF X0xJQ0VOU0UoIkdQTCB2MiIpOw0KK01PRFVMRV9ERVNDUklQVElPTigiTWljcm9jaGlwIFBDSWUg aG9zdCBjb250cm9sbGVyIGRyaXZlciIpOw0KK01PRFVMRV9BVVRIT1IoIkRhaXJlIE1jTmFtYXJh IDxkYWlyZS5tY25hbWFyYUBtaWNyb2NoaXAuY29tPiIpOw0KLS0gDQoyLjE3LjENCg0K