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=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2C8F0C83007 for ; Wed, 29 Apr 2020 09:40:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EBF542074A for ; Wed, 29 Apr 2020 09:40:22 +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="k8sDK6oY"; dkim=pass (1024-bit key) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.b="vn1Ep/lM" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726620AbgD2JkW (ORCPT ); Wed, 29 Apr 2020 05:40:22 -0400 Received: from esa3.microchip.iphmx.com ([68.232.153.233]:9362 "EHLO esa3.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726539AbgD2JkU (ORCPT ); Wed, 29 Apr 2020 05:40:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1588153219; x=1619689219; h=from:to:subject:date:message-id:content-id: content-transfer-encoding:mime-version; bh=syAtpaz6zlu+hi0GVLN5CGRFEm5sUfR79gogFU6/wJM=; b=k8sDK6oYduHqOVg3S0vYFNgZO5CR1WKwFjKCIZWrWSaXWjXtJr4uMyF+ kZejIXfY9L8sE83ItDucHb3AtQfJj0t/Pkf3iystiFRb8Y9ldd9Kgr+jq DifjO7jMlWixOv5i4m7ahbZzPHJ3MhKh2iWJrPM4HDX42HeEzuKWCRsr0 VsAjKHFPvRDa2GDCm7YLzfKSbr0miUMBWCwo3SbRTrQR1bPJilG4HSdOj +5OM5Ghfb+kExa2uzyyg8DZD4Ynh+/S99x49aJL/yVVvRE8YoqOL76Wqu 7KmeJxz5oIVmb2qx4VAK/+9hAmMyCBffR4ZfQKgIF4qTznZbwuWjkkxgL w==; IronPort-SDR: /MThU9GNWiNwcCx5n+13vDeYYDuRsjCcRDjZi/u02w8hD3Uau3PNtb2kNZRHACtaGK0zMQgBqz d+svIOibufT4qYjbKWa2vA1+bHfgIUsIA7nD7pvorXgXiGzFujmWvPGXACB5malWuMxLWzFqh2 V4dN1jANSTg1cBY/rI80ClzTLe/UH8C1bwA22aUXESu/IvjjIbbML64NtDk9fovN1XqrJDaH2p a+BIxb5S+wKa403Xn/+NEJrQ0ZwqUnN8dOniCPQdyKb0ILCN/LcC8iCF0SfoqiNj05a6vU7m2N l4g= X-IronPort-AV: E=Sophos;i="5.73,331,1583218800"; d="scan'208";a="74926822" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa3.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 29 Apr 2020 02:40:17 -0700 Received: from chn-vm-ex03.mchp-main.com (10.10.85.151) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 29 Apr 2020 02:40:12 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Wed, 29 Apr 2020 02:40:16 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jtys7/FLnlfW0J+EhdMnwx+HPgZhnWpadDt5aFd5POuAlxI/COmn+THC8ZPRPH9dp7v5dppz6UeIiDJ7VieT0xFl4NhqyKN7JAobgAWaX2k8hLxJAOnR7KIgT0sWnmzduM3m3fbclgdp3pDV3bz/W5t5ObLyz6NfFgsVibw73xTQ0nEK1PqrMS4M1fdvIhNmij5E8StOOzlgdjkmkHblOM83L6sdGQ/sJuU//Ro3D7OYPqLPMhcgviejF7pFn+1qA2dkMjMw2+DImDvs+NxJRn5/uiSUxc3eu9+vOKvzH0OmGhEVO0RwR63WJuzrmNZ2fEyzbUpPFe9+ZWmmtDB94w== 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=syAtpaz6zlu+hi0GVLN5CGRFEm5sUfR79gogFU6/wJM=; b=Bea6sp1J6RxJMfnpMIMa6LEy1xZyL0oZMD44m0ulOvga3iW85a71XgujrexELTDG6nHmQLQ1iHXx9TAL1v8TbzqeLXspVRzW0rhQPtvAz8NftT27TrylsrsPTj6AECPld3TkpqUklotEX6xIy7BI95bDgVV5JUSd//lhVtkh8XjOmetAKDor3H3iTuqizjDFxUFbsa+geU+BRP8TG01T4GsWSyPX1Gv788tITbMmMSbvbKwcNZ1+mJyGmIqKWGFPUKfEYgkIKOs39vgz1s2GEco4OrOq2akOtWoQsREGEgbQlwyZg1GbwhjRv7nMDga6tmqFYK73cLs3DGCSE2QJFw== 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=syAtpaz6zlu+hi0GVLN5CGRFEm5sUfR79gogFU6/wJM=; b=vn1Ep/lMPkWepbi+vkiqSBiusO8diWNt2Dd+B8d/oGyxrwyzQGARlyKazH/rrdb/rriBK/p1PHAhcSbK3IZTJmC77TnBR8iL1i5bpjAlH8pJfLJi1pcdHCTPJUEWTjr1oKDE+sNtmGH9FC0h2Z8FcSKf4qee7FvbB9vMBRkJ2Tw= Received: from MN2PR11MB4269.namprd11.prod.outlook.com (2603:10b6:208:190::32) by MN2PR11MB4517.namprd11.prod.outlook.com (2603:10b6:208:24e::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2937.13; Wed, 29 Apr 2020 09:39:14 +0000 Received: from MN2PR11MB4269.namprd11.prod.outlook.com ([fe80::ef:e9a9:8618:bc9f]) by MN2PR11MB4269.namprd11.prod.outlook.com ([fe80::ef:e9a9:8618:bc9f%7]) with mapi id 15.20.2937.023; Wed, 29 Apr 2020 09:39:14 +0000 From: To: , , , Subject: [PATCH v8 1/1] PCI: microchip: Add host driver for Microchip PCIe controller Thread-Topic: [PATCH v8 1/1] PCI: microchip: Add host driver for Microchip PCIe controller Thread-Index: AQHWHgoLbIwZBAzsFk+DBGiIkmPNFw== Date: Wed, 29 Apr 2020 09:39:14 +0000 Message-ID: Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: thegoodpenguin.co.uk; dkim=none (message not signed) header.d=none;thegoodpenguin.co.uk; 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: 8e8c46a0-66dd-4331-92ed-08d7ec212e20 x-ms-traffictypediagnostic: MN2PR11MB4517: x-microsoft-antispam-prvs: x-bypassexternaltag: True x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 03883BD916 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:(366004)(39860400002)(346002)(376002)(396003)(136003)(91956017)(66556008)(316002)(6486002)(76116006)(8936002)(66476007)(6512007)(30864003)(66446008)(6506007)(8676002)(36756003)(2616005)(64756008)(110136005)(5660300002)(71200400001)(66946007)(186003)(26005)(2906002)(478600001)(86362001)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: A55dQ96Y78VIYq0l+EGOImZMcYeYRDfYOZssVzQ5oKk2tQhV6tqvoz5AVKMoSjxhAfWdUKdTQyLlhPMWxxRUY5f9HSeMwLu3AtTSVkY4OOwqM+VGwkIje/TOtHK04Hyuh1DKulrmIebmFm1SCMsNqy7L5Zbdu6gZGQoUGhUhz8bmUg1EIATNHisCgVHz02urAtUISdZF/frTcw2AR9NC2VIAfZLzyWNJ92B5NtjPENhiEgMCPTT8LRF+aBaMDguTEorLsnwRshO5y6rk+LSuAk+gxy91qcpM3bh6HDYgH49gsZ9a7Sz75oUnAEOVAiYD44jn1ZreQo8GiB5qsedpMxxrqWtrzCxoXtq3aNwAwN8lZ04/tlm/HBnW3vq5UaBPKZvptkavdRv4BCD9VlnfyLKqccQa+8PZ2EmSenj/Zsav0mxxLXkoG489zaso+gF6 x-ms-exchange-antispam-messagedata: axqVAr98iApK3hu8IrbgMJyCkTeyRJ2TLxUHGi8Pi+5gAqYJRJZQ50/w3UHVagYOzf+T+WYVZx01nBa/ELFpCUTk/vvvx7cfv2i9NQC9hMg4tZDLDG74A/bYNFqaT4DOovfwAuvaXUYiRNjE13uVeNElhe5yA9FybLBV99uOMPF85ywlg1D1tmjcC6ZC8UNhb1GGicYa6xvhoR4jnC/HIPOzAKJb6ObEAPG5GXnanlFdlgEzOh/ApCA/zGMjOoaCB4xiw+VODyf5Q4dJoiBs9NO17aT9wC2etsqowy4rXGNAfjTPcsxohOw8/F0UPk6u5sWzTRyy5cWgQsr196S0WIUbMAlny24UDrWbEv3/s00+VgyuETR2y+Qwu/g4xvpfbsO2kqA5cZ8Btfm0LBVtCWg1w3OHrNwnujfJcGNn9lFxrFxI8tgX+EX0dbnV7PGqQRaC+f79zs3tJtSgmJxb+58YKCoqauJ12ohM/5iiod4krY/aOUYEC6tu4JXWctXS0FNTIoUgIluhvtXA0DQsXTxVijCxtPPV3EKPfuYA7Q+TvTFTX6bpRWRHzw9uETZfYG5ls9vFRcPjEcj8uAcqhAJXUnNoUtLOERbaf1cfF3dSVIG0qA3B7CzMq7+jfP1VNmwm91MFxN9hA53vhfKm9ImQmK5cah7oP6HWRIjer8bHbmgebnU7VJMtInHMNbOIKkBf+B/xyWeiFvGr2Uwc4PEv+bXRcTDEjmysL3vh5nj8wm3ugVEXvXyUiz89WybZ48Xjg99xAWa94Q6pyYoQvM1etft5F4FBB07FmPr9PSc= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <99D41502255D3E43A6156A946AADA486@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 8e8c46a0-66dd-4331-92ed-08d7ec212e20 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Apr 2020 09:39:14.6338 (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: MzScgn/k6MV57MIlNnR3Qj8HDlPsao03UrMnvcf9calh5eUe9Mf/bVtPY4w4qqNPuxe+doEP0/aSdgLbB+miDZzfmB7iCBBsia2wLpzg3mc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4517 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgUENJZSBQb2xhckZpcmUg UENJZQ0KY29udHJvbGxlciB3aGVuIGNvbmZpZ3VyZWQgaW4gaG9zdCAoUm9vdCBDb21wbGV4KSBt b2RlLg0KDQpTaWduZWQtb2ZmLWJ5OiBEYWlyZSBNY05hbWFyYSA8ZGFpcmUubWNuYW1hcmFAbWlj cm9jaGlwLmNvbT4NCi0tLQ0KIC4uLi9iaW5kaW5ncy9wY2kvbWljcm9jaGlwLXBjaWUudHh0ICAg ICAgICAgICB8ICA2NCArKw0KIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZyAgICAgICAg ICAgICAgICB8ICAgOSArDQogZHJpdmVycy9wY2kvY29udHJvbGxlci9NYWtlZmlsZSAgICAgICAg ICAgICAgIHwgICAxICsNCiBkcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbWljcm9jaGlwLWhv c3QuYyAgfCA3MDIgKysrKysrKysrKysrKysrKysrDQogNCBmaWxlcyBjaGFuZ2VkLCA3NzYgaW5z ZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv YmluZGluZ3MvcGNpL21pY3JvY2hpcC1wY2llLnR4dA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbWljcm9jaGlwLWhvc3QuYw0KDQpkaWZmIC0tZ2l0IGEv RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9taWNyb2NoaXAtcGNpZS50eHQg Yi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL21pY3JvY2hpcC1wY2llLnR4 dA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uOWZhMTI5Y2JjZTgw DQotLS0gL2Rldi9udWxsDQorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv cGNpL21pY3JvY2hpcC1wY2llLnR4dA0KQEAgLTAsMCArMSw2NCBAQA0KKyogTWljcm9jaGlwIEFY SSBQQ0llIFJvb3QgUG9ydCBCcmlkZ2UgRFQgZGVzY3JpcHRpb24NCisNCitSZXF1aXJlZCBwcm9w ZXJ0aWVzOg0KKy0gI2FkZHJlc3MtY2VsbHM6IEFkZHJlc3MgcmVwcmVzZW50YXRpb24gZm9yIHJv b3QgcG9ydHMsIHNldCB0byA8Mz4NCistICNzaXplLWNlbGxzOiBTaXplIHJlcHJlc2VudGF0aW9u IGZvciByb290IHBvcnRzLCBzZXQgdG8gPDI+DQorLSAjaW50ZXJydXB0LWNlbGxzOiBzcGVjaWZp ZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGFuDQorCWludGVycnVwdCBz b3VyY2UuIFRoZSB2YWx1ZSBtdXN0IGJlIDEuDQorLSBjb21wYXRpYmxlOiBTaG91bGQgY29udGFp biAibWljcm9jaGlwLHBmLWF4aS1wY2llLWhvc3QiDQorLSByZWc6IFNob3VsZCBjb250YWluIHR3 byBhZGRyZXNzIGxlbmd0aCB0dXBsZXMuDQorCVRoZSBmaXJzdCBpcyBmb3IgdGhlIGludGVybmFs IFBDSSBicmlkZ2UgcmVnaXN0ZXJzDQorCVRoZSBzZWNvbmQgaXMgZm9yIHRoZSBQQ0kgY29uZmln IHNwYWNlIGFjY2VzcyByZWdpc3RlcnMNCistIGRldmljZV90eXBlOiBtdXN0IGJlICJwY2kiDQor LSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBBWEkgUENJZSBpbnRlcnJ1cHQNCistIGludGVy cnVwdC1tYXAtbWFzaywNCistIGludGVycnVwdC1tYXA6IHN0YW5kYXJkIFBDSSBwcm9wZXJ0aWVz IHRvIGRlZmluZSB0aGUgbWFwcGluZyBvZiB0aGUNCisJUENJIGludGVyZmFjZSB0byBpbnRlcnJ1 cHQgbnVtYmVycy4NCistIHJhbmdlczogcmFuZ2VzIGZvciB0aGUgUENJIG1lbW9yeSByZWdpb25z IChJL08gc3BhY2UgcmVnaW9uIGlzIG5vdA0KKwlzdXBwb3J0ZWQgYnkgaGFyZHdhcmUpDQorCVBs ZWFzZSByZWZlciB0byB0aGUgc3RhbmRhcmQgUENJIGJ1cyBiaW5kaW5nIGRvY3VtZW50IGZvciBh IG1vcmUNCisJZGV0YWlsZWQgZXhwbGFuYXRpb24NCisNCitPcHRpb25hbCBwcm9wZXJ0aWVzIGZv ciBQb2xhckZpcmU6DQorLSBidXMtcmFuZ2U6IFBDSSBidXMgbnVtYmVycyBjb3ZlcmVkDQorDQor SW50ZXJydXB0IGNvbnRyb2xsZXIgY2hpbGQgbm9kZQ0KKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysNCitSZXF1aXJlZCBwcm9wZXJ0aWVzOg0KKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6 IGlkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXINCistICNhZGRy ZXNzLWNlbGxzOiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2Rl IGFuDQorCWFkZHJlc3MuIFRoZSB2YWx1ZSBtdXN0IGJlIDAuDQorLSAjaW50ZXJydXB0LWNlbGxz OiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGFuDQorCWlu dGVycnVwdCBzb3VyY2UuIFRoZSB2YWx1ZSBtdXN0IGJlIDEuDQorDQorTk9URToNCitUaGUgY29y ZSBwcm92aWRlcyBhIHNpbmdsZSBpbnRlcnJ1cHQgZm9yIGJvdGggSU5UeC9NU0kgbWVzc2FnZXMu IFNvLA0KK2NyZWF0ZSBhbiBpbnRlcnJ1cHQgY29udHJvbGxlciBub2RlIHRvIHN1cHBvcnQgJ2lu dGVycnVwdC1tYXAnIERUDQorZnVuY3Rpb25hbGl0eS4gIFRoZSBkcml2ZXIgd2lsbCBjcmVhdGUg YW4gSVJRIGRvbWFpbiBmb3IgdGhpcyBtYXAsIGRlY29kZQ0KK3RoZSBmb3VyIElOVHggaW50ZXJy dXB0cyBpbiBJU1IgYW5kIHJvdXRlIHRoZW0gdG8gdGhpcyBkb21haW4uDQorDQorDQorRXhhbXBs ZToNCisrKysrKysrKw0KK0Fsb2VWZXJhOg0KKw0KKwlwY2llOiBwY2llQDIwMzAwMDAwMDAgew0K KwkJI2FkZHJlc3MtY2VsbHMgPSA8Mz47DQorCQkjc2l6ZS1jZWxscyA9IDwyPjsNCisJCSNpbnRl cnJ1cHQtY2VsbHMgPSA8MT47DQorCQljb21wYXRpYmxlID0gIm1pY3JvY2hpcCxwZi1heGktcGNp ZS1ob3N0LTEuMCI7DQorCQlkZXZpY2VfdHlwZSA9ICJwY2kiOw0KKwkJYnVzLXJhbmdlID0gPDB4 MDAgMHg3Zj47DQorCQlpbnRlcnJ1cHQtbWFwID0gPDAgMCAwIDEgJnBjaWUgMT4sDQorCQkJCTww IDAgMCAyICZwY2llIDI+LA0KKwkJCQk8MCAwIDAgMyAmcGNpZSAzPiwNCisJCQkJPDAgMCAwIDQg JnBjaWUgND47DQorCQlpbnRlcnJ1cHQtbWFwLW1hc2sgPSA8MCAwIDAgNz47DQorCQlpbnRlcnJ1 cHQtcGFyZW50ID0gPCZMND47DQorCQlpbnRlcnJ1cHRzID0gPDMyPjsNCisJCXJhbmdlcyA9IDww eDMwMDAwMDAgMCAweDQwMDAwMDAwIDB4MCAweDQwMDAwMDAwIDB4MCAweDIwMDAwMDAwPjsNCisJ CXJlZyA9IDwweDIwIDB4MzAwMDAwMDAgMHgwIDB4NDAwMDAwMD4sCS8qIGludGVybmFsIHJlZ2lz dGVycyAqLw0KKwkJCTwweDIwIDB4MCAweDAgMHgxMDAwMDA+OwkvKiBjb25maWcgc3BhY2UgYWNj ZXNzIHJlZ2lzdGVycyAqLw0KKwkJcmVnLW5hbWVzID0gImNvbnRyb2wiLCAiYXBiIjsNCisJCWlu dGVycnVwdC1jb250cm9sbGVyOw0KKwl9Ow0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRy b2xsZXIvS2NvbmZpZyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZw0KaW5kZXggOTFi ZmRiNzg0ODI5Li40NDc4ZjVhNGQ4YTYgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3BjaS9jb250cm9s bGVyL0tjb25maWcNCisrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZw0KQEAgLTI1 OCw2ICsyNTgsMTUgQEAgY29uZmlnIFBDSV9IWVBFUlZfSU5URVJGQUNFDQogCSAgVGhlIEh5cGVy LVYgUENJIEludGVyZmFjZSBpcyBhIGhlbHBlciBkcml2ZXIgYWxsb3dzIG90aGVyIGRyaXZlcnMg dG8NCiAJICBoYXZlIGEgY29tbW9uIGludGVyZmFjZSB3aXRoIHRoZSBIeXBlci1WIFBDSSBmcm9u dGVuZCBkcml2ZXIuDQogDQorY29uZmlnIFBDSUVfTUlDUk9DSElQX0hPU1QNCisJYm9vbCAiTWlj cm9jaGlwIEFYSSBQQ0llIGhvc3QgYnJpZGdlIHN1cHBvcnQiDQorCWRlcGVuZHMgb24gUENJX01T SSAmJiBPRiAmJiBSSVNDViAmJiA2NEJJVA0KKwlzZWxlY3QgUENJX01TSV9JUlFfRE9NQUlODQor CXNlbGVjdCBHRU5FUklDX01TSV9JUlFfRE9NQUlODQorCWhlbHANCisJICBTYXkgWSBoZXJlIGlm IHlvdSB3YW50IGtlcm5lbCB0byBzdXBwb3J0IHRoZSBNaWNyb2NoaXAgQVhJIFBDSWUNCisJICBI b3N0IEJyaWRnZSBkcml2ZXIuDQorDQogc291cmNlICJkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3 Yy9LY29uZmlnIg0KIHNvdXJjZSAiZHJpdmVycy9wY2kvY29udHJvbGxlci9tb2JpdmVpbC9LY29u ZmlnIg0KIHNvdXJjZSAiZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWciDQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9NYWtlZmlsZSBiL2RyaXZlcnMvcGNp L2NvbnRyb2xsZXIvTWFrZWZpbGUNCmluZGV4IDE1OGM1OTc3MTgyNC4uNDE2NTI4ZDg1NTNlIDEw MDY0NA0KLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9NYWtlZmlsZQ0KKysrIGIvZHJpdmVy cy9wY2kvY29udHJvbGxlci9NYWtlZmlsZQ0KQEAgLTI2LDYgKzI2LDcgQEAgb2JqLSQoQ09ORklH X1BDSUVfUk9DS0NISVBfRVApICs9IHBjaWUtcm9ja2NoaXAtZXAubw0KIG9iai0kKENPTkZJR19Q Q0lFX1JPQ0tDSElQX0hPU1QpICs9IHBjaWUtcm9ja2NoaXAtaG9zdC5vDQogb2JqLSQoQ09ORklH X1BDSUVfTUVESUFURUspICs9IHBjaWUtbWVkaWF0ZWsubw0KIG9iai0kKENPTkZJR19QQ0lFX1RB TkdPX1NNUDg3NTkpICs9IHBjaWUtdGFuZ28ubw0KK29iai0kKENPTkZJR19QQ0lFX01JQ1JPQ0hJ UF9IT1NUKSArPSBwY2llLW1pY3JvY2hpcC1ob3N0Lm8NCiBvYmotJChDT05GSUdfVk1EKSArPSB2 bWQubw0KIG9iai0kKENPTkZJR19QQ0lFX0JSQ01TVEIpICs9IHBjaWUtYnJjbXN0Yi5vDQogIyBw Y2llLWhpc2kubyBxdWlya3MgYXJlIG5lZWRlZCBldmVuIHdpdGhvdXQgQ09ORklHX1BDSUVfRFcN CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbWljcm9jaGlwLWhvc3Qu YyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1taWNyb2NoaXAtaG9zdC5jDQpuZXcgZmls ZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi43OWIxZjU2Y2M5YjYNCi0tLSAvZGV2 L251bGwNCisrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1taWNyb2NoaXAtaG9zdC5j DQpAQCAtMCwwICsxLDcwMiBAQA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w Kw0KKy8qDQorICogTWljcm9jaGlwIEFYSSBQQ0llIEJyaWRnZSBob3N0IGNvbnRyb2xsZXIgZHJp dmVyDQorICoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTggLSAyMDE5IE1pY3JvY2hpcCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIEF1dGhvcjogRGFpcmUgTWNOYW1h cmEgPGRhaXJlLm1jbmFtYXJhQG1pY3JvY2hpcC5jb20+DQorICoNCisgKiBCYXNlZCBvbjoNCisg KglwY2llLXJjYXIuYw0KKyAqCXBjaWUteGlsaW54LmMNCisgKglwY2llLWFsdGVyYS5jDQorICov DQorI2luY2x1ZGUgPGxpbnV4L2lycWNoaXAvY2hhaW5lZF9pcnEuaD4NCisjaW5jbHVkZSA8bGlu dXgvbW9kdWxlLmg+DQorI2luY2x1ZGUgPGxpbnV4L21zaS5oPg0KKyNpbmNsdWRlIDxsaW51eC9v Zl9hZGRyZXNzLmg+DQorI2luY2x1ZGUgPGxpbnV4L29mX2lycS5oPg0KKyNpbmNsdWRlIDxsaW51 eC9vZl9wY2kuaD4NCisjaW5jbHVkZSA8bGludXgvcGNpLWVjYW0uaD4NCisjaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+DQorDQorI2luY2x1ZGUgIi4uL3BjaS5oIg0KKw0KKy8qIE51 bWJlciBvZiBNU0kgSVJRcyAqLw0KKyNkZWZpbmUgTUNfTlVNX01TSV9JUlFTCQkJCTMyDQorI2Rl ZmluZSBNQ19OVU1fTVNJX0lSUVNfQ09ERUQJCQk1DQorDQorI2RlZmluZSBNQ19NU0lfT0ZGU0VU CQkJCTB4MTkwDQorDQorLyogUENJZSBCcmlkZ2UgUGh5IGFuZCBDb250cm9sbGVyIFBoeSBvZmZz ZXRzICovDQorI2RlZmluZSBNQ19QQ0lFMV9CUklER0VfQUREUgkJCTB4MDAwMDgwMDB1DQorI2Rl ZmluZSBNQ19QQ0lFMV9DVFJMX0FERFIJCQkweDAwMDBhMDAwdQ0KKw0KKy8qIFBDSWUgQ29udHJv bGxlciBQaHkgUmVncyAqLw0KKyNkZWZpbmUgTUNfU0VDX0VSUk9SX0lOVAkJCTB4MjgNCisjZGVm aW5lICBTRUNfRVJST1JfSU5UX1RYX1JBTV9TRUNfRVJSX0lOVAlHRU5NQVNLKDMsIDApDQorI2Rl ZmluZSAgU0VDX0VSUk9SX0lOVF9SWF9SQU1fU0VDX0VSUl9JTlQJR0VOTUFTSyg3LCA0KQ0KKyNk ZWZpbmUgIFNFQ19FUlJPUl9JTlRfUENJRTJBWElfUkFNX1NFQ19FUlJfSU5UCUdFTk1BU0soMTEs IDgpDQorI2RlZmluZSAgU0VDX0VSUk9SX0lOVF9BWEkyUENJRV9SQU1fU0VDX0VSUl9JTlQJR0VO TUFTSygxNSwgMTIpDQorI2RlZmluZSBNQ19TRUNfRVJST1JfSU5UX01BU0sJCQkweDJjDQorI2Rl ZmluZSBNQ19ERURfRVJST1JfSU5UCQkJMHgzMA0KKyNkZWZpbmUgIERFRF9FUlJPUl9JTlRfVFhf UkFNX0RFRF9FUlJfSU5UCUdFTk1BU0soMywgMCkNCisjZGVmaW5lICBERURfRVJST1JfSU5UX1JY X1JBTV9ERURfRVJSX0lOVAlHRU5NQVNLKDcsIDQpDQorI2RlZmluZSAgREVEX0VSUk9SX0lOVF9Q Q0lFMkFYSV9SQU1fREVEX0VSUl9JTlQJR0VOTUFTSygxMSwgOCkNCisjZGVmaW5lICBERURfRVJS T1JfSU5UX0FYSTJQQ0lFX1JBTV9ERURfRVJSX0lOVAlHRU5NQVNLKDE1LCAxMikNCisjZGVmaW5l IE1DX0RFRF9FUlJPUl9JTlRfTUFTSwkJCTB4MzQNCisjZGVmaW5lIE1DX0VDQ19DT05UUk9MCQkJ CTB4MzgNCisjZGVmaW5lICBFQ0NfQ09OVFJPTF9BWEkyUENJRV9SQU1fRUNDX0JZUEFTUwlCSVQo MjcpDQorI2RlZmluZSAgRUNDX0NPTlRST0xfUENJRTJBWElfUkFNX0VDQ19CWVBBU1MJQklUKDI2 KQ0KKyNkZWZpbmUgIEVDQ19DT05UUk9MX1JYX1JBTV9FQ0NfQllQQVNTCQlCSVQoMjUpDQorI2Rl ZmluZSAgRUNDX0NPTlRST0xfVFhfUkFNX0VDQ19CWVBBU1MJCUJJVCgyNCkNCisjZGVmaW5lIE1D X0xUU1NNX1NUQVRFCQkJCTB4NWMNCisjZGVmaW5lICBMVFNTTV9MMF9TVEFURQkJCQkweDEwDQor I2RlZmluZSBNQ19QQ0lFX0VWRU5UX0lOVAkJCTB4MTRjDQorI2RlZmluZSAgUENJRV9FVkVOVF9J TlRfTDJfRVhJVF9JTlQJCUJJVCgwKQ0KKyNkZWZpbmUgIFBDSUVfRVZFTlRfSU5UX0hPVFJTVF9F WElUX0lOVAkJQklUKDEpDQorI2RlZmluZSAgUENJRV9FVkVOVF9JTlRfRExVUF9FWElUX0lOVAkJ QklUKDIpDQorI2RlZmluZSAgUENJRV9FVkVOVF9JTlRfTDJfRVhJVF9JTlRfTUFTSwlCSVQoMTYp DQorI2RlZmluZSAgUENJRV9FVkVOVF9JTlRfSE9UUlNUX0VYSVRfSU5UX01BU0sJQklUKDE3KQ0K KyNkZWZpbmUgIFBDSUVfRVZFTlRfSU5UX0RMVVBfRVhJVF9JTlRfTUFTSwlCSVQoMTgpDQorDQor LyogUENJZSBCcmlkZ2UgUGh5IFJlZ3MgKi8NCisjZGVmaW5lIE1DX1BDSUVfUENJX0lEU19EVzEJ CQkweDljDQorDQorLyogUENJZSBDb25maWcgc3BhY2UgTVNJIGNhcGFiaWxpdHkgc3RydWN0dXJl ICovDQorI2RlZmluZSBNQ19NU0lfQ0FQX0NUUkwJCQkJMHhlMHUNCisjZGVmaW5lICBNU0lfRU5B QkxFCQkJCSgweDAxdSA8PCAxNikNCisjZGVmaW5lICBNU0lfQ0FQX01VTFRJCQkJCShNQ19OVU1f TVNJX0lSUVNfQ09ERUQgPDwgMTcpDQorI2RlZmluZSAgTVNJX0VOQUJMRV9NVUxUSQkJCShNQ19O VU1fTVNJX0lSUVNfQ09ERUQgPDwgMjApDQorI2RlZmluZSBNQ19NU0lfTVNHX0xPX0FERFIJCQkw eGU0dQ0KKyNkZWZpbmUgTUNfTVNJX01TR19ISV9BRERSCQkJMHhlOHUNCisjZGVmaW5lIE1DX01T SV9NU0dfREFUQQkJCQkweGYwdQ0KKw0KKyNkZWZpbmUgTUNfSU1BU0tfTE9DQUwJCQkJMHgxODAN CisjZGVmaW5lICBQQ0lFX0xPQ0FMX0lOVF9FTkFCTEUJCQkweDBmMDAwMDAwdQ0KKyNkZWZpbmUg IFBDSV9JTlRTCQkJCTB4MGYwMDAwMDB1DQorI2RlZmluZSAgUE1fTVNJX0lOVF9TSElGVAkJCTI0 DQorI2RlZmluZSAgUENJRV9FTkFCTEVfTVNJCQkJMHgxMDAwMDAwMHUNCisjZGVmaW5lICBNU0lf SU5UCQkJCTB4MTAwMDAwMDB1DQorI2RlZmluZSAgTVNJX0lOVF9TSElGVAkJCQkyOA0KKyNkZWZp bmUgTUNfSVNUQVRVU19MT0NBTAkJCTB4MTg0DQorI2RlZmluZSBNQ19JTUFTS19IT1NUCQkJCTB4 MTg4DQorI2RlZmluZSBNQ19JU1RBVFVTX0hPU1QJCQkJMHgxOGMNCisjZGVmaW5lIE1DX0lTVEFU VVNfTVNJCQkJCTB4MTk0DQorDQorLyogUENJZSBNYXN0ZXIgdGFibGUgaW5pdCBkZWZpbmVzICov DQorI2RlZmluZSBNQ19BVFIwX1BDSUVfV0lOMF9TUkNBRERSXzMxXzEyCQkweDYwMHUNCisjZGVm aW5lICBBVFIwX1BDSUVfV0lOMF9TSVpFCQkJMHgxZg0KKyNkZWZpbmUgIEFUUjBfUENJRV9XSU4w X1NJWkVfU0hJRlQJCTENCisjZGVmaW5lIE1DX0FUUjBfUENJRV9XSU4wX1NSQ0FERFJfNjNfMzIJ CTB4NjA0dQ0KKw0KKy8qIFBDSWUgQVhJIHNsYXZlIHRhYmxlIGluaXQgZGVmaW5lcyAqLw0KKyNk ZWZpbmUgTUNfQVRSMF9BWEk0X1NMVjBfU1JDQUREUl9QQVJBTQkJMHg4MDB1DQorI2RlZmluZSAg QVRSX1NJWkVfU0hJRlQJCQkJMQ0KKyNkZWZpbmUgIEFUUl9JTVBMX0VOQUJMRQkJCTENCisjZGVm aW5lIE1DX0FUUjBfQVhJNF9TTFYwX1NSQ19BRERSCQkweDgwNHUNCisjZGVmaW5lIE1DX0FUUjBf QVhJNF9TTFYwX1RSU0xfQUREUl9MU0IJCTB4ODA4dQ0KKyNkZWZpbmUgTUNfQVRSMF9BWEk0X1NM VjBfVFJTTF9BRERSX1VEVwkJMHg4MGN1DQorI2RlZmluZSBNQ19BVFIwX0FYSTRfU0xWMF9UUlNM X1BBUkFNCQkweDgxMHUNCisjZGVmaW5lICBQQ0lFX1RYX1JYX0lOVEVSRkFDRQkJCTB4MDAwMDAw MDB1DQorI2RlZmluZSAgUENJRV9DT05GSUdfSU5URVJGQUNFCQkJMHgwMDAwMDAwMXUNCisjZGVm aW5lICBBVFIwX0FYSTRfU0xWX1NJWkUJCQkzMg0KKw0KK3N0cnVjdCBtY19tc2kgew0KKwlzdHJ1 Y3QgbXV0ZXggbG9jazsJCS8qIFByb3RlY3QgdXNlZCBiaXRtYXAgKi8NCisJc3RydWN0IGlycV9k b21haW4gKm1zaV9kb21haW47DQorCXN0cnVjdCBpcnFfZG9tYWluICpkZXZfZG9tYWluOw0KKwl1 MzIgbnVtX3ZlY3RvcnM7DQorCXBoeXNfYWRkcl90IHZlY3Rvcl9waHk7DQorCURFQ0xBUkVfQklU TUFQKHVzZWQsIE1DX05VTV9NU0lfSVJRUyk7DQorfTsNCisNCitzdHJ1Y3QgbWNfcGNpZSB7DQor CXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7DQorCXZvaWQgX19pb21lbSAqY2ZnX2Jhc2Vf YWRkcjsNCisJdm9pZCBfX2lvbWVtICpicmlkZ2VfYmFzZV9hZGRyOw0KKwl2b2lkIF9faW9tZW0g KmN0cmxfYmFzZV9hZGRyOw0KKwl1NjQgaHdfYmFzZV9hZGRyOw0KKwl1MzIgYXRyX3N6Ow0KKwl1 MzIgaXJxOw0KKwlzdHJ1Y3QgaXJxX2RvbWFpbiAqaW50eF9kb21haW47DQorCXJhd19zcGlubG9j a190IGludHhfbWFza19sb2NrOw0KKwlzdHJ1Y3QgbWNfbXNpIG1zaTsNCit9Ow0KKw0KK3N0YXRp YyBpbmxpbmUgdTMyIGNmZ19yZWFkbChzdHJ1Y3QgbWNfcGNpZSAqcGNpZSwgY29uc3QgdTMyIHJl ZykNCit7DQorCXJldHVybiByZWFkbF9yZWxheGVkKHBjaWUtPmNmZ19iYXNlX2FkZHIgKyByZWcp Ow0KK30NCisNCitzdGF0aWMgaW5saW5lIHZvaWQgY2ZnX3dyaXRlbChzdHJ1Y3QgbWNfcGNpZSAq cGNpZSwgY29uc3QgdTMyIHZhbCwNCisJCQkgICAgICBjb25zdCB1MzIgcmVnKQ0KK3sNCisJd3Jp dGVsX3JlbGF4ZWQodmFsLCBwY2llLT5jZmdfYmFzZV9hZGRyICsgcmVnKTsNCit9DQorDQorc3Rh dGljIHZvaWQgbWNfcGNpZV9lbmFibGUoc3RydWN0IG1jX3BjaWUgKnBjaWUpDQorew0KKwl1MzIg ZW5iOw0KKw0KKwllbmIgPSByZWFkbChwY2llLT5icmlkZ2VfYmFzZV9hZGRyICsgTUNfTFRTU01f U1RBVEUpOw0KKwllbmIgfD0gTFRTU01fTDBfU1RBVEU7DQorCXdyaXRlbChlbmIsIHBjaWUtPmJy aWRnZV9iYXNlX2FkZHIgKyBNQ19MVFNTTV9TVEFURSk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG1j X3BjaWVfaXNyKHN0cnVjdCBpcnFfZGVzYyAqZGVzYykNCit7DQorCXN0cnVjdCBpcnFfY2hpcCAq Y2hpcCA9IGlycV9kZXNjX2dldF9jaGlwKGRlc2MpOw0KKwlzdHJ1Y3QgbWNfcGNpZSAqcGNpZSA9 IGlycV9kZXNjX2dldF9oYW5kbGVyX2RhdGEoZGVzYyk7DQorCXN0cnVjdCBkZXZpY2UgKmRldiA9 ICZwY2llLT5wZGV2LT5kZXY7DQorCXN0cnVjdCBtY19tc2kgKm1zaSA9ICZwY2llLT5tc2k7DQor CXVuc2lnbmVkIGxvbmcgc3RhdHVzOw0KKwl1bnNpZ25lZCBsb25nIGludHhfc3RhdHVzOw0KKwl1 bnNpZ25lZCBsb25nIG1zaV9zdGF0dXM7DQorCXUzMiBiaXQ7DQorCXUzMiB2aXJxOw0KKw0KKwkv Kg0KKwkgKiBUaGUgY29yZSBwcm92aWRlcyBhIHNpbmdsZSBpbnRlcnJ1cHQgZm9yIGJvdGggSU5U eC9NU0kgbWVzc2FnZXMuDQorCSAqIFNvIHdlJ2xsIHJlYWQgYm90aCBJTlR4IGFuZCBNU0kgc3Rh dHVzLg0KKwkgKi8NCisJY2hhaW5lZF9pcnFfZW50ZXIoY2hpcCwgZGVzYyk7DQorDQorCXN0YXR1 cyA9IHJlYWRsKHBjaWUtPmJyaWRnZV9iYXNlX2FkZHIgKyBNQ19JU1RBVFVTX0xPQ0FMKTsNCisJ d2hpbGUgKHN0YXR1cyAmIChQQ0lfSU5UUyB8IE1TSV9JTlQpKSB7DQorCQlpbnR4X3N0YXR1cyA9 IChzdGF0dXMgJiBQQ0lfSU5UUykgPj4gUE1fTVNJX0lOVF9TSElGVDsNCisJCWZvcl9lYWNoX3Nl dF9iaXQoYml0LCAmaW50eF9zdGF0dXMsIFBDSV9OVU1fSU5UWCkgew0KKwkJCXZpcnEgPSBpcnFf ZmluZF9tYXBwaW5nKHBjaWUtPmludHhfZG9tYWluLCBiaXQgKyAxKTsNCisJCQlpZiAodmlycSkN CisJCQkJZ2VuZXJpY19oYW5kbGVfaXJxKHZpcnEpOw0KKwkJCWVsc2UNCisJCQkJZGV2X2Vycl9y YXRlbGltaXRlZChkZXYsICJiYWQgSU5UeCBJUlEgJWRcbiIsDQorCQkJCQkJICAgIGJpdCk7DQor DQorCQkJLyogQ2xlYXIgdGhhdCBpbnRlcnJ1cHQgYml0ICovDQorCQkJd3JpdGVsKDEgPDwgKGJp dCArIFBNX01TSV9JTlRfU0hJRlQpLA0KKwkJCSAgICAgICBwY2llLT5icmlkZ2VfYmFzZV9hZGRy ICsgTUNfSVNUQVRVU19MT0NBTCk7DQorCQl9DQorDQorCQltc2lfc3RhdHVzID0gKHN0YXR1cyAm IE1TSV9JTlQpOw0KKwkJaWYgKG1zaV9zdGF0dXMpIHsNCisJCQltc2lfc3RhdHVzID0gcmVhZGwo cGNpZS0+YnJpZGdlX2Jhc2VfYWRkciArDQorCQkJCQkgICBNQ19JU1RBVFVTX01TSSk7DQorCQkJ Zm9yX2VhY2hfc2V0X2JpdChiaXQsICZtc2lfc3RhdHVzLCBtc2ktPm51bV92ZWN0b3JzKSB7DQor CQkJCXZpcnEgPSBpcnFfZmluZF9tYXBwaW5nKG1zaS0+ZGV2X2RvbWFpbiwgYml0KTsNCisJCQkJ aWYgKHZpcnEpDQorCQkJCQlnZW5lcmljX2hhbmRsZV9pcnEodmlycSk7DQorCQkJCWVsc2UNCisJ CQkJCWRldl9lcnJfcmF0ZWxpbWl0ZWQoZGV2LA0KKwkJCQkJCQkgICAgImJhZCBNU0kgSVJRICVk XG4iLA0KKwkJCQkJCQkgICAgYml0KTsNCisNCisJCQkJLyogQ2xlYXIgdGhhdCBNU0kgaW50ZXJy dXB0IGJpdCAqLw0KKwkJCQl3cml0ZWwoKDEgPDwgYml0KSwgcGNpZS0+YnJpZGdlX2Jhc2VfYWRk ciArDQorCQkJCSAgICAgICBNQ19JU1RBVFVTX01TSSk7DQorCQkJfQ0KKwkJCS8qIENsZWFyIHRo ZSBJU1RBVFVTIE1TSSBiaXQgKi8NCisJCQl3cml0ZWwoMSA8PCBNU0lfSU5UX1NISUZULCBwY2ll LT5icmlkZ2VfYmFzZV9hZGRyICsNCisJCQkgICAgICAgTUNfSVNUQVRVU19MT0NBTCk7DQorCQl9 DQorDQorCQlzdGF0dXMgPSByZWFkbChwY2llLT5icmlkZ2VfYmFzZV9hZGRyICsgTUNfSVNUQVRV U19MT0NBTCk7DQorCX0NCisNCisJY2hhaW5lZF9pcnFfZXhpdChjaGlwLCBkZXNjKTsNCit9DQor DQorc3RhdGljIGludCBtY19wY2llX3BhcnNlX2R0KHN0cnVjdCBtY19wY2llICpwY2llKQ0KK3sN CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHBjaWUtPnBkZXY7DQorCXN0cnVjdCBk ZXZpY2UgKmRldiA9ICZwY2llLT5wZGV2LT5kZXY7DQorCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9k ZSA9IGRldi0+b2Zfbm9kZTsNCisJc3RydWN0IG1jX21zaSAqbXNpID0gJnBjaWUtPm1zaTsNCisJ c3RydWN0IHJlc291cmNlIHJlczsNCisJY29uc3QgY2hhciAqdHlwZTsNCisJcmVzb3VyY2Vfc2l6 ZV90IHNpemU7DQorCWludCByZXQ7DQorCXZvaWQgX19pb21lbSAqYXhpX2Jhc2VfYWRkcjsNCisJ dTY0IGNmZ19hZGRyOw0KKw0KKwl0eXBlID0gb2ZfZ2V0X3Byb3BlcnR5KG5vZGUsICJkZXZpY2Vf dHlwZSIsIE5VTEwpOw0KKwlpZiAoIXR5cGUgfHwgc3RyY21wKHR5cGUsICJwY2kiKSkgew0KKwkJ ZGV2X2VycihkZXYsICJpbnZhbGlkIFwiZGV2aWNlX3R5cGVcIiAlc1xuIiwgdHlwZSk7DQorCQly ZXR1cm4gLUVJTlZBTDsNCisJfQ0KKw0KKwljZmdfYWRkciA9IG9mX3RyYW5zbGF0ZV9hZGRyZXNz KG5vZGUsDQorCQkJCQlvZl9nZXRfYWRkcmVzcyhub2RlLCAwLCAmc2l6ZSwgMCkpOw0KKwlpZiAo Y2ZnX2FkZHIgPT0gT0ZfQkFEX0FERFIpIHsNCisJCWRldl9lcnIoZGV2LCAibWlzc2luZyBcImNm ZyByZWdcIiBwcm9wZXJ0eVxuIik7DQorCQlyZXR1cm4gLUVOT0RFVjsNCisJfQ0KKw0KKwlwY2ll LT5jZmdfYmFzZV9hZGRyID0gZGV2bV9pb3JlbWFwKGRldiwgY2ZnX2FkZHIsIHNpemUpOw0KKwlw Y2llLT5od19iYXNlX2FkZHIgPSBjZmdfYWRkcjsNCisNCisJcGNpZS0+YXRyX3N6ID0gZmluZF9m aXJzdF9iaXQoKGNvbnN0IHVuc2lnbmVkIGxvbmcgKikmc2l6ZSwgNjQpIC0gMTsNCisNCisJcmV0 ID0gb2ZfYWRkcmVzc190b19yZXNvdXJjZShub2RlLCAxLCAmcmVzKTsNCisJaWYgKHJldCkgew0K KwkJZGV2X2VycihkZXYsICJtaXNzaW5nIFwicmVnXCIgcHJvcGVydHlcbiIpOw0KKwkJcmV0dXJu IHJldDsNCisJfQ0KKw0KKwlheGlfYmFzZV9hZGRyID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRl diwgJnJlcyk7DQorCWlmIChJU19FUlIoYXhpX2Jhc2VfYWRkcikpDQorCQlyZXR1cm4gUFRSX0VS UihheGlfYmFzZV9hZGRyKTsNCisNCisJcGNpZS0+YnJpZGdlX2Jhc2VfYWRkciA9IGF4aV9iYXNl X2FkZHIgKyBNQ19QQ0lFMV9CUklER0VfQUREUjsNCisJcGNpZS0+Y3RybF9iYXNlX2FkZHIgPSBh eGlfYmFzZV9hZGRyICsgTUNfUENJRTFfQ1RSTF9BRERSOw0KKw0KKwlpZiAob2ZfcHJvcGVydHlf cmVhZF91NjQobm9kZSwgInZlY3Rvci1zbGF2ZSIsICZtc2ktPnZlY3Rvcl9waHkpKQ0KKwkJbXNp LT52ZWN0b3JfcGh5ID0gTUNfTVNJX09GRlNFVDsNCisNCisJaWYgKG9mX3Byb3BlcnR5X3JlYWRf dTMyKG5vZGUsICJudW0tdmVjdG9ycyIsICZtc2ktPm51bV92ZWN0b3JzKSkNCisJCW1zaS0+bnVt X3ZlY3RvcnMgPSBNQ19OVU1fTVNJX0lSUVM7DQorDQorCXBjaWUtPmlycSA9IHBsYXRmb3JtX2dl dF9pcnEocGRldiwgMCk7DQorCWlmIChwY2llLT5pcnEgPCAwKSB7DQorCQlkZXZfZXJyKGRldiwg InVuYWJsZSB0byByZXF1ZXN0IElSUSVkXG4iLCBwY2llLT5pcnEpOw0KKwkJcmV0dXJuIC1FTk9E RVY7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG1jX3BjaWVfZW5h YmxlX21zaShzdHJ1Y3QgbWNfcGNpZSAqcGNpZSkNCit7DQorCXN0cnVjdCBtY19tc2kgKm1zaSA9 ICZwY2llLT5tc2k7DQorCXUzMiBtc2dfY3RybCA9IGNmZ19yZWFkbChwY2llLCBNQ19NU0lfQ0FQ X0NUUkwpOw0KKw0KKwltc2dfY3RybCB8PSBNU0lfRU5BQkxFX01VTFRJIHwgTVNJX0NBUF9NVUxU SSB8IE1TSV9FTkFCTEU7DQorCWNmZ193cml0ZWwocGNpZSwgbXNnX2N0cmwsIE1DX01TSV9DQVBf Q1RSTCk7DQorCWNmZ193cml0ZWwocGNpZSwgbG93ZXJfMzJfYml0cyhtc2ktPnZlY3Rvcl9waHkp LCBNQ19NU0lfTVNHX0xPX0FERFIpOw0KKwljZmdfd3JpdGVsKHBjaWUsIHVwcGVyXzMyX2JpdHMo bXNpLT52ZWN0b3JfcGh5KSwgTUNfTVNJX01TR19ISV9BRERSKTsNCit9DQorDQorc3RhdGljIGlu dCBtY19ob3N0X2luaXQoc3RydWN0IG1jX3BjaWUgKnBjaWUpDQorew0KKwl1MzIgdmFsOw0KKw0K KwltY19wY2llX2VuYWJsZShwY2llKTsNCisNCisJdmFsID0gRUNDX0NPTlRST0xfQVhJMlBDSUVf UkFNX0VDQ19CWVBBU1MgfA0KKwkgICAgICBFQ0NfQ09OVFJPTF9QQ0lFMkFYSV9SQU1fRUNDX0JZ UEFTUyB8DQorCSAgICAgIEVDQ19DT05UUk9MX1JYX1JBTV9FQ0NfQllQQVNTIHwgRUNDX0NPTlRS T0xfVFhfUkFNX0VDQ19CWVBBU1M7DQorCXdyaXRlbCh2YWwsIHBjaWUtPmN0cmxfYmFzZV9hZGRy ICsgTUNfRUNDX0NPTlRST0wpOw0KKw0KKwl2YWwgPSBQQ0lFX0VWRU5UX0lOVF9MMl9FWElUX0lO VCB8IFBDSUVfRVZFTlRfSU5UX0hPVFJTVF9FWElUX0lOVCB8DQorCSAgICAgIFBDSUVfRVZFTlRf SU5UX0RMVVBfRVhJVF9JTlQgfCBQQ0lFX0VWRU5UX0lOVF9MMl9FWElUX0lOVF9NQVNLIHwNCisJ ICAgICAgUENJRV9FVkVOVF9JTlRfSE9UUlNUX0VYSVRfSU5UX01BU0sgfA0KKwkgICAgICBQQ0lF X0VWRU5UX0lOVF9ETFVQX0VYSVRfSU5UX01BU0s7DQorCXdyaXRlbCh2YWwsIHBjaWUtPmN0cmxf YmFzZV9hZGRyICsgTUNfUENJRV9FVkVOVF9JTlQpOw0KKw0KKwl2YWwgPSBTRUNfRVJST1JfSU5U X1RYX1JBTV9TRUNfRVJSX0lOVCB8DQorCSAgICAgIFNFQ19FUlJPUl9JTlRfUlhfUkFNX1NFQ19F UlJfSU5UIHwNCisJICAgICAgU0VDX0VSUk9SX0lOVF9QQ0lFMkFYSV9SQU1fU0VDX0VSUl9JTlQg fA0KKwkgICAgICBTRUNfRVJST1JfSU5UX0FYSTJQQ0lFX1JBTV9TRUNfRVJSX0lOVDsNCisJd3Jp dGVsKHZhbCwgcGNpZS0+Y3RybF9iYXNlX2FkZHIgKyBNQ19TRUNfRVJST1JfSU5UKTsNCisJd3Jp dGVsKHZhbCwgcGNpZS0+Y3RybF9iYXNlX2FkZHIgKyBNQ19TRUNfRVJST1JfSU5UX01BU0spOw0K Kw0KKwl2YWwgPSBERURfRVJST1JfSU5UX1RYX1JBTV9ERURfRVJSX0lOVCB8DQorCSAgICAgIERF RF9FUlJPUl9JTlRfUlhfUkFNX0RFRF9FUlJfSU5UIHwNCisJICAgICAgREVEX0VSUk9SX0lOVF9Q Q0lFMkFYSV9SQU1fREVEX0VSUl9JTlQgfA0KKwkgICAgICBERURfRVJST1JfSU5UX0FYSTJQQ0lF X1JBTV9ERURfRVJSX0lOVDsNCisJd3JpdGVsKHZhbCwgcGNpZS0+Y3RybF9iYXNlX2FkZHIgKyBN Q19ERURfRVJST1JfSU5UKTsNCisJd3JpdGVsKHZhbCwgcGNpZS0+Y3RybF9iYXNlX2FkZHIgKyBN Q19ERURfRVJST1JfSU5UX01BU0spOw0KKw0KKwl3cml0ZWwoMCwgcGNpZS0+YnJpZGdlX2Jhc2Vf YWRkciArIE1DX0lNQVNLX0xPQ0FMKTsNCisJd3JpdGVsKEdFTk1BU0soMzEsIDApLCBwY2llLT5i cmlkZ2VfYmFzZV9hZGRyICsgTUNfSVNUQVRVU19MT0NBTCk7DQorCXdyaXRlbCgwLCBwY2llLT5i cmlkZ2VfYmFzZV9hZGRyICsgTUNfSU1BU0tfSE9TVCk7DQorCXdyaXRlbChHRU5NQVNLKDMxLCAw KSwgcGNpZS0+YnJpZGdlX2Jhc2VfYWRkciArIE1DX0lTVEFUVVNfSE9TVCk7DQorDQorCS8qIENv bmZpZ3VyZSBBZGRyZXNzIFRyYW5zbGF0aW9uIFRhYmxlIDAgZm9yIFBDSWUgY29uZmlnIHNwYWNl ICovDQorCXdyaXRlbChQQ0lFX0NPTkZJR19JTlRFUkZBQ0UsIHBjaWUtPmJyaWRnZV9iYXNlX2Fk ZHIgKw0KKwkgICAgICAgTUNfQVRSMF9BWEk0X1NMVjBfVFJTTF9QQVJBTSk7DQorDQorCXZhbCA9 IGxvd2VyXzMyX2JpdHMocGNpZS0+aHdfYmFzZV9hZGRyKSB8DQorCSAgICAgIChwY2llLT5hdHJf c3ogPDwgQVRSX1NJWkVfU0hJRlQpIHwgQVRSX0lNUExfRU5BQkxFOw0KKwl3cml0ZWwodmFsLCBw Y2llLT5icmlkZ2VfYmFzZV9hZGRyICsgTUNfQVRSMF9BWEk0X1NMVjBfU1JDQUREUl9QQVJBTSk7 DQorDQorCXZhbCA9IGxvd2VyXzMyX2JpdHMocGNpZS0+aHdfYmFzZV9hZGRyKTsNCisJd3JpdGVs KHZhbCwgcGNpZS0+YnJpZGdlX2Jhc2VfYWRkciArIE1DX0FUUjBfQVhJNF9TTFYwX1RSU0xfQURE Ul9MU0IpOw0KKw0KKwl2YWwgPSByZWFkbChwY2llLT5icmlkZ2VfYmFzZV9hZGRyICsgTUNfQVRS MF9QQ0lFX1dJTjBfU1JDQUREUl8zMV8xMik7DQorCXZhbCB8PSAoQVRSMF9QQ0lFX1dJTjBfU0la RSA8PCBBVFIwX1BDSUVfV0lOMF9TSVpFX1NISUZUKTsNCisNCisJd3JpdGVsKHZhbCwgcGNpZS0+ YnJpZGdlX2Jhc2VfYWRkciArIE1DX0FUUjBfUENJRV9XSU4wX1NSQ0FERFJfMzFfMTIpOw0KKw0K Kwl3cml0ZWwoMCwgcGNpZS0+YnJpZGdlX2Jhc2VfYWRkciArIE1DX0FUUjBfUENJRV9XSU4wX1NS Q0FERFJfNjNfMzIpOw0KKw0KKwl2YWwgPSByZWFkbChwY2llLT5icmlkZ2VfYmFzZV9hZGRyICsg TUNfUENJRV9QQ0lfSURTX0RXMSk7DQorCXZhbCAmPSAweGZmZmY7DQorCXZhbCB8PSAoUENJX0NM QVNTX0JSSURHRV9QQ0kgPDwgMTYpOw0KKwl3cml0ZWwodmFsLCBwY2llLT5icmlkZ2VfYmFzZV9h ZGRyICsgTUNfUENJRV9QQ0lfSURTX0RXMSk7DQorDQorCS8qIFNldHVwIGJ1cyBudW1iZXJzICov DQorCXZhbCA9IGNmZ19yZWFkbChwY2llLCBQQ0lfUFJJTUFSWV9CVVMpOw0KKwl2YWwgJj0gMHhm ZjAwMDAwMDsNCisJdmFsIHw9IDB4MDBmZjAxMDA7DQorCWNmZ193cml0ZWwocGNpZSwgdmFsLCBQ Q0lfUFJJTUFSWV9CVVMpOw0KKw0KKwltY19wY2llX2VuYWJsZV9tc2kocGNpZSk7DQorDQorCXZh bCA9IFBDSUVfRU5BQkxFX01TSSB8IFBDSUVfTE9DQUxfSU5UX0VOQUJMRTsNCisJd3JpdGVsKHZh bCwgcGNpZS0+YnJpZGdlX2Jhc2VfYWRkciArIE1DX0lNQVNLX0xPQ0FMKTsNCisNCisJcmV0dXJu IDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG1jX21hc2tfaW50eF9pcnEoc3RydWN0IGlycV9kYXRh ICpkYXRhKQ0KK3sNCisJc3RydWN0IGlycV9kZXNjICpkZXNjID0gaXJxX3RvX2Rlc2MoZGF0YS0+ aXJxKTsNCisJc3RydWN0IG1jX3BjaWUgKnBjaWU7DQorCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQor CXUzMiBtYXNrLCB2YWw7DQorDQorCXBjaWUgPSBpcnFfZGVzY19nZXRfY2hpcF9kYXRhKGRlc2Mp Ow0KKwltYXNrID0gUENJRV9MT0NBTF9JTlRfRU5BQkxFOw0KKwlyYXdfc3Bpbl9sb2NrX2lycXNh dmUoJnBjaWUtPmludHhfbWFza19sb2NrLCBmbGFncyk7DQorCXZhbCA9IHJlYWRsKHBjaWUtPmJy aWRnZV9iYXNlX2FkZHIgKyBNQ19JTUFTS19MT0NBTCk7DQorCXZhbCAmPSB+bWFzazsNCisJd3Jp dGVsKHZhbCwgcGNpZS0+YnJpZGdlX2Jhc2VfYWRkciArIE1DX0lNQVNLX0xPQ0FMKTsNCisJcmF3 X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBjaWUtPmludHhfbWFza19sb2NrLCBmbGFncyk7DQor fQ0KKw0KK3N0YXRpYyB2b2lkIG1jX3VubWFza19pbnR4X2lycShzdHJ1Y3QgaXJxX2RhdGEgKmRh dGEpDQorew0KKwlzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MgPSBpcnFfdG9fZGVzYyhkYXRhLT5pcnEp Ow0KKwlzdHJ1Y3QgbWNfcGNpZSAqcGNpZTsNCisJdW5zaWduZWQgbG9uZyBmbGFnczsNCisJdTMy IG1hc2ssIHZhbDsNCisNCisJcGNpZSA9IGlycV9kZXNjX2dldF9jaGlwX2RhdGEoZGVzYyk7DQor CW1hc2sgPSBQQ0lFX0xPQ0FMX0lOVF9FTkFCTEU7DQorCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgm cGNpZS0+aW50eF9tYXNrX2xvY2ssIGZsYWdzKTsNCisJdmFsID0gcmVhZGwocGNpZS0+YnJpZGdl X2Jhc2VfYWRkciArIE1DX0lNQVNLX0xPQ0FMKTsNCisJdmFsIHw9IG1hc2s7DQorCXdyaXRlbCh2 YWwsIHBjaWUtPmJyaWRnZV9iYXNlX2FkZHIgKyBNQ19JTUFTS19MT0NBTCk7DQorCXJhd19zcGlu X3VubG9ja19pcnFyZXN0b3JlKCZwY2llLT5pbnR4X21hc2tfbG9jaywgZmxhZ3MpOw0KK30NCisN CitzdGF0aWMgc3RydWN0IGlycV9jaGlwIG1jX2ludHhfaXJxX2NoaXAgPSB7DQorCS5uYW1lID0g Im1pY3JvY2hpcF9wY2llOmludHgiLA0KKwkuaXJxX2VuYWJsZSA9IG1jX3VubWFza19pbnR4X2ly cSwNCisJLmlycV9kaXNhYmxlID0gbWNfbWFza19pbnR4X2lycSwNCisJLmlycV9tYXNrID0gbWNf bWFza19pbnR4X2lycSwNCisJLmlycV91bm1hc2sgPSBtY191bm1hc2tfaW50eF9pcnEsDQorfTsN CisNCitzdGF0aWMgaW50IG1jX3BjaWVfaW50eF9tYXAoc3RydWN0IGlycV9kb21haW4gKmRvbWFp biwgdW5zaWduZWQgaW50IGlycSwNCisJCQkgICAgaXJxX2h3X251bWJlcl90IGh3aXJxKQ0KK3sN CisJaXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGlycSwgJm1jX2ludHhfaXJxX2NoaXAsIGhhbmRs ZV9zaW1wbGVfaXJxKTsNCisJaXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tPmhvc3RfZGF0 YSk7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21h aW5fb3BzIGludHhfZG9tYWluX29wcyA9IHsNCisJLm1hcCA9IG1jX3BjaWVfaW50eF9tYXAsDQor fTsNCisNCitzdGF0aWMgc3RydWN0IGlycV9jaGlwIG1jX21zaV9pcnFfY2hpcCA9IHsNCisJLm5h bWUgPSAiTWljcm9jaGlwIFBDSWUgTVNJIiwNCisJLmlycV9tYXNrID0gcGNpX21zaV9tYXNrX2ly cSwNCisJLmlycV91bm1hc2sgPSBwY2lfbXNpX3VubWFza19pcnEsDQorfTsNCisNCitzdGF0aWMg c3RydWN0IG1zaV9kb21haW5faW5mbyBtY19tc2lfZG9tYWluX2luZm8gPSB7DQorCS5mbGFncyA9 IChNU0lfRkxBR19VU0VfREVGX0RPTV9PUFMgfCBNU0lfRkxBR19VU0VfREVGX0NISVBfT1BTIHwN CisJCSAgTVNJX0ZMQUdfUENJX01TSVgpLA0KKwkuY2hpcCA9ICZtY19tc2lfaXJxX2NoaXAsDQor fTsNCisNCitzdGF0aWMgdm9pZCBtY19jb21wb3NlX21zaV9tc2coc3RydWN0IGlycV9kYXRhICpk YXRhLCBzdHJ1Y3QgbXNpX21zZyAqbXNnKQ0KK3sNCisJc3RydWN0IG1jX3BjaWUgKnBjaWUgPSBp cnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkYXRhKTsNCisJcGh5c19hZGRyX3QgYWRkciA9IHBj aWUtPm1zaS52ZWN0b3JfcGh5Ow0KKw0KKwltc2ctPmFkZHJlc3NfbG8gPSBsb3dlcl8zMl9iaXRz KGFkZHIpOw0KKwltc2ctPmFkZHJlc3NfaGkgPSB1cHBlcl8zMl9iaXRzKGFkZHIpOw0KKwltc2ct PmRhdGEgPSBkYXRhLT5od2lycTsNCisNCisJZGV2X2RiZygmcGNpZS0+cGRldi0+ZGV2LCAibXNp IyV4IGFkZHJlc3NfaGkgJSN4IGFkZHJlc3NfbG8gJSN4XG4iLA0KKwkJKGludClkYXRhLT5od2ly cSwgbXNnLT5hZGRyZXNzX2hpLCBtc2ctPmFkZHJlc3NfbG8pOw0KK30NCisNCitzdGF0aWMgaW50 IG1jX21zaV9zZXRfYWZmaW5pdHkoc3RydWN0IGlycV9kYXRhICppcnFfZGF0YSwNCisJCQkgICAg ICAgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm1hc2ssIGJvb2wgZm9yY2UpDQorew0KKwlyZXR1cm4g LUVJTlZBTDsNCit9DQorDQorc3RhdGljIHN0cnVjdCBpcnFfY2hpcCBtY19tc2lfYm90dG9tX2ly cV9jaGlwID0gew0KKwkubmFtZSA9ICJNaWNyb2NoaXAgTVNJIiwNCisJLmlycV9jb21wb3NlX21z aV9tc2cgPSBtY19jb21wb3NlX21zaV9tc2csDQorCS5pcnFfc2V0X2FmZmluaXR5ID0gbWNfbXNp X3NldF9hZmZpbml0eSwNCit9Ow0KKw0KK3N0YXRpYyBpbnQgbWNfaXJxX21zaV9kb21haW5fYWxs b2Moc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwNCisJCQkJICAgdW5zaWduZWQgaW50IHZpcnEs IHVuc2lnbmVkIGludCBucl9pcnFzLA0KKwkJCQkgICB2b2lkICphcmdzKQ0KK3sNCisJc3RydWN0 IG1jX3BjaWUgKnBjaWUgPSBkb21haW4tPmhvc3RfZGF0YTsNCisJc3RydWN0IG1jX21zaSAqbXNp ID0gJnBjaWUtPm1zaTsNCisJdW5zaWduZWQgbG9uZyBiaXQ7DQorCXUzMiByZWc7DQorDQorCVdB Uk5fT04obnJfaXJxcyAhPSAxKTsNCisJbXV0ZXhfbG9jaygmbXNpLT5sb2NrKTsNCisJYml0ID0g ZmluZF9maXJzdF96ZXJvX2JpdChtc2ktPnVzZWQsIG1zaS0+bnVtX3ZlY3RvcnMpOw0KKwlpZiAo Yml0ID49IG1zaS0+bnVtX3ZlY3RvcnMpIHsNCisJCW11dGV4X3VubG9jaygmbXNpLT5sb2NrKTsN CisJCXJldHVybiAtRU5PU1BDOw0KKwl9DQorDQorCXNldF9iaXQoYml0LCBtc2ktPnVzZWQpOw0K KwltdXRleF91bmxvY2soJm1zaS0+bG9jayk7DQorDQorCWlycV9kb21haW5fc2V0X2luZm8oZG9t YWluLCB2aXJxLCBiaXQsICZtY19tc2lfYm90dG9tX2lycV9jaGlwLA0KKwkJCSAgICBkb21haW4t Pmhvc3RfZGF0YSwgaGFuZGxlX3NpbXBsZV9pcnEsIE5VTEwsIE5VTEwpOw0KKw0KKwkvKiBFbmFi bGUgTVNJIGludGVycnVwdHMgKi8NCisJcmVnID0gcmVhZGwocGNpZS0+YnJpZGdlX2Jhc2VfYWRk ciArIE1DX0lNQVNLX0xPQ0FMKTsNCisJcmVnIHw9IFBDSUVfRU5BQkxFX01TSTsNCisJd3JpdGVs KHJlZywgcGNpZS0+YnJpZGdlX2Jhc2VfYWRkciArIE1DX0lNQVNLX0xPQ0FMKTsNCisNCisJcmV0 dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG1jX2lycV9tc2lfZG9tYWluX2ZyZWUoc3RydWN0 IGlycV9kb21haW4gKmRvbWFpbiwNCisJCQkJICAgdW5zaWduZWQgaW50IHZpcnEsIHVuc2lnbmVk IGludCBucl9pcnFzKQ0KK3sNCisJc3RydWN0IGlycV9kYXRhICpkID0gaXJxX2RvbWFpbl9nZXRf aXJxX2RhdGEoZG9tYWluLCB2aXJxKTsNCisJc3RydWN0IG1jX3BjaWUgKnBjaWUgPSBpcnFfZGF0 YV9nZXRfaXJxX2NoaXBfZGF0YShkKTsNCisJc3RydWN0IG1jX21zaSAqbXNpID0gJnBjaWUtPm1z aTsNCisNCisJbXV0ZXhfbG9jaygmbXNpLT5sb2NrKTsNCisNCisJaWYgKHRlc3RfYml0KGQtPmh3 aXJxLCBtc2ktPnVzZWQpKQ0KKwkJX19jbGVhcl9iaXQoZC0+aHdpcnEsIG1zaS0+dXNlZCk7DQor CWVsc2UNCisJCWRldl9lcnIoJnBjaWUtPnBkZXYtPmRldiwgInRyeWluZyB0byBmcmVlIHVudXNl ZCBNU0klbHVcbiIsDQorCQkJZC0+aHdpcnEpOw0KKw0KKwltdXRleF91bmxvY2soJm1zaS0+bG9j ayk7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgbXNpX2RvbWFp bl9vcHMgPSB7DQorCS5hbGxvYwk9IG1jX2lycV9tc2lfZG9tYWluX2FsbG9jLA0KKwkuZnJlZQk9 IG1jX2lycV9tc2lfZG9tYWluX2ZyZWUsDQorfTsNCisNCitzdGF0aWMgaW50IG1jX2FsbG9jYXRl X21zaV9kb21haW5zKHN0cnVjdCBtY19wY2llICpwY2llKQ0KK3sNCisJc3RydWN0IGRldmljZSAq ZGV2ID0gJnBjaWUtPnBkZXYtPmRldjsNCisJc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSA9 IG9mX25vZGVfdG9fZndub2RlKGRldi0+b2Zfbm9kZSk7DQorCXN0cnVjdCBtY19tc2kgKm1zaSA9 ICZwY2llLT5tc2k7DQorDQorCW11dGV4X2luaXQoJnBjaWUtPm1zaS5sb2NrKTsNCisNCisJbXNp LT5kZXZfZG9tYWluID0gaXJxX2RvbWFpbl9hZGRfbGluZWFyKE5VTEwsIG1zaS0+bnVtX3ZlY3Rv cnMsDQorCQkJCQkJJm1zaV9kb21haW5fb3BzLCBwY2llKTsNCisJaWYgKCFtc2ktPmRldl9kb21h aW4pIHsNCisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBJUlEgZG9tYWluXG4iKTsN CisJCXJldHVybiAtRU5PTUVNOw0KKwl9DQorDQorCW1zaS0+bXNpX2RvbWFpbiA9IHBjaV9tc2lf Y3JlYXRlX2lycV9kb21haW4oZndub2RlLA0KKwkJCQkJCSAgICAmbWNfbXNpX2RvbWFpbl9pbmZv LA0KKwkJCQkJCSAgICBtc2ktPmRldl9kb21haW4pOw0KKwlpZiAoIW1zaS0+bXNpX2RvbWFpbikg ew0KKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gY3JlYXRlIE1TSSBkb21haW5cbiIpOw0KKwkJ aXJxX2RvbWFpbl9yZW1vdmUobXNpLT5kZXZfZG9tYWluKTsNCisJCXJldHVybiAtRU5PTUVNOw0K Kwl9DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IG1jX3BjaWVfaW5pdF9pcnFf ZG9tYWlucyhzdHJ1Y3QgbWNfcGNpZSAqcGNpZSkNCit7DQorCXN0cnVjdCBkZXZpY2UgKmRldiA9 ICZwY2llLT5wZGV2LT5kZXY7DQorCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IGRldi0+b2Zf bm9kZTsNCisNCisJcGNpZS0+aW50eF9kb21haW4gPSBpcnFfZG9tYWluX2FkZF9saW5lYXIobm9k ZSwgUENJX05VTV9JTlRYLA0KKwkJCQkJCSAgJmludHhfZG9tYWluX29wcywgcGNpZSk7DQorCWlm ICghcGNpZS0+aW50eF9kb21haW4pIHsNCisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCBh biBJTlR4IElSUSBkb21haW5cbiIpOw0KKwkJcmV0dXJuIC1FTk9NRU07DQorCX0NCisJcmF3X3Nw aW5fbG9ja19pbml0KCZwY2llLT5pbnR4X21hc2tfbG9jayk7DQorDQorCXJldHVybiBtY19hbGxv Y2F0ZV9tc2lfZG9tYWlucyhwY2llKTsNCit9DQorDQorc3RhdGljIHZvaWQgbWNfcGNpX3VubWFw X2NmZyh2b2lkICpwdHIpDQorew0KKwlwY2lfZWNhbV9mcmVlKChzdHJ1Y3QgcGNpX2NvbmZpZ193 aW5kb3cgKilwdHIpOw0KK30NCisNCitzdGF0aWMgaW50IG1jX3BjaWVfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikNCit7DQorCXN0cnVjdCBtY19wY2llICpwY2llOw0KKwlzdHJ1 Y3QgcGNpX2J1cyAqYnVzOw0KKwlzdHJ1Y3QgcGNpX2J1cyAqY2hpbGQ7DQorCXN0cnVjdCBwY2lf aG9zdF9icmlkZ2UgKmJyaWRnZTsNCisJc3RydWN0IHBjaV9jb25maWdfd2luZG93ICpjZmc7DQor CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQorCXN0cnVjdCByZXNvdXJjZV9lbnRy eSAqd2luOw0KKwlzdHJ1Y3QgcmVzb3VyY2UgKmJ1c19yYW5nZSA9IE5VTEw7DQorCXN0cnVjdCBy ZXNvdXJjZSBjZmdyZXM7DQorCWludCByZXQ7DQorCXJlc291cmNlX3NpemVfdCBzaXplOw0KKwl1 MzIgaW5kZXg7DQorCXUzMiBhdHJfc3o7DQorCXUzMiB2YWw7DQorDQorCWlmICghZGV2LT5vZl9u b2RlKQ0KKwkJcmV0dXJuIC1FTk9ERVY7DQorDQorCS8qIEFsbG9jYXRlIHRoZSBQQ0llIHBvcnQg Ki8NCisJYnJpZGdlID0gZGV2bV9wY2lfYWxsb2NfaG9zdF9icmlkZ2UoZGV2LCBzaXplb2YoKnBj aWUpKTsNCisJaWYgKCFicmlkZ2UpDQorCQlyZXR1cm4gLUVOT01FTTsNCisNCisJcGNpZSA9IHBj aV9ob3N0X2JyaWRnZV9wcml2KGJyaWRnZSk7DQorDQorCXBjaWUtPnBkZXYgPSBwZGV2Ow0KKw0K KwlyZXQgPSBtY19wY2llX3BhcnNlX2R0KHBjaWUpOw0KKwlpZiAocmV0KSB7DQorCQlkZXZfZXJy KGRldiwgInBhcnNpbmcgZGV2aWNldHJlZSBmYWlsZWQsIHJldCAleFxuIiwgcmV0KTsNCisJCXJl dHVybiByZXQ7DQorCX0NCisNCisJaXJxX3NldF9jaGFpbmVkX2hhbmRsZXJfYW5kX2RhdGEocGNp ZS0+aXJxLCBtY19wY2llX2lzciwgcGNpZSk7DQorDQorCS8qDQorCSAqIENvbmZpZ3VyZSBhbGwg aW5ib3VuZCBhbmQgb3V0Ym91bmQgd2luZG93cyBhbmQgcHJlcGFyZQ0KKwkgKiBmb3IgY29uZmln IGFjY2Vzcw0KKwkgKi8NCisJcmV0ID0gbWNfaG9zdF9pbml0KHBjaWUpOw0KKwlpZiAocmV0KSB7 DQorCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBpbml0aWFsaXplIGhvc3RcbiIpOw0KKwkJcmV0 dXJuIHJldDsNCisJfQ0KKw0KKwlyZXQgPSBwY2lfcGFyc2VfcmVxdWVzdF9vZl9wY2lfcmFuZ2Vz KGRldiwgJmJyaWRnZS0+d2luZG93cywNCisJCQkJCSAgICAgICZicmlkZ2UtPmRtYV9yYW5nZXMs ICZidXNfcmFuZ2UpOw0KKwlpZiAocmV0KSB7DQorCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBw YXJzZSBQQ0kgcmFuZ2VzXG4iKTsNCisJCXJldHVybiByZXQ7DQorCX0NCisNCisJaW5kZXggPSAx Ow0KKwlyZXNvdXJjZV9saXN0X2Zvcl9lYWNoX2VudHJ5KHdpbiwgJmJyaWRnZS0+d2luZG93cykg ew0KKwkJaWYgKChyZXNvdXJjZV90eXBlKHdpbi0+cmVzKSAhPSBJT1JFU09VUkNFX01FTSkgJiYN CisJCSAgICAocmVzb3VyY2VfdHlwZSh3aW4tPnJlcykgIT0gSU9SRVNPVVJDRV9JTykpDQorCQkJ Y29udGludWU7DQorDQorCQlzaXplID0gcmVzb3VyY2Vfc2l6ZSh3aW4tPnJlcyk7DQorCQlhdHJf c3ogPSBmaW5kX2ZpcnN0X2JpdCgoY29uc3QgdW5zaWduZWQgbG9uZyAqKSZzaXplLCA2NCkgLSAx Ow0KKw0KKwkJLyoNCisJCSAqIENvbmZpZ3VyZSBBZGRyZXNzIFRyYW5zbGF0aW9uIFRhYmxlIGlu ZGV4IGZvciBQQ0kNCisJCSAqIG1lbSBzcGFjZQ0KKwkJICovDQorCQl3cml0ZWwoUENJRV9UWF9S WF9JTlRFUkZBQ0UsIHBjaWUtPmJyaWRnZV9iYXNlX2FkZHIgKw0KKwkJICAgICAgIChpbmRleCAq IEFUUjBfQVhJNF9TTFZfU0laRSkgKw0KKwkJICAgICAgIE1DX0FUUjBfQVhJNF9TTFYwX1RSU0xf UEFSQU0pOw0KKw0KKwkJdmFsID0gbG93ZXJfMzJfYml0cyh3aW4tPnJlcy0+c3RhcnQpIHwNCisJ CQkJICAgIChhdHJfc3ogPDwgQVRSX1NJWkVfU0hJRlQpIHwNCisJCQkJICAgIEFUUl9JTVBMX0VO QUJMRTsNCisNCisJCXdyaXRlbCh2YWwsIHBjaWUtPmJyaWRnZV9iYXNlX2FkZHIgKw0KKwkJICAg ICAgIChpbmRleCAqIEFUUjBfQVhJNF9TTFZfU0laRSkgKw0KKwkJICAgICAgIE1DX0FUUjBfQVhJ NF9TTFYwX1NSQ0FERFJfUEFSQU0pOw0KKw0KKwkJdmFsID0gbG93ZXJfMzJfYml0cyh3aW4tPnJl cy0+c3RhcnQgLSB3aW4tPm9mZnNldCk7DQorCQl3cml0ZWwodmFsLCBwY2llLT5icmlkZ2VfYmFz ZV9hZGRyICsNCisJCSAgICAgICAoaW5kZXggKiBBVFIwX0FYSTRfU0xWX1NJWkUpICsNCisJCSAg ICAgICBNQ19BVFIwX0FYSTRfU0xWMF9UUlNMX0FERFJfTFNCKTsNCisNCisJCWluZGV4Kys7DQor CX0NCisNCisJcmV0ID0gbWNfcGNpZV9pbml0X2lycV9kb21haW5zKHBjaWUpOw0KKwlpZiAocmV0 KSB7DQorCQlkZXZfZXJyKGRldiwgImZhaWxlZCBjcmVhdGluZyBJUlEgZG9tYWluc1xuIik7DQor CQlyZXR1cm4gcmV0Ow0KKwl9DQorDQorCWRldm1faW91bm1hcChkZXYsIHBjaWUtPmNmZ19iYXNl X2FkZHIpOw0KKw0KKwlyZXQgPSBvZl9hZGRyZXNzX3RvX3Jlc291cmNlKGRldi0+b2Zfbm9kZSwg MCwgJmNmZ3Jlcyk7DQorCWlmIChyZXQpIHsNCisJCWRldl9lcnIoZGV2LCAibWlzc2luZyBcInJl Z1wiIHByb3BlcnR5XG4iKTsNCisJCXJldHVybiByZXQ7DQorCX0NCisNCisJc2l6ZSA9IHJlc291 cmNlX3NpemUoJmNmZ3Jlcyk7DQorDQorCS8qIFBhcnNlIGFuZCBtYXAgb3VyIENvbmZpZ3VyYXRp b24gU3BhY2Ugd2luZG93cyAqLw0KKwljZmcgPSBwY2lfZWNhbV9jcmVhdGUoZGV2LCAmY2ZncmVz LCBidXNfcmFuZ2UsICZwY2lfZ2VuZXJpY19lY2FtX29wcyk7DQorCWlmIChJU19FUlIoY2ZnKSkg ew0KKwkJZGV2X2VycihkZXYsICJmYWlsZWQgY3JlYXRpbmcgQ29uZmlndXJhdGlvbiBTcGFjZVxu Iik7DQorCQlyZXR1cm4gUFRSX0VSUihjZmcpOw0KKwl9DQorDQorCXJldCA9IGRldm1fYWRkX2Fj dGlvbl9vcl9yZXNldChkZXYsIG1jX3BjaV91bm1hcF9jZmcsIGNmZyk7DQorCWlmIChyZXQpDQor CQlyZXR1cm4gcmV0Ow0KKw0KKwkvKiBJbml0aWFsaXplIGJyaWRnZSAqLw0KKwlicmlkZ2UtPmRl di5wYXJlbnQgPSBkZXY7DQorCWJyaWRnZS0+c3lzZGF0YSA9IGNmZzsNCisJYnJpZGdlLT5idXNu ciA9IGNmZy0+YnVzci5zdGFydDsNCisJYnJpZGdlLT5vcHMgPSAmcGNpX2dlbmVyaWNfZWNhbV9v cHMucGNpX29wczsNCisJYnJpZGdlLT5tYXBfaXJxID0gb2ZfaXJxX3BhcnNlX2FuZF9tYXBfcGNp Ow0KKwlicmlkZ2UtPnN3aXp6bGVfaXJxID0gcGNpX2NvbW1vbl9zd2l6emxlOw0KKw0KKwkvKiBT ZXR1cCB0aGUga2VybmVsIHJlc291cmNlcyBmb3IgdGhlIG5ld2x5IGFkZGVkIFBDSWUgcm9vdCBi dXMgKi8NCisJcmV0ID0gcGNpX3NjYW5fcm9vdF9idXNfYnJpZGdlKGJyaWRnZSk7DQorCWlmIChy ZXQgPCAwKQ0KKwkJcmV0dXJuIHJldDsNCisNCisJYnVzID0gYnJpZGdlLT5idXM7DQorDQorCXBj aV9hc3NpZ25fdW5hc3NpZ25lZF9idXNfcmVzb3VyY2VzKGJ1cyk7DQorCWxpc3RfZm9yX2VhY2hf ZW50cnkoY2hpbGQsICZidXMtPmNoaWxkcmVuLCBub2RlKQ0KKwkJcGNpZV9idXNfY29uZmlndXJl X3NldHRpbmdzKGNoaWxkKTsNCisJcGNpX2J1c19hZGRfZGV2aWNlcyhidXMpOw0KKw0KKwlyZXR1 cm4gMDsNCit9DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWNfcGNpZV9v Zl9tYXRjaFtdID0gew0KKwl7IC5jb21wYXRpYmxlID0gIm1pY3JvY2hpcCxwZi1heGktcGNpZS1o b3N0LTEuMCIsDQorCSAgLmRhdGEgPSAmcGNpX2dlbmVyaWNfZWNhbV9vcHMgfSwNCisJe30sDQor fTsNCisNCitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtY19wY2llX29mX21hdGNoKQ0KKw0KK3N0 YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1jX3BjaWVfZHJpdmVyID0gew0KKwkucHJvYmUg PSBtY19wY2llX3Byb2JlLA0KKwkuZHJpdmVyID0gew0KKwkJLm5hbWUgPSAibWljcm9jaGlwLXBj aWUiLA0KKwkJLm9mX21hdGNoX3RhYmxlID0gbWNfcGNpZV9vZl9tYXRjaCwNCisJCS5zdXBwcmVz c19iaW5kX2F0dHJzID0gdHJ1ZSwNCisJfSwNCit9Ow0KKw0KK2J1aWx0aW5fcGxhdGZvcm1fZHJp dmVyKG1jX3BjaWVfZHJpdmVyKTsNCisNCitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7DQorTU9E VUxFX0RFU0NSSVBUSU9OKCJNaWNyb2NoaXAgUENJZSBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIik7 DQorTU9EVUxFX0FVVEhPUigiRGFpcmUgTWNOYW1hcmEgPGRhaXJlLm1jbmFtYXJhQG1pY3JvY2hp cC5jb20+Iik7DQotLSANCjIuMTcuMQ0KDQo=