From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0717.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe46::717]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 837A41A1DF6 for ; Tue, 16 Aug 2016 08:05:51 -0700 (PDT) From: "Kani, Toshimitsu" Subject: Re: [PATCH] libnvdimm: Fix nvdimm_probe error on NVDIMM-N Date: Tue, 16 Aug 2016 15:05:48 +0000 Message-ID: <1471359928.32015.57.camel@hpe.com> References: <1471283545-16561-1-git-send-email-toshi.kani@hpe.com> In-Reply-To: Content-Language: en-US Content-ID: <927FE5ABFB4F44498EF2A8CFF81D932D@NAMPRD84.PROD.OUTLOOK.COM> MIME-Version: 1.0 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" To: "dan.j.williams@intel.com" Cc: "linux-kernel@vger.kernel.org" , "linux-nvdimm@lists.01.org" List-ID: T24gTW9uLCAyMDE2LTA4LTE1IGF0IDE0OjIwIC0wNzAwLCBEYW4gV2lsbGlhbXMgd3JvdGU6DQo+ IE9uIE1vbiwgQXVnIDE1LCAyMDE2IGF0IDEwOjUyIEFNLCBUb3NoaSBLYW5pIDx0b3NoaS5rYW5p QGhwZS5jb20+DQo+IHdyb3RlOg0KPiA+IA0KPiA+ICduZGN0bCBsaXN0IC0tYnVzZXMgLS1kaW1t cycgZG9lcyBub3QgbGlzdCBhbnkgTlZESU1NLU5zIHNpbmNlDQo+ID4gdGhleSBhcmUgY29uc2lk ZXJlZCBhcyBpZGxlLsKgwqBuZGN0bCBjaGVja3MgaWYgYW55IGRyaXZlciBpcw0KPiA+IGF0dGFj aGVkIHRvIG5tZW0gZGV2aWNlLsKgwqBudmRpbW1fcHJvYmUoKSBhbHdheXMgZmFpbHMgaW4NCj4g PiBudmRpbW1faW5pdF9uc2FyZWEoKSBzaW5jZSBOVkRJTU0tTnMgZG8gbm90IGltcGxlbWVudCBv cHRpbmFsDQo+ID4gTkRfQ01EX0dFVF9DT05GSUdfREFUQSBjb21tYW5kLg0KPiA+IA0KPiA+IENo YW5nZSBudmRpbW1fcHJvYmUoKSB0byBhY2NlcHQgdGhlIGNhc2UgdGhhdCB0aGUgQ09ORklHX0RB VEENCj4gPiBjb21tYW5kIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgTlZESU1NLU5zLsKgwqBUaGUg ZHJpdmVyIGF0dGFjaGVzDQo+ID4gd2l0aG91dCBuZGQsIHdoaWNoIGtlZXBzIGl0IG5vLW9wIHRv IHRoZSBkZXZpY2UuDQo+ID4gDQo+ID4gUmVwb3J0ZWQtYnk6IEJyaWFuIEJveWxzdG9uIDxicmlh bi5ib3lsc3RvbkBocGUuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFRvc2hpIEthbmkgPHRvc2hp LmthbmlAaHBlLmNvbT4NCj4gPiBDYzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRl bC5jb20+DQo+ID4gLS0tDQo+ID4gwqBkcml2ZXJzL252ZGltbS9kaW1tLmPCoMKgwqDCoMKgwqB8 wqDCoMKgMTAgKysrKysrKysrKw0KPiA+IMKgZHJpdmVycy9udmRpbW0vZGltbV9kZXZzLmMgfMKg wqDCoDI3ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLQ0KPiA+IMKgZHJpdmVycy9udmRpbW0v bmQuaMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgwqAxICsNCj4gPiDCoDMgZmlsZXMgY2hhbmdlZCwg MjcgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pDQo+IA0KPiBUaGlzIGZhaWxzIHRoZSBu ZGN0bCB1bml0IHRlc3Qgc3VpdGUsIHNlZSBiZWxvdyBwbHVzIHNvbWUgb3RoZXINCj4gY2xlYW51 cHMuLi4NCg0KU29ycnksIEkgaGFkIG92ZXJsb29rZWQgYWJvdXQgdGhpcyB0ZXN0IHN1aXRlLi4u IEkgYnVpbHQgaXQgdG8gcnVuIHRoZQ0KdGVzdCBhbmQgd2FzIGFibGUgdG8gcmVwcm9kdWNlIHRo ZSBmYWlsdXJlcy4NCg0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL252ZGltbS9kaW1t LmMgYi9kcml2ZXJzL252ZGltbS9kaW1tLmMNCj4gPiBpbmRleCA3MWQxMmJiLi4wN2UwOWMyIDEw MDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbnZkaW1tL2RpbW0uYw0KPiA+ICsrKyBiL2RyaXZlcnMv bnZkaW1tL2RpbW0uYw0KPiA+IEBAIC0yNiw2ICsyNiwxMyBAQCBzdGF0aWMgaW50IG52ZGltbV9w cm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBudmRp bW1fZHJ2ZGF0YSAqbmRkOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgcmM7DQo+ID4gDQo+ID4g K8KgwqDCoMKgwqDCoMKgcmMgPSBudmRpbW1fY2hlY2tfY29uZmlnX2RhdGEoZGV2KTsNCj4gPiAr wqDCoMKgwqDCoMKgwqBpZiAocmMgPT0gLUVOT0VOVCkNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgLyogbm90IHJlcXVpcmVkIGZvciBub24tYWxpYXNlZCBudmRpbW0sIGV4LiBO VkRJTU0tDQo+ID4gTiAqLw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsNCj4gPiArwqDCoMKgwqDCoMKgwqBlbHNlDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybiByYzsNCj4gPiArDQo+IA0KPiBDaGFuZ2UgdXNhZ2Ugb2YgRU5PRU5U IHRvIEVOT1RUWSB0aHJvdWdob3V0Li4uDQoNCldpbGwgZG8uDQoNCj4gPiANCj4gPiDCoMKgwqDC oMKgwqDCoMKgbmRkID0ga3phbGxvYyhzaXplb2YoKm5kZCksIEdGUF9LRVJORUwpOw0KPiA+IMKg wqDCoMKgwqDCoMKgwqBpZiAoIW5kZCkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldHVybiAtRU5PTUVNOw0KPiA+IEBAIC03Miw2ICs3OSw5IEBAIHN0YXRpYyBpbnQgbnZk aW1tX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ID4gwqB7DQo+ID4gwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCBudmRpbW1fZHJ2ZGF0YSAqbmRkID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ ID4gDQo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFuZGQpDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHJldHVybiAwOw0KPiA+ICsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgbnZkaW1t X2J1c19sb2NrKGRldik7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoGRldl9zZXRfZHJ2ZGF0YShkZXYs IE5VTEwpOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBudmRpbW1fYnVzX3VubG9jayhkZXYpOw0KPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL252ZGltbS9kaW1tX2RldnMuYw0KPiA+IGIvZHJpdmVycy9u dmRpbW0vZGltbV9kZXZzLmMNCj4gPiBpbmRleCBkOWJiYTVlLi5mZWU4MmQzIDEwMDY0NA0KPiA+ IC0tLSBhL2RyaXZlcnMvbnZkaW1tL2RpbW1fZGV2cy5jDQo+ID4gKysrIGIvZHJpdmVycy9udmRp bW0vZGltbV9kZXZzLmMNCj4gPiBAQCAtMjgsMjggKzI4LDMzIEBAIHN0YXRpYyBERUZJTkVfSURB KGRpbW1faWRhKTsNCj4gPiDCoCAqIFJldHJpZXZlIGJ1cyBhbmQgZGltbSBoYW5kbGUgYW5kIHJl dHVybiBpZiB0aGlzIGJ1cyBzdXBwb3J0cw0KPiA+IMKgICogZ2V0X2NvbmZpZ19kYXRhIGNvbW1h bmRzDQo+ID4gwqAgKi8NCj4gPiAtc3RhdGljIGludCBfX3ZhbGlkYXRlX2RpbW0oc3RydWN0IG52 ZGltbV9kcnZkYXRhICpuZGQpDQo+ID4gK2ludCBudmRpbW1fY2hlY2tfY29uZmlnX2RhdGEoc3Ry dWN0IGRldmljZSAqZGV2KQ0KPiA+IMKgew0KPiA+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCBudmRp bW0gKm52ZGltbTsNCj4gPiAtDQo+ID4gLcKgwqDCoMKgwqDCoMKgaWYgKCFuZGQpDQo+ID4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOw0KPiA+IC0NCj4gPiAt wqDCoMKgwqDCoMKgwqBudmRpbW0gPSB0b19udmRpbW0obmRkLT5kZXYpOw0KPiA+ICvCoMKgwqDC oMKgwqDCoHN0cnVjdCBudmRpbW0gKm52ZGltbSA9IHRvX252ZGltbShkZXYpOw0KPiA+IA0KPiA+ IMKgwqDCoMKgwqDCoMKgwqBpZiAoIW52ZGltbS0+Y21kX21hc2spDQo+ID4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRU5YSU87DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGdvdG8gZXJyOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoIXRlc3RfYml0 KE5EX0NNRF9HRVRfQ09ORklHX0RBVEEsICZudmRpbW0tPmNtZF9tYXNrKSkNCj4gPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FTlhJTzsNCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZ290byBlcnI7DQo+ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoHJl dHVybiAwOw0KPiA+ICsNCj4gPiArIGVycjoNCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAobnZkaW1t LT5mbGFncyAmIE5ERF9BTElBU0lORykNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIC1FTlhJTzsNCj4gPiArwqDCoMKgwqDCoMKgwqBlbHNlDQo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRU5PRU5UOw0KPiANCj4gDQo+IExldCdzIG5v dCB1c2UgImdvdG8iIHNpbmNlIHRoZXJlIGlzIG5vdGhpbmcgdG8gdW53aW5kLg0KDQpHb3QgaXQu DQoNCj4gPiANCj4gPiDCoH0NCj4gPiANCj4gPiDCoHN0YXRpYyBpbnQgdmFsaWRhdGVfZGltbShz dHJ1Y3QgbnZkaW1tX2RydmRhdGEgKm5kZCkNCj4gPiDCoHsNCj4gPiAtwqDCoMKgwqDCoMKgwqBp bnQgcmMgPSBfX3ZhbGlkYXRlX2RpbW0obmRkKTsNCj4gPiArwqDCoMKgwqDCoMKgwqBpbnQgcmM7 DQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKgaWYgKHJjICYmIG5kZCkNCj4gPiArwqDCoMKgwqDC oMKgwqBpZiAoIW5kZCkNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IC1FSU5WQUw7DQo+IA0KPiBTaW5jZSB3ZSd2ZSBjYWxsZWQgbnZkaW1tX2NoZWNrX2NvbmZpZ19k YXRhKCkgYmVmb3JlIGFsbG9jYXRpbmcgbmRkDQo+IGl0IHdpbGwgYWx3YXlzIGJlIE5VTEwgY2F1 c2luZyBESU1NcyB3aXRoIGxhYmVsIGFyZWFzIHRvIGZhaWwgaW5pdC4NCg0KSSBhbSBzdGlsbCBw dXp6bGVkIGF0IHRoZSBtb21lbnQsIGJ1dCB3aWxsIGxvb2sgaW50byB0aGUgaXNzdWUuDQoNClRo YW5rcyENCi1Ub3NoaQ0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KTGludXgtbnZkaW1tIG1haWxpbmcgbGlzdApMaW51eC1udmRpbW1AbGlzdHMuMDEub3Jn Cmh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbnZkaW1tCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753882AbcHPPWK (ORCPT ); Tue, 16 Aug 2016 11:22:10 -0400 Received: from mail-sn1nam02on0115.outbound.protection.outlook.com ([104.47.36.115]:8471 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753466AbcHPPWH (ORCPT ); Tue, 16 Aug 2016 11:22:07 -0400 From: "Kani, Toshimitsu" To: "dan.j.williams@intel.com" CC: "linux-kernel@vger.kernel.org" , "linux-nvdimm@lists.01.org" Subject: Re: [PATCH] libnvdimm: Fix nvdimm_probe error on NVDIMM-N Thread-Topic: [PATCH] libnvdimm: Fix nvdimm_probe error on NVDIMM-N Thread-Index: AQHR9x3imVa4UxOQE0euugE9aPOgTKBKh5MAgAEpcAA= Date: Tue, 16 Aug 2016 15:05:48 +0000 Message-ID: <1471359928.32015.57.camel@hpe.com> References: <1471283545-16561-1-git-send-email-toshi.kani@hpe.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=toshi.kani@hpe.com; x-originating-ip: [15.219.163.2] x-ms-office365-filtering-correlation-id: 5bcc306e-db73-41c5-674d-08d3c5e6ce7a x-microsoft-exchange-diagnostics: 1;CS1PR84MB0008;6:x7Noc8VP4YOrCXsicm7YyRYDYFqv+lx9uBZqcqpAxHs1MZ8FBrPrxuWd0LEm2CC1KrhY8ziZ5vKkeG/3esNzoNoUGQ6VQX1kTBxVXMLIjh7jn76isUs6L9mqMJAuwIjoWs4z6HmFxGoxYRhJj1+N3uqCyAe1qqOiWx5bZN8EJ5xtVd/ixIcYQobFzHahrp9AQDTm9KtAdnAC1wwtWWaC6cTdysjV4DPLJQ3KGQoJn6VsZuM3OJM/HHWEUyAB/9IZ8cDON9ACkGSg6L2r7pse2pMiv3CanjABLYHP2p7oG9M4RQWL1g/I1qlvtmFQoKq8pJmz56+zw88j0iVOOFu7ww==;5:bVMrkAzJVmeZQTvUgw+g2akPp0beZ0g4ARtE1bfCQpY85Fe+4RT9m5zyp2Lgv5o1hczl+4AnN1F9/8AXXoUKvCTLRYGeIjfziEV75ag/gFO+0bv4tKqJcZVl3cMAizISMfEP7f/8bgUlQ/IIhkRb1g==;24:9ntUDgnBflDabcncyNq0Lqs0QmVRl024+TKi7Ddr7qPVDG3gxT7zwh67ftws4gwQLL53awQ9OeQFkamZS96tieywD7sR1wEgywfoKe53RfI=;7:f9G7cp/EbBpQpb02ySoD7yXWg3EHKdDyn4wmgAhiGpgE3WYMJ/W/4Fx/QTZBt7DWfaYJCwKKy50Qe3e3/df5UOxfH6lrRU4n2Y0BAVAgggiooDXPfhAja89ftlB+fRCCDCtju2P9DZoDayosvrWgCD5EmGTR2UMTDnNCsBbI5TCouMDqI/v/GXVv80080W2UN5M0RCInNm3InAhs7aUy5vsAKP8kh2muU0YdOE3BMoPNbMMP0c/AUtBCyTP+klVG x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CS1PR84MB0008; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(227479698468861)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026);SRVR:CS1PR84MB0008;BCL:0;PCL:0;RULEID:;SRVR:CS1PR84MB0008; x-forefront-prvs: 0036736630 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(6009001)(7916002)(377424004)(24454002)(189002)(199003)(377454003)(2501003)(8676002)(102836003)(3846002)(87936001)(66066001)(3280700002)(11100500001)(2950100001)(36756003)(6116002)(19580405001)(586003)(33646002)(2900100001)(5890100001)(2906002)(92566002)(4326007)(97736004)(305945005)(77096005)(8936002)(54356999)(122556002)(19580395003)(7736002)(2351001)(7846002)(10400500002)(76176999)(50986999)(99286002)(86362001)(81156014)(106356001)(5640700001)(101416001)(68736007)(3660700001)(5002640100001)(106116001)(103116003)(105586002)(189998001)(110136002)(81166006);DIR:OUT;SFP:1102;SCL:1;SRVR:CS1PR84MB0008;H:CS1PR84MB0005.NAMPRD84.PROD.OUTLOOK.COM;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <927FE5ABFB4F44498EF2A8CFF81D932D@NAMPRD84.PROD.OUTLOOK.COM> MIME-Version: 1.0 X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Aug 2016 15:05:48.4207 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR84MB0008 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id u7GFMFNG010640 On Mon, 2016-08-15 at 14:20 -0700, Dan Williams wrote: > On Mon, Aug 15, 2016 at 10:52 AM, Toshi Kani > wrote: > > > > 'ndctl list --buses --dimms' does not list any NVDIMM-Ns since > > they are considered as idle.  ndctl checks if any driver is > > attached to nmem device.  nvdimm_probe() always fails in > > nvdimm_init_nsarea() since NVDIMM-Ns do not implement optinal > > ND_CMD_GET_CONFIG_DATA command. > > > > Change nvdimm_probe() to accept the case that the CONFIG_DATA > > command is not implemented for NVDIMM-Ns.  The driver attaches > > without ndd, which keeps it no-op to the device. > > > > Reported-by: Brian Boylston > > Signed-off-by: Toshi Kani > > Cc: Dan Williams > > --- > >  drivers/nvdimm/dimm.c      |   10 ++++++++++ > >  drivers/nvdimm/dimm_devs.c |   27 ++++++++++++++++----------- > >  drivers/nvdimm/nd.h        |    1 + > >  3 files changed, 27 insertions(+), 11 deletions(-) > > This fails the ndctl unit test suite, see below plus some other > cleanups... Sorry, I had overlooked about this test suite... I built it to run the test and was able to reproduce the failures. > > > > diff --git a/drivers/nvdimm/dimm.c b/drivers/nvdimm/dimm.c > > index 71d12bb..07e09c2 100644 > > --- a/drivers/nvdimm/dimm.c > > +++ b/drivers/nvdimm/dimm.c > > @@ -26,6 +26,13 @@ static int nvdimm_probe(struct device *dev) > >         struct nvdimm_drvdata *ndd; > >         int rc; > > > > +       rc = nvdimm_check_config_data(dev); > > +       if (rc == -ENOENT) > > +               /* not required for non-aliased nvdimm, ex. NVDIMM- > > N */ > > +               return 0; > > +       else > > +               return rc; > > + > > Change usage of ENOENT to ENOTTY throughout... Will do. > > > >         ndd = kzalloc(sizeof(*ndd), GFP_KERNEL); > >         if (!ndd) > >                 return -ENOMEM; > > @@ -72,6 +79,9 @@ static int nvdimm_remove(struct device *dev) > >  { > >         struct nvdimm_drvdata *ndd = dev_get_drvdata(dev); > > > > +       if (!ndd) > > +               return 0; > > + > >         nvdimm_bus_lock(dev); > >         dev_set_drvdata(dev, NULL); > >         nvdimm_bus_unlock(dev); > > diff --git a/drivers/nvdimm/dimm_devs.c > > b/drivers/nvdimm/dimm_devs.c > > index d9bba5e..fee82d3 100644 > > --- a/drivers/nvdimm/dimm_devs.c > > +++ b/drivers/nvdimm/dimm_devs.c > > @@ -28,28 +28,33 @@ static DEFINE_IDA(dimm_ida); > >   * Retrieve bus and dimm handle and return if this bus supports > >   * get_config_data commands > >   */ > > -static int __validate_dimm(struct nvdimm_drvdata *ndd) > > +int nvdimm_check_config_data(struct device *dev) > >  { > > -       struct nvdimm *nvdimm; > > - > > -       if (!ndd) > > -               return -EINVAL; > > - > > -       nvdimm = to_nvdimm(ndd->dev); > > +       struct nvdimm *nvdimm = to_nvdimm(dev); > > > >         if (!nvdimm->cmd_mask) > > -               return -ENXIO; > > +               goto err; > >         if (!test_bit(ND_CMD_GET_CONFIG_DATA, &nvdimm->cmd_mask)) > > -               return -ENXIO; > > +               goto err; > > > >         return 0; > > + > > + err: > > +       if (nvdimm->flags & NDD_ALIASING) > > +               return -ENXIO; > > +       else > > +               return -ENOENT; > > > Let's not use "goto" since there is nothing to unwind. Got it. > > > >  } > > > >  static int validate_dimm(struct nvdimm_drvdata *ndd) > >  { > > -       int rc = __validate_dimm(ndd); > > +       int rc; > > > > -       if (rc && ndd) > > +       if (!ndd) > > +               return -EINVAL; > > Since we've called nvdimm_check_config_data() before allocating ndd > it will always be NULL causing DIMMs with label areas to fail init. I am still puzzled at the moment, but will look into the issue. Thanks! -Toshi