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.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 99806C10F0E for ; Fri, 12 Apr 2019 09:53:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4ACED21872 for ; Fri, 12 Apr 2019 09:53:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="jtZeWoC1" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727190AbfDLJx2 (ORCPT ); Fri, 12 Apr 2019 05:53:28 -0400 Received: from mail-eopbgr10063.outbound.protection.outlook.com ([40.107.1.63]:5486 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726128AbfDLJx0 (ORCPT ); Fri, 12 Apr 2019 05:53:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tmlCv8llpyiWwSZ9NkGUK32cDibZcHyV79/QSCJPf4Q=; b=jtZeWoC1+rUyH+40OQJddBkz2Z6X7NSpL1uDcGah5mYWsQm/2QnQ72AbzHAMzW6PJd2i7lgD2PoQzHzn81MNup2/zr5tkwyd7b5U78HgKxwy5b3f1hryNc0HpaUb1WdXFwcxyMo0EWhWPvE6kZEKyX6QiE2R8mUfEnEusN+5cLc= Received: from AM6PR04MB5781.eurprd04.prod.outlook.com (20.179.3.19) by AM6PR04MB6262.eurprd04.prod.outlook.com (20.179.7.205) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1771.21; Fri, 12 Apr 2019 09:52:51 +0000 Received: from AM6PR04MB5781.eurprd04.prod.outlook.com ([fe80::f9db:ed86:614e:460]) by AM6PR04MB5781.eurprd04.prod.outlook.com ([fe80::f9db:ed86:614e:460%4]) with mapi id 15.20.1792.009; Fri, 12 Apr 2019 09:52:51 +0000 From: "Z.q. Hou" To: "linux-pci@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "bhelgaas@google.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "l.subrahmanya@mobiveil.co.in" , "shawnguo@kernel.org" , Leo Li , "lorenzo.pieralisi@arm.com" , "catalin.marinas@arm.com" , "will.deacon@arm.com" CC: Mingkai Hu , "M.h. Lian" , Xiaowei Bao , "Z.q. Hou" Subject: [PATCHv5 4/6] PCI: mobiveil: Add PCIe Gen4 RC driver for NXP Layerscape SoCs Thread-Topic: [PATCHv5 4/6] PCI: mobiveil: Add PCIe Gen4 RC driver for NXP Layerscape SoCs Thread-Index: AQHU8RV9MHdz0yaFRUW6+R/81XqWJQ== Date: Fri, 12 Apr 2019 09:52:50 +0000 Message-ID: <20190412095332.41370-5-Zhiqiang.Hou@nxp.com> References: <20190412095332.41370-1-Zhiqiang.Hou@nxp.com> In-Reply-To: <20190412095332.41370-1-Zhiqiang.Hou@nxp.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HK2PR02CA0210.apcprd02.prod.outlook.com (2603:1096:201:20::22) To AM6PR04MB5781.eurprd04.prod.outlook.com (2603:10a6:20b:ad::19) authentication-results: spf=none (sender IP is ) smtp.mailfrom=zhiqiang.hou@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-originating-ip: [119.31.174.73] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 45db318b-de5c-4472-ca67-08d6bf2c9e36 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020);SRVR:AM6PR04MB6262; x-ms-traffictypediagnostic: AM6PR04MB6262: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(6029001)(366004)(346002)(136003)(376002)(396003)(39860400002)(199004)(189003)(68736007)(81156014)(3846002)(66066001)(26005)(76176011)(81166006)(86362001)(2201001)(102836004)(186003)(386003)(7736002)(50226002)(7416002)(8676002)(2906002)(6506007)(8936002)(305945005)(5660300002)(6116002)(14444005)(4326008)(476003)(478600001)(25786009)(486006)(256004)(2616005)(105586002)(71190400001)(446003)(110136005)(6512007)(11346002)(1076003)(53936002)(14454004)(52116002)(6436002)(6486002)(71200400001)(54906003)(2501003)(36756003)(106356001)(316002)(99286004)(97736004)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR04MB6262;H:AM6PR04MB5781.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: vQk8nIzGovyfTs2+pJ5RzwBQbIfWg0ruFaYLmPM914W8FW6P9SHS+CFKGQ8aMl3DBCAKoTCHZIjb8qbch012YINDsqBm5JKSCJawPd1wKC7MWIr4RcPSURypnQ1KdpwgwBeVfpn4liYAkLysVjbvXzbLS7xRIjEARhZHh2R490NuzrzY6jzyF3YyFm2VNdO3ITQ6+VQ2BiSUzKpoiehJPwR+ZkyUV3oNCYM62tGmJA8pMOxj+VbR2szKwMTyyQLfg1ya+DKqZkDEGcBFoO48v9eaH6yCCR129FmEbF/ypLQFzbN3lJpWS3V3tQn0Vq/19q4LgB/5DxyuJ1+92PsCtgdjUx/KEdqyypNDrJReP9KRAQu7eExwd8IwUcPD7CaKmCWH5G0tuFweX1cDwU3KO8sl16H1B/DyvU4xG/zVXMc= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 45db318b-de5c-4472-ca67-08d6bf2c9e36 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 09:52:50.3582 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB6262 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RnJvbTogSG91IFpoaXFpYW5nIDxaaGlxaWFuZy5Ib3VAbnhwLmNvbT4NCg0KVGhpcyBQQ0llIGNv bnRyb2xsZXIgaXMgYmFzZWQgb24gdGhlIE1vYml2ZWlsIEdQRVggSVAsIHdoaWNoIGlzDQpjb21w YXRpYmxlIHdpdGggdGhlIFBDSSBFeHByZXNz4oSiIEJhc2UgU3BlY2lmaWNhdGlvbiwgUmV2aXNp b24gNC4wLg0KDQpTaWduZWQtb2ZmLWJ5OiBIb3UgWmhpcWlhbmcgPFpoaXFpYW5nLkhvdUBueHAu Y29tPg0KUmV2aWV3ZWQtYnk6IE1pbmdodWFuIExpYW4gPE1pbmdodWFuLkxpYW5AbnhwLmNvbT4N Ci0tLQ0KVjU6DQogLSBDb3JyZWN0ZWQgdGhlIHN1YmplY3QuDQogLSBDb3JyZWN0ZWQgMiB0eXBv cy4NCiAtIFVwZGF0ZWQgdGhlIENvcHlyaWdodCBhbmQgZHJpdmVyIGRlc2NyaXB0aW9uLg0KIC0g Q2hhbmdlZCB0byB1c2UgQklUKHgpIHRvIGRlZmluZSB2ZXJpb3VzIGZ1bmN0aW9ucyBvZiByZWdp c3RlcidzIGJpdHMuDQogLSBVbmlmaWVkIHRoZSBjYXBpdGFsaXphdGlvbiBvZiBlcnJvciBpbmZv Lg0KIC0gQ2hhbmdlZCB0aGUgSVJRIGhhbmRsZXIgbmFtZSB0byBsc19wY2llX2c0X2lzcigpLg0K IC0gQ2hhbmdlICdpcnEnIHRvICdJUlEnIGluIGVycm9yIGluZm8uDQogLSBUcmltbWVkIHNvbWUg ZnVuY3Rpb25zIHdpdGhvdXQgZnVuY3Rpb25hbGl0eSBjaGFuZ2UuDQoNCiBkcml2ZXJzL3BjaS9j b250cm9sbGVyL21vYml2ZWlsL0tjb25maWcgICAgICAgfCAgMTAgKw0KIGRyaXZlcnMvcGNpL2Nv bnRyb2xsZXIvbW9iaXZlaWwvTWFrZWZpbGUgICAgICB8ICAgMSArDQogLi4uL2NvbnRyb2xsZXIv bW9iaXZlaWwvcGNpLWxheWVyc2NhcGUtZ2VuNC5jIHwgMjU2ICsrKysrKysrKysrKysrKysrKw0K IC4uLi9wY2kvY29udHJvbGxlci9tb2JpdmVpbC9wY2llLW1vYml2ZWlsLmggICB8ICAxNiArLQ0K IDQgZmlsZXMgY2hhbmdlZCwgMjgxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpLWxheWVy c2NhcGUtZ2VuNC5jDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL21vYml2 ZWlsL0tjb25maWcgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL21vYml2ZWlsL0tjb25maWcNCmlu ZGV4IDY0MzQzYzA3YmZlZC4uZDc0OTYwMzY0MWFjIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9wY2kv Y29udHJvbGxlci9tb2JpdmVpbC9LY29uZmlnDQorKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVy L21vYml2ZWlsL0tjb25maWcNCkBAIC0yMSw0ICsyMSwxNCBAQCBjb25maWcgUENJRV9NT0JJVkVJ TF9QTEFUDQogCSAgU29mdCBJUC4gSXQgaGFzIHVwIHRvIDggb3V0Ym91bmQgYW5kIGluYm91bmQg d2luZG93cw0KIAkgIGZvciBhZGRyZXNzIHRyYW5zbGF0aW9uIGFuZCBpdCBpcyBhIFBDSWUgR2Vu NCBJUC4NCiANCitjb25maWcgUENJX0xBWUVSU0NBUEVfR0VONA0KKwlib29sICJGcmVlc2NhbGUg TGF5ZXJzY2FwZSBQQ0llIEdlbjQgY29udHJvbGxlciINCisJZGVwZW5kcyBvbiBQQ0kNCisJZGVw ZW5kcyBvbiBPRiAmJiAoQVJNNjQgfHwgQVJDSF9MQVlFUlNDQVBFKQ0KKwlkZXBlbmRzIG9uIFBD SV9NU0lfSVJRX0RPTUFJTg0KKwlzZWxlY3QgUENJRV9NT0JJVkVJTF9IT1NUDQorCWhlbHANCisJ ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IFBDSWUgR2VuNCBjb250cm9sbGVyIHN1cHBvcnQgb24N CisJICBMYXllcnNjYXBlIFNvQ3MuIFRoZSBQQ0llIGNvbnRyb2xsZXIgY2FuIHdvcmsgaW4gUkMg b3INCisJICBFUCBtb2RlIGFjY29yZGluZyB0byBSQ1dbSE9TVF9BR1RfUEVYXSBzZXR0aW5nLg0K IGVuZG1lbnUNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL21vYml2ZWlsL01h a2VmaWxlIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9tb2JpdmVpbC9NYWtlZmlsZQ0KaW5kZXgg OWZiNmQxYzY1MDRkLi5mZjY2Nzc0Y2NhYzQgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3BjaS9jb250 cm9sbGVyL21vYml2ZWlsL01ha2VmaWxlDQorKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL21v Yml2ZWlsL01ha2VmaWxlDQpAQCAtMiwzICsyLDQgQEANCiBvYmotJChDT05GSUdfUENJRV9NT0JJ VkVJTCkgKz0gcGNpZS1tb2JpdmVpbC5vDQogb2JqLSQoQ09ORklHX1BDSUVfTU9CSVZFSUxfSE9T VCkgKz0gcGNpZS1tb2JpdmVpbC1ob3N0Lm8NCiBvYmotJChDT05GSUdfUENJRV9NT0JJVkVJTF9Q TEFUKSArPSBwY2llLW1vYml2ZWlsLXBsYXQubw0KK29iai0kKENPTkZJR19QQ0lfTEFZRVJTQ0FQ RV9HRU40KSArPSBwY2ktbGF5ZXJzY2FwZS1nZW40Lm8NCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bj aS9jb250cm9sbGVyL21vYml2ZWlsL3BjaS1sYXllcnNjYXBlLWdlbjQuYyBiL2RyaXZlcnMvcGNp L2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpLWxheWVyc2NhcGUtZ2VuNC5jDQpuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi4wM2UzZDcyNWYwZDENCi0tLSAvZGV2L251bGwN CisrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpLWxheWVyc2NhcGUtZ2Vu NC5jDQpAQCAtMCwwICsxLDI1NiBAQA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wDQorLyoNCisgKiBQQ0llIEdlbjQgaG9zdCBjb250cm9sbGVyIGRyaXZlciBmb3IgTlhQIExh eWVyc2NhcGUgU29Dcw0KKyAqDQorICogQ29weXJpZ2h0IDIwMTkgTlhQDQorICoNCisgKiBBdXRo b3I6IFpoaXFpYW5nIEhvdSA8WmhpcWlhbmcuSG91QG54cC5jb20+DQorICovDQorDQorI2luY2x1 ZGUgPGxpbnV4L2tlcm5lbC5oPg0KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4NCisjaW5j bHVkZSA8bGludXgvaW5pdC5oPg0KKyNpbmNsdWRlIDxsaW51eC9vZl9wY2kuaD4NCisjaW5jbHVk ZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4NCisjaW5jbHVkZSA8bGludXgvb2ZfaXJxLmg+DQorI2lu Y2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4NCisjaW5jbHVkZSA8bGludXgvcGNpLmg+DQorI2lu Y2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9yZXNvdXJj ZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29uLmg+DQorI2luY2x1ZGUgPGxpbnV4L3Jl Z21hcC5oPg0KKw0KKyNpbmNsdWRlICJwY2llLW1vYml2ZWlsLmgiDQorDQorLyogTFVUIGFuZCBQ RiBjb250cm9sIHJlZ2lzdGVycyAqLw0KKyNkZWZpbmUgUENJRV9MVVRfT0ZGCQkJMHg4MDAwMA0K KyNkZWZpbmUgUENJRV9QRl9PRkYJCQkweGMwMDAwDQorI2RlZmluZSBQQ0lFX1BGX0lOVF9TVEFU CQkweDE4DQorI2RlZmluZSBQRl9JTlRfU1RBVF9QQUJSU1QJCUJJVCgzMSkNCisNCisjZGVmaW5l IFBDSUVfUEZfREJHCQkJMHg3ZmMNCisjZGVmaW5lIFBGX0RCR19MVFNTTV9NQVNLCQkweDNmDQor I2RlZmluZSBQRl9EQkdfV0UJCQlCSVQoMzEpDQorI2RlZmluZSBQRl9EQkdfUEFCUgkJCUJJVCgy NykNCisNCisjZGVmaW5lIExTX1BDSUVfRzRfTFRTU01fTDAJCTB4MmQgLyogTDAgc3RhdGUgKi8N CisNCisjZGVmaW5lIHRvX2xzX3BjaWVfZzQoeCkJCXBsYXRmb3JtX2dldF9kcnZkYXRhKCh4KS0+ cGRldikNCisNCitzdHJ1Y3QgbHNfcGNpZV9nNCB7DQorCXN0cnVjdCBtb2JpdmVpbF9wY2llICpw Y2k7DQorCXN0cnVjdCBkZWxheWVkX3dvcmsgZHdvcms7DQorCWludCBpcnE7DQorfTsNCisNCitz dGF0aWMgaW5saW5lIHUzMiBsc19wY2llX2c0X2x1dF9yZWFkbChzdHJ1Y3QgbHNfcGNpZV9nNCAq cGNpZSwgdTMyIG9mZikNCit7DQorCXJldHVybiBpb3JlYWQzMihwY2llLT5wY2ktPmNzcl9heGlf c2xhdmVfYmFzZSArIFBDSUVfTFVUX09GRiArIG9mZik7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUg dm9pZCBsc19wY2llX2c0X2x1dF93cml0ZWwoc3RydWN0IGxzX3BjaWVfZzQgKnBjaWUsDQorCQkJ CQkgdTMyIG9mZiwgdTMyIHZhbCkNCit7DQorCWlvd3JpdGUzMih2YWwsIHBjaWUtPnBjaS0+Y3Ny X2F4aV9zbGF2ZV9iYXNlICsgUENJRV9MVVRfT0ZGICsgb2ZmKTsNCit9DQorDQorc3RhdGljIGlu bGluZSB1MzIgbHNfcGNpZV9nNF9wZl9yZWFkbChzdHJ1Y3QgbHNfcGNpZV9nNCAqcGNpZSwgdTMy IG9mZikNCit7DQorCXJldHVybiBpb3JlYWQzMihwY2llLT5wY2ktPmNzcl9heGlfc2xhdmVfYmFz ZSArIFBDSUVfUEZfT0ZGICsgb2ZmKTsNCit9DQorDQorc3RhdGljIGlubGluZSB2b2lkIGxzX3Bj aWVfZzRfcGZfd3JpdGVsKHN0cnVjdCBsc19wY2llX2c0ICpwY2llLA0KKwkJCQkJdTMyIG9mZiwg dTMyIHZhbCkNCit7DQorCWlvd3JpdGUzMih2YWwsIHBjaWUtPnBjaS0+Y3NyX2F4aV9zbGF2ZV9i YXNlICsgUENJRV9QRl9PRkYgKyBvZmYpOw0KK30NCisNCitzdGF0aWMgYm9vbCBsc19wY2llX2c0 X2lzX2JyaWRnZShzdHJ1Y3QgbHNfcGNpZV9nNCAqcGNpZSkNCit7DQorCXN0cnVjdCBtb2JpdmVp bF9wY2llICptdl9wY2kgPSBwY2llLT5wY2k7DQorCXUzMiBoZWFkZXJfdHlwZTsNCisNCisJaGVh ZGVyX3R5cGUgPSBjc3JfcmVhZGIobXZfcGNpLCBQQ0lfSEVBREVSX1RZUEUpOw0KKwloZWFkZXJf dHlwZSAmPSAweDdmOw0KKw0KKwlyZXR1cm4gaGVhZGVyX3R5cGUgPT0gUENJX0hFQURFUl9UWVBF X0JSSURHRTsNCit9DQorDQorc3RhdGljIGludCBsc19wY2llX2c0X2xpbmtfdXAoc3RydWN0IG1v Yml2ZWlsX3BjaWUgKnBjaSkNCit7DQorCXN0cnVjdCBsc19wY2llX2c0ICpwY2llID0gdG9fbHNf cGNpZV9nNChwY2kpOw0KKwl1MzIgc3RhdGU7DQorDQorCXN0YXRlID0gbHNfcGNpZV9nNF9wZl9y ZWFkbChwY2llLCBQQ0lFX1BGX0RCRyk7DQorCXN0YXRlID0Jc3RhdGUgJiBQRl9EQkdfTFRTU01f TUFTSzsNCisNCisJaWYgKHN0YXRlID09IExTX1BDSUVfRzRfTFRTU01fTDApDQorCQlyZXR1cm4g MTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGxzX3BjaWVfZzRfcmVpbml0 X2h3KHN0cnVjdCBsc19wY2llX2c0ICpwY2llKQ0KK3sNCisJc3RydWN0IG1vYml2ZWlsX3BjaWUg Km12X3BjaSA9IHBjaWUtPnBjaTsNCisJc3RydWN0IGRldmljZSAqZGV2ID0gJm12X3BjaS0+cGRl di0+ZGV2Ow0KKwl1MzIgdmFsLCBhY3Rfc3RhdDsNCisJaW50IHRvID0gMTAwOw0KKw0KKwkvKiBQ b2xsIGZvciBwYWJfY3NiX3Jlc2V0IHRvIHNldCBhbmQgUEFCIGFjdGl2aXR5IHRvIGNsZWFyICov DQorCWRvIHsNCisJCXVzbGVlcF9yYW5nZSgxMCwgMTUpOw0KKwkJdmFsID0gbHNfcGNpZV9nNF9w Zl9yZWFkbChwY2llLCBQQ0lFX1BGX0lOVF9TVEFUKTsNCisJCWFjdF9zdGF0ID0gY3NyX3JlYWRs KG12X3BjaSwgUEFCX0FDVElWSVRZX1NUQVQpOw0KKwl9IHdoaWxlICgoKHZhbCAmIFBGX0lOVF9T VEFUX1BBQlJTVCkgPT0gMCB8fCBhY3Rfc3RhdCkgJiYgdG8tLSk7DQorCWlmICh0byA8IDApIHsN CisJCWRldl9lcnIoZGV2LCAiUG9sbCBQQUJSU1QmUEFCQUNUIHRpbWVvdXQuXG4iKTsNCisJCXJl dHVybjsNCisJfQ0KKw0KKwkvKiBjbGVhciBQRVhfUkVTRVQgYml0IGluIFBFWF9QRjBfREJHIHJl Z2lzdGVyICovDQorCXZhbCA9IGxzX3BjaWVfZzRfcGZfcmVhZGwocGNpZSwgUENJRV9QRl9EQkcp Ow0KKwl2YWwgfD0gUEZfREJHX1dFOw0KKwlsc19wY2llX2c0X3BmX3dyaXRlbChwY2llLCBQQ0lF X1BGX0RCRywgdmFsKTsNCisNCisJdmFsID0gbHNfcGNpZV9nNF9wZl9yZWFkbChwY2llLCBQQ0lF X1BGX0RCRyk7DQorCXZhbCB8PSBQRl9EQkdfUEFCUjsNCisJbHNfcGNpZV9nNF9wZl93cml0ZWwo cGNpZSwgUENJRV9QRl9EQkcsIHZhbCk7DQorDQorCXZhbCA9IGxzX3BjaWVfZzRfcGZfcmVhZGwo cGNpZSwgUENJRV9QRl9EQkcpOw0KKwl2YWwgJj0gflBGX0RCR19XRTsNCisJbHNfcGNpZV9nNF9w Zl93cml0ZWwocGNpZSwgUENJRV9QRl9EQkcsIHZhbCk7DQorDQorCW1vYml2ZWlsX2hvc3RfaW5p dChtdl9wY2ksIHRydWUpOw0KKw0KKwl0byA9IDEwMDsNCisJd2hpbGUgKCFsc19wY2llX2c0X2xp bmtfdXAobXZfcGNpKSAmJiB0by0tKQ0KKwkJdXNsZWVwX3JhbmdlKDIwMCwgMjUwKTsNCisJaWYg KHRvIDwgMCkNCisJCWRldl9lcnIoZGV2LCAiUENJZSBsaW5rIHRyYWluaW5nIHRpbWVvdXQuXG4i KTsNCit9DQorDQorc3RhdGljIGlycXJldHVybl90IGxzX3BjaWVfZzRfaXNyKGludCBpcnEsIHZv aWQgKmRldl9pZCkNCit7DQorCXN0cnVjdCBsc19wY2llX2c0ICpwY2llID0gKHN0cnVjdCBsc19w Y2llX2c0ICopZGV2X2lkOw0KKwlzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqbXZfcGNpID0gcGNpZS0+ cGNpOw0KKwl1MzIgdmFsOw0KKw0KKwl2YWwgPSBjc3JfcmVhZGwobXZfcGNpLCBQQUJfSU5UUF9B TUJBX01JU0NfU1RBVCk7DQorCWlmICghdmFsKQ0KKwkJcmV0dXJuIElSUV9OT05FOw0KKw0KKwlp ZiAodmFsICYgUEFCX0lOVFBfUkVTRVQpDQorCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnBjaWUt PmR3b3JrLCBtc2Vjc190b19qaWZmaWVzKDEpKTsNCisNCisJY3NyX3dyaXRlbChtdl9wY2ksIHZh bCwgUEFCX0lOVFBfQU1CQV9NSVNDX1NUQVQpOw0KKw0KKwlyZXR1cm4gSVJRX0hBTkRMRUQ7DQor fQ0KKw0KK3N0YXRpYyBpbnQgbHNfcGNpZV9nNF9pbnRlcnJ1cHRfaW5pdChzdHJ1Y3QgbW9iaXZl aWxfcGNpZSAqbXZfcGNpKQ0KK3sNCisJc3RydWN0IGxzX3BjaWVfZzQgKnBjaWUgPSB0b19sc19w Y2llX2c0KG12X3BjaSk7DQorCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBtdl9wY2kt PnBkZXY7DQorCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQorCXUzMiB2YWw7DQor CWludCByZXQ7DQorDQorCXBjaWUtPmlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lKHBkZXYs ICJpbnRyIik7DQorCWlmIChwY2llLT5pcnEgPCAwKSB7DQorCQlkZXZfZXJyKGRldiwgIkNhbid0 IGdldCAnaW50cicgSVJRLCBlcnJubyA9ICVkLlxuIiwgcGNpZS0+aXJxKTsNCisJCXJldHVybiBw Y2llLT5pcnE7DQorCX0NCisJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycShkZXYsIHBjaWUtPmlycSwg bHNfcGNpZV9nNF9pc3IsDQorCQkJICAgICAgIElSUUZfU0hBUkVELCBwZGV2LT5uYW1lLCBwY2ll KTsNCisJaWYgKHJldCkgew0KKwkJZGV2X2VycihkZXYsICJDYW4ndCByZWdpc3RlciBQQ0llIElS USwgZXJybm8gPSAlZC5cbiIsIHJldCk7DQorCQlyZXR1cm4gIHJldDsNCisJfQ0KKw0KKwkvKiBF bmFibGUgaW50ZXJydXB0cyAqLw0KKwl2YWwgPSBQQUJfSU5UUF9JTlRYX01BU0sgfCBQQUJfSU5U UF9NU0kgfCBQQUJfSU5UUF9SRVNFVCB8DQorCSAgICAgIFBBQl9JTlRQX1BDSUVfVUUgfCBQQUJf SU5UUF9JRV9QTVJFREkgfCBQQUJfSU5UUF9JRV9FQzsNCisJY3NyX3dyaXRlbChtdl9wY2ksIHZh bCwgUEFCX0lOVFBfQU1CQV9NSVNDX0VOQik7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0 aWMgdm9pZCBsc19wY2llX2c0X3Jlc2V0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCit7DQor CXN0cnVjdCBkZWxheWVkX3dvcmsgKmR3b3JrID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBk ZWxheWVkX3dvcmssDQorCQkJCQkJICB3b3JrKTsNCisJc3RydWN0IGxzX3BjaWVfZzQgKnBjaWUg PSBjb250YWluZXJfb2YoZHdvcmssIHN0cnVjdCBsc19wY2llX2c0LCBkd29yayk7DQorCXN0cnVj dCBtb2JpdmVpbF9wY2llICptdl9wY2kgPSBwY2llLT5wY2k7DQorCXUxNiBjdHJsOw0KKw0KKwlj dHJsID0gY3NyX3JlYWR3KG12X3BjaSwgUENJX0JSSURHRV9DT05UUk9MKTsNCisJY3RybCAmPSB+ UENJX0JSSURHRV9DVExfQlVTX1JFU0VUOw0KKwljc3Jfd3JpdGV3KG12X3BjaSwgY3RybCwgUENJ X0JSSURHRV9DT05UUk9MKTsNCisJbHNfcGNpZV9nNF9yZWluaXRfaHcocGNpZSk7DQorfQ0KKw0K K3N0YXRpYyBzdHJ1Y3QgbW9iaXZlaWxfcnBfb3BzIGxzX3BjaWVfZzRfcnBfb3BzID0gew0KKwku aW50ZXJydXB0X2luaXQgPSBsc19wY2llX2c0X2ludGVycnVwdF9pbml0LA0KK307DQorDQorc3Rh dGljIGNvbnN0IHN0cnVjdCBtb2JpdmVpbF9wYWJfb3BzIGxzX3BjaWVfZzRfcGFiX29wcyA9IHsN CisJLmxpbmtfdXAgPSBsc19wY2llX2c0X2xpbmtfdXAsDQorfTsNCisNCitzdGF0aWMgaW50IF9f aW5pdCBsc19wY2llX2c0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQorew0K KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KKwlzdHJ1Y3QgbW9iaXZlaWxfcGNp ZSAqbXZfcGNpOw0KKwlzdHJ1Y3QgbHNfcGNpZV9nNCAqcGNpZTsNCisJc3RydWN0IGRldmljZV9u b2RlICpucCA9IGRldi0+b2Zfbm9kZTsNCisJaW50IHJldDsNCisNCisJaWYgKCFvZl9wYXJzZV9w aGFuZGxlKG5wLCAibXNpLXBhcmVudCIsIDApKSB7DQorCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0 byBmaW5kIG1zaS1wYXJlbnQuXG4iKTsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorDQorCXBj aWUgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnBjaWUpLCBHRlBfS0VSTkVMKTsNCisJaWYg KCFwY2llKQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCW12X3BjaSA9IGRldm1fa3phbGxvYyhk ZXYsIHNpemVvZigqbXZfcGNpKSwgR0ZQX0tFUk5FTCk7DQorCWlmICghbXZfcGNpKQ0KKwkJcmV0 dXJuIC1FTk9NRU07DQorDQorCW12X3BjaS0+cGRldiA9IHBkZXY7DQorCW12X3BjaS0+b3BzID0g JmxzX3BjaWVfZzRfcGFiX29wczsNCisJbXZfcGNpLT5ycC5vcHMgPSAmbHNfcGNpZV9nNF9ycF9v cHM7DQorCXBjaWUtPnBjaSA9IG12X3BjaTsNCisNCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRl diwgcGNpZSk7DQorDQorCUlOSVRfREVMQVlFRF9XT1JLKCZwY2llLT5kd29yaywgbHNfcGNpZV9n NF9yZXNldCk7DQorDQorCXJldCA9IG1vYml2ZWlsX3BjaWVfaG9zdF9wcm9iZShtdl9wY2kpOw0K KwlpZiAocmV0KSB7DQorCQlkZXZfZXJyKGRldiwgIkZhaWwgdG8gcHJvYmUhXG4iKTsNCisJCXJl dHVybiAgcmV0Ow0KKwl9DQorDQorCWlmICghbHNfcGNpZV9nNF9pc19icmlkZ2UocGNpZSkpDQor CQlyZXR1cm4gLUVOT0RFVjsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgb2ZfZGV2aWNlX2lkIGxzX3BjaWVfZzRfb2ZfbWF0Y2hbXSA9IHsNCisJeyAuY29tcGF0 aWJsZSA9ICJmc2wsbHgyMTYwYS1wY2llIiwgfSwNCisJeyB9LA0KK307DQorDQorc3RhdGljIHN0 cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbHNfcGNpZV9nNF9kcml2ZXIgPSB7DQorCS5kcml2ZXIgPSB7 DQorCQkubmFtZSA9ICJsYXllcnNjYXBlLXBjaWUtZ2VuNCIsDQorCQkub2ZfbWF0Y2hfdGFibGUg PSBsc19wY2llX2c0X29mX21hdGNoLA0KKwkJLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLA0K Kwl9LA0KK307DQorDQorYnVpbHRpbl9wbGF0Zm9ybV9kcml2ZXJfcHJvYmUobHNfcGNpZV9nNF9k cml2ZXIsIGxzX3BjaWVfZzRfcHJvYmUpOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRy b2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVpbC5oIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9t b2JpdmVpbC9wY2llLW1vYml2ZWlsLmgNCmluZGV4IDVlZWNiMmZjMDM5ZC4uMzZjNjE5N2I2YWNl IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9tb2JpdmVpbC9wY2llLW1vYml2 ZWlsLmgNCisrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVp bC5oDQpAQCAtNDMsNiArNDMsOCBAQA0KICNkZWZpbmUgIFBBR0VfTE9fTUFTSwkJCTB4M2ZmDQog I2RlZmluZSAgUEFHRV9TRUxfT0ZGU0VUX1NISUZUCQkxMA0KIA0KKyNkZWZpbmUgUEFCX0FDVElW SVRZX1NUQVQJCTB4ODFjDQorDQogI2RlZmluZSBQQUJfQVhJX1BJT19DVFJMCQkweDA4NDANCiAj ZGVmaW5lICBBUElPX0VOX01BU0sJCQkweGYNCiANCkBAIC01MSw4ICs1MywxOCBAQA0KIA0KICNk ZWZpbmUgUEFCX0lOVFBfQU1CQV9NSVNDX0VOQgkJMHgwYjBjDQogI2RlZmluZSBQQUJfSU5UUF9B TUJBX01JU0NfU1RBVAkJMHgwYjFjDQotI2RlZmluZSAgUEFCX0lOVFBfSU5UWF9NQVNLCQkweDAx ZTANCi0jZGVmaW5lICBQQUJfSU5UUF9NU0lfTUFTSwkJMHg4DQorI2RlZmluZSAgUEFCX0lOVFBf UkVTRVQJCQlCSVQoMSkNCisjZGVmaW5lICBQQUJfSU5UUF9NU0kJCQlCSVQoMykNCisjZGVmaW5l ICBQQUJfSU5UUF9JTlRBCQkJQklUKDUpDQorI2RlZmluZSAgUEFCX0lOVFBfSU5UQgkJCUJJVCg2 KQ0KKyNkZWZpbmUgIFBBQl9JTlRQX0lOVEMJCQlCSVQoNykNCisjZGVmaW5lICBQQUJfSU5UUF9J TlRECQkJQklUKDgpDQorI2RlZmluZSAgUEFCX0lOVFBfUENJRV9VRQkJQklUKDkpDQorI2RlZmlu ZSAgUEFCX0lOVFBfSUVfUE1SRURJCQlCSVQoMjkpDQorI2RlZmluZSAgUEFCX0lOVFBfSUVfRUMJ CQlCSVQoMzApDQorI2RlZmluZSAgUEFCX0lOVFBfTVNJX01BU0sJCVBBQl9JTlRQX01TSQ0KKyNk ZWZpbmUgIFBBQl9JTlRQX0lOVFhfTUFTSwkJKFBBQl9JTlRQX0lOVEEgfCBQQUJfSU5UUF9JTlRC IHxcDQorCQkJCQlQQUJfSU5UUF9JTlRDIHwgUEFCX0lOVFBfSU5URCkNCiANCiAjZGVmaW5lIFBB Ql9BWElfQU1BUF9DVFJMKHdpbikJCVBBQl9SRUdfQUREUigweDBiYTAsIHdpbikNCiAjZGVmaW5l ICBXSU5fRU5BQkxFX1NISUZUCQkwDQotLSANCjIuMTcuMQ0KDQo=