Received: by 10.213.65.68 with SMTP id h4csp2520233imn; Mon, 2 Apr 2018 09:02:03 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+5d0BryIvjcHMmgAo6E56vdH8i1sE5+xrzHaDy0wMVR/rEz56E3Y93oDMIAQN/weWTdHl2 X-Received: by 10.99.96.84 with SMTP id u81mr6692573pgb.231.1522684923088; Mon, 02 Apr 2018 09:02:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522684923; cv=none; d=google.com; s=arc-20160816; b=uLVGQ4XZ7zLz4sRIaeggDlXOW9GWgeNx10bjsywiGZclWn9Bq9Bb9WKRS5FnUmC4K4 wjEJXxrhfs/ufUq4FC2AOqRSFzWIHLassL/jVMtBYhGXb0KMBkJ8BMVUlh+6GdQwfUqv IfOXYD9duSvLzUn8OkACTXV0QZ7OxRR0NFIb8pa6l+T0fStkUhcX9gU6Z9WwlhJER12D Hdk4TC2YgDAzfNFZj5CtUtCfG1YxtZ6P6cfVXrsU+W6wxwtK9rwL7WlSaWC7s04eOfp5 /+Bt4dgEzh4T1nOKB6+861FZNbdolN5pNdK8FKV6ssNqltdAVQO0GQ+y9IZWmtYAlxK5 FvQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :dlp-reaction:dlp-version:dlp-product:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from:arc-authentication-results; bh=OdDGLqEJegoz8XEpQTpgdGXaunj1DYGsg2GeODosH7I=; b=n1iikPgTRhOGV604RSt89KuH9CGBaVXG4+kYH/8RHNbKPmy3InMjAaUKPAd6fzW5E4 scV4Wk5/RMbVLZd/XQXIAS5PrqolhcJeQTFoY7LPrnmRNNn8pelO6CKNhH9tTPVi4Bqk IGsYaqQcTSUMEZxtDuVuqkbYAiEjJ0JpsYo9YudLLZJDiCi6z9u5jlP+r6kCTKTduEGx 6AsyoBSWr6i61OaXL0iyy5rlOxfIJlGtrD+y0+y+QvxIBFpmjI101+8+7BxLdK80yTZB RE8g6DnOLqSPs5ov0QADWhdi+e0uYL+9PcDFhJdNPI7OfWUHopT1t7MKrEOb9Jc/WA9G aZuw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l30-v6si576560plg.541.2018.04.02.09.01.48; Mon, 02 Apr 2018 09:02:03 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752614AbeDBQAY (ORCPT + 99 others); Mon, 2 Apr 2018 12:00:24 -0400 Received: from mga01.intel.com ([192.55.52.88]:56246 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751244AbeDBQAT (ORCPT ); Mon, 2 Apr 2018 12:00:19 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Apr 2018 09:00:19 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,396,1517904000"; d="scan'208";a="40109177" Received: from orsmsx104.amr.corp.intel.com ([10.22.225.131]) by orsmga003.jf.intel.com with ESMTP; 02 Apr 2018 09:00:18 -0700 Received: from orsmsx115.amr.corp.intel.com ([169.254.4.6]) by ORSMSX104.amr.corp.intel.com ([169.254.4.208]) with mapi id 14.03.0319.002; Mon, 2 Apr 2018 09:00:17 -0700 From: "Keller, Jacob E" To: Tal Gilboa , Bjorn Helgaas CC: Tariq Toukan , Ariel Elior , Ganesh Goudar , "Kirsher, Jeffrey T" , "everest-linux-l2@cavium.com" , "intel-wired-lan@lists.osuosl.org" , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-pci@vger.kernel.org" Subject: RE: [PATCH v5 03/14] PCI: Add pcie_bandwidth_capable() to compute max supported link bandwidth Thread-Topic: [PATCH v5 03/14] PCI: Add pcie_bandwidth_capable() to compute max supported link bandwidth Thread-Index: AQHTyGrIFr77DKg4/kStVKf2xuGFuqPs12iAgABDmICAAHO3AIAAbPqAgAAIIAD//6JfEA== Date: Mon, 2 Apr 2018 16:00:16 +0000 Message-ID: <02874ECE860811409154E81DA85FBB5882D4980A@ORSMSX115.amr.corp.intel.com> References: <152244269202.135666.3064353823697623332.stgit@bhelgaas-glaptop.roam.corp.google.com> <152244390359.135666.14890735614456271032.stgit@bhelgaas-glaptop.roam.corp.google.com> <31e66048-e8b8-47ba-baf5-023560b4c124@mellanox.com> <20180402004049.GA131023@bhelgaas-glaptop.roam.corp.google.com> <50346f44-de3f-b226-69ad-6de45e94e261@mellanox.com> <20180402140501.GA244675@bhelgaas-glaptop.roam.corp.google.com> <3decbba0-74a2-c906-b5b4-a04f261860eb@mellanox.com> In-Reply-To: <3decbba0-74a2-c906-b5b4-a04f261860eb@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNjk5YmU0OTYtZTFjMi00ZTlmLWFhZDUtN2EwMGZlYjkwODYyIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6ImhHMk1GSnJvVWlBaHNsWkFrS2FUeEZPYlBkZWZ1cWFMN1I3eTUxNzdzRDg9In0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.22.254.139] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBUYWwgR2lsYm9hIFttYWlsdG86 dGFsZ2lAbWVsbGFub3guY29tXQ0KPiBTZW50OiBNb25kYXksIEFwcmlsIDAyLCAyMDE4IDc6MzQg QU0NCj4gVG86IEJqb3JuIEhlbGdhYXMgPGhlbGdhYXNAa2VybmVsLm9yZz4NCj4gQ2M6IFRhcmlx IFRvdWthbiA8dGFyaXF0QG1lbGxhbm94LmNvbT47IEtlbGxlciwgSmFjb2IgRQ0KPiA8amFjb2Iu ZS5rZWxsZXJAaW50ZWwuY29tPjsgQXJpZWwgRWxpb3IgPGFyaWVsLmVsaW9yQGNhdml1bS5jb20+ OyBHYW5lc2gNCj4gR291ZGFyIDxnYW5lc2hnckBjaGVsc2lvLmNvbT47IEtpcnNoZXIsIEplZmZy ZXkgVA0KPiA8amVmZnJleS50LmtpcnNoZXJAaW50ZWwuY29tPjsgZXZlcmVzdC1saW51eC1sMkBj YXZpdW0uY29tOyBpbnRlbC13aXJlZC0NCj4gbGFuQGxpc3RzLm9zdW9zbC5vcmc7IG5ldGRldkB2 Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7DQo+IGxpbnV4LXBj aUB2Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2NSAwMy8xNF0gUENJOiBB ZGQgcGNpZV9iYW5kd2lkdGhfY2FwYWJsZSgpIHRvIGNvbXB1dGUNCj4gbWF4IHN1cHBvcnRlZCBs aW5rIGJhbmR3aWR0aA0KPiANCj4gT24gNC8yLzIwMTggNTowNSBQTSwgQmpvcm4gSGVsZ2FhcyB3 cm90ZToNCj4gPiBPbiBNb24sIEFwciAwMiwgMjAxOCBhdCAxMDozNDo1OEFNICswMzAwLCBUYWwg R2lsYm9hIHdyb3RlOg0KPiA+PiBPbiA0LzIvMjAxOCAzOjQwIEFNLCBCam9ybiBIZWxnYWFzIHdy b3RlOg0KPiA+Pj4gT24gU3VuLCBBcHIgMDEsIDIwMTggYXQgMTE6Mzg6NTNQTSArMDMwMCwgVGFs IEdpbGJvYSB3cm90ZToNCj4gPj4+PiBPbiAzLzMxLzIwMTggMTI6MDUgQU0sIEJqb3JuIEhlbGdh YXMgd3JvdGU6DQo+ID4+Pj4+IEZyb206IFRhbCBHaWxib2EgPHRhbGdpQG1lbGxhbm94LmNvbT4N Cj4gPj4+Pj4NCj4gPj4+Pj4gQWRkIHBjaWVfYmFuZHdpZHRoX2NhcGFibGUoKSB0byBjb21wdXRl IHRoZSBtYXggbGluayBiYW5kd2lkdGgNCj4gc3VwcG9ydGVkIGJ5DQo+ID4+Pj4+IGEgZGV2aWNl LCBiYXNlZCBvbiB0aGUgbWF4IGxpbmsgc3BlZWQgYW5kIHdpZHRoLCBhZGp1c3RlZCBieSB0aGUN Cj4gZW5jb2RpbmcNCj4gPj4+Pj4gb3ZlcmhlYWQuDQo+ID4+Pj4+DQo+ID4+Pj4+IFRoZSBtYXhp bXVtIGJhbmR3aWR0aCBvZiB0aGUgbGluayBpcyBjb21wdXRlZCBhczoNCj4gPj4+Pj4NCj4gPj4+ Pj4gICAgICBtYXhfbGlua19zcGVlZCAqIG1heF9saW5rX3dpZHRoICogKDEgLSBlbmNvZGluZ19v dmVyaGVhZCkNCj4gPj4+Pj4NCj4gPj4+Pj4gVGhlIGVuY29kaW5nIG92ZXJoZWFkIGlzIGFib3V0 IDIwJSBmb3IgMi41IGFuZCA1LjAgR1QvcyBsaW5rcyB1c2luZw0KPiA4Yi8xMGINCj4gPj4+Pj4g ZW5jb2RpbmcsIGFuZCBhYm91dCAxLjUlIGZvciA4IEdUL3Mgb3IgaGlnaGVyIHNwZWVkIGxpbmtz IHVzaW5nIDEyOGIvMTMwYg0KPiA+Pj4+PiBlbmNvZGluZy4NCj4gPj4+Pj4NCj4gPj4+Pj4gU2ln bmVkLW9mZi1ieTogVGFsIEdpbGJvYSA8dGFsZ2lAbWVsbGFub3guY29tPg0KPiA+Pj4+PiBbYmhl bGdhYXM6IGFkanVzdCBmb3IgcGNpZV9nZXRfc3BlZWRfY2FwKCkgYW5kIHBjaWVfZ2V0X3dpZHRo X2NhcCgpDQo+ID4+Pj4+IHNpZ25hdHVyZXMsIGRvbid0IGV4cG9ydCBvdXRzaWRlIGRyaXZlcnMv cGNpXQ0KPiA+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBCam9ybiBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29n bGUuY29tPg0KPiA+Pj4+PiBSZXZpZXdlZC1ieTogVGFyaXEgVG91a2FuIDx0YXJpcXRAbWVsbGFu b3guY29tPg0KPiA+Pj4+PiAtLS0NCj4gPj4+Pj4gICAgIGRyaXZlcnMvcGNpL3BjaS5jIHwgICAy MSArKysrKysrKysrKysrKysrKysrKysNCj4gPj4+Pj4gICAgIGRyaXZlcnMvcGNpL3BjaS5oIHwg ICAgOSArKysrKysrKysNCj4gPj4+Pj4gICAgIDIgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9u cygrKQ0KPiA+Pj4+Pg0KPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcGNpLmMgYi9k cml2ZXJzL3BjaS9wY2kuYw0KPiA+Pj4+PiBpbmRleCA0MzA3NWJlNzkzODguLjljZTg5ZTI1NDE5 NyAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEvZHJpdmVycy9wY2kvcGNpLmMNCj4gPj4+Pj4gKysrIGIv ZHJpdmVycy9wY2kvcGNpLmMNCj4gPj4+Pj4gQEAgLTUyMDgsNiArNTIwOCwyNyBAQCBlbnVtIHBj aWVfbGlua193aWR0aA0KPiBwY2llX2dldF93aWR0aF9jYXAoc3RydWN0IHBjaV9kZXYgKmRldikN Cj4gPj4+Pj4gICAgIAlyZXR1cm4gUENJRV9MTktfV0lEVEhfVU5LTk9XTjsNCj4gPj4+Pj4gICAg IH0NCj4gPj4+Pj4gKy8qKg0KPiA+Pj4+PiArICogcGNpZV9iYW5kd2lkdGhfY2FwYWJsZSAtIGNh bGN1bGF0ZXMgYSBQQ0kgZGV2aWNlJ3MgbGluayBiYW5kd2lkdGgNCj4gY2FwYWJpbGl0eQ0KPiA+ Pj4+PiArICogQGRldjogUENJIGRldmljZQ0KPiA+Pj4+PiArICogQHNwZWVkOiBzdG9yYWdlIGZv ciBsaW5rIHNwZWVkDQo+ID4+Pj4+ICsgKiBAd2lkdGg6IHN0b3JhZ2UgZm9yIGxpbmsgd2lkdGgN Cj4gPj4+Pj4gKyAqDQo+ID4+Pj4+ICsgKiBDYWxjdWxhdGUgYSBQQ0kgZGV2aWNlJ3MgbGluayBi YW5kd2lkdGggYnkgcXVlcnlpbmcgZm9yIGl0cyBsaW5rIHNwZWVkDQo+ID4+Pj4+ICsgKiBhbmQg d2lkdGgsIG11bHRpcGx5aW5nIHRoZW0sIGFuZCBhcHBseWluZyBlbmNvZGluZyBvdmVyaGVhZC4N Cj4gPj4+Pj4gKyAqLw0KPiA+Pj4+PiArdTMyIHBjaWVfYmFuZHdpZHRoX2NhcGFibGUoc3RydWN0 IHBjaV9kZXYgKmRldiwgZW51bSBwY2lfYnVzX3NwZWVkDQo+ICpzcGVlZCwNCj4gPj4+Pj4gKwkJ CSAgIGVudW0gcGNpZV9saW5rX3dpZHRoICp3aWR0aCkNCj4gPj4+Pj4gK3sNCj4gPj4+Pj4gKwkq c3BlZWQgPSBwY2llX2dldF9zcGVlZF9jYXAoZGV2KTsNCj4gPj4+Pj4gKwkqd2lkdGggPSBwY2ll X2dldF93aWR0aF9jYXAoZGV2KTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArCWlmICgqc3BlZWQgPT0g UENJX1NQRUVEX1VOS05PV04gfHwgKndpZHRoID09DQo+IFBDSUVfTE5LX1dJRFRIX1VOS05PV04p DQo+ID4+Pj4+ICsJCXJldHVybiAwOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsJcmV0dXJuICp3aWR0 aCAqIFBDSUVfU1BFRUQyTUJTX0VOQygqc3BlZWQpOw0KPiA+Pj4+PiArfQ0KPiA+Pj4+PiArDQo+ ID4+Pj4+ICAgICAvKioNCj4gPj4+Pj4gICAgICAqIHBjaV9zZWxlY3RfYmFycyAtIE1ha2UgQkFS IG1hc2sgZnJvbSB0aGUgdHlwZSBvZiByZXNvdXJjZQ0KPiA+Pj4+PiAgICAgICogQGRldjogdGhl IFBDSSBkZXZpY2UgZm9yIHdoaWNoIEJBUiBtYXNrIGlzIG1hZGUNCj4gPj4+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvcGNpL3BjaS5oIGIvZHJpdmVycy9wY2kvcGNpLmgNCj4gPj4+Pj4gaW5kZXgg NjY3MzhmMTA1MGMwLi4yYTUwMTcyYjk4MDMgMTAwNjQ0DQo+ID4+Pj4+IC0tLSBhL2RyaXZlcnMv cGNpL3BjaS5oDQo+ID4+Pj4+ICsrKyBiL2RyaXZlcnMvcGNpL3BjaS5oDQo+ID4+Pj4+IEBAIC0y NjEsOCArMjYxLDE3IEBAIHZvaWQgcGNpX2Rpc2FibGVfYnJpZGdlX3dpbmRvdyhzdHJ1Y3QgcGNp X2Rldg0KPiAqZGV2KTsNCj4gPj4+Pj4gICAgIAkgKHNwZWVkKSA9PSBQQ0lFX1NQRUVEXzJfNUdU ID8gIjIuNSBHVC9zIiA6IFwNCj4gPj4+Pj4gICAgIAkgIlVua25vd24gc3BlZWQiKQ0KPiA+Pj4+ PiArLyogUENJZSBzcGVlZCB0byBNYi9zIHdpdGggZW5jb2Rpbmcgb3ZlcmhlYWQ6IDIwJSBmb3Ig Z2VuMiwgfjEuNSUgZm9yDQo+IGdlbjMgKi8NCj4gPj4+Pj4gKyNkZWZpbmUgUENJRV9TUEVFRDJN QlNfRU5DKHNwZWVkKSBcDQo+ID4+Pj4NCj4gPj4+PiBNaXNzaW5nIGdlbjQuDQo+ID4+Pg0KPiA+ Pj4gSSBtYWRlIGl0ICJnZW4zKyIuICBJIHRoaW5rIHRoYXQncyBhY2N1cmF0ZSwgaXNuJ3QgaXQ/ ICBUaGUgc3BlYw0KPiA+Pj4gZG9lc24ndCBzZWVtIHRvIGFjdHVhbGx5IHVzZSAiZ2VuMyIgYXMg YSBzcGVjaWZpYyB0ZXJtLCBidXQgc2VjIDQuMi4yDQo+ID4+PiBzYXlzIHJhdGVzIG9mIDggR1Qv cyBvciBoaWdoZXIgKHdoaWNoIEkgdGhpbmsgaW5jbHVkZXMgZ2VuMyBhbmQgZ2VuNCkNCj4gPj4+ IHVzZSAxMjhiLzEzMGIgZW5jb2RpbmcuDQo+ID4+Pg0KPiA+Pg0KPiA+PiBJIG1lYW50IHRoYXQg UENJRV9TUEVFRF8xNl8wR1Qgd2lsbCByZXR1cm4gMCBmcm9tIHRoaXMgbWFjcm8gc2luY2UgaXQg d2Fzbid0DQo+ID4+IGFkZGVkLiBOZWVkIHRvIHJldHVybiAxNTc1NC4NCj4gPg0KPiA+IE9oLCBk dWgsIG9mIGNvdXJzZSEgIFNvcnJ5IGZvciBiZWluZyBkZW5zZS4gIFdoYXQgYWJvdXQgdGhlIGZv bGxvd2luZz8NCj4gPiBJIGluY2x1ZGVkIHRoZSBjYWxjdWxhdGlvbiBhcyBvcHBvc2VkIHRvIGp1 c3QgdGhlIG1hZ2ljIG51bWJlcnMgdG8gdHJ5DQo+ID4gdG8gbWFrZSBpdCBjbGVhciBob3cgdGhl eSdyZSBkZXJpdmVkLiAgVGhpcyBoYXMgdGhlIGRpc2FkdmFudGFnZSBvZg0KPiA+IHRydW5jYXRp bmcgdGhlIHJlc3VsdCBpbnN0ZWFkIG9mIHJvdW5kaW5nLCBidXQgSSBkb3VidCB0aGF0J3MNCj4g PiBzaWduaWZpY2FudCBpbiB0aGlzIGNvbnRleHQuICBJZiBpdCBpcywgd2UgY291bGQgdXNlIHRo ZSBtYWdpYyBudW1iZXJzDQo+ID4gYW5kIHB1dCB0aGUgY29tcHV0YXRpb24gaW4gYSBjb21tZW50 Lg0KPiANCj4gV2UgY2FuIGFsd2F5cyB1c2UgRElWX1JPVU5EX1VQKChzcGVlZCAqIGVuY19ub21p bmF0b3IpLA0KPiBlbmNfZGVub21pbmF0b3IpLiBJIHRoaW5rIHRoaXMgaXMgY29uZnVzaW5nIGFu ZCBzaW5jZSB0aGlzIGludHJvZHVjZXMgYQ0KPiBiYW5kd2lkdGggbGltaXQgSSB3b3VsZCBwcmVm ZXIgdG8gZ2l2ZSBhIHdpZGVyIGxpbWl0IHRoYW4gYSB3cm9uZyBvbmUsDQo+IGV2ZW4gaXQgaXMg YnkgbGVzcyB0aGFuIDFNYi9zLiBNeSB2b3RlIGlzIGZvciBsZWF2aW5nIGl0IGFzIHlvdSB3cm90 ZSBiZWxvdy4NCj4gDQo+ID4NCj4gPiBBbm90aGVyIHF1ZXN0aW9uOiB3ZSBjdXJyZW50bHkgZGVh bCBpbiBNYi9zLCBub3QgTUIvcy4gIE1iL3MgaGFzIHRoZQ0KPiA+IGFkdmFudGFnZSBvZiBzb3J0 IG9mIGNvcnJlc3BvbmRpbmcgdG8gdGhlIEdUL3MgbnVtYmVycywgYnV0IHVzaW5nIE1CL3MNCj4g PiB3b3VsZCBoYXZlIHRoZSBhZHZhbnRhZ2Ugb2Ygc21hbGxlciBudW1iZXJzIHRoYXQgbWF0Y2gg dGhlIHRhYmxlIGhlcmU6DQo+ID4gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUENJX0V4 cHJlc3MjSGlzdG9yeV9hbmRfcmV2aXNpb25zLA0KPiA+IGJ1dCBJIGRvbid0IGtub3cgd2hhdCdz IG1vc3QgdHlwaWNhbCBpbiB1c2VyLWZhY2luZyBzaXR1YXRpb25zLg0KPiA+IFdoYXQncyBiZXR0 ZXI/DQo+IA0KPiBJIGRvbid0IGtub3cgd2hhdCdzIGJldHRlciBidXQgZm9yIG5ldHdvcmsgZGV2 aWNlcyB3ZSBtZWFzdXJlIGJhbmR3aWR0aA0KPiBpbiBHYi9zLCBzbyBwcmVzZW50aW5nIGJhbmR3 aWR0aCBpbiBNQi9zIHdvdWxkIG1lYW4gYWRkaXRpb25hbA0KPiBjYWxjdWxhdGlvbnMuIFRoZSB0 cnV0aCBpcyBJIHdvdWxkIGhhdmUgcHJlZmVyIHRvIHVzZSBHYi9zIGluc3RlYWQgb2YNCj4gTWIv cywgYnV0IGFnYWluLCBkb24ndCB3YW50IHRvIGxvc3MgdXAgdG8gMUdiL3MuDQo+IA0KDQpJIHBy ZWZlciB0aGlzIHZlcnNpb24gd2l0aCB0aGUgY2FsY3VsYXRpb24gaW4gbGluZSBzaW5jZSBpdCBt YWtlcyB0aGUgZGVyaXZhdGlvbiBjbGVhci4gS2VlcGluZyB0aGVtIGluIE1iL3MgbWFrZXMgaXQg ZWFzaWVyIHRvIGNvbnZlcnQgdG8gR2Ivcywgd2hpY2ggaXMgd2hhdCBtb3N0IHBlb3BsZSB3b3Vs ZCBleHBlY3QuDQoNClRoYW5rcywNCkpha2UNCg0KPiA+DQo+ID4NCj4gPiBjb21taXQgOTQ2NDM1 NDkxYjM1Yjc3ODIxNTdlOWE0ZDFiZDczMDcxZmJhNzcwOQ0KPiA+IEF1dGhvcjogVGFsIEdpbGJv YSA8dGFsZ2lAbWVsbGFub3guY29tPg0KPiA+IERhdGU6ICAgRnJpIE1hciAzMCAwODozMjowMyAy MDE4IC0wNTAwDQo+ID4NCj4gPiAgICAgIFBDSTogQWRkIHBjaWVfYmFuZHdpZHRoX2NhcGFibGUo KSB0byBjb21wdXRlIG1heCBzdXBwb3J0ZWQgbGluaw0KPiBiYW5kd2lkdGgNCj4gPg0KPiA+ICAg ICAgQWRkIHBjaWVfYmFuZHdpZHRoX2NhcGFibGUoKSB0byBjb21wdXRlIHRoZSBtYXggbGluayBi YW5kd2lkdGgNCj4gc3VwcG9ydGVkIGJ5DQo+ID4gICAgICBhIGRldmljZSwgYmFzZWQgb24gdGhl IG1heCBsaW5rIHNwZWVkIGFuZCB3aWR0aCwgYWRqdXN0ZWQgYnkgdGhlIGVuY29kaW5nDQo+ID4g ICAgICBvdmVyaGVhZC4NCj4gPg0KPiA+ICAgICAgVGhlIG1heGltdW0gYmFuZHdpZHRoIG9mIHRo ZSBsaW5rIGlzIGNvbXB1dGVkIGFzOg0KPiA+DQo+ID4gICAgICAgIG1heF9saW5rX3dpZHRoICog bWF4X2xpbmtfc3BlZWQgKiAoMSAtIGVuY29kaW5nX292ZXJoZWFkKQ0KPiA+DQo+ID4gICAgICAy LjUgYW5kIDUuMCBHVC9zIGxpbmtzIHVzZSA4Yi8xMGIgZW5jb2RpbmcsIHdoaWNoIHJlZHVjZXMg dGhlIHJhdw0KPiBiYW5kd2lkdGgNCj4gPiAgICAgIGF2YWlsYWJsZSBieSAyMCU7IDguMCBHVC9z IGFuZCBmYXN0ZXIgbGlua3MgdXNlIDEyOGIvMTMwYiBlbmNvZGluZywgd2hpY2gNCj4gPiAgICAg IHJlZHVjZXMgaXQgYnkgYWJvdXQgMS41JS4NCj4gPg0KPiA+ICAgICAgVGhlIHJlc3VsdCBpcyBp biBNYi9zLCBpLmUuLCBtZWdhYml0cy9zZWNvbmQsIG9mIHJhdyBiYW5kd2lkdGguDQo+ID4NCj4g PiAgICAgIFNpZ25lZC1vZmYtYnk6IFRhbCBHaWxib2EgPHRhbGdpQG1lbGxhbm94LmNvbT4NCj4g PiAgICAgIFtiaGVsZ2FhczogYWRkIDE2IEdUL3MsIGFkanVzdCBmb3IgcGNpZV9nZXRfc3BlZWRf Y2FwKCkgYW5kDQo+ID4gICAgICBwY2llX2dldF93aWR0aF9jYXAoKSBzaWduYXR1cmVzLCBkb24n dCBleHBvcnQgb3V0c2lkZSBkcml2ZXJzL3BjaV0NCj4gPiAgICAgIFNpZ25lZC1vZmYtYnk6IEJq b3JuIEhlbGdhYXMgPGJoZWxnYWFzQGdvb2dsZS5jb20+DQo+ID4gICAgICBSZXZpZXdlZC1ieTog VGFyaXEgVG91a2FuIDx0YXJpcXRAbWVsbGFub3guY29tPg0KPiA+DQo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvcGNpL3BjaS5jIGIvZHJpdmVycy9wY2kvcGNpLmMNCj4gPiBpbmRleCA0MzA3NWJl NzkzODguLmZmMWU3MjA2MDk1MiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3BjaS9wY2kuYw0K PiA+ICsrKyBiL2RyaXZlcnMvcGNpL3BjaS5jDQo+ID4gQEAgLTUyMDgsNiArNTIwOCwyOCBAQCBl bnVtIHBjaWVfbGlua193aWR0aCBwY2llX2dldF93aWR0aF9jYXAoc3RydWN0DQo+IHBjaV9kZXYg KmRldikNCj4gPiAgIAlyZXR1cm4gUENJRV9MTktfV0lEVEhfVU5LTk9XTjsNCj4gPiAgIH0NCj4g Pg0KPiA+ICsvKioNCj4gPiArICogcGNpZV9iYW5kd2lkdGhfY2FwYWJsZSAtIGNhbGN1bGF0ZSBh IFBDSSBkZXZpY2UncyBsaW5rIGJhbmR3aWR0aCBjYXBhYmlsaXR5DQo+ID4gKyAqIEBkZXY6IFBD SSBkZXZpY2UNCj4gPiArICogQHNwZWVkOiBzdG9yYWdlIGZvciBsaW5rIHNwZWVkDQo+ID4gKyAq IEB3aWR0aDogc3RvcmFnZSBmb3IgbGluayB3aWR0aA0KPiA+ICsgKg0KPiA+ICsgKiBDYWxjdWxh dGUgYSBQQ0kgZGV2aWNlJ3MgbGluayBiYW5kd2lkdGggYnkgcXVlcnlpbmcgZm9yIGl0cyBsaW5r IHNwZWVkDQo+ID4gKyAqIGFuZCB3aWR0aCwgbXVsdGlwbHlpbmcgdGhlbSwgYW5kIGFwcGx5aW5n IGVuY29kaW5nIG92ZXJoZWFkLiAgVGhlIHJlc3VsdA0KPiA+ICsgKiBpcyBpbiBNYi9zLCBpLmUu LCBtZWdhYml0cy9zZWNvbmQgb2YgcmF3IGJhbmR3aWR0aC4NCj4gPiArICovDQo+ID4gK3UzMiBw Y2llX2JhbmR3aWR0aF9jYXBhYmxlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGVudW0gcGNpX2J1c19z cGVlZA0KPiAqc3BlZWQsDQo+ID4gKwkJCSAgIGVudW0gcGNpZV9saW5rX3dpZHRoICp3aWR0aCkN Cj4gPiArew0KPiA+ICsJKnNwZWVkID0gcGNpZV9nZXRfc3BlZWRfY2FwKGRldik7DQo+ID4gKwkq d2lkdGggPSBwY2llX2dldF93aWR0aF9jYXAoZGV2KTsNCj4gPiArDQo+ID4gKwlpZiAoKnNwZWVk ID09IFBDSV9TUEVFRF9VTktOT1dOIHx8ICp3aWR0aCA9PQ0KPiBQQ0lFX0xOS19XSURUSF9VTktO T1dOKQ0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsNCj4gPiArCXJldHVybiAqd2lkdGggKiBQQ0lF X1NQRUVEMk1CU19FTkMoKnNwZWVkKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgIC8qKg0KPiA+ICAg ICogcGNpX3NlbGVjdF9iYXJzIC0gTWFrZSBCQVIgbWFzayBmcm9tIHRoZSB0eXBlIG9mIHJlc291 cmNlDQo+ID4gICAgKiBAZGV2OiB0aGUgUENJIGRldmljZSBmb3Igd2hpY2ggQkFSIG1hc2sgaXMg bWFkZQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wY2kuaCBiL2RyaXZlcnMvcGNpL3Bj aS5oDQo+ID4gaW5kZXggNjY3MzhmMTA1MGMwLi4zN2Y5Mjk5ZWQ2MjMgMTAwNjQ0DQo+ID4gLS0t IGEvZHJpdmVycy9wY2kvcGNpLmgNCj4gPiArKysgYi9kcml2ZXJzL3BjaS9wY2kuaA0KPiA+IEBA IC0yNjEsOCArMjYxLDE4IEBAIHZvaWQgcGNpX2Rpc2FibGVfYnJpZGdlX3dpbmRvdyhzdHJ1Y3Qg cGNpX2RldiAqZGV2KTsNCj4gPiAgIAkgKHNwZWVkKSA9PSBQQ0lFX1NQRUVEXzJfNUdUID8gIjIu NSBHVC9zIiA6IFwNCj4gPiAgIAkgIlVua25vd24gc3BlZWQiKQ0KPiA+DQo+ID4gKy8qIFBDSWUg c3BlZWQgdG8gTWIvcyByZWR1Y2VkIGJ5IGVuY29kaW5nIG92ZXJoZWFkICovDQo+ID4gKyNkZWZp bmUgUENJRV9TUEVFRDJNQlNfRU5DKHNwZWVkKSBcDQo+ID4gKwkoKHNwZWVkKSA9PSBQQ0lFX1NQ RUVEXzE2XzBHVCA/ICgxNjAwMCooMTI4LzEzMCkpIDogXA0KPiA+ICsJIChzcGVlZCkgPT0gUENJ RV9TUEVFRF84XzBHVCAgPyAgKDgwMDAqKDEyOC8xMzApKSA6IFwNCj4gPiArCSAoc3BlZWQpID09 IFBDSUVfU1BFRURfNV8wR1QgID8gICg1MDAwKig4LzEwKSkgOiBcDQo+ID4gKwkgKHNwZWVkKSA9 PSBQQ0lFX1NQRUVEXzJfNUdUICA/ICAoMjUwMCooOC8xMCkpIDogXA0KPiA+ICsJIDApDQo+ID4g Kw0KPiA+ICAgZW51bSBwY2lfYnVzX3NwZWVkIHBjaWVfZ2V0X3NwZWVkX2NhcChzdHJ1Y3QgcGNp X2RldiAqZGV2KTsNCj4gPiAgIGVudW0gcGNpZV9saW5rX3dpZHRoIHBjaWVfZ2V0X3dpZHRoX2Nh cChzdHJ1Y3QgcGNpX2RldiAqZGV2KTsNCj4gPiArdTMyIHBjaWVfYmFuZHdpZHRoX2NhcGFibGUo c3RydWN0IHBjaV9kZXYgKmRldiwgZW51bSBwY2lfYnVzX3NwZWVkDQo+ICpzcGVlZCwNCj4gPiAr CQkJICAgZW51bSBwY2llX2xpbmtfd2lkdGggKndpZHRoKTsNCj4gPg0KPiA+ICAgLyogU2luZ2xl IFJvb3QgSS9PIFZpcnR1YWxpemF0aW9uICovDQo+ID4gICBzdHJ1Y3QgcGNpX3NyaW92IHsNCj4g Pg0K