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=-0.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no 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 941DDC18E5B for ; Wed, 1 Apr 2020 22:44:32 +0000 (UTC) Received: from ml01.01.org (ml01.01.org [198.145.21.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5F22820787 for ; Wed, 1 Apr 2020 22:44:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (4096-bit key) header.d=d-silva.org header.i=@d-silva.org header.b="Q+X9bQgx" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5F22820787 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=d-silva.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvdimm-bounces@lists.01.org Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id CF7E110FC452E; Wed, 1 Apr 2020 15:45:21 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=66.55.73.32; helo=ushosting.nmnhosting.com; envelope-from=alastair@d-silva.org; receiver= Received: from ushosting.nmnhosting.com (ushosting.nmnhosting.com [66.55.73.32]) by ml01.01.org (Postfix) with ESMTP id 4C4C210FC452A for ; Wed, 1 Apr 2020 15:45:18 -0700 (PDT) Received: from mail2.nmnhosting.com (unknown [202.169.106.97]) by ushosting.nmnhosting.com (Postfix) with ESMTPS id 22B052DC3330; Thu, 2 Apr 2020 09:44:27 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=d-silva.org; s=201810a; t=1585781068; bh=WUswt0ThdKMOtAdHSGA44cKKcSd3ehspVRkSu90GPuc=; h=From:To:Cc:References:In-Reply-To:Subject:Date:From; b=Q+X9bQgxOtA5bsZVhJSZiti3BRxki0C2mffeI2DXnUE3CkLpmXE+kHLmtH/P46E1P CRNkH9f0LIOdAdxEZvULLLR9giWg7DPYwZcdCmMEAVaoiZf0mpRES3bQ+dIci0dZ6x CVaZX+aQc/i3CyN/22RLJ/4ajJUGOIhqkQUOKBgolmlxwZA9bAlInBjqTXLhoBGPvz MrmXGWiKCh1yXwT8R/cvfIcfpjof2x6il0XWMjXLd9wAhLidMIuUGA9bZ1Ov+W8tYP K184yedXzhaatalU7J8WG1B7/MVjTmz2Eo+8Jij4j2kTfhJfTrS9yjlm/Evk9Ill58 qun6TuxLAc8jsopXtUXlTNc/ZEv2T+v/RAFRzhyeGOAzKd6fgRppuL9mXityB/qQ7r GSMJBvNxivd25f6qEbC2bvr/mJ293TsXG5IQWRqqr8utNP719IajcEdC8G4gt6hUHb cjxY3jO0DOvv+7BUAujvJT0hf0iu7LRil/MWCByVAWIdyiOEu+CJ2bDK7IfFA/KOrQ iwNS+i4Mc1HVyv9nnJfGBV5tk5ovsNQfuMikZKT8qtLwU5aSYfTvMTfCLLOE7r8A8F s4RBIGEvKEvI2P7pI93f3BmJcEUa2TiqAsIz/suS0dy9yWHtjBaIc8ZlLIX+bBx35e RDq8iXRDScrTJTbX8OnnWyxg= Received: from Hawking (ntp.lan [10.0.1.1]) (authenticated bits=0) by mail2.nmnhosting.com (8.15.2/8.15.2) with ESMTPSA id 031MiEaB088120 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 2 Apr 2020 09:44:16 +1100 (AEDT) (envelope-from alastair@d-silva.org) From: "Alastair D'Silva" To: "'Dan Williams'" References: <20200327071202.2159885-1-alastair@d-silva.org> In-Reply-To: Subject: RE: [PATCH v4 00/25] Add support for OpenCAPI Persistent Memory devices Date: Thu, 2 Apr 2020 09:44:13 +1100 Message-ID: <2d6901d60877$16aa7a90$43ff6fb0$@d-silva.org> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Content-Language: en-au Thread-Index: AQJ5L4Hn/mp5p0p1jYAFWLJ+xmWSbgGC/kF4pxJ1VcA= X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.6.2 (mail2.nmnhosting.com [10.0.1.20]); Thu, 02 Apr 2020 09:44:23 +1100 (AEDT) Message-ID-Hash: YIW2SAOAGJO6KIJQHKNBMPHBCL276YRI X-Message-ID-Hash: YIW2SAOAGJO6KIJQHKNBMPHBCL276YRI X-MailFrom: alastair@d-silva.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation CC: "'Aneesh Kumar K . V'" , 'Benjamin Herrenschmidt' , 'Paul Mackerras' , 'Michael Ellerman' , 'Frederic Barrat' , 'Andrew Donnellan' , 'Arnd Bergmann' , 'Greg Kroah-Hartman' , 'Andrew Morton' , 'Mauro Carvalho Chehab' , "'David S. Miller'" , 'Rob Herring' , 'Anton Blanchard' , 'Krzysztof Kozlowski' , 'Mahesh Salgaonkar' , 'Madhavan Srinivasan' , =?utf-8?Q?'C=C3=A9dric_Le_Goater'?= , 'Anju T Sudhakar' , 'Hari Bathini' , 'Thomas Gleixner' , 'Greg Kurz' , 'Nicholas Piggin' , 'Masahiro Yamada' , 'Alexey Kardashevskiy' , 'Linux Kernel Mailing List' , 'linuxppc-dev' , 'linux-nvdimm' , 'Linux MM' X-Mailman-Version: 3.1.1 Precedence: list List-Id: "Linux-nvdimm developer list." Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IERhbiBXaWxsaWFtcyA8ZGFu Lmoud2lsbGlhbXNAaW50ZWwuY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIDEgQXByaWwgMjAyMCA3 OjQ4IFBNDQo+IFRvOiBBbGFzdGFpciBEJ1NpbHZhIDxhbGFzdGFpckBkLXNpbHZhLm9yZz4NCj4g Q2M6IEFuZWVzaCBLdW1hciBLIC4gViA8YW5lZXNoLmt1bWFyQGxpbnV4LmlibS5jb20+OyBPbGl2 ZXIgTydIYWxsb3Jhbg0KPiA8b29oYWxsQGdtYWlsLmNvbT47IEJlbmphbWluIEhlcnJlbnNjaG1p ZHQNCj4gPGJlbmhAa2VybmVsLmNyYXNoaW5nLm9yZz47IFBhdWwgTWFja2VycmFzIDxwYXVsdXNA c2FtYmEub3JnPjsgTWljaGFlbA0KPiBFbGxlcm1hbiA8bXBlQGVsbGVybWFuLmlkLmF1PjsgRnJl ZGVyaWMgQmFycmF0IDxmYmFycmF0QGxpbnV4LmlibS5jb20+Ow0KPiBBbmRyZXcgRG9ubmVsbGFu IDxhamRAbGludXguaWJtLmNvbT47IEFybmQgQmVyZ21hbm4NCj4gPGFybmRAYXJuZGIuZGU+OyBH cmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPjsNCj4gVmlzaGFs IFZlcm1hIDx2aXNoYWwubC52ZXJtYUBpbnRlbC5jb20+OyBEYXZlIEppYW5nDQo+IDxkYXZlLmpp YW5nQGludGVsLmNvbT47IElyYSBXZWlueSA8aXJhLndlaW55QGludGVsLmNvbT47IEFuZHJldyBN b3J0b24NCj4gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+OyBNYXVybyBDYXJ2YWxobyBDaGVo YWINCj4gPG1jaGVoYWIrc2Ftc3VuZ0BrZXJuZWwub3JnPjsgRGF2aWQgUy4gTWlsbGVyIDxkYXZl bUBkYXZlbWxvZnQubmV0PjsNCj4gUm9iIEhlcnJpbmcgPHJvYmhAa2VybmVsLm9yZz47IEFudG9u IEJsYW5jaGFyZCA8YW50b25Ab3psYWJzLm9yZz47DQo+IEtyenlzenRvZiBLb3psb3dza2kgPGty emtAa2VybmVsLm9yZz47IE1haGVzaCBTYWxnYW9ua2FyDQo+IDxtYWhlc2hAbGludXgudm5ldC5p Ym0uY29tPjsgTWFkaGF2YW4gU3Jpbml2YXNhbg0KPiA8bWFkZHlAbGludXgudm5ldC5pYm0uY29t PjsgQ8OpZHJpYyBMZSBHb2F0ZXIgPGNsZ0BrYW9kLm9yZz47IEFuanUgVA0KPiBTdWRoYWthciA8 YW5qdUBsaW51eC52bmV0LmlibS5jb20+OyBIYXJpIEJhdGhpbmkNCj4gPGhiYXRoaW5pQGxpbnV4 LmlibS5jb20+OyBUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT47IEdyZWcNCj4g S3VyeiA8Z3JvdWdAa2FvZC5vcmc+OyBOaWNob2xhcyBQaWdnaW4gPG5waWdnaW5AZ21haWwuY29t PjsgTWFzYWhpcm8NCj4gWWFtYWRhIDx5YW1hZGEubWFzYWhpcm9Ac29jaW9uZXh0LmNvbT47IEFs ZXhleSBLYXJkYXNoZXZza2l5DQo+IDxhaWtAb3psYWJzLnJ1PjsgTGludXggS2VybmVsIE1haWxp bmcgTGlzdCA8bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZz47DQo+IGxpbnV4cHBjLWRldiA8 bGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc+OyBsaW51eC1udmRpbW0gPGxpbnV4LQ0KPiBu dmRpbW1AbGlzdHMuMDEub3JnPjsgTGludXggTU0gPGxpbnV4LW1tQGt2YWNrLm9yZz4NCj4gU3Vi amVjdDogUmU6IFtQQVRDSCB2NCAwMC8yNV0gQWRkIHN1cHBvcnQgZm9yIE9wZW5DQVBJIFBlcnNp c3RlbnQgTWVtb3J5DQo+IGRldmljZXMNCj4gDQo+IE9uIFN1biwgTWFyIDI5LCAyMDIwIGF0IDEw OjIzIFBNIEFsYXN0YWlyIEQnU2lsdmEgPGFsYXN0YWlyQGQtc2lsdmEub3JnPg0KPiB3cm90ZToN Cj4gPg0KPiA+IFRoaXMgc2VyaWVzIGFkZHMgc3VwcG9ydCBmb3IgT3BlbkNBUEkgUGVyc2lzdGVu dCBNZW1vcnkgZGV2aWNlcyBvbg0KPiA+IGJhcmUgbWV0YWwgKGFyY2gvcG93ZXJudiksIGV4cG9z aW5nIHRoZW0gYXMgbnZkaW1tcyBzbyB0aGF0IHdlIGNhbg0KPiA+IG1ha2UgdXNlIG9mIHRoZSBl eGlzdGluZyBpbmZyYXN0cnVjdHVyZS4gVGhlcmUgYWxyZWFkeSBleGlzdHMgYSBkcml2ZXINCj4g PiBmb3IgdGhlIHNhbWUgZGV2aWNlcyBhYnN0cmFjdGVkIHRocm91Z2ggUG93ZXJWTSAoYXJjaC9w c2VyaWVzKToNCj4gPiBhcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvcGFwcl9zY20uYw0K PiA+DQo+ID4gVGhlc2UgZGV2aWNlcyBhcmUgY29ubmVjdGVkIHZpYSBPcGVuQ0FQSSwgYW5kIHBy ZXNlbnQgYXMgTFBDIChsb3dlc3QNCj4gY29oZXJlbmNlIHBvaW50KSBtZW1vcnkgdG8gdGhlIHN5 c3RlbSwgcHJhY3RpY2FsbHksIHRoYXQgbWVhbnMgdGhhdA0KPiBtZW1vcnkgb24gdGhlc2UgY2Fy ZHMgY291bGQgYmUgdHJlYXRlZCBhcyBjb252ZW50aW9uYWwsIGNhY2hlLWNvaGVyZW50DQo+IG1l bW9yeS4NCj4gPg0KPiA+IFNpbmNlIHRoZSBkZXZpY2VzIGFyZSBjb25uZWN0ZWQgdmlhIE9wZW5D QVBJLCB0aGV5IGFyZSBub3QgZW51bWVyYXRlZA0KPiB2aWEgQUNQSS4gSW5zdGVhZCwgT3BlbkNB UEkgbGlua3MgcHJlc2VudCBhcyBwc2V1ZG8tUENJIGJyaWRnZXMsIHdpdGgNCj4gZGV2aWNlcyBi ZWxvdyB0aGVtLg0KPiA+DQo+ID4gVGhpcyBzZXJpZXMgaW50cm9kdWNlcyBhIGRyaXZlciB0aGF0 IGV4cG9zZXMgdGhlIG1lbW9yeSBvbiB0aGVzZSBjYXJkcyBhcw0KPiBudmRpbW1zLCB3aXRoIGVh Y2ggY2FyZCBnZXR0aW5nIGl0J3Mgb3duIGJ1cy4gVGhpcyBpcyBzb21ld2hhdCBjb21wbGljYXRl ZA0KPiBieSB0aGUgZmFjdCB0aGF0IHRoZSBjYXJkcyBkbyBub3QgaGF2ZSBvdXQgb2YgYmFuZCBw ZXJzaXN0ZW50IHN0b3JhZ2UgZm9yDQo+IG1ldGFkYXRhLCBzbyAxIFNFQ1RJT05fU0laRSdzIChz ZWUgU1BBUlNFTUVNKSB3b3J0aCBvZiBzdG9yYWdlIGlzIGNhcnZlZA0KPiBvdXQgb2YgdGhlIHRv cCBvZiB0aGUgY2FyZCBzdG9yYWdlIHRvIGltcGxlbWVudCB0aGUgbmRjdGxfY29uZmlnXyogY2Fs bHMuDQo+IA0KPiBJcyBpdCByZWFsbHkgdGllZCB0byBzZWN0aW9uLXNpemU/IENhbid0IHRoYXQg Y2hhbmdlIGJhc2VkIG9uIHRoZSBjb25maWd1cmVkDQo+IHBhZ2Utc2l6ZT8gSXQncyBub3QgY2xl YXIgdG8gbWUgd2h5IHRoYXQgd291bGQgYmUgdGhlIGNob2ljZSwgYnV0IEknbGwgZGlnIGludG8N Cj4gdGhlIGltcGxlbWVudGF0aW9uLg0KPiANCg0KSSBoYWQgdHJpZWQgdXNpbmcgUEFHRV9TSVpF LCBidXQgcmFuIGludG8gcHJvYmxlbXMgY2FydmluZyBvZmYganVzdCAxIHBhZ2UgYW5kIGhhbmRp bmcgaXQgdG8gdGhlIGtlcm5lbCwgd2hpbGUgbGVhdmluZyB0aGUgcmVzdCBhcyBwbWVtLiBUaGF0 IHdhcyBhIHdoaWxlIGFnbyB0aG91Z2gsIHNvIG1heWJlIEkgc2hvdWxkIHJldHJ5IGl0Lg0KDQo+ ID4gVGhlIGRyaXZlciBpcyBub3QgcmVzcG9uc2libGUgZm9yIGNvbmZpZ3VyaW5nIHRoZSBOUFUg KE5WTGluayBQcm9jZXNzaW5nDQo+IFVuaXQpIEJBUnMgdG8gbWFwIHRoZSBMUEMgbWVtb3J5IGZy b20gdGhlIGNhcmQgaW50byB0aGUgc3lzdGVtJ3MgcGh5c2ljYWwNCj4gYWRkcmVzcyBzcGFjZSwg aW5zdGVhZCwgaXQgcmVxdWVzdHMgdGhpcyB0byBiZSBkb25lIHZpYSBPUEFMIGNhbGxzICh0eXBp Y2FsbHkNCj4gaW1wbGVtZW50ZWQgYnkgU2tpYm9vdCkuDQo+IA0KPiBBcmUgT1BBTCBjYWxscyBz aW1pbGFyIHRvIEFDUEkgRFNNcz8gSS5lLiBtZXRob2RzIGZvciB0aGUgT1MgdG8gaW52b2tlDQo+ IHBsYXRmb3JtIGZpcm13YXJlIHNlcnZpY2VzPyBXaGF0J3MgU2tpYm9vdD8NCj4gDQoNClllcywg T1BBTCBpcyB0aGUgaW50ZXJmYWNlIHRvIGZpcm13YXJlIGZvciBQT1dFUi4gU2tpYm9vdCBpcyB0 aGUgb3Blbi1zb3VyY2UgKGFuZCBvbmx5KSBpbXBsZW1lbnRhdGlvbiBvZiBPUEFMLg0KDQo+ID4N Cj4gPiBUaGUgc2VyaWVzIGlzIHN0cnVjdHVyZWQgYXMgZm9sbG93czoNCj4gPiAgLSBSZXF1aXJl ZCBpbmZyYXN0cnVjdHVyZSBjaGFuZ2VzICYgY2xlYW51cA0KPiA+ICAtIEEgbWluaW1hbCBkcml2 ZXIgaW1wbGVtZW50YXRpb24NCj4gPiAgLSBJbXBsZW1lbnRpbmcgYWRkaXRpb25hbCBmZWF0dXJl cyB3aXRoaW4gdGhlIGRyaXZlcg0KPiANCj4gVGhhbmtzIGZvciB0aGUgaW50cm8gYW5kIHRoZSBj aGFuZ2Vsb2chDQo+IA0KPiA+DQo+ID4gQ2hhbmdlbG9nOg0KPiA+IFY0Og0KPiA+ICAgLSBSZWJh c2Ugb24gbmV4dC0yMDIwMDMyMA0KPiANCj4gRG8geW91IGhhdmUgZGVwZW5kZW5jaWVzIG9uIG90 aGVyIG1hdGVyaWFsIHRoYXQncyBpbiAtbmV4dD8gT3RoZXJ3aXNlIC0NCj4gbmV4dCBpcyBvbmx5 IGEgdmlhYmxlIGRldmVsb3BtZW50IGJhc2VsaW5lIGlmIHlvdSBhcmUgZ29pbmcgdG8gbWVyZ2Ug dGhyb3VnaA0KPiBBbmRyZXcncyB0cmVlLg0KPiANCj4gPiAgIC0gQnVtcCBjb3B5cmlnaHQgdG8g MjAyMA0KPiA+ICAgLSBFbnN1cmUgYWxsIHVhcGkgaGVhZGVycyB1c2UgQzg5IGNvbXBhdGlibGUg Y29tbWVudHMgKG1pc3NlZA0KPiBvY3hscG1lbS5oKQ0KPiA+ICAgLSBNb3ZlIHRoZSBkcml2ZXIg YmFjayB0byBkcml2ZXJzL252ZGltbS9vY3hsLCBhZnRlciBjb25maXJtYXRpb24NCj4gPiAgICAg dGhhdCB0aGlzIGxvY2F0aW9uIGlzIGRlc2lyYWJsZQ0KPiA+ICAgLSBSZW5hbWUgb2N4bC5jIHRv IG9jeGxwbWVtLmMgKCsgc3VwcG9ydCBmaWxlcykNCj4gPiAgIC0gUmVuYW1lIGFsbCBvY3hsX3Bt ZW0gdG8gb2N4bHBtZW0NCj4gPiAgIC0gQWRkcmVzcyBjaGVja3BhdGNoIC0tc3RyaWN0IGlzc3Vl cw0KPiA+ICAgLSAicG93ZXJwYy9wb3dlcm52OiBBZGQgT1BBTCBjYWxscyBmb3IgTFBDIG1lbW9y eSBhbGxvYy9yZWxlYXNlIg0KPiA+ICAgICAgICAgLSBQYXNzIGJhc2UgYWRkcmVzcyBhcyBfX2Jl NjQNCj4gPiAgIC0gIm9jeGw6IFRhbGx5IHVwIHRoZSBMUEMgbWVtb3J5IG9uIGEgbGluayAmIGFs bG93IGl0IHRvIGJlIG1hcHBlZCINCj4gPiAgICAgICAgIC0gQWRkcmVzcyBjaGVja3BhdGNoIHNw YWNpbmcgd2FybmluZ3MNCj4gPiAgICAgICAgIC0gUmV3b3JkIGJsdXJiDQo+ID4gICAgICAgICAt IFJld29yZCBzaXplIGRlc2NyaXB0aW9uIGZvciBvY3hsX2xpbmtfYWRkX2xwY19tZW0oKQ0KPiA+ ICAgICAgICAgLSBBZGQgYW4gZWFybHkgZXhpdCBpbiBvY3hsX2xpbmtfbHBjX3JlbGVhc2UoKSB0 byBhdm9pZCB0cmlnZ2VyaW5nDQo+ID4gICAgICAgICAgIGJvZ3VzIHdhcm5pbmdzIGlmIGNhbGxl ZCBhZnRlciBvY3hsX2xpbmtfbHBjX21hcCgpIGZhaWxzDQo+ID4gICAtICJwb3dlcnBjL3Bvd2Vy bnY6IEFkZCBPUEFMIGNhbGxzIGZvciBMUEMgbWVtb3J5IGFsbG9jL3JlbGVhc2UiDQo+ID4gICAg ICAgICAtIFJld29yZCBibHVyYg0KPiA+ICAgLSAicG93ZXJwYy9wb3dlcm52OiBNYXAgJiByZWxl YXNlIE9wZW5DQVBJIExQQyBtZW1vcnkiDQo+ID4gICAgICAgICAtIFJld29yZCBibHVyYg0KPiA+ ICAgLSBNb3ZlIG1pbm9yX2lkciBpbml0IGZyb20gZmlsZV9pbml0KCkgdG8gb2N4bHBtZW1faW5p dCgpIChmaXhlcyBydW50aW1lDQo+IGVycm9yDQo+ID4gICAgIGluICJudmRpbW06IEFkZCBkcml2 ZXIgZm9yIE9wZW5DQVBJIFBlcnNpc3RlbnQgTWVtb3J5IikNCj4gPiAgIC0gV3JhcCBsb25nIGxp bmVzDQo+ID4gICAtICJudmRpbW06IEFkZCBkcml2ZXIgZm9yIE9wZW5DQVBJIFN0b3JhZ2UgQ2xh c3MgTWVtb3J5Ig0KPiA+ICAgICAgICAgLSBSZW1vdmUgJysgMScgd29ya3JvdW5kIGZyb20gc2Vy aWFsIG51bWJlci0+Y29va2llIGFzc2lnbm1lbnQNCj4gPiAgICAgICAgIC0gRHJvcCBvdXQgb2Yg bWVtb3J5IG1lc3NhZ2UgZm9yIG9jeGxwbWVtIGluIHByb2JlKCkNCj4gPiAgICAgICAgIC0gRml4 IGxlYWtzIG9mIG9jeGxwbWVtICYgb2N4bHBtZW0tPm9jeGxfZm4gaW4gcHJvYmUoKQ0KPiA+ICAg ICAgICAgLSByZW1vdmUgc3RydWN0IG9jeGxwbWVtX2Z1bmN0aW9uMCwgaXQgZGlkbid0IHZhbHVl IGFkZA0KPiA+ICAgICAgICAgLSBmYWN0b3Igb3V0IGVycl91bnJlZ2lzdGVyZWQgbGFiZWwgaW4g cHJvYmUNCj4gPiAgICAgICAgIC0gQWRkcmVzcyBtb3JlIGNoZWNrcGF0Y2ggd2FybmluZ3MNCj4g PiAgICAgICAgIC0gZ2V0L3B1dCB0aGUgcGNpIGRldiBvbiBwcm9iZS9mcmVlDQo+ID4gICAgICAg ICAtIERyb3Agb2N4bHBtZW1fIHByZWZpeCBmcm9tIHN0YXRpYyBmdW5jdGlvbnMNCj4gPiAgICAg ICAgIC0gUHJvcG9nYXRlIGVycm9ycyB1cCBmcm9tIGNhbGxlZCBmdW5jdGlvbnMgaW4gcHJvYmUo KQ0KPiA+ICAgICAgICAgLSBTZXQgTU9EVUxFX0xJQ0VOU0UgdG8gR1BMdjINCj4gPiAgICAgICAg IC0gQWRkIG15c2VsZiBhcyBtb2R1bGUgYXV0aG9yDQo+ID4gICAgICAgICAtIENhbGwgbnZkaW1t X2J1c191bnJlZ2lzdGVyKCkgaW4gcmVtb3ZlKCkgdG8gcmVsZWFzZSByZWZlcmVuY2VzDQo+ID4g ICAgICAgICAtIERvbid0IGNhbGwgZGV2bV9tZW11bm1hcCBvbiBtZXRhZGF0YV9hZGRyZXNzLCB0 aGUgcmVsZWFzZQ0KPiBoYW5kbGVyIG9uDQo+ID4gICAgICAgICAgdGhlIGRldmljZSBhbHJlYWR5 IGRlYWxzIHdpdGggdGhpcw0KPiA+ICAgLSAibnZkaW1tL29jeGw6IFJlYWQgdGhlIGNhcGFiaWxp dHkgcmVnaXN0ZXJzICYgd2FpdCBmb3IgZGV2aWNlIHJlYWR5Ig0KPiA+ICAgICAgICAgLSBGaXgg bWFzayBmb3IgcmVhZF9sYXRlbmN5DQo+ID4gICAgICAgICAtIEZvbGQgaW4gaXNfdXNhYmxlIGxv Z2ljIGludG8gdGltZW91dCB0byByZW1vdmUgZXJyb3IgbWVzc2FnZSByYWNlDQo+ID4gICAgICAg ICAtIHByb3BvZ2F0ZSBiYWQgcmMgZnJvbSByZWFkX2RldmljZV9tZXRhZGF0YQ0KPiA+ICAgLSAi bnZkaW1tL29jeGw6IEFkZCByZWdpc3RlciBhZGRyZXNzZXMgJiBzdGF0dXMgdmFsdWVzIHRvIHRo ZSBoZWFkZXIiDQo+ID4gICAgICAgICAtIEFkZCBjb21tZW50cyBmb3IgcmVnaXN0ZXIgYWJicmV2 aWF0aW9ucyB3aGVyZSBuYW1lcyBoYXZlIGJlZW4NCj4gPiAgICAgICAgICAgZXhwYW5kZWQNCj4g PiAgICAgICAgIC0gQWRkIG1pc3Npbmcgc3RhdHVzIGZvciBibG9ja2VkIG9uIGJhY2tncm91bmQg dGFzaw0KPiA+ICAgICAgICAgLSBBbGlhcyBkZWZpbmVzIGZvciBmaXJtd2FyZSB1cGRhdGUgc3Rh dHVzIHRvIHNob3cgdGhhdCB0aGUgZHVwbGljYXRpb24NCj4gPiAgICAgICAgICAgb2YgdmFsdWVz IGlzIGludGVudGlvbmFsDQo+ID4gICAtICJudmRpbW0vb2N4bDogUmVnaXN0ZXIgYSBjaGFyYWN0 ZXIgZGV2aWNlIGZvciB1c2Vyc3BhY2UgdG8gaW50ZXJhY3Qgd2l0aCINCj4gPiAgICAgICAgIC0g QWRkIGxvY2sgYXJvdW5kIG1pbm9ycyBJRFIsIGRlbGV0ZSB0aGUgY2RldiBiZWZvcmUNCj4gZGV2 aWNlX3VucmVnaXN0ZXINCj4gPiAgICAgICAgIC0gUHJvcG9nYXRlIGVycm9ycyB1cCBmcm9tIGNh bGxlZCBmdW5jdGlvbnMgaW4gcHJvYmUoKQ0KPiA+ICAgLSAibnZkaW1tL29jeGw6IEFkZCBzdXBw b3J0IGZvciBBZG1pbiBjb21tYW5kcyINCj4gPiAgICAgICAgIC0gRml4IHR5cG8gaW4gc2V0dXBf Y29tbWFuZF9kYXRhIGVycm9yIG1lc3NhZ2UsIGFuZCBkcm9wICdvY3hsJyBmcm9tDQo+IGl0DQo+ ID4gICAgICAgICAtIERyb3AgdmVzdGlnaWFsIENISSByZWFkIGZyb20gYWRtaW5fY29tbWFuZF9y ZXF1ZXN0DQo+ID4gICAgICAgICAtIENoYW5nZSBjb21tYW5kIElEIG1pc21hdGNoIG1lc3NhZ2Ug dG8gZGV2X2VyciwgYW5kIHJldHVybiBhbg0KPiBlcnJvcg0KPiA+ICAgICAgICAgLSBVc2Ugamlm ZmllcyB0byBpbXBsZW1lbnQgYWRtaW5fY29tbWFuZF9jb21wbGV0ZV90aW1lb3V0KCkNCj4gPiAg ICAgICAgIC0gRmxlc2ggb3V0IGJsdXJiDQo+ID4gICAgICAgICAtIENyZWF0ZSBhIHdyYXBwZXIg dG8gaXNzdWUgdGhlIGNvbW1hbmQgJiB3YWl0IGZvciB0aW1lb3V0DQo+ID4gICAtICJudmRpbW0v b2N4bDogQWRkIHN1cHBvcnQgZm9yIG5lYXIgc3RvcmFnZSBjb21tYW5kcyINCj4gPiAgICAgICAg IC0gZHJvcHBlZCAod2lsbCBzdWJtaXQgd2l0aCB0aGUgcGF0Y2hlcyBmb3IgbnZkaW1tIG92ZXJ3 cml0ZSkNCj4gPiAgIC0gIm52ZGltbS9vY3hsOiBJbXBsZW1lbnQgdGhlIFJlYWQgRXJyb3IgTG9n IGNvbW1hbmQiDQo+ID4gICAgICAgICAtIFJlbW92ZSBzdHJheSBibGFuayBsaW5lDQo+ID4gICAg ICAgICAtIGNoYW5nZSBtaXNwbGFjZWQgZ290byB0byBhbiBlYXJseSBleGl0IGluIHJlYWRfZXJy b3JfbG9nDQo+ID4gICAgICAgICAtIElubGluZSBlcnJvcl9sb2dfb2Zmc2V0XzB4MDgNCj4gPiAg ICAgICAgIC0gUmVhZCBXV0lEIGRhdGEgYXMgTEUgcmF0aGVyIHRoYW4gaG9zdCBlbmRpYW4NCj4g PiAgICAgICAgIC0gTW92ZSB0aGUgaW5jbHVkZSBvZiBudmRpbW0vb2N4bHBtZW0uaCB0byBvY3hs LmMNCj4gPiAgICAgICAgIC0gQWRkIHBhZGRpbmcgYWZ0ZXIgZndyZXZpc2lvbiBpbiBzdHJ1Y3Qg aW9jdGxfb2N4bF9wbWVtX2Vycm9yX2xvZw0KPiA+ICAgICAgICAgLSBSZWdpc3RlciBJT0NUTCBt YWdpYw0KPiA+ICAgICAgICAgLSBDb2VyY2UgcG9pbnRlcnMgdG8gX191NjQgaW4gSU9DVExzDQo+ ID4gICAtICJudmRpbW0vb2N4bDogQWRkIGNvbnRyb2xsZXIgZHVtcCBJT0NUTHMiDQo+ID4gICAg ICAgICAtIENvZXJjZSBwb2ludGVycyB0byBfX3U2NCBpbiBJT0NUTHMNCj4gPiAgICAgICAgIC0g RG9jdW1lbnQgZXhwZWN0ZWQgSU9DVEwgdXNhZ2UgaW4gYmx1cmINCj4gPiAgICAgICAgIC0gQWRk IG1pc3NpbmcgcmMgY2hlY2sNCj4gPiAgICAgICAgIC0gT25seSBwb3B1bGF0ZSB1cCB0byB0aGUg bnVtYmVyIG9mIGJ5dGVzIHJldHVybmVkIGJ5IHRoZSBjYXJkLA0KPiA+ICAgICAgICAgICBhbmQg cmV0dXJuIHRoaXMgbGVuZ3RoIHRvIHRoZSBjYWxsZXINCj4gPiAgICAgICAgIC0gQWRkIG1pc3Np bmcgaGVhZGVyIGNoZWNrDQo+ID4gICAtICJudmRpbW0vb2N4bDogQWRkIGFuIElPQ1RMIHRvIHJl cG9ydCBjb250cm9sbGVyIHN0YXRpc3RpY3MiDQo+ID4gICAgICAgICAtIFVwZGF0ZSB0byBtYXRj aCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHNwZWMNCj4gPiAgICAgICAgIC0gVmVyaWZ5IHRo YXQgcGFyYW1ldHIgYmxvY2sgSURzICYgbGVuZ3RocyBtYXRjaCB3aGF0IHdlIGV4cGVjdA0KPiA+ ICAgICAgICAgLSBVc2UgZGVmaW5lcyBmb3Igb2Zmc2V0cw0KPiA+ICAgLSAibnZkaW1tL29jeGw6 IEZvcndhcmQgZXZlbnRzIHRvIHVzZXJzcGFjZSINCj4gPiAgICAgICAgIC0gRG9uJ3QgZW5hYmxl IE5TQ1JBIGRvb3JiZWxsDQo+ID4gICAgICAgICAtIHJldHVybiAtRUJVU1kgaWYgdGhlIGV2ZW50 IGNvbnRleHQgaXMgYWxyZWFkeSB1c2VkDQo+ID4gICAgICAgICAtIHJldHVybiAtRU5PREVWIGlm IElSUXMgY2Fubm90IGJlIG1hcHBlZA0KPiA+ICAgICAgICAgLSBUYWcgSVJRIHBvaW50ZXJzIHdp dGggX19pb21lbQ0KPiA+ICAgICAgICAgLSBEcm9wIG9jeGxwbWVtXyBwcmVmaXggZnJvbSBzdGF0 aWMgZnVuY3Rpb25zDQo+ID4gICAgICAgICAtIFByb3BvZ2F0ZSBlcnJvciBmcm9tIGV2ZW50ZmRf Y3R4X2ZkZ2V0DQo+ID4gICAgICAgICAtIEZpeCBlcnJvciBjaGVjayBpbiBjb3B5X3RvX3VzZXIN Cj4gPiAgICAgICAgIC0gRHJvcCBHTE9CQUxfTU1JT19DSElfTlNDUkEgKHRoaXMgc2hvdWxkIGJl IGluIHRoZSBvdmVyd3JpdGUNCj4gcGF0Y2gpDQo+ID4gICAgICAgICAtIERyb3AgdW51c2VkIGly cV9wZ21hcA0KPiA+ICAgICAgICAgLSBEb24ndCByZWRlZiBCSVRfVUxMDQo+ID4gICAtICJudmRp bW0vb2N4bDogQWRkIGRlYnVnIElPQ1RMcyINCj4gPiAgICAgICAgIC0gRWxpbWluYXRlIGNsZWFy aW5nIGxvb3AgKG5vdyBkb25lIGluIGFkbWluX2NvbW1hbmRfZXhlY3V0ZSgpDQo+ID4gICAgICAg ICAtIERyb3AgZHVtbXkgSU9DVExzIGlmIENPTkZJR19PQ1hMX1BNRU1fREVCVUcgaXMgbm90IHNl dA0KPiA+ICAgICAgICAgLSBHcm91cCBkZWJ1ZyBJT0NUTHMgdG9nZXRoZXIgJiBjb21tZW50IHRo YXQgdGhleSBtYXkgbm90IGJlDQo+IGF2YWlsYWJsZQ0KPiA+ICAgLSAibnZkaW1tL29jeGw6IEV4 cG9zZSBTTUFSVCBkYXRhIHZpYSBuZGN0bCINCj4gPiAgICAgICAgIC0gRHJvcCAncmMgPSAwOyBn b3RvIG91dDsnDQo+ID4gICAgICAgICAtIFByb3BvZ2F0ZSBlcnJvcnMgZnJvbSBuZGN0bF9zbWFy dCgpDQo+ID4gICAtICJudmRpbW0vb2N4bDogRXhwb3NlIHRoZSBzZXJpYWwgbnVtYmVyIGluIHN5 c2ZzIiAmICJudmRpbW0vb2N4bDoNCj4gRXhwb3NlIHRoZSBmaXJtd2FyZSB2ZXJzaW9uIGluIHN5 c2ZzIg0KPiA+ICAgICAgICAgLSBTcXVhc2ggdGhlc2UgMiBwYXRjaGVzIHRvZ2V0aGVyDQo+ID4g ICAgICAgICAtIEV4cG9zZSBkYXRhIGFzIGEgRElNTSBhdHRyaWJ1dGUgcmF0aGVyIHRoYW4gYW4g b2N4bHBtZW0NCj4gPiAgICAgICAgICAgYXR0cmlidXRlDQo+ID4gICAtICJudmRpbW0vb2N4bDog QWRkIGFuIElPQ1RMIHRvIHJlcXVlc3QgY29udHJvbGxlciBoZWFsdGggJiBwZXJmIGRhdGEiDQo+ ID4gICAgICAgICAtIFJld29yZCBibHVyYg0KPiA+ICAgLSAibnZkaW1tL29jeGw6IEltcGxlbWVu dCB0aGUgaGVhcnRiZWF0IGNvbW1hbmQiDQo+ID4gICAgICAgICAtIFByb3BvZ2F0ZSByYyBpbiBw cm9iZSgpDQo+ID4NCj4gPiBWMzoNCj4gPiAgIC0gUmViYXNlIGFnYWluc3QgbmV4dC9uZXh0LTIw MjAwMjIwDQo+ID4gICAtIE1vdmUgZHJpdmVyIHRvIGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93 ZXJudiwgd2Ugbm93IGV4cGVjdCB0aGlzDQo+ID4gICAgIGRyaXZlciB0byBnbyB1cHN0cmVhbSB2 aWEgdGhlIHBvd2VycGMgdHJlZQ0KPiA+ICAgLSAibnZkaW1tL29jeGw6IEltcGxlbWVudCB0aGUg UmVhZCBFcnJvciBMb2cgY29tbWFuZCINCj4gPiAgICAgICAgIC0gRml4IGJhZCBoZWFkZXIgcGF0 aA0KPiA+ICAgLSAibnZkaW1tL29jeGw6IFJlYWQgdGhlIGNhcGFiaWxpdHkgcmVnaXN0ZXJzICYg d2FpdCBmb3IgZGV2aWNlIHJlYWR5Ig0KPiA+ICAgICAgICAgLSBGaXggb3ZlcmxhcHBpbmcgbWFz a3MgYmV0d2VlbiByZWFkaW5lc3NfdGltZW91dCAmDQo+IG1lbW9yeV9hdmFpbGFibGVfdGltZW91 dA0KPiA+ICAgLSAibnZkaW1tOiBBZGQgZHJpdmVyIGZvciBPcGVuQ0FQSSBTdG9yYWdlIENsYXNz IE1lbW9yeSINCj4gPiAgICAgICAgIC0gQWRkcmVzcyBtaW5vciByZXZpZXcgY29tbWVudHMgZnJv bSBKb25hdGhhbiBDYW1lcm9uDQo+ID4gICAgICAgICAtIFJlbW92ZSBhdHRyaWJ1dGVzDQo+ID4g ICAgICAgICAtIERlZmF1bHQgdG8gbW9kdWxlIGlmIGJ1aWxkaW5nIExJQk5WRElNTQ0KPiA+ICAg ICAgICAgLSBQcm9wb2dhdGUgZXJyb3JzIHVwIGZyb20gY2FsbGVkIGZ1bmN0aW9ucyBpbiBwcm9i ZSgpDQo+ID4gICAtICJudmRpbW0vb2N4bDogRXhwb3NlIFNNQVJUIGRhdGEgdmlhIG5kY3RsIg0K PiA+ICAgICAgICAgLSBQYWNrIGF0dHJpYnV0ZXMgaW4gc3RydWN0DQo+ID4gICAgICAgICAtIFN1 cHBvcnQgZGlmZmVyZW50IHNpemUgU01BUlQgYnVmZmVycyBmb3IgY29tcGF0aWJpbGl0eSB3aXRo IG5ld2VyDQo+ID4gICAgICAgICAgIG5kY3RscyB0aGF0IG1heSB3YW50IG1vcmUgU01BUlQgYXR0 cmlicyB0aGFuIHdlIHByb3ZpZGUNCj4gPiAgICAgICAgIC0gUmV3b3JrIHRvIHRvIHVzZSBORF9D TURfQ0FMTCBpbnN0ZWFkIG9mIE5EX0NNRF9TTUFSVA0KPiA+ICAgLSBkcm9wICJvY3hsOiBGcmVl IGRldGFjaGVkIGNvbnRleHRzIGluIG9jeGxfY29udGV4dF9kZXRhY2hfYWxsKCkiDQo+ID4gICAt ICJwb3dlcnBjOiBNYXAgJiByZWxlYXNlIE9wZW5DQVBJIExQQyBtZW1vcnkiDQo+ID4gICAgICAg ICAtIFJlbW92ZSAnZXh0ZXJuJw0KPiA+ICAgICAgICAgLSBPbmx5IGF2YWlsYWJsZSB3aXRoIENP TkZJR19NRU1PUllfSE9UUExVR19TUEFSU0UNCj4gPiAgIC0gIm9jeGw6IFRhbGx5IHVwIHRoZSBM UEMgbWVtb3J5IG9uIGEgbGluayAmIGFsbG93IGl0IHRvIGJlIG1hcHBlZCINCj4gPiAgICAgICAg IC0gQWRkcmVzcyBtaW5vciByZXZpZXcgY29tbWVudHMgZnJvbSBKb25hdGhhbiBDYW1lcm9uDQo+ ID4gICAtICJvY3hsOiBBZGQgZnVuY3Rpb25zIHRvIG1hcC91bm1hcCBMUEMgbWVtb3J5Ig0KPiA+ ICAgICAgICAgLSBTcGxpdCBkZXRlY3RlZCBtZW1vcnkgbWVzc2FnZSBpbnRvIGEgc2VwYXJhdGUg cGF0Y2gNCj4gPiAgICAgICAgIC0gQWRkcmVzcyBtaW5vciByZXZpZXcgY29tbWVudHMgZnJvbSBK b25hdGhhbiBDYW1lcm9uDQo+ID4gICAgICAgICAtIEFkZCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3 aHkgdW5tYXBfbHBjX21lbSBpcyBpbg0KPiBkZWNvbmZpZ3VyZV9hZnUNCj4gPiAgIC0gIm52ZGlt bS9vY3hsOiBBZGQgc3VwcG9ydCBmb3IgQWRtaW4gY29tbWFuZHMiDQo+ID4gICAgICAgICAtIHVz ZSBzaXplb2YodTY0KSByYXRoZXIgdGhhbiAweDA4IHdoZW4gaXRlcmF0aW5nIHU2NHMNCj4gPiAg IC0gIm52ZGltbS9vY3hsOiBJbXBsZW1lbnQgdGhlIGhlYXJ0YmVhdCBjb21tYW5kIg0KPiA+ICAg ICAgICAgLSBGaXggdHlwbyBpbiBibHVyYg0KPiA+ICAgLSBBZGRyZXNzIGtlcm5lbCBkb2MgaXNz dWVzDQo+ID4gICAtIEVuc3VyZSBhbGwgdWFwaSBoZWFkZXJzIHVzZSBDODkgY29tcGF0aWJsZSBj b21tZW50cw0KPiA+ICAgLSBEcm9wIHBhdGNoZXMgZm9yIGZpcm13YXJlIHVwZGF0ZSAmIG92ZXJ3 cml0ZSwgdGhlc2Ugd2lsbCBiZQ0KPiA+ICAgICBzdWJtaXR0ZWQgbGF0ZXIgb25jZSBwYXRjaGVz IGFyZSBhdmFpbGFibGUgZm9yIG5kY3RsDQo+ID4gICAtIFJlbmFtZSBTQ00gdG8gT3BlbkNBUEkg UGVyc2lzdGVudCBNZW1vcnkNCj4gPg0KPiA+IFYyOg0KPiA+ICAgLSAicG93ZXJwYzogTWFwICYg cmVsZWFzZSBPcGVuQ0FQSSBMUEMgbWVtb3J5Ig0KPiA+ICAgICAgIC0gRml4ICNpZiAtPiAjaWZk ZWYNCj4gPiAgICAgICAtIHVzZSBwY2lfZGV2X2lkIHRvIGdldCB0aGUgYmRmbg0KPiA+ICAgICAg IC0gdXNlIF9fYmU2NCB0byBob2xkIGJlIGRhdGENCj4gPiAgICAgICAtIGluZGVudCBjaGVja19o b3RwbHVnX21lbW9yeV9hZGRyZXNzYWJsZSBjb3JyZWN0bHkNCj4gPiAgICAgICAtIFJlbW92ZSBl eHBvcnQgb2YgY2hlY2tfaG90cGx1Z19tZW1vcnlfYWRkcmVzc2FibGUNCj4gPiAgIC0gIm9jeGw6 IENvbmRpdGlvbmFsbHkgYmluZCBTQ00gZGV2aWNlcyB0byB0aGUgZ2VuZXJpYyBPQ1hMIGRyaXZl ciINCj4gPiAgICAgICAtIEltcHJvdmUgcGF0Y2ggZGVzY3JpcHRpb24gYW5kIHJlbW92ZSByZWR1 bmRhbnQgZGVmYXVsdA0KPiA+ICAgLSAibnZkaW1tOiBBZGQgZHJpdmVyIGZvciBPcGVuQ0FQSSBT dG9yYWdlIENsYXNzIE1lbW9yeSINCj4gPiAgICAgICAtIE1hcmsgYSBmZXcgZnVuY3MgYXMgc3Rh dGljIGFzIGlkZW50aWZpZWQgYnkgdGhlIDBkYXkgYm90DQo+ID4gICAgICAgLSBBZGQgT0NYTCBk ZXBlbmRhbmNpZXMgdG8gT0NYTF9TQ00NCj4gPiAgICAgICAtIFVzZSBtZW1jcHlfbWNzYWZlIGlu IHNjbV9uZGN0bF9jb25maWdfcmVhZA0KPiA+ICAgICAgIC0gUmVuYW1lIHNjbV9mb29fb2Zmc2V0 XzB4MDAgdG8gc2NtX2Zvb19oZWFkZXJfcGFyc2UgJiBhZGQgZG9jcw0KPiA+ICAgICAgIC0gTmFt ZSBESU1NIGF0dHJpYnMgIm9jeGwiIHJhdGhlciB0aGFuICJzY20iDQo+ID4gICAgICAgLSBTcGxp dCBvdXQgaW50byBiYXNlICsgbWFueSBmZWF0dXJlIHBhdGNoZXMNCj4gPiAgIC0gInBvd2VycGM6 IEVuYWJsZSBPcGVuQ0FQSSBTdG9yYWdlIENsYXNzIE1lbW9yeSBkcml2ZXIgb24gYmFyZQ0KPiBt ZXRhbCINCj4gPiAgICAgICAtIEJ1aWxkIERFVl9EQVggJiBmcmllbmRzIGFzIG1vZHVsZXMNCj4g PiAgIC0gIm9jeGw6IENvbmRpdGlvbmFsbHkgYmluZCBTQ00gZGV2aWNlcyB0byB0aGUgZ2VuZXJp YyBPQ1hMIGRyaXZlciINCj4gPiAgICAgICAtIFBhdGNoIGRyb3BwZWQgKGVhc3kgZW5vdWdoIHRv IG1haW50YWluIHRoaXMgb3V0IG9mIHRyZWUgZm9yDQo+IGRldmVsb3BtZW50KQ0KPiA+ICAgLSAi b2N4bDogVGFsbHkgdXAgdGhlIExQQyBtZW1vcnkgb24gYSBsaW5rICYgYWxsb3cgaXQgdG8gYmUg bWFwcGVkIg0KPiA+ICAgICAgIC0gQWRkIGEgd2FybmluZyBpZiBhbiB1bm1hdGNoZWQgbHBjX3Jl bGVhc2UgaXMgY2FsbGVkDQo+ID4gICAtICJvY3hsOiBBZGQgZnVuY3Rpb25zIHRvIG1hcC91bm1h cCBMUEMgbWVtb3J5Ig0KPiA+ICAgICAgIC0gVXNlIEVYUE9SVF9TWU1CT0xfR1BMDQo+ID4NCj4g Pg0KPiA+IEFsYXN0YWlyIEQnU2lsdmEgKDI1KToNCj4gPiAgIHBvd2VycGMvcG93ZXJudjogQWRk IE9QQUwgY2FsbHMgZm9yIExQQyBtZW1vcnkgYWxsb2MvcmVsZWFzZQ0KPiA+ICAgbW0vbWVtb3J5 X2hvdHBsdWc6IEFsbG93IGNoZWNrX2hvdHBsdWdfbWVtb3J5X2FkZHJlc3NhYmxlIHRvIGJlDQo+ IGNhbGxlZA0KPiA+ICAgICBmcm9tIGRyaXZlcnMNCj4gPiAgIHBvd2VycGMvcG93ZXJudjogTWFw ICYgcmVsZWFzZSBPcGVuQ0FQSSBMUEMgbWVtb3J5DQo+ID4gICBvY3hsOiBSZW1vdmUgdW5uZWNl c3NhcnkgZXh0ZXJucw0KPiA+ICAgb2N4bDogQWRkcmVzcyBrZXJuZWwgZG9jIGVycm9ycyAmIHdh cm5pbmdzDQo+ID4gICBvY3hsOiBUYWxseSB1cCB0aGUgTFBDIG1lbW9yeSBvbiBhIGxpbmsgJiBh bGxvdyBpdCB0byBiZSBtYXBwZWQNCj4gPiAgIG9jeGw6IEFkZCBmdW5jdGlvbnMgdG8gbWFwL3Vu bWFwIExQQyBtZW1vcnkNCj4gPiAgIG9jeGw6IEVtaXQgYSBsb2cgbWVzc2FnZSBzaG93aW5nIGhv dyBtdWNoIExQQyBtZW1vcnkgd2FzIGRldGVjdGVkDQo+ID4gICBvY3hsOiBTYXZlIHRoZSBkZXZp Y2Ugc2VyaWFsIG51bWJlciBpbiBvY3hsX2ZuDQo+ID4gICBudmRpbW06IEFkZCBkcml2ZXIgZm9y IE9wZW5DQVBJIFBlcnNpc3RlbnQgTWVtb3J5DQo+ID4gICBwb3dlcnBjOiBFbmFibGUgdGhlIE9w ZW5DQVBJIFBlcnNpc3RlbnQgTWVtb3J5IGRyaXZlciBmb3INCj4gPiAgICAgcG93ZXJudl9kZWZj b25maWcNCj4gPiAgIG52ZGltbS9vY3hsOiBBZGQgcmVnaXN0ZXIgYWRkcmVzc2VzICYgc3RhdHVz IHZhbHVlcyB0byB0aGUgaGVhZGVyDQo+ID4gICBudmRpbW0vb2N4bDogUmVhZCB0aGUgY2FwYWJp bGl0eSByZWdpc3RlcnMgJiB3YWl0IGZvciBkZXZpY2UgcmVhZHkNCj4gPiAgIG52ZGltbS9vY3hs OiBBZGQgc3VwcG9ydCBmb3IgQWRtaW4gY29tbWFuZHMNCj4gPiAgIG52ZGltbS9vY3hsOiBSZWdp c3RlciBhIGNoYXJhY3RlciBkZXZpY2UgZm9yIHVzZXJzcGFjZSB0byBpbnRlcmFjdA0KPiA+ICAg ICB3aXRoDQo+ID4gICBudmRpbW0vb2N4bDogSW1wbGVtZW50IHRoZSBSZWFkIEVycm9yIExvZyBj b21tYW5kDQo+ID4gICBudmRpbW0vb2N4bDogQWRkIGNvbnRyb2xsZXIgZHVtcCBJT0NUTHMNCj4g PiAgIG52ZGltbS9vY3hsOiBBZGQgYW4gSU9DVEwgdG8gcmVwb3J0IGNvbnRyb2xsZXIgc3RhdGlz dGljcw0KPiA+ICAgbnZkaW1tL29jeGw6IEZvcndhcmQgZXZlbnRzIHRvIHVzZXJzcGFjZQ0KPiA+ ICAgbnZkaW1tL29jeGw6IEFkZCBhbiBJT0NUTCB0byByZXF1ZXN0IGNvbnRyb2xsZXIgaGVhbHRo ICYgcGVyZiBkYXRhDQo+ID4gICBudmRpbW0vb2N4bDogSW1wbGVtZW50IHRoZSBoZWFydGJlYXQg Y29tbWFuZA0KPiA+ICAgbnZkaW1tL29jeGw6IEFkZCBkZWJ1ZyBJT0NUTHMNCj4gPiAgIG52ZGlt bS9vY3hsOiBFeHBvc2UgU01BUlQgZGF0YSB2aWEgbmRjdGwNCj4gPiAgIG52ZGltbS9vY3hsOiBF eHBvc2UgdGhlIHNlcmlhbCBudW1iZXIgJiBmaXJtd2FyZSB2ZXJzaW9uIGluIHN5c2ZzDQo+ID4g ICBNQUlOVEFJTkVSUzogQWRkIG15c2VsZiAmIG52ZGltbS9vY3hsIHRvIG9jeGwNCj4gPg0KPiA+ ICAuLi4vdXNlcnNwYWNlLWFwaS9pb2N0bC9pb2N0bC1udW1iZXIucnN0ICAgICAgfCAgICAxICsN Cj4gPiAgTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg MyArDQo+ID4gIGFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnICAgICAgICB8 ICAgIDUgKw0KPiA+ICBhcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vb3BhbC1hcGkuaCAgICAgICAg ICAgfCAgICAyICsNCj4gPiAgYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL29wYWwuaCAgICAgICAg ICAgICAgIHwgICAgMiArDQo+ID4gIGFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbnYtb2N4bC5o ICAgICAgICAgICB8ICAgNDIgKy0NCj4gPiAgYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52 L29jeGwuYyAgICAgICAgIHwgICA0MyArDQo+ID4gIGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93 ZXJudi9vcGFsLWNhbGwuYyAgICB8ICAgIDIgKw0KPiA+ICBkcml2ZXJzL21pc2Mvb2N4bC9jb25m aWcuYyAgICAgICAgICAgICAgICAgICAgfCAgIDc0ICstDQo+ID4gIGRyaXZlcnMvbWlzYy9vY3hs L2NvcmUuYyAgICAgICAgICAgICAgICAgICAgICB8ICAgNjEgKw0KPiA+ICBkcml2ZXJzL21pc2Mv b2N4bC9saW5rLmMgICAgICAgICAgICAgICAgICAgICAgfCAgIDYwICsNCj4gPiAgZHJpdmVycy9t aXNjL29jeGwvb2N4bF9pbnRlcm5hbC5oICAgICAgICAgICAgIHwgICA0NSArLQ0KPiA+ICBkcml2 ZXJzL252ZGltbS9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsNCj4gPiAg ZHJpdmVycy9udmRpbW0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArDQo+ ID4gIGRyaXZlcnMvbnZkaW1tL29jeGwvS2NvbmZpZyAgICAgICAgICAgICAgICAgICB8ICAgMjEg Kw0KPiA+ICBkcml2ZXJzL252ZGltbS9vY3hsL01ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAg ICA3ICsNCj4gPiAgZHJpdmVycy9udmRpbW0vb2N4bC9tYWluLmMgICAgICAgICAgICAgICAgICAg IHwgMTk3NSArKysrKysrKysrKysrKysrKw0KPiA+ICBkcml2ZXJzL252ZGltbS9vY3hsL29jeGxw bWVtLmggICAgICAgICAgICAgICAgfCAgMTk3ICsrDQo+ID4gIGRyaXZlcnMvbnZkaW1tL29jeGwv b2N4bHBtZW1faW50ZXJuYWwuYyAgICAgICB8ICAyODAgKysrDQo+ID4gIGluY2x1ZGUvbGludXgv bWVtb3J5X2hvdHBsdWcuaCAgICAgICAgICAgICAgICB8ICAgIDUgKw0KPiA+ICBpbmNsdWRlL21p c2Mvb2N4bC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTIyICstDQo+ID4gIGluY2x1 ZGUvdWFwaS9saW51eC9uZGN0bC5oICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKw0KPiA+ICBp bmNsdWRlL3VhcGkvbnZkaW1tL29jeGxwbWVtLmggICAgICAgICAgICAgICAgfCAgMTI3ICsrDQo+ ID4gIG1tL21lbW9yeV9ob3RwbHVnLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQg Ky0NCj4gPiAgMjQgZmlsZXMgY2hhbmdlZCwgMjk4MyBpbnNlcnRpb25zKCspLCA5OSBkZWxldGlv bnMoLSkgIGNyZWF0ZSBtb2RlDQo+ID4gMTAwNjQ0IGRyaXZlcnMvbnZkaW1tL29jeGwvS2NvbmZp ZyAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gZHJpdmVycy9udmRpbW0vb2N4bC9NYWtlZmlsZSAg Y3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gZHJpdmVycy9udmRpbW0vb2N4bC9tYWluLmMgIGNyZWF0 ZSBtb2RlIDEwMDY0NA0KPiA+IGRyaXZlcnMvbnZkaW1tL29jeGwvb2N4bHBtZW0uaCAgY3JlYXRl IG1vZGUgMTAwNjQ0DQo+ID4gZHJpdmVycy9udmRpbW0vb2N4bC9vY3hscG1lbV9pbnRlcm5hbC5j DQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3VhcGkvbnZkaW1tL29jeGxwbWVtLmgN Cj4gPg0KPiA+IC0tDQo+ID4gMi4yNC4xDQo+ID4NCg0KDQotLSANCkFsYXN0YWlyIEQnU2lsdmEg ICAgICAgICAgIG1vYjogMDQyMyA3NjIgODE5DQpza3lwZTogYWxhc3RhaXJfZHNpbHZhICAgICBt c246IGFsYXN0YWlyQGQtc2lsdmEub3JnDQpibG9nOiBodHRwOi8vYWxhc3RhaXIuZC1zaWx2YS5v cmcgICAgVHdpdHRlcjogQEV2aWxEZWVjZQ0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KTGludXgtbnZkaW1tIG1haWxpbmcgbGlzdCAtLSBsaW51eC1udmRp bW1AbGlzdHMuMDEub3JnClRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwgdG8gbGludXgtbnZk aW1tLWxlYXZlQGxpc3RzLjAxLm9yZwo= 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=-0.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no 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 A5EAEC2BA12 for ; Wed, 1 Apr 2020 22:44:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6A11D2078C for ; Wed, 1 Apr 2020 22:44:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (4096-bit key) header.d=d-silva.org header.i=@d-silva.org header.b="Q+X9bQgx" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388419AbgDAWob (ORCPT ); Wed, 1 Apr 2020 18:44:31 -0400 Received: from ushosting.nmnhosting.com ([66.55.73.32]:56952 "EHLO ushosting.nmnhosting.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388386AbgDAWo3 (ORCPT ); Wed, 1 Apr 2020 18:44:29 -0400 Received: from mail2.nmnhosting.com (unknown [202.169.106.97]) by ushosting.nmnhosting.com (Postfix) with ESMTPS id 22B052DC3330; Thu, 2 Apr 2020 09:44:27 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=d-silva.org; s=201810a; t=1585781068; bh=WUswt0ThdKMOtAdHSGA44cKKcSd3ehspVRkSu90GPuc=; h=From:To:Cc:References:In-Reply-To:Subject:Date:From; b=Q+X9bQgxOtA5bsZVhJSZiti3BRxki0C2mffeI2DXnUE3CkLpmXE+kHLmtH/P46E1P CRNkH9f0LIOdAdxEZvULLLR9giWg7DPYwZcdCmMEAVaoiZf0mpRES3bQ+dIci0dZ6x CVaZX+aQc/i3CyN/22RLJ/4ajJUGOIhqkQUOKBgolmlxwZA9bAlInBjqTXLhoBGPvz MrmXGWiKCh1yXwT8R/cvfIcfpjof2x6il0XWMjXLd9wAhLidMIuUGA9bZ1Ov+W8tYP K184yedXzhaatalU7J8WG1B7/MVjTmz2Eo+8Jij4j2kTfhJfTrS9yjlm/Evk9Ill58 qun6TuxLAc8jsopXtUXlTNc/ZEv2T+v/RAFRzhyeGOAzKd6fgRppuL9mXityB/qQ7r GSMJBvNxivd25f6qEbC2bvr/mJ293TsXG5IQWRqqr8utNP719IajcEdC8G4gt6hUHb cjxY3jO0DOvv+7BUAujvJT0hf0iu7LRil/MWCByVAWIdyiOEu+CJ2bDK7IfFA/KOrQ iwNS+i4Mc1HVyv9nnJfGBV5tk5ovsNQfuMikZKT8qtLwU5aSYfTvMTfCLLOE7r8A8F s4RBIGEvKEvI2P7pI93f3BmJcEUa2TiqAsIz/suS0dy9yWHtjBaIc8ZlLIX+bBx35e RDq8iXRDScrTJTbX8OnnWyxg= Received: from Hawking (ntp.lan [10.0.1.1]) (authenticated bits=0) by mail2.nmnhosting.com (8.15.2/8.15.2) with ESMTPSA id 031MiEaB088120 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 2 Apr 2020 09:44:16 +1100 (AEDT) (envelope-from alastair@d-silva.org) From: "Alastair D'Silva" To: "'Dan Williams'" Cc: "'Aneesh Kumar K . V'" , "'Oliver O'Halloran'" , "'Benjamin Herrenschmidt'" , "'Paul Mackerras'" , "'Michael Ellerman'" , "'Frederic Barrat'" , "'Andrew Donnellan'" , "'Arnd Bergmann'" , "'Greg Kroah-Hartman'" , "'Vishal Verma'" , "'Dave Jiang'" , "'Ira Weiny'" , "'Andrew Morton'" , "'Mauro Carvalho Chehab'" , "'David S. Miller'" , "'Rob Herring'" , "'Anton Blanchard'" , "'Krzysztof Kozlowski'" , "'Mahesh Salgaonkar'" , "'Madhavan Srinivasan'" , "=?utf-8?Q?'C=C3=A9dric_Le_Goater'?=" , "'Anju T Sudhakar'" , "'Hari Bathini'" , "'Thomas Gleixner'" , "'Greg Kurz'" , "'Nicholas Piggin'" , "'Masahiro Yamada'" , "'Alexey Kardashevskiy'" , "'Linux Kernel Mailing List'" , "'linuxppc-dev'" , "'linux-nvdimm'" , "'Linux MM'" References: <20200327071202.2159885-1-alastair@d-silva.org> In-Reply-To: Subject: RE: [PATCH v4 00/25] Add support for OpenCAPI Persistent Memory devices Date: Thu, 2 Apr 2020 09:44:13 +1100 Message-ID: <2d6901d60877$16aa7a90$43ff6fb0$@d-silva.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Outlook 16.0 Content-Language: en-au Thread-Index: AQJ5L4Hn/mp5p0p1jYAFWLJ+xmWSbgGC/kF4pxJ1VcA= X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.6.2 (mail2.nmnhosting.com [10.0.1.20]); Thu, 02 Apr 2020 09:44:23 +1100 (AEDT) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > -----Original Message----- > From: Dan Williams > Sent: Wednesday, 1 April 2020 7:48 PM > To: Alastair D'Silva > Cc: Aneesh Kumar K . V ; Oliver O'Halloran > ; Benjamin Herrenschmidt > ; Paul Mackerras ; Michael > Ellerman ; Frederic Barrat = ; > Andrew Donnellan ; Arnd Bergmann > ; Greg Kroah-Hartman ; > Vishal Verma ; Dave Jiang > ; Ira Weiny ; Andrew Morton > ; Mauro Carvalho Chehab > ; David S. Miller ; > Rob Herring ; Anton Blanchard ; > Krzysztof Kozlowski ; Mahesh Salgaonkar > ; Madhavan Srinivasan > ; C=C3=A9dric Le Goater ; Anju = T > Sudhakar ; Hari Bathini > ; Thomas Gleixner ; Greg > Kurz ; Nicholas Piggin ; Masahiro > Yamada ; Alexey Kardashevskiy > ; Linux Kernel Mailing List = ; > linuxppc-dev ; linux-nvdimm nvdimm@lists.01.org>; Linux MM > Subject: Re: [PATCH v4 00/25] Add support for OpenCAPI Persistent = Memory > devices >=20 > On Sun, Mar 29, 2020 at 10:23 PM Alastair D'Silva = > wrote: > > > > This series adds support for OpenCAPI Persistent Memory devices on > > bare metal (arch/powernv), exposing them as nvdimms so that we can > > make use of the existing infrastructure. There already exists a = driver > > for the same devices abstracted through PowerVM (arch/pseries): > > arch/powerpc/platforms/pseries/papr_scm.c > > > > These devices are connected via OpenCAPI, and present as LPC (lowest > coherence point) memory to the system, practically, that means that > memory on these cards could be treated as conventional, cache-coherent > memory. > > > > Since the devices are connected via OpenCAPI, they are not = enumerated > via ACPI. Instead, OpenCAPI links present as pseudo-PCI bridges, with > devices below them. > > > > This series introduces a driver that exposes the memory on these = cards as > nvdimms, with each card getting it's own bus. This is somewhat = complicated > by the fact that the cards do not have out of band persistent storage = for > metadata, so 1 SECTION_SIZE's (see SPARSEMEM) worth of storage is = carved > out of the top of the card storage to implement the ndctl_config_* = calls. >=20 > Is it really tied to section-size? Can't that change based on the = configured > page-size? It's not clear to me why that would be the choice, but I'll = dig into > the implementation. >=20 I had tried using PAGE_SIZE, but ran into problems carving off just 1 = page and handing it to the kernel, while leaving the rest as pmem. That = was a while ago though, so maybe I should retry it. > > The driver is not responsible for configuring the NPU (NVLink = Processing > Unit) BARs to map the LPC memory from the card into the system's = physical > address space, instead, it requests this to be done via OPAL calls = (typically > implemented by Skiboot). >=20 > Are OPAL calls similar to ACPI DSMs? I.e. methods for the OS to invoke > platform firmware services? What's Skiboot? >=20 Yes, OPAL is the interface to firmware for POWER. Skiboot is the = open-source (and only) implementation of OPAL. > > > > The series is structured as follows: > > - Required infrastructure changes & cleanup > > - A minimal driver implementation > > - Implementing additional features within the driver >=20 > Thanks for the intro and the changelog! >=20 > > > > Changelog: > > V4: > > - Rebase on next-20200320 >=20 > Do you have dependencies on other material that's in -next? Otherwise = - > next is only a viable development baseline if you are going to merge = through > Andrew's tree. >=20 > > - Bump copyright to 2020 > > - Ensure all uapi headers use C89 compatible comments (missed > ocxlpmem.h) > > - Move the driver back to drivers/nvdimm/ocxl, after confirmation > > that this location is desirable > > - Rename ocxl.c to ocxlpmem.c (+ support files) > > - Rename all ocxl_pmem to ocxlpmem > > - Address checkpatch --strict issues > > - "powerpc/powernv: Add OPAL calls for LPC memory alloc/release" > > - Pass base address as __be64 > > - "ocxl: Tally up the LPC memory on a link & allow it to be = mapped" > > - Address checkpatch spacing warnings > > - Reword blurb > > - Reword size description for ocxl_link_add_lpc_mem() > > - Add an early exit in ocxl_link_lpc_release() to avoid = triggering > > bogus warnings if called after ocxl_link_lpc_map() fails > > - "powerpc/powernv: Add OPAL calls for LPC memory alloc/release" > > - Reword blurb > > - "powerpc/powernv: Map & release OpenCAPI LPC memory" > > - Reword blurb > > - Move minor_idr init from file_init() to ocxlpmem_init() (fixes = runtime > error > > in "nvdimm: Add driver for OpenCAPI Persistent Memory") > > - Wrap long lines > > - "nvdimm: Add driver for OpenCAPI Storage Class Memory" > > - Remove '+ 1' workround from serial number->cookie = assignment > > - Drop out of memory message for ocxlpmem in probe() > > - Fix leaks of ocxlpmem & ocxlpmem->ocxl_fn in probe() > > - remove struct ocxlpmem_function0, it didn't value add > > - factor out err_unregistered label in probe > > - Address more checkpatch warnings > > - get/put the pci dev on probe/free > > - Drop ocxlpmem_ prefix from static functions > > - Propogate errors up from called functions in probe() > > - Set MODULE_LICENSE to GPLv2 > > - Add myself as module author > > - Call nvdimm_bus_unregister() in remove() to release = references > > - Don't call devm_memunmap on metadata_address, the release > handler on > > the device already deals with this > > - "nvdimm/ocxl: Read the capability registers & wait for device = ready" > > - Fix mask for read_latency > > - Fold in is_usable logic into timeout to remove error = message race > > - propogate bad rc from read_device_metadata > > - "nvdimm/ocxl: Add register addresses & status values to the = header" > > - Add comments for register abbreviations where names have = been > > expanded > > - Add missing status for blocked on background task > > - Alias defines for firmware update status to show that the = duplication > > of values is intentional > > - "nvdimm/ocxl: Register a character device for userspace to = interact with" > > - Add lock around minors IDR, delete the cdev before > device_unregister > > - Propogate errors up from called functions in probe() > > - "nvdimm/ocxl: Add support for Admin commands" > > - Fix typo in setup_command_data error message, and drop = 'ocxl' from > it > > - Drop vestigial CHI read from admin_command_request > > - Change command ID mismatch message to dev_err, and return = an > error > > - Use jiffies to implement admin_command_complete_timeout() > > - Flesh out blurb > > - Create a wrapper to issue the command & wait for timeout > > - "nvdimm/ocxl: Add support for near storage commands" > > - dropped (will submit with the patches for nvdimm = overwrite) > > - "nvdimm/ocxl: Implement the Read Error Log command" > > - Remove stray blank line > > - change misplaced goto to an early exit in read_error_log > > - Inline error_log_offset_0x08 > > - Read WWID data as LE rather than host endian > > - Move the include of nvdimm/ocxlpmem.h to ocxl.c > > - Add padding after fwrevision in struct = ioctl_ocxl_pmem_error_log > > - Register IOCTL magic > > - Coerce pointers to __u64 in IOCTLs > > - "nvdimm/ocxl: Add controller dump IOCTLs" > > - Coerce pointers to __u64 in IOCTLs > > - Document expected IOCTL usage in blurb > > - Add missing rc check > > - Only populate up to the number of bytes returned by the = card, > > and return this length to the caller > > - Add missing header check > > - "nvdimm/ocxl: Add an IOCTL to report controller statistics" > > - Update to match the latest version of the spec > > - Verify that parametr block IDs & lengths match what we = expect > > - Use defines for offsets > > - "nvdimm/ocxl: Forward events to userspace" > > - Don't enable NSCRA doorbell > > - return -EBUSY if the event context is already used > > - return -ENODEV if IRQs cannot be mapped > > - Tag IRQ pointers with __iomem > > - Drop ocxlpmem_ prefix from static functions > > - Propogate error from eventfd_ctx_fdget > > - Fix error check in copy_to_user > > - Drop GLOBAL_MMIO_CHI_NSCRA (this should be in the = overwrite > patch) > > - Drop unused irq_pgmap > > - Don't redef BIT_ULL > > - "nvdimm/ocxl: Add debug IOCTLs" > > - Eliminate clearing loop (now done in = admin_command_execute() > > - Drop dummy IOCTLs if CONFIG_OCXL_PMEM_DEBUG is not set > > - Group debug IOCTLs together & comment that they may not be > available > > - "nvdimm/ocxl: Expose SMART data via ndctl" > > - Drop 'rc =3D 0; goto out;' > > - Propogate errors from ndctl_smart() > > - "nvdimm/ocxl: Expose the serial number in sysfs" & "nvdimm/ocxl: > Expose the firmware version in sysfs" > > - Squash these 2 patches together > > - Expose data as a DIMM attribute rather than an ocxlpmem > > attribute > > - "nvdimm/ocxl: Add an IOCTL to request controller health & perf = data" > > - Reword blurb > > - "nvdimm/ocxl: Implement the heartbeat command" > > - Propogate rc in probe() > > > > V3: > > - Rebase against next/next-20200220 > > - Move driver to arch/powerpc/platforms/powernv, we now expect = this > > driver to go upstream via the powerpc tree > > - "nvdimm/ocxl: Implement the Read Error Log command" > > - Fix bad header path > > - "nvdimm/ocxl: Read the capability registers & wait for device = ready" > > - Fix overlapping masks between readiness_timeout & > memory_available_timeout > > - "nvdimm: Add driver for OpenCAPI Storage Class Memory" > > - Address minor review comments from Jonathan Cameron > > - Remove attributes > > - Default to module if building LIBNVDIMM > > - Propogate errors up from called functions in probe() > > - "nvdimm/ocxl: Expose SMART data via ndctl" > > - Pack attributes in struct > > - Support different size SMART buffers for compatibility = with newer > > ndctls that may want more SMART attribs than we provide > > - Rework to to use ND_CMD_CALL instead of ND_CMD_SMART > > - drop "ocxl: Free detached contexts in ocxl_context_detach_all()" > > - "powerpc: Map & release OpenCAPI LPC memory" > > - Remove 'extern' > > - Only available with CONFIG_MEMORY_HOTPLUG_SPARSE > > - "ocxl: Tally up the LPC memory on a link & allow it to be = mapped" > > - Address minor review comments from Jonathan Cameron > > - "ocxl: Add functions to map/unmap LPC memory" > > - Split detected memory message into a separate patch > > - Address minor review comments from Jonathan Cameron > > - Add a comment explaining why unmap_lpc_mem is in > deconfigure_afu > > - "nvdimm/ocxl: Add support for Admin commands" > > - use sizeof(u64) rather than 0x08 when iterating u64s > > - "nvdimm/ocxl: Implement the heartbeat command" > > - Fix typo in blurb > > - Address kernel doc issues > > - Ensure all uapi headers use C89 compatible comments > > - Drop patches for firmware update & overwrite, these will be > > submitted later once patches are available for ndctl > > - Rename SCM to OpenCAPI Persistent Memory > > > > V2: > > - "powerpc: Map & release OpenCAPI LPC memory" > > - Fix #if -> #ifdef > > - use pci_dev_id to get the bdfn > > - use __be64 to hold be data > > - indent check_hotplug_memory_addressable correctly > > - Remove export of check_hotplug_memory_addressable > > - "ocxl: Conditionally bind SCM devices to the generic OCXL = driver" > > - Improve patch description and remove redundant default > > - "nvdimm: Add driver for OpenCAPI Storage Class Memory" > > - Mark a few funcs as static as identified by the 0day bot > > - Add OCXL dependancies to OCXL_SCM > > - Use memcpy_mcsafe in scm_ndctl_config_read > > - Rename scm_foo_offset_0x00 to scm_foo_header_parse & add = docs > > - Name DIMM attribs "ocxl" rather than "scm" > > - Split out into base + many feature patches > > - "powerpc: Enable OpenCAPI Storage Class Memory driver on bare > metal" > > - Build DEV_DAX & friends as modules > > - "ocxl: Conditionally bind SCM devices to the generic OCXL = driver" > > - Patch dropped (easy enough to maintain this out of tree for > development) > > - "ocxl: Tally up the LPC memory on a link & allow it to be = mapped" > > - Add a warning if an unmatched lpc_release is called > > - "ocxl: Add functions to map/unmap LPC memory" > > - Use EXPORT_SYMBOL_GPL > > > > > > Alastair D'Silva (25): > > powerpc/powernv: Add OPAL calls for LPC memory alloc/release > > mm/memory_hotplug: Allow check_hotplug_memory_addressable to be > called > > from drivers > > powerpc/powernv: Map & release OpenCAPI LPC memory > > ocxl: Remove unnecessary externs > > ocxl: Address kernel doc errors & warnings > > ocxl: Tally up the LPC memory on a link & allow it to be mapped > > ocxl: Add functions to map/unmap LPC memory > > ocxl: Emit a log message showing how much LPC memory was detected > > ocxl: Save the device serial number in ocxl_fn > > nvdimm: Add driver for OpenCAPI Persistent Memory > > powerpc: Enable the OpenCAPI Persistent Memory driver for > > powernv_defconfig > > nvdimm/ocxl: Add register addresses & status values to the header > > nvdimm/ocxl: Read the capability registers & wait for device ready > > nvdimm/ocxl: Add support for Admin commands > > nvdimm/ocxl: Register a character device for userspace to interact > > with > > nvdimm/ocxl: Implement the Read Error Log command > > nvdimm/ocxl: Add controller dump IOCTLs > > nvdimm/ocxl: Add an IOCTL to report controller statistics > > nvdimm/ocxl: Forward events to userspace > > nvdimm/ocxl: Add an IOCTL to request controller health & perf data > > nvdimm/ocxl: Implement the heartbeat command > > nvdimm/ocxl: Add debug IOCTLs > > nvdimm/ocxl: Expose SMART data via ndctl > > nvdimm/ocxl: Expose the serial number & firmware version in sysfs > > MAINTAINERS: Add myself & nvdimm/ocxl to ocxl > > > > .../userspace-api/ioctl/ioctl-number.rst | 1 + > > MAINTAINERS | 3 + > > arch/powerpc/configs/powernv_defconfig | 5 + > > arch/powerpc/include/asm/opal-api.h | 2 + > > arch/powerpc/include/asm/opal.h | 2 + > > arch/powerpc/include/asm/pnv-ocxl.h | 42 +- > > arch/powerpc/platforms/powernv/ocxl.c | 43 + > > arch/powerpc/platforms/powernv/opal-call.c | 2 + > > drivers/misc/ocxl/config.c | 74 +- > > drivers/misc/ocxl/core.c | 61 + > > drivers/misc/ocxl/link.c | 60 + > > drivers/misc/ocxl/ocxl_internal.h | 45 +- > > drivers/nvdimm/Kconfig | 2 + > > drivers/nvdimm/Makefile | 1 + > > drivers/nvdimm/ocxl/Kconfig | 21 + > > drivers/nvdimm/ocxl/Makefile | 7 + > > drivers/nvdimm/ocxl/main.c | 1975 = +++++++++++++++++ > > drivers/nvdimm/ocxl/ocxlpmem.h | 197 ++ > > drivers/nvdimm/ocxl/ocxlpmem_internal.c | 280 +++ > > include/linux/memory_hotplug.h | 5 + > > include/misc/ocxl.h | 122 +- > > include/uapi/linux/ndctl.h | 1 + > > include/uapi/nvdimm/ocxlpmem.h | 127 ++ > > mm/memory_hotplug.c | 4 +- > > 24 files changed, 2983 insertions(+), 99 deletions(-) create mode > > 100644 drivers/nvdimm/ocxl/Kconfig create mode 100644 > > drivers/nvdimm/ocxl/Makefile create mode 100644 > > drivers/nvdimm/ocxl/main.c create mode 100644 > > drivers/nvdimm/ocxl/ocxlpmem.h create mode 100644 > > drivers/nvdimm/ocxl/ocxlpmem_internal.c > > create mode 100644 include/uapi/nvdimm/ocxlpmem.h > > > > -- > > 2.24.1 > > --=20 Alastair D'Silva mob: 0423 762 819 skype: alastair_dsilva msn: alastair@d-silva.org blog: http://alastair.d-silva.org Twitter: @EvilDeece 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=-0.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no 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 9F3EAC43331 for ; Wed, 1 Apr 2020 22:46:31 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [203.11.71.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 235762071A for ; Wed, 1 Apr 2020 22:46:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (4096-bit key) header.d=d-silva.org header.i=@d-silva.org header.b="Q+X9bQgx" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 235762071A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=d-silva.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 48t1X44kFRzDqV3 for ; Thu, 2 Apr 2020 09:46:28 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=d-silva.org (client-ip=66.55.73.32; helo=ushosting.nmnhosting.com; envelope-from=alastair@d-silva.org; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=none (p=none dis=none) header.from=d-silva.org Authentication-Results: lists.ozlabs.org; dkim=pass (4096-bit key; unprotected) header.d=d-silva.org header.i=@d-silva.org header.a=rsa-sha256 header.s=201810a header.b=Q+X9bQgx; dkim-atps=neutral Received: from ushosting.nmnhosting.com (ushosting.nmnhosting.com [66.55.73.32]) by lists.ozlabs.org (Postfix) with ESMTP id 48t1Tr2LtVzDq6q for ; Thu, 2 Apr 2020 09:44:30 +1100 (AEDT) Received: from mail2.nmnhosting.com (unknown [202.169.106.97]) by ushosting.nmnhosting.com (Postfix) with ESMTPS id 22B052DC3330; Thu, 2 Apr 2020 09:44:27 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=d-silva.org; s=201810a; t=1585781068; bh=WUswt0ThdKMOtAdHSGA44cKKcSd3ehspVRkSu90GPuc=; h=From:To:Cc:References:In-Reply-To:Subject:Date:From; b=Q+X9bQgxOtA5bsZVhJSZiti3BRxki0C2mffeI2DXnUE3CkLpmXE+kHLmtH/P46E1P CRNkH9f0LIOdAdxEZvULLLR9giWg7DPYwZcdCmMEAVaoiZf0mpRES3bQ+dIci0dZ6x CVaZX+aQc/i3CyN/22RLJ/4ajJUGOIhqkQUOKBgolmlxwZA9bAlInBjqTXLhoBGPvz MrmXGWiKCh1yXwT8R/cvfIcfpjof2x6il0XWMjXLd9wAhLidMIuUGA9bZ1Ov+W8tYP K184yedXzhaatalU7J8WG1B7/MVjTmz2Eo+8Jij4j2kTfhJfTrS9yjlm/Evk9Ill58 qun6TuxLAc8jsopXtUXlTNc/ZEv2T+v/RAFRzhyeGOAzKd6fgRppuL9mXityB/qQ7r GSMJBvNxivd25f6qEbC2bvr/mJ293TsXG5IQWRqqr8utNP719IajcEdC8G4gt6hUHb cjxY3jO0DOvv+7BUAujvJT0hf0iu7LRil/MWCByVAWIdyiOEu+CJ2bDK7IfFA/KOrQ iwNS+i4Mc1HVyv9nnJfGBV5tk5ovsNQfuMikZKT8qtLwU5aSYfTvMTfCLLOE7r8A8F s4RBIGEvKEvI2P7pI93f3BmJcEUa2TiqAsIz/suS0dy9yWHtjBaIc8ZlLIX+bBx35e RDq8iXRDScrTJTbX8OnnWyxg= Received: from Hawking (ntp.lan [10.0.1.1]) (authenticated bits=0) by mail2.nmnhosting.com (8.15.2/8.15.2) with ESMTPSA id 031MiEaB088120 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 2 Apr 2020 09:44:16 +1100 (AEDT) (envelope-from alastair@d-silva.org) From: "Alastair D'Silva" To: "'Dan Williams'" References: <20200327071202.2159885-1-alastair@d-silva.org> In-Reply-To: Subject: RE: [PATCH v4 00/25] Add support for OpenCAPI Persistent Memory devices Date: Thu, 2 Apr 2020 09:44:13 +1100 Message-ID: <2d6901d60877$16aa7a90$43ff6fb0$@d-silva.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Outlook 16.0 Content-Language: en-au Thread-Index: AQJ5L4Hn/mp5p0p1jYAFWLJ+xmWSbgGC/kF4pxJ1VcA= X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.6.2 (mail2.nmnhosting.com [10.0.1.20]); Thu, 02 Apr 2020 09:44:23 +1100 (AEDT) X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: 'Madhavan Srinivasan' , 'Alexey Kardashevskiy' , 'Masahiro Yamada' , 'Oliver O'Halloran' , 'Mauro Carvalho Chehab' , 'Ira Weiny' , 'Rob Herring' , 'Dave Jiang' , 'linux-nvdimm' , "'Aneesh Kumar K . V'" , 'Krzysztof Kozlowski' , 'Anju T Sudhakar' , 'Mahesh Salgaonkar' , 'Andrew Donnellan' , 'Arnd Bergmann' , 'Greg Kurz' , 'Nicholas Piggin' , =?utf-8?Q?'C=C3=A9dric_Le_Goater'?= , 'Thomas Gleixner' , 'Hari Bathini' , 'Linux MM' , 'Greg Kroah-Hartman' , 'Linux Kernel Mailing List' , 'Vishal Verma' , 'Frederic Barrat' , 'Paul Mackerras' , 'Andrew Morton' , 'linuxppc-dev' , "'David S. Miller'" Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" > -----Original Message----- > From: Dan Williams > Sent: Wednesday, 1 April 2020 7:48 PM > To: Alastair D'Silva > Cc: Aneesh Kumar K . V ; Oliver O'Halloran > ; Benjamin Herrenschmidt > ; Paul Mackerras ; Michael > Ellerman ; Frederic Barrat = ; > Andrew Donnellan ; Arnd Bergmann > ; Greg Kroah-Hartman ; > Vishal Verma ; Dave Jiang > ; Ira Weiny ; Andrew Morton > ; Mauro Carvalho Chehab > ; David S. Miller ; > Rob Herring ; Anton Blanchard ; > Krzysztof Kozlowski ; Mahesh Salgaonkar > ; Madhavan Srinivasan > ; C=C3=A9dric Le Goater ; Anju = T > Sudhakar ; Hari Bathini > ; Thomas Gleixner ; Greg > Kurz ; Nicholas Piggin ; Masahiro > Yamada ; Alexey Kardashevskiy > ; Linux Kernel Mailing List = ; > linuxppc-dev ; linux-nvdimm nvdimm@lists.01.org>; Linux MM > Subject: Re: [PATCH v4 00/25] Add support for OpenCAPI Persistent = Memory > devices >=20 > On Sun, Mar 29, 2020 at 10:23 PM Alastair D'Silva = > wrote: > > > > This series adds support for OpenCAPI Persistent Memory devices on > > bare metal (arch/powernv), exposing them as nvdimms so that we can > > make use of the existing infrastructure. There already exists a = driver > > for the same devices abstracted through PowerVM (arch/pseries): > > arch/powerpc/platforms/pseries/papr_scm.c > > > > These devices are connected via OpenCAPI, and present as LPC (lowest > coherence point) memory to the system, practically, that means that > memory on these cards could be treated as conventional, cache-coherent > memory. > > > > Since the devices are connected via OpenCAPI, they are not = enumerated > via ACPI. Instead, OpenCAPI links present as pseudo-PCI bridges, with > devices below them. > > > > This series introduces a driver that exposes the memory on these = cards as > nvdimms, with each card getting it's own bus. This is somewhat = complicated > by the fact that the cards do not have out of band persistent storage = for > metadata, so 1 SECTION_SIZE's (see SPARSEMEM) worth of storage is = carved > out of the top of the card storage to implement the ndctl_config_* = calls. >=20 > Is it really tied to section-size? Can't that change based on the = configured > page-size? It's not clear to me why that would be the choice, but I'll = dig into > the implementation. >=20 I had tried using PAGE_SIZE, but ran into problems carving off just 1 = page and handing it to the kernel, while leaving the rest as pmem. That = was a while ago though, so maybe I should retry it. > > The driver is not responsible for configuring the NPU (NVLink = Processing > Unit) BARs to map the LPC memory from the card into the system's = physical > address space, instead, it requests this to be done via OPAL calls = (typically > implemented by Skiboot). >=20 > Are OPAL calls similar to ACPI DSMs? I.e. methods for the OS to invoke > platform firmware services? What's Skiboot? >=20 Yes, OPAL is the interface to firmware for POWER. Skiboot is the = open-source (and only) implementation of OPAL. > > > > The series is structured as follows: > > - Required infrastructure changes & cleanup > > - A minimal driver implementation > > - Implementing additional features within the driver >=20 > Thanks for the intro and the changelog! >=20 > > > > Changelog: > > V4: > > - Rebase on next-20200320 >=20 > Do you have dependencies on other material that's in -next? Otherwise = - > next is only a viable development baseline if you are going to merge = through > Andrew's tree. >=20 > > - Bump copyright to 2020 > > - Ensure all uapi headers use C89 compatible comments (missed > ocxlpmem.h) > > - Move the driver back to drivers/nvdimm/ocxl, after confirmation > > that this location is desirable > > - Rename ocxl.c to ocxlpmem.c (+ support files) > > - Rename all ocxl_pmem to ocxlpmem > > - Address checkpatch --strict issues > > - "powerpc/powernv: Add OPAL calls for LPC memory alloc/release" > > - Pass base address as __be64 > > - "ocxl: Tally up the LPC memory on a link & allow it to be = mapped" > > - Address checkpatch spacing warnings > > - Reword blurb > > - Reword size description for ocxl_link_add_lpc_mem() > > - Add an early exit in ocxl_link_lpc_release() to avoid = triggering > > bogus warnings if called after ocxl_link_lpc_map() fails > > - "powerpc/powernv: Add OPAL calls for LPC memory alloc/release" > > - Reword blurb > > - "powerpc/powernv: Map & release OpenCAPI LPC memory" > > - Reword blurb > > - Move minor_idr init from file_init() to ocxlpmem_init() (fixes = runtime > error > > in "nvdimm: Add driver for OpenCAPI Persistent Memory") > > - Wrap long lines > > - "nvdimm: Add driver for OpenCAPI Storage Class Memory" > > - Remove '+ 1' workround from serial number->cookie = assignment > > - Drop out of memory message for ocxlpmem in probe() > > - Fix leaks of ocxlpmem & ocxlpmem->ocxl_fn in probe() > > - remove struct ocxlpmem_function0, it didn't value add > > - factor out err_unregistered label in probe > > - Address more checkpatch warnings > > - get/put the pci dev on probe/free > > - Drop ocxlpmem_ prefix from static functions > > - Propogate errors up from called functions in probe() > > - Set MODULE_LICENSE to GPLv2 > > - Add myself as module author > > - Call nvdimm_bus_unregister() in remove() to release = references > > - Don't call devm_memunmap on metadata_address, the release > handler on > > the device already deals with this > > - "nvdimm/ocxl: Read the capability registers & wait for device = ready" > > - Fix mask for read_latency > > - Fold in is_usable logic into timeout to remove error = message race > > - propogate bad rc from read_device_metadata > > - "nvdimm/ocxl: Add register addresses & status values to the = header" > > - Add comments for register abbreviations where names have = been > > expanded > > - Add missing status for blocked on background task > > - Alias defines for firmware update status to show that the = duplication > > of values is intentional > > - "nvdimm/ocxl: Register a character device for userspace to = interact with" > > - Add lock around minors IDR, delete the cdev before > device_unregister > > - Propogate errors up from called functions in probe() > > - "nvdimm/ocxl: Add support for Admin commands" > > - Fix typo in setup_command_data error message, and drop = 'ocxl' from > it > > - Drop vestigial CHI read from admin_command_request > > - Change command ID mismatch message to dev_err, and return = an > error > > - Use jiffies to implement admin_command_complete_timeout() > > - Flesh out blurb > > - Create a wrapper to issue the command & wait for timeout > > - "nvdimm/ocxl: Add support for near storage commands" > > - dropped (will submit with the patches for nvdimm = overwrite) > > - "nvdimm/ocxl: Implement the Read Error Log command" > > - Remove stray blank line > > - change misplaced goto to an early exit in read_error_log > > - Inline error_log_offset_0x08 > > - Read WWID data as LE rather than host endian > > - Move the include of nvdimm/ocxlpmem.h to ocxl.c > > - Add padding after fwrevision in struct = ioctl_ocxl_pmem_error_log > > - Register IOCTL magic > > - Coerce pointers to __u64 in IOCTLs > > - "nvdimm/ocxl: Add controller dump IOCTLs" > > - Coerce pointers to __u64 in IOCTLs > > - Document expected IOCTL usage in blurb > > - Add missing rc check > > - Only populate up to the number of bytes returned by the = card, > > and return this length to the caller > > - Add missing header check > > - "nvdimm/ocxl: Add an IOCTL to report controller statistics" > > - Update to match the latest version of the spec > > - Verify that parametr block IDs & lengths match what we = expect > > - Use defines for offsets > > - "nvdimm/ocxl: Forward events to userspace" > > - Don't enable NSCRA doorbell > > - return -EBUSY if the event context is already used > > - return -ENODEV if IRQs cannot be mapped > > - Tag IRQ pointers with __iomem > > - Drop ocxlpmem_ prefix from static functions > > - Propogate error from eventfd_ctx_fdget > > - Fix error check in copy_to_user > > - Drop GLOBAL_MMIO_CHI_NSCRA (this should be in the = overwrite > patch) > > - Drop unused irq_pgmap > > - Don't redef BIT_ULL > > - "nvdimm/ocxl: Add debug IOCTLs" > > - Eliminate clearing loop (now done in = admin_command_execute() > > - Drop dummy IOCTLs if CONFIG_OCXL_PMEM_DEBUG is not set > > - Group debug IOCTLs together & comment that they may not be > available > > - "nvdimm/ocxl: Expose SMART data via ndctl" > > - Drop 'rc =3D 0; goto out;' > > - Propogate errors from ndctl_smart() > > - "nvdimm/ocxl: Expose the serial number in sysfs" & "nvdimm/ocxl: > Expose the firmware version in sysfs" > > - Squash these 2 patches together > > - Expose data as a DIMM attribute rather than an ocxlpmem > > attribute > > - "nvdimm/ocxl: Add an IOCTL to request controller health & perf = data" > > - Reword blurb > > - "nvdimm/ocxl: Implement the heartbeat command" > > - Propogate rc in probe() > > > > V3: > > - Rebase against next/next-20200220 > > - Move driver to arch/powerpc/platforms/powernv, we now expect = this > > driver to go upstream via the powerpc tree > > - "nvdimm/ocxl: Implement the Read Error Log command" > > - Fix bad header path > > - "nvdimm/ocxl: Read the capability registers & wait for device = ready" > > - Fix overlapping masks between readiness_timeout & > memory_available_timeout > > - "nvdimm: Add driver for OpenCAPI Storage Class Memory" > > - Address minor review comments from Jonathan Cameron > > - Remove attributes > > - Default to module if building LIBNVDIMM > > - Propogate errors up from called functions in probe() > > - "nvdimm/ocxl: Expose SMART data via ndctl" > > - Pack attributes in struct > > - Support different size SMART buffers for compatibility = with newer > > ndctls that may want more SMART attribs than we provide > > - Rework to to use ND_CMD_CALL instead of ND_CMD_SMART > > - drop "ocxl: Free detached contexts in ocxl_context_detach_all()" > > - "powerpc: Map & release OpenCAPI LPC memory" > > - Remove 'extern' > > - Only available with CONFIG_MEMORY_HOTPLUG_SPARSE > > - "ocxl: Tally up the LPC memory on a link & allow it to be = mapped" > > - Address minor review comments from Jonathan Cameron > > - "ocxl: Add functions to map/unmap LPC memory" > > - Split detected memory message into a separate patch > > - Address minor review comments from Jonathan Cameron > > - Add a comment explaining why unmap_lpc_mem is in > deconfigure_afu > > - "nvdimm/ocxl: Add support for Admin commands" > > - use sizeof(u64) rather than 0x08 when iterating u64s > > - "nvdimm/ocxl: Implement the heartbeat command" > > - Fix typo in blurb > > - Address kernel doc issues > > - Ensure all uapi headers use C89 compatible comments > > - Drop patches for firmware update & overwrite, these will be > > submitted later once patches are available for ndctl > > - Rename SCM to OpenCAPI Persistent Memory > > > > V2: > > - "powerpc: Map & release OpenCAPI LPC memory" > > - Fix #if -> #ifdef > > - use pci_dev_id to get the bdfn > > - use __be64 to hold be data > > - indent check_hotplug_memory_addressable correctly > > - Remove export of check_hotplug_memory_addressable > > - "ocxl: Conditionally bind SCM devices to the generic OCXL = driver" > > - Improve patch description and remove redundant default > > - "nvdimm: Add driver for OpenCAPI Storage Class Memory" > > - Mark a few funcs as static as identified by the 0day bot > > - Add OCXL dependancies to OCXL_SCM > > - Use memcpy_mcsafe in scm_ndctl_config_read > > - Rename scm_foo_offset_0x00 to scm_foo_header_parse & add = docs > > - Name DIMM attribs "ocxl" rather than "scm" > > - Split out into base + many feature patches > > - "powerpc: Enable OpenCAPI Storage Class Memory driver on bare > metal" > > - Build DEV_DAX & friends as modules > > - "ocxl: Conditionally bind SCM devices to the generic OCXL = driver" > > - Patch dropped (easy enough to maintain this out of tree for > development) > > - "ocxl: Tally up the LPC memory on a link & allow it to be = mapped" > > - Add a warning if an unmatched lpc_release is called > > - "ocxl: Add functions to map/unmap LPC memory" > > - Use EXPORT_SYMBOL_GPL > > > > > > Alastair D'Silva (25): > > powerpc/powernv: Add OPAL calls for LPC memory alloc/release > > mm/memory_hotplug: Allow check_hotplug_memory_addressable to be > called > > from drivers > > powerpc/powernv: Map & release OpenCAPI LPC memory > > ocxl: Remove unnecessary externs > > ocxl: Address kernel doc errors & warnings > > ocxl: Tally up the LPC memory on a link & allow it to be mapped > > ocxl: Add functions to map/unmap LPC memory > > ocxl: Emit a log message showing how much LPC memory was detected > > ocxl: Save the device serial number in ocxl_fn > > nvdimm: Add driver for OpenCAPI Persistent Memory > > powerpc: Enable the OpenCAPI Persistent Memory driver for > > powernv_defconfig > > nvdimm/ocxl: Add register addresses & status values to the header > > nvdimm/ocxl: Read the capability registers & wait for device ready > > nvdimm/ocxl: Add support for Admin commands > > nvdimm/ocxl: Register a character device for userspace to interact > > with > > nvdimm/ocxl: Implement the Read Error Log command > > nvdimm/ocxl: Add controller dump IOCTLs > > nvdimm/ocxl: Add an IOCTL to report controller statistics > > nvdimm/ocxl: Forward events to userspace > > nvdimm/ocxl: Add an IOCTL to request controller health & perf data > > nvdimm/ocxl: Implement the heartbeat command > > nvdimm/ocxl: Add debug IOCTLs > > nvdimm/ocxl: Expose SMART data via ndctl > > nvdimm/ocxl: Expose the serial number & firmware version in sysfs > > MAINTAINERS: Add myself & nvdimm/ocxl to ocxl > > > > .../userspace-api/ioctl/ioctl-number.rst | 1 + > > MAINTAINERS | 3 + > > arch/powerpc/configs/powernv_defconfig | 5 + > > arch/powerpc/include/asm/opal-api.h | 2 + > > arch/powerpc/include/asm/opal.h | 2 + > > arch/powerpc/include/asm/pnv-ocxl.h | 42 +- > > arch/powerpc/platforms/powernv/ocxl.c | 43 + > > arch/powerpc/platforms/powernv/opal-call.c | 2 + > > drivers/misc/ocxl/config.c | 74 +- > > drivers/misc/ocxl/core.c | 61 + > > drivers/misc/ocxl/link.c | 60 + > > drivers/misc/ocxl/ocxl_internal.h | 45 +- > > drivers/nvdimm/Kconfig | 2 + > > drivers/nvdimm/Makefile | 1 + > > drivers/nvdimm/ocxl/Kconfig | 21 + > > drivers/nvdimm/ocxl/Makefile | 7 + > > drivers/nvdimm/ocxl/main.c | 1975 = +++++++++++++++++ > > drivers/nvdimm/ocxl/ocxlpmem.h | 197 ++ > > drivers/nvdimm/ocxl/ocxlpmem_internal.c | 280 +++ > > include/linux/memory_hotplug.h | 5 + > > include/misc/ocxl.h | 122 +- > > include/uapi/linux/ndctl.h | 1 + > > include/uapi/nvdimm/ocxlpmem.h | 127 ++ > > mm/memory_hotplug.c | 4 +- > > 24 files changed, 2983 insertions(+), 99 deletions(-) create mode > > 100644 drivers/nvdimm/ocxl/Kconfig create mode 100644 > > drivers/nvdimm/ocxl/Makefile create mode 100644 > > drivers/nvdimm/ocxl/main.c create mode 100644 > > drivers/nvdimm/ocxl/ocxlpmem.h create mode 100644 > > drivers/nvdimm/ocxl/ocxlpmem_internal.c > > create mode 100644 include/uapi/nvdimm/ocxlpmem.h > > > > -- > > 2.24.1 > > --=20 Alastair D'Silva mob: 0423 762 819 skype: alastair_dsilva msn: alastair@d-silva.org blog: http://alastair.d-silva.org Twitter: @EvilDeece