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=-10.0 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=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 7A47FC43461 for ; Fri, 4 Sep 2020 22:19:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1C7A12083B for ; Fri, 4 Sep 2020 22:19:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=intel.onmicrosoft.com header.i=@intel.onmicrosoft.com header.b="KV0/75sS" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728061AbgIDWTO (ORCPT ); Fri, 4 Sep 2020 18:19:14 -0400 Received: from mga02.intel.com ([134.134.136.20]:36100 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727923AbgIDWTN (ORCPT ); Fri, 4 Sep 2020 18:19:13 -0400 IronPort-SDR: Z7iN9iZoYg18Uu1NenFbO28+ZIqN9NRHJAaL4WnevZPLYM0bED9zF8BrKxXLe1TIz5bHp5kMbM DSuqG7qPi//w== X-IronPort-AV: E=McAfee;i="6000,8403,9734"; a="145553766" X-IronPort-AV: E=Sophos;i="5.76,391,1592895600"; d="scan'208";a="145553766" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Sep 2020 15:19:11 -0700 IronPort-SDR: ZUHu1rfK9Vt/lJHF4dHVdbLGFkRBZxEfT9MtC9dmAUxwEjUrynbuhwdQVVdaplgAAVbJ/Wi6Ap NrTA+hp6HZeQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,391,1592895600"; d="scan'208";a="406003635" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga001.fm.intel.com with ESMTP; 04 Sep 2020 15:19:11 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 4 Sep 2020 15:19:08 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Fri, 4 Sep 2020 15:19:08 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.107) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Fri, 4 Sep 2020 15:18:49 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZSTae+XciCdFkP2aErgdNYDTgPpXbxB0m8W415fTO9OiCfVBvil70fE2hsQmw+DWuK5BFA3eeHY0JUY4DjPK5tdn4nCeOKxYp/bYYCawpToFmrLWt776HIXG2UJ1DKTp+0Aoty1aN9HjcX8HQqm47Klh9rGyLB64yjc66mw0pi6v0z74/AdKnCAYDifO6IkzUALBgwSaL6HIS8zaNuGnZplJqL1NPAU5Yoq3bsGrAdxdIPL6swTl5oHgX+/i0/TDKtTlV1POJuz6c5hBF2chhTPZ7KN9DAje2bTxrVrmui5BmPxLcXizjUjCsucQocfRsY27r5/nw96vbovABFL8VA== 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=rUQ1Hzv2bVVpJBxZvfxNL+Rsbjm1F6Z6UcMaYis2aWM=; b=hUvw2eQA7pF7f6IGTYQQBC+iaOf+0x+ezlLI/mPh6q34VXmZmz3XCHTmBQA67/QYUz8O1QXOph84aDFV6GT2WBdbosr2z8mRz/OvC3QS17OX9k6AHvqSqWnICTNpbIKZSEol2hPrp6w59SmAiVxyuddS+w4nU2V/wW7FpLya4l8urzOMV7wK7zoK8L8efU5PCiRudgxg4nu3K+6hdPT0egBpIcMr66cQqIVPvYfG+otLvJLbhXyuP7UhmkapL2VjapLLdH6v/BcihSjh5r+wfMUQYTUDb5M7cMu5HQWTk1nn2P3mgeJjA8ciPsoV0n982lxVaPTOZdcyljEbFQ3zSA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rUQ1Hzv2bVVpJBxZvfxNL+Rsbjm1F6Z6UcMaYis2aWM=; b=KV0/75sSPe7xCOP1cGA+BuFZXV6HzJL+OqdtQB5SzRWjKgz10PPT62JHD5GQuNX6RMO5AHIHcDAVjFiHWZldxNtGlZXysl6qgy2e8mATDQvvQ+w4fLw9gVTa1XN9IRON95QQwNSCTbYLLqhSZjV3AFA6ijNJcdlEC+Y96dUxq7A= Received: from MW3PR11MB4699.namprd11.prod.outlook.com (2603:10b6:303:54::13) by MWHPR1101MB2334.namprd11.prod.outlook.com (2603:10b6:300:72::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3348.17; Fri, 4 Sep 2020 22:18:31 +0000 Received: from MW3PR11MB4699.namprd11.prod.outlook.com ([fe80::e810:eb0d:232c:7f41]) by MW3PR11MB4699.namprd11.prod.outlook.com ([fe80::e810:eb0d:232c:7f41%5]) with mapi id 15.20.3348.015; Fri, 4 Sep 2020 22:18:31 +0000 From: "Kelley, Sean V" To: "helgaas@kernel.org" CC: "Zhuo, Qiuxu" , "Jonathan.Cameron@huawei.com" , "rjw@rjwysocki.net" , "sathyanarayanan.kuppuswamy@linux.intel.com" , "Raj, Ashok" , "Luck, Tony" , "linux-pci@vger.kernel.org" , "bhelgaas@google.com" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH v3 04/10] PCI/RCEC: Add pcie_walk_rcec() to walk associated RCiEPs Thread-Topic: [PATCH v3 04/10] PCI/RCEC: Add pcie_walk_rcec() to walk associated RCiEPs Thread-Index: AQHWcMhFI12sI0xclkitiQgpU3LWeKlV1PMAgAAw7gCAAyr7gA== Date: Fri, 4 Sep 2020 22:18:30 +0000 Message-ID: References: <20200902190000.GA204399@bjorn-Precision-5520> <0e5fc6cb29c22497e23ce5574ba613129a6a415b.camel@intel.com> In-Reply-To: <0e5fc6cb29c22497e23ce5574ba613129a6a415b.camel@intel.com> Reply-To: "Kelley, Sean V" Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.36.4 authentication-results: kernel.org; dkim=none (message not signed) header.d=none;kernel.org; dmarc=none action=none header.from=intel.com; x-originating-ip: [2601:1c0:6a00:1804:88d3:6720:250a:6d10] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 79a31060-ecef-4e51-2eda-08d8512074ac x-ms-traffictypediagnostic: MWHPR1101MB2334: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7219; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nmF+tEEZC8pcmRXPTdH1KAKimcxU7BDnr5gJmIKtrcnw/2zdd9iaO+ePfPVcHfIKuNKY46qPXG2t6qTLSR+F6DwNw6mgAzQ1SqCHY7CUaeIZoTnabE0+a3hyZkVNGZ2Euzko7NHwY0Vo2EPaEOxUpAQTppad5YFdzGNrq2s9x/FNzW3zk48DLi20EqXwUZogWJCbtVqX/3mNZ+1iIQlLtg/BVuCCvaBf3X4UDwn9k3qznoLcNy+Abh0gaQaajFKEs4lpVvsA7K176PC9aP79Ntyuu/cvAloyNmO5yjvnmgHiupaM5reXkbCnr6f+ppxK3TQhvf9bWKh2gdlM2+lcgg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW3PR11MB4699.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(39860400002)(366004)(136003)(396003)(346002)(376002)(6916009)(3450700001)(6486002)(478600001)(6506007)(76116006)(91956017)(2616005)(64756008)(66476007)(66556008)(2906002)(54906003)(66946007)(66446008)(8936002)(186003)(8676002)(316002)(5660300002)(83380400001)(86362001)(6512007)(36756003)(4326008)(71200400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: 1HDYsTbfIdO0iVwartIHNm+ezL4Z+SxGWGFEjYz95VJ8nMlmIvn0e050zGSw6bmSGX2V7tnrSLU1/X7ODPbq2a9Q8pNh4keexBe/E3bxQIs+YmTRM+kK3oDyOZ2ZZtxqYo3XoKFlO0IqbIs38SlWxFhPFL03Ko31WMv/5/TvrHDwvM18N/2SI4sjh+Avv8g7vf5Ed0gTwKiQZIuuyjbWZLKDE31gGI/KEiZQ6ySCb1DKL7PWrEexWX9heYUPafs2yfbP+qcQS4KKc/wNpNWiBzb3FvFib/WnQ07mz9SCwB42ZNXww5U2wUKN4QpkwW0p49JHaO2Ba2Bzv8ORbLvmj5+oChYZeDVxi24bhpzFycmDUnq31i/eLZZlvwSkulSyJsbUBDKvLJUFaaTmGH24EjKS2qdFl0RGmFDxvuf+C1ToalSdUzcQoXJFCTM8Y8bB7GiTNZAZhXMAFj+/AFVNuEuLpHHlvuhzlaXGr6ccLl7+bOYDcXQbY2j/kVk9l15aLcDtBppTHJVDeQ2bEqQnjTIcmfWFpKfa8au7WziX2EI1PpAIpTM/cchnDpDHAqwwp6VhpdGV+Ye0qo7ZFS6L+PU0JRcCurmC6aOZS/JKHNAHbYQLa780zWbKoNUADCujMuEG1L7AAERSkhWFMkeoH95sWwdRPK7CYLNABaYwR0qScm3Wao8L0KkyRLLGmxxtQspPzO3/X21WjLhnHFPl/g== Content-Type: text/plain; charset="utf-8" Content-ID: <305D4154A18E8849A37487EBD4E57ED7@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW3PR11MB4699.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 79a31060-ecef-4e51-2eda-08d8512074ac X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Sep 2020 22:18:30.9009 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: pwRRs0zkL+QsGyA0ZQPd3WA8rq86mQVOis0tCjRhUOSNC66m4VdRnnP+6K59aRLJ3Y0Tfv8akDHW4Dzk3jJqSg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1101MB2334 X-OriginatorOrg: intel.com Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org SGkgQmpvcm4sDQoNClF1aWNrIHF1ZXN0aW9uIGJlbG93Li4uDQoNCk9uIFdlZCwgMjAyMC0wOS0w MiBhdCAxNDo1NSAtMDcwMCwgU2VhbiBWIEtlbGxleSB3cm90ZToNCj4gSGkgQmpvcm4sDQo+IA0K PiBPbiBXZWQsIDIwMjAtMDktMDIgYXQgMTQ6MDAgLTA1MDAsIEJqb3JuIEhlbGdhYXMgd3JvdGU6 DQo+ID4gT24gV2VkLCBBdWcgMTIsIDIwMjAgYXQgMDk6NDY6NTNBTSAtMDcwMCwgU2VhbiBWIEtl bGxleSB3cm90ZToNCj4gPiA+IEZyb206IFFpdXh1IFpodW8gPHFpdXh1LnpodW9AaW50ZWwuY29t Pg0KPiA+ID4gDQo+ID4gPiBXaGVuIGFuIFJDRUMgZGV2aWNlIHNpZ25hbHMgZXJyb3IocykgdG8g YSBDUFUgY29yZSwgdGhlIENQVSBjb3JlDQo+ID4gPiBuZWVkcyB0byB3YWxrIGFsbCB0aGUgUkNp RVBzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IFJDRUMgdG8gY2hlY2sNCj4gPiA+IGVycm9ycy4gU28g YWRkIHRoZSBmdW5jdGlvbiBwY2llX3dhbGtfcmNlYygpIHRvIHdhbGsgYWxsIFJDaUVQcw0KPiA+ ID4gYXNzb2NpYXRlZCB3aXRoIHRoZSBSQ0VDIGRldmljZS4NCj4gPiA+IA0KPiA+ID4gQ28tZGV2 ZWxvcGVkLWJ5OiBTZWFuIFYgS2VsbGV5IDxzZWFuLnYua2VsbGV5QGludGVsLmNvbT4NCj4gPiA+ IFNpZ25lZC1vZmYtYnk6IFNlYW4gViBLZWxsZXkgPHNlYW4udi5rZWxsZXlAaW50ZWwuY29tPg0K PiA+ID4gU2lnbmVkLW9mZi1ieTogUWl1eHUgWmh1byA8cWl1eHUuemh1b0BpbnRlbC5jb20+DQo+ ID4gPiBSZXZpZXdlZC1ieTogSm9uYXRoYW4gQ2FtZXJvbiA8Sm9uYXRoYW4uQ2FtZXJvbkBodWF3 ZWkuY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAgZHJpdmVycy9wY2kvcGNpLmggICAgICAgfCAgNCAr KysNCj4gPiA+ICBkcml2ZXJzL3BjaS9wY2llL3JjZWMuYyB8IDc2DQo+ID4gPiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwg ODAgaW5zZXJ0aW9ucygrKQ0KPiA+ID4gDQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kv cGNpLmggYi9kcml2ZXJzL3BjaS9wY2kuaA0KPiA+ID4gaW5kZXggYmQyNWU2MDQ3YjU0Li44YmQ3 NTI4ZDY5NzcgMTAwNjQ0DQo+ID4gPiAtLS0gYS9kcml2ZXJzL3BjaS9wY2kuaA0KPiA+ID4gKysr IGIvZHJpdmVycy9wY2kvcGNpLmgNCj4gPiA+IEBAIC00NzMsOSArNDczLDEzIEBAIHN0YXRpYyBp bmxpbmUgdm9pZCBwY2lfZHBjX2luaXQoc3RydWN0DQo+ID4gPiBwY2lfZGV2DQo+ID4gPiAqcGRl dikge30NCj4gPiA+ICAjaWZkZWYgQ09ORklHX1BDSUVQT1JUQlVTDQo+ID4gPiAgdm9pZCBwY2lf cmNlY19pbml0KHN0cnVjdCBwY2lfZGV2ICpkZXYpOw0KPiA+ID4gIHZvaWQgcGNpX3JjZWNfZXhp dChzdHJ1Y3QgcGNpX2RldiAqZGV2KTsNCj4gPiA+ICt2b2lkIHBjaWVfd2Fsa19yY2VjKHN0cnVj dCBwY2lfZGV2ICpyY2VjLCBpbnQgKCpjYikoc3RydWN0DQo+ID4gPiBwY2lfZGV2DQo+ID4gPiAq LCB2b2lkICopLA0KPiA+ID4gKwkJICAgIHZvaWQgKnVzZXJkYXRhKTsNCj4gPiA+ICAjZWxzZQ0K PiA+ID4gIHN0YXRpYyBpbmxpbmUgdm9pZCBwY2lfcmNlY19pbml0KHN0cnVjdCBwY2lfZGV2ICpk ZXYpIHt9DQo+ID4gPiAgc3RhdGljIGlubGluZSB2b2lkIHBjaV9yY2VjX2V4aXQoc3RydWN0IHBj aV9kZXYgKmRldikge30NCj4gPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgcGNpZV93YWxrX3JjZWMo c3RydWN0IHBjaV9kZXYgKnJjZWMsIGludA0KPiA+ID4gKCpjYikoc3RydWN0IHBjaV9kZXYgKiwg dm9pZCAqKSwNCj4gPiA+ICsJCQkJICB2b2lkICp1c2VyZGF0YSkge30NCj4gPiA+ICAjZW5kaWYN Cj4gPiA+ICANCj4gPiA+ICAjaWZkZWYgQ09ORklHX1BDSV9BVFMNCj4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3BjaS9wY2llL3JjZWMuYyBiL2RyaXZlcnMvcGNpL3BjaWUvcmNlYy5jDQo+ID4g PiBpbmRleCA1MTlhZTA4NmZmNDEuLjQwNWY5MmZjZGY3ZiAxMDA2NDQNCj4gPiA+IC0tLSBhL2Ry aXZlcnMvcGNpL3BjaWUvcmNlYy5jDQo+ID4gPiArKysgYi9kcml2ZXJzL3BjaS9wY2llL3JjZWMu Yw0KPiA+ID4gQEAgLTE3LDYgKzE3LDgyIEBADQo+ID4gPiAgDQo+ID4gPiAgI2luY2x1ZGUgIi4u L3BjaS5oIg0KPiA+ID4gIA0KPiA+ID4gK3N0YXRpYyBpbnQgcGNpZV93YWxrX3JjaWVwX2RldmZu KHN0cnVjdCBwY2lfYnVzICpidXMsIGludA0KPiA+ID4gKCpjYikoc3RydWN0IHBjaV9kZXYgKiwg dm9pZCAqKSwNCj4gPiA+ICsJCQkJIHZvaWQgKnVzZXJkYXRhLCBjb25zdCB1bnNpZ25lZCBsb25n DQo+ID4gPiBiaXRtYXApDQo+ID4gPiArew0KPiA+ID4gKwl1bnNpZ25lZCBpbnQgZGV2biwgZm47 DQo+ID4gPiArCXN0cnVjdCBwY2lfZGV2ICpkZXY7DQo+ID4gPiArCWludCByZXR2YWw7DQo+ID4g PiArDQo+ID4gPiArCWZvcl9lYWNoX3NldF9iaXQoZGV2biwgJmJpdG1hcCwgMzIpIHsNCj4gPiA+ ICsJCWZvciAoZm4gPSAwOyBmbiA8IDg7IGZuKyspIHsNCj4gPiA+ICsJCQlkZXYgPSBwY2lfZ2V0 X3Nsb3QoYnVzLCBQQ0lfREVWRk4oZGV2biwgZm4pKTsNCj4gPiANCj4gPiBXb3csIHRoaXMgaXMg YSBsb3Qgb2YgY2h1cm5pbmcgdG8gY2FsbCBwY2lfZ2V0X3Nsb3QoKSAyNTYgdGltZXMgcGVyDQo+ ID4gYnVzIGZvciB0aGUgImFzc29jaWF0ZWQgYnVzIG51bWJlcnMiIGNhc2Ugd2hlcmUgd2UgcGFz cyBhIGJpdG1hcCBvZg0KPiA+IDB4ZmZmZmZmZmYuICBUaGV5IGRpZG4ndCByZWFsbHkgbWFrZSBp dCBlYXN5IGZvciBzb2Z0d2FyZSB3aGVuIHRoZXkNCj4gPiBhZGRlZCB0aGUgbmV4dC9sYXN0IGJ1 cyBudW1iZXIgdGhpbmcuDQo+ID4gDQo+ID4gSnVzdCB0aGlua2luZyBvdXQgbG91ZCBoZXJlLiAg V2hhdCBpZiB3ZSBjb3VsZCBzZXQgZGV2LT5yY2VjIGR1cmluZw0KPiA+IGVudW1lcmF0aW9uLCBh bmQgdGhlbiB1c2UgdGhhdCB0byBidWlsZCBwY2llX3dhbGtfcmNlYygpPw0KPiANCj4gSSB0aGlu ayBmb2xsb3cgd2hhdCB5b3UgYXJlIGRvaW5nLg0KPiANCj4gQXMgd2UgZW51bWVyYXRlIGFuIFJD RUMsIHVzZSB0aGUgdGltZSB0byBkaXNjb3ZlciBSQ2lFUHMgYW5kDQo+IGFzc29jaWF0ZQ0KPiBl YWNoIFJDaUVQJ3MgZGV2LT5yY2VjLiBBbHRob3VnaCBCSU9TIGFscmVhZHkgc2V0IHRoZSBiaXRt YXAgZm9yIHRoaXMNCj4gc3BlY2lmaWMgUkNFQywgaXQncyBtb3JlIGVmZmljaWVudCB0byBzaW1w bHkgZGlzY292ZXIgdGhlIGRldmljZXMNCj4gdGhyb3VnaCB0aGUgYnVzIHdhbGsgYW5kIHZlcmlm eSBlYWNoIG9uZSBmb3VuZCBhZ2FpbnN0IHRoZSBiaXRtYXAuIA0KPiANCj4gRnVydGhlciwgd2hp bGUgd2UgY2FuIGJlIGNlcnRhaW4gdGhhdCBhbiBSQ2lFUCBmb3VuZCB3aXRoIGEgbWF0Y2hpbmcN Cj4gZGV2aWNlIG5vLiBpbiBhIGJpdG1hcCBmb3IgYW4gYXNzb2NpYXRlZCBSQ0VDIGlzIGNvcnJl Y3QsIHdlIGNhbm5vdA0KPiBiZQ0KPiBjZXJ0YWluIHRoYXQgYW55IFJDaUVQIGZvdW5kIG9uIGFu b3RoZXIgYnVzIHJhbmdlIGlzIGNvcnJlY3QgdW5sZXNzDQo+IHdlDQo+IHZlcmlmeSB0aGUgYnVz IGlzIHdpdGhpbiB0aGF0IG5leHQvbGFzdCBidXMgcmFuZ2UuIA0KPiANCj4gRmluYWxseSwgdGhh dCdzIHdoZXJlIGZpbmRfcmNlYygpIGNhbGxiYWNrIGZvciByY2VjX2Fzc29jX3JjaWVwKCkNCj4g ZG9lcw0KPiBkb3VibGUgZHV0eSBieSBhbHNvIGNoZWNraW5nIG9uIHRoZSAib24tYS1zZXBhcmF0 ZS1idXMiIGNhc2UgY2FwdHVyZWQNCj4gcG90ZW50aWFsbHkgYnkgZmluZF9yY2VjKCkgZHVyaW5n IGFuIFJDaUVQJ3MgYnVzIHdhbGsuDQo+IA0KPiAgDQo+ID4gICBib29sIHJjZWNfYXNzb2NfcmNp ZXAocmNlYywgcmNpZXApDQo+ID4gICB7DQo+ID4gICAgIGlmIChyY2VjLT5idXMgPT0gcmNpZXAt PmJ1cykNCj4gPiAgICAgICByZXR1cm4gKHJjZWMtPmJpdG1hcCBjb250YWlucyByY2llcC0+ZGV2 Zm4pOw0KPiA+IA0KPiA+ICAgICByZXR1cm4gKHJjZWMtPm5leHQvbGFzdCBjb250YWlucyByY2ll cC0+YnVzKTsNCj4gPiAgIH0NCj4gPiANCj4gPiAgIGxpbmtfcmNlYyhkZXYsIGRhdGEpDQo+ID4g ICB7DQo+ID4gICAgIHN0cnVjdCBwY2lfZGV2ICpyY2VjID0gZGF0YTsNCj4gPiANCj4gPiAgICAg aWYgKChkZXYgaXMgUkNpRVApICYmIHJjZWNfYXNzb2NfcmNpZXAocmNlYywgZGV2KSkNCj4gPiAg ICAgICBkZXYtPnJjZWMgPSByY2VjOw0KPiA+ICAgfQ0KPiA+IA0KPiA+ICAgZmluZF9yY2VjKGRl diwgZGF0YSkNCj4gPiAgIHsNCj4gPiAgICAgc3RydWN0IHBjaV9kZXYgKnJjaWVwID0gZGF0YTsN Cj4gPiANCj4gPiAgICAgaWYgKChkZXYgaXMgUkNFQykgJiYgcmNlY19hc3NvY19yY2llcChkZXYs IHJjaWVwKSkNCj4gPiAgICAgICByY2llcC0+cmNlYyA9IGRldjsNCj4gPiAgIH0NCj4gPiANCj4g PiAgIHBjaV9zZXR1cF9kZXZpY2UNCj4gPiAgICAgLi4uDQoNCkkganVzdCBub3RpY2VkIHlvdXIg dXNlIG9mIHBjaV9zZXR1cF9kZXZpY2UoKS4gQXJlIHlvdSBzdWdnZXN0aW5nDQptb3ZpbmcgdGhl IGNhbGwgdG8gcGNpX3JjZWNfaW5pdCgpIG91dCBvZiBwY2lfaW5pdF9jYXBhYmlsaXRpZXMoKSBh bmQNCm1vdmUgaXQgaW50byBwY2lfc2V0dXBfZGV2aWNlKCk/ICBJZiBzbywgd291bGQgcGNpX3Jj ZWNfZXhpdCgpIHN0aWxsDQpyZW1haW4gaW4gcGNpX3JlbGVhc2VfY2FwYWJpbGl0aWVzKCk/DQoN CkknbSBqdXN0IHdvbmRlcmluZyBpZiBpdCBjb3VsZCBqdXN0IHJlbWFpbiBpbiBwY2lfaW5pdF9j YXBhYmlsaXRpZXMoKS4NCg0KDQpUaGFua3MsDQoNClNlYW4NCg0KPiA+ICAgICAgIGlmIChkZXYg aXMgUkNFQykgew0KPiA+IAlwY2lfcmNlY19pbml0KGRldikJCSMgY2FjaGUgYml0bWFwLCBuZXh0 L2xhc3QgYnVzDQo+ID4gIw0KPiA+IAlwY2lfd2Fsa19idXMocm9vdF9idXMsIGxpbmtfcmNlYywg ZGV2KTsgIyBsaW5rIGFueSBSQ2lFUA0KPiA+IGFscmVhZHkgZm91bmQNCj4gPiAgICAgICB9DQo+ ID4gICAgICAgaWYgKGRldiBpcyBSQ2lFUCkgew0KPiA+IAlwY2lfd2Fsa19idXMocm9vdF9idXMs IGZpbmRfcmNlYywgZGV2KTsgIyBsaW5rIGFueSBSQ0VDIGFscmVhZHkNCj4gPiBmb3VuZA0KPiA+ ICAgICAgIH0NCj4gPiANCj4gPiBOb3cgd2Ugc2hvdWxkIGhhdmUgYSB2YWxpZCBkZXYtPnJjZWMg Zm9yIGV2ZXJ5dGhpbmcgd2UndmUNCj4gPiBlbnVtZXJhdGVkLg0KPiA+IA0KPiA+ICAgc3RydWN0 IHdhbGtfcmNlY19kYXRhIHsNCj4gPiAgICAgc3RydWN0IHBjaV9kZXYgKnJjZWM7DQo+ID4gICAg IC4uLiB1c2VyX2NhbGxiYWNrOw0KPiA+ICAgICB2b2lkICp1c2VyX2RhdGE7DQo+ID4gICB9Ow0K PiA+IA0KPiA+ICAgcGNpZV9yY2VjX2hlbHBlcihkZXYsIGNhbGxiYWNrLCBkYXRhKQ0KPiA+ICAg ew0KPiA+ICAgICBzdHJ1Y3Qgd2Fsa19yY2VjX2RhdGEgKnJjZWNfZGF0YSA9IGRhdGE7DQo+ID4g DQo+ID4gICAgIGlmIChkZXYtPnJjZWMgPT0gcmNlY19kYXRhLT5yY2VjKQ0KPiA+ICAgICAgIHJj ZWNfZGF0YS0+dXNlcl9jYWxsYmFjayhkZXYsIHJjZWNfZGF0YS0+dXNlcl9kYXRhKTsNCj4gPiAg IH0NCj4gPiANCj4gPiAgIHBjaWVfd2Fsa19yY2VjKHJjZWMsIGNhbGxiYWNrLCBkYXRhKQ0KPiA+ ICAgew0KPiA+ICAgICBzdHJ1Y3Qgd2Fsa19yY2VjX2RhdGEgcmNlY19kYXRhOw0KPiA+ICAgICAu Li4NCj4gPiAgICAgcmNlY19kYXRhLnJjZWMgPSByY2VjOw0KPiA+ICAgICByY2VjX2RhdGEudXNl cl9jYWxsYmFjayA9IGNhbGxiYWNrOw0KPiA+ICAgICByY2VjX2RhdGEudXNlcl9kYXRhID0gZGF0 YTsNCj4gPiAgICAgcGNpX3dhbGtfYnVzKHJvb3RfYnVzLCBwY2llX3JjZWNfaGVscGVyLCAmcmNl Y19kYXRhKTsNCj4gPiAgIH0NCj4gPiANCj4gPiBJIGhhdGUgaGF2aW5nIHRvIHdhbGsgdGhlIGJ1 cyBzbyBtYW55IHRpbWVzLCBidXQgSSBkbyBsaWtlIHRoZSBmYWN0DQo+ID4gdGhhdCBpbiB0aGUg cnVudGltZSBwYXRoIChwY2llX3dhbGtfcmNlYygpKSB3ZSBkb24ndCBoYXZlIHRvIGRvIDI1Ng0K PiA+IHBjaV9nZXRfc2xvdCgpIGNhbGxzIHBlciBidXMsIGFsbW9zdCBhbGwgb2Ygd2hpY2ggYXJl IGdvaW5nIHRvDQo+ID4gZmFpbC4NCj4gDQo+IFRoYXQncyByZWFsbHkgdGhlIHRyYWRlLW9mZiBh bmQgaXQncyBzbGlnaHRseSBoYXJkZXIgdG8gZm9sbG93Lg0KPiANCj4gV2lsbCBpbXBsZW1lbnQg YW5kIHNlZSBob3cgaXQgbG9va3MgLyB0ZXN0cy4NCj4gDQo+IA0KPiA+ID4gKwkJCWlmICghZGV2 KQ0KPiA+ID4gKwkJCQljb250aW51ZTsNCj4gPiA+ICsNCj4gPiA+ICsJCQlpZiAocGNpX3BjaWVf dHlwZShkZXYpICE9IFBDSV9FWFBfVFlQRV9SQ19FTkQpDQo+ID4gPiB7DQo+ID4gPiArCQkJCXBj aV9kZXZfcHV0KGRldik7DQo+ID4gPiArCQkJCWNvbnRpbnVlOw0KPiA+ID4gKwkJCX0NCj4gPiA+ ICsNCj4gPiA+ICsJCQlyZXR2YWwgPSBjYihkZXYsIHVzZXJkYXRhKTsNCj4gPiA+ICsJCQlwY2lf ZGV2X3B1dChkZXYpOw0KPiA+ID4gKwkJCWlmIChyZXR2YWwpDQo+ID4gPiArCQkJCXJldHVybiBy ZXR2YWw7DQo+ID4gPiArCQl9DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ICsJcmV0dXJuIDA7 DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAqIHBjaWVfd2Fsa19yY2Vj IC0gV2FsayBSQ2lFUCBkZXZpY2VzIGFzc29jaWF0aW5nIHdpdGggUkNFQyBhbmQNCj4gPiA+IGNh bGwgY2FsbGJhY2suDQo+ID4gPiArICogQHJjZWMgICAgIFJDRUMgd2hvc2UgUkNpRVAgZGV2aWNl cyBzaG91bGQgYmUgd2Fsa2VkLg0KPiA+ID4gKyAqIEBjYiAgICAgICBDYWxsYmFjayB0byBiZSBj YWxsZWQgZm9yIGVhY2ggUkNpRVAgZGV2aWNlIGZvdW5kLg0KPiA+ID4gKyAqIEB1c2VyZGF0YSBB cmJpdHJhcnkgcG9pbnRlciB0byBiZSBwYXNzZWQgdG8gY2FsbGJhY2suDQo+ID4gPiArICoNCj4g PiA+ICsgKiBXYWxrIHRoZSBnaXZlbiBSQ0VDLiBDYWxsIHRoZSBwcm92aWRlZCBjYWxsYmFjayBv biBlYWNoIFJDaUVQDQo+ID4gPiBkZXZpY2UgZm91bmQuDQo+ID4gPiArICoNCj4gPiA+ICsgKiBX ZSBjaGVjayB0aGUgcmV0dXJuIG9mIEBjYiBlYWNoIHRpbWUuIElmIGl0IHJldHVybnMgYW55dGhp bmcNCj4gPiA+ICsgKiBvdGhlciB0aGFuIDAsIHdlIGJyZWFrIG91dC4NCj4gPiA+ICsgKi8NCj4g PiA+ICt2b2lkIHBjaWVfd2Fsa19yY2VjKHN0cnVjdCBwY2lfZGV2ICpyY2VjLCBpbnQgKCpjYiko c3RydWN0DQo+ID4gPiBwY2lfZGV2DQo+ID4gPiAqLCB2b2lkICopLA0KPiA+ID4gKwkJICAgIHZv aWQgKnVzZXJkYXRhKQ0KPiA+ID4gK3sNCj4gPiA+ICsJdTggbmV4dGJ1c24sIGxhc3RidXNuOw0K PiA+ID4gKwlzdHJ1Y3QgcGNpX2J1cyAqYnVzOw0KPiA+ID4gKwl1bnNpZ25lZCBpbnQgYm5yOw0K PiA+ID4gKw0KPiA+ID4gKwlpZiAoIXJjZWMtPnJjZWNfY2FwKQ0KPiA+ID4gKwkJcmV0dXJuOw0K PiA+ID4gKw0KPiA+ID4gKwkvKiBGaW5kIFJDaUVQIGRldmljZXMgb24gdGhlIHNhbWUgYnVzIGFz IHRoZSBSQ0VDICovDQo+ID4gPiArCWlmIChwY2llX3dhbGtfcmNpZXBfZGV2Zm4ocmNlYy0+YnVz LCBjYiwgdXNlcmRhdGEsIHJjZWMtDQo+ID4gPiA+IHJjZWNfZXh0LT5iaXRtYXApKQ0KPiA+ID4g KwkJcmV0dXJuOw0KPiA+ID4gKw0KPiA+ID4gKwkvKiBDaGVjayB3aGV0aGVyIFJDRUMgQlVTTiBy ZWdpc3RlciBpcyBwcmVzZW50ICovDQo+ID4gPiArCWlmIChyY2VjLT5yY2VjX2V4dC0+dmVyIDwg UENJX1JDRUNfQlVTTl9SRUdfVkVSKQ0KPiA+ID4gKwkJcmV0dXJuOw0KPiA+ID4gKw0KPiA+ID4g KwluZXh0YnVzbiA9IHJjZWMtPnJjZWNfZXh0LT5uZXh0YnVzbjsNCj4gPiA+ICsJbGFzdGJ1c24g PSByY2VjLT5yY2VjX2V4dC0+bGFzdGJ1c247DQo+ID4gPiArDQo+ID4gPiArCS8qIEFsbCBSQ2lF UCBkZXZpY2VzIGFyZSBvbiB0aGUgc2FtZSBidXMgYXMgdGhlIFJDRUMgKi8NCj4gPiA+ICsJaWYg KG5leHRidXNuID09IDB4ZmYgJiYgbGFzdGJ1c24gPT0gMHgwMCkNCj4gPiA+ICsJCXJldHVybjsN Cj4gPiA+ICsNCj4gPiA+ICsJZm9yIChibnIgPSBuZXh0YnVzbjsgYm5yIDw9IGxhc3RidXNuOyBi bnIrKykgew0KPiA+IA0KPiA+IEkgdGhpbmsgd2UgYWxzbyBuZWVkIHRvIHNraXAgdGhlIFJDRUMg YnVzIGhlcmUsIGRvbid0IHdlPyAgNy45LjEwLjMNCj4gPiBzYXlzIHRoZSBBc3NvY2lhdGVkIEJ1 cyBOdW1iZXJzIHJlZ2lzdGVyIGRvZXMgbm90IGluZGljYXRlDQo+ID4gYXNzb2NpYXRpb24NCj4g PiBiZXR3ZWVuIGFuIEVDIGFuZCBhbnkgRnVuY3Rpb24gb24gdGhlIHNhbWUgYnVzIG51bWJlciBh cyB0aGUgRUMNCj4gPiBpdHNlbGYuICBTb21ldGhpbmcgbGlrZSB0aGlzOg0KPiA+IA0KPiA+ICAg aWYgKGJuciA9PSByY2VjLT5idXMtPm51bWJlcikNCj4gPiAgICAgY29udGludWU7DQo+IA0KPiBD b3JyZWN0LiBBbHRob3VnaCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW5jbHVkZSB0aGUgYnVzIG51bWJl ciBmb3IgdGhlDQo+IFJDRUMgaW4gdGhhdCByYW5nZSAobm90IHN1cmUgd2h5KSwgc2tpcHBpbmcg dGhlIFJDRUMncyBzaG91bGQgYmUNCj4gZG9uZS4NCj4gDQo+IFdpbGwgZG8uDQo+IA0KPiA+ID4g KwkJYnVzID0gcGNpX2ZpbmRfYnVzKHBjaV9kb21haW5fbnIocmNlYy0+YnVzKSwgYm5yKTsNCj4g PiA+ICsJCWlmICghYnVzKQ0KPiA+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ID4gKw0KPiA+ID4gKwkJ LyogRmluZCBSQ2lFUCBkZXZpY2VzIG9uIHRoZSBnaXZlbiBidXMgKi8NCj4gPiA+ICsJCWlmIChw Y2llX3dhbGtfcmNpZXBfZGV2Zm4oYnVzLCBjYiwgdXNlcmRhdGEsDQo+ID4gPiAweGZmZmZmZmZm KSkNCj4gPiA+ICsJCQlyZXR1cm47DQo+ID4gPiArCX0NCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4g PiAgdm9pZCBwY2lfcmNlY19pbml0KHN0cnVjdCBwY2lfZGV2ICpkZXYpDQo+ID4gPiAgew0KPiA+ ID4gIAl1MzIgcmNlYywgaGRyLCBidXNuOw0KPiA+ID4gLS0gDQo+ID4gPiAyLjI4LjANCj4gPiA+ IA0K