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=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ABE81C43331 for ; Tue, 12 Nov 2019 11:33:45 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 5A56B21925 for ; Tue, 12 Nov 2019 11:33:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5A56B21925 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.ibm.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 0F5F66B0005; Tue, 12 Nov 2019 06:33:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0A79A6B0006; Tue, 12 Nov 2019 06:33:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id ED9026B0007; Tue, 12 Nov 2019 06:33:44 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0124.hostedemail.com [216.40.44.124]) by kanga.kvack.org (Postfix) with ESMTP id D8CE56B0005 for ; Tue, 12 Nov 2019 06:33:44 -0500 (EST) Received: from smtpin04.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with SMTP id 8ED5C8249980 for ; Tue, 12 Nov 2019 11:33:44 +0000 (UTC) X-FDA: 76147415568.04.crook07_3db1e7e3bca48 X-HE-Tag: crook07_3db1e7e3bca48 X-Filterd-Recvd-Size: 11322 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf18.hostedemail.com (Postfix) with ESMTP for ; Tue, 12 Nov 2019 11:33:43 +0000 (UTC) Received: from pps.filterd (m0098404.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id xACBXJ3L029822; Tue, 12 Nov 2019 06:33:34 -0500 Received: from ppma01wdc.us.ibm.com (fd.55.37a9.ip4.static.sl-reverse.com [169.55.85.253]) by mx0a-001b2d01.pphosted.com with ESMTP id 2w7tfku83b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 Nov 2019 06:33:33 -0500 Received: from pps.filterd (ppma01wdc.us.ibm.com [127.0.0.1]) by ppma01wdc.us.ibm.com (8.16.0.27/8.16.0.27) with SMTP id xACBUVDV003471; Tue, 12 Nov 2019 11:30:59 GMT Received: from b03cxnp07028.gho.boulder.ibm.com (b03cxnp07028.gho.boulder.ibm.com [9.17.130.15]) by ppma01wdc.us.ibm.com with ESMTP id 2w5n36e475-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 Nov 2019 11:30:59 +0000 Received: from b03ledav006.gho.boulder.ibm.com (b03ledav006.gho.boulder.ibm.com [9.17.130.237]) by b03cxnp07028.gho.boulder.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id xACBUsBW46793008 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 Nov 2019 11:30:54 GMT Received: from b03ledav006.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 803E3C605B; Tue, 12 Nov 2019 11:30:54 +0000 (GMT) Received: from b03ledav006.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1F633C6057; Tue, 12 Nov 2019 11:30:50 +0000 (GMT) Received: from skywalker.linux.ibm.com (unknown [9.199.45.124]) by b03ledav006.gho.boulder.ibm.com (Postfix) with ESMTP; Tue, 12 Nov 2019 11:30:49 +0000 (GMT) X-Mailer: emacs 26.2 (via feedmail 11-beta-1 I) From: "Aneesh Kumar K.V" To: Dan Williams , linux-nvdimm@lists.01.org Cc: Michael Ellerman , peterz@infradead.org, dave.hansen@linux.intel.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH 03/16] libnvdimm: Move nd_device_attribute_group to device_type In-Reply-To: <157309901138.1582359.12909354140826530394.stgit@dwillia2-desk3.amr.corp.intel.com> References: <157309899529.1582359.15358067933360719580.stgit@dwillia2-desk3.amr.corp.intel.com> <157309901138.1582359.12909354140826530394.stgit@dwillia2-desk3.amr.corp.intel.com> Date: Tue, 12 Nov 2019 17:00:46 +0530 Message-ID: <878soltjq1.fsf@linux.ibm.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-AS-GCONF: 00 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-11-12_03:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=2 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1910280000 definitions=main-1911120105 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Dan Williams writes: > A 'struct device_type' instance can carry default attributes for the > device. Use this facility to remove the export of > nd_device_attribute_group and put the responsibility on the core rather > than leaf implementations to define this attribute. > > For regions this creates a new nd_region_attribute_groups[] added to the > per-region device-type instances. > Reviewed-by: Aneesh Kumar K.V > Cc: Ira Weiny > Cc: Michael Ellerman > Cc: "Oliver O'Halloran" > Cc: Vishal Verma > Cc: Aneesh Kumar K.V > Signed-off-by: Dan Williams > --- > arch/powerpc/platforms/pseries/papr_scm.c | 2 -- > drivers/acpi/nfit/core.c | 2 -- > drivers/nvdimm/bus.c | 3 +-- > drivers/nvdimm/dimm_devs.c | 8 +++++++- > drivers/nvdimm/e820.c | 1 - > drivers/nvdimm/nd.h | 1 + > drivers/nvdimm/of_pmem.c | 1 - > drivers/nvdimm/region_devs.c | 18 +++++++++++++----- > include/linux/libnvdimm.h | 1 - > 9 files changed, 22 insertions(+), 15 deletions(-) > > diff --git a/arch/powerpc/platforms/pseries/papr_scm.c b/arch/powerpc/platforms/pseries/papr_scm.c > index 61883291defc..04726f8fd189 100644 > --- a/arch/powerpc/platforms/pseries/papr_scm.c > +++ b/arch/powerpc/platforms/pseries/papr_scm.c > @@ -286,7 +286,6 @@ int papr_scm_ndctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm, > > static const struct attribute_group *region_attr_groups[] = { > &nd_region_attribute_group, > - &nd_device_attribute_group, > &nd_mapping_attribute_group, > &nd_numa_attribute_group, > NULL, > @@ -299,7 +298,6 @@ static const struct attribute_group *bus_attr_groups[] = { > > static const struct attribute_group *papr_scm_dimm_groups[] = { > &nvdimm_attribute_group, > - &nd_device_attribute_group, > NULL, > }; > > diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c > index 14e68f202f81..dec7c2b08672 100644 > --- a/drivers/acpi/nfit/core.c > +++ b/drivers/acpi/nfit/core.c > @@ -1699,7 +1699,6 @@ static const struct attribute_group acpi_nfit_dimm_attribute_group = { > > static const struct attribute_group *acpi_nfit_dimm_attribute_groups[] = { > &nvdimm_attribute_group, > - &nd_device_attribute_group, > &acpi_nfit_dimm_attribute_group, > NULL, > }; > @@ -2199,7 +2198,6 @@ static const struct attribute_group acpi_nfit_region_attribute_group = { > static const struct attribute_group *acpi_nfit_region_attribute_groups[] = { > &nd_region_attribute_group, > &nd_mapping_attribute_group, > - &nd_device_attribute_group, > &nd_numa_attribute_group, > &acpi_nfit_region_attribute_group, > NULL, > diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c > index d47412dcdf38..eb422527dd57 100644 > --- a/drivers/nvdimm/bus.c > +++ b/drivers/nvdimm/bus.c > @@ -669,10 +669,9 @@ static struct attribute *nd_device_attributes[] = { > /* > * nd_device_attribute_group - generic attributes for all devices on an nd bus > */ > -struct attribute_group nd_device_attribute_group = { > +const struct attribute_group nd_device_attribute_group = { > .attrs = nd_device_attributes, > }; > -EXPORT_SYMBOL_GPL(nd_device_attribute_group); > > static ssize_t numa_node_show(struct device *dev, > struct device_attribute *attr, char *buf) > diff --git a/drivers/nvdimm/dimm_devs.c b/drivers/nvdimm/dimm_devs.c > index 196aa44c4936..278867c68682 100644 > --- a/drivers/nvdimm/dimm_devs.c > +++ b/drivers/nvdimm/dimm_devs.c > @@ -202,9 +202,15 @@ static void nvdimm_release(struct device *dev) > kfree(nvdimm); > } > > -static struct device_type nvdimm_device_type = { > +static const struct attribute_group *nvdimm_attribute_groups[] = { > + &nd_device_attribute_group, > + NULL, > +}; > + > +static const struct device_type nvdimm_device_type = { > .name = "nvdimm", > .release = nvdimm_release, > + .groups = nvdimm_attribute_groups, > }; > > bool is_nvdimm(struct device *dev) > diff --git a/drivers/nvdimm/e820.c b/drivers/nvdimm/e820.c > index 87f72f725e4f..adde2864c6a4 100644 > --- a/drivers/nvdimm/e820.c > +++ b/drivers/nvdimm/e820.c > @@ -15,7 +15,6 @@ static const struct attribute_group *e820_pmem_attribute_groups[] = { > > static const struct attribute_group *e820_pmem_region_attribute_groups[] = { > &nd_region_attribute_group, > - &nd_device_attribute_group, > NULL, > }; > > diff --git a/drivers/nvdimm/nd.h b/drivers/nvdimm/nd.h > index 5c8b077b3237..3f509bb6b5c0 100644 > --- a/drivers/nvdimm/nd.h > +++ b/drivers/nvdimm/nd.h > @@ -298,6 +298,7 @@ struct device *nd_pfn_devinit(struct nd_pfn *nd_pfn, > struct nd_namespace_common *ndns); > int nd_pfn_validate(struct nd_pfn *nd_pfn, const char *sig); > extern const struct attribute_group *nd_pfn_attribute_groups[]; > +extern const struct attribute_group nd_device_attribute_group; > #else > static inline int nd_pfn_probe(struct device *dev, > struct nd_namespace_common *ndns) > diff --git a/drivers/nvdimm/of_pmem.c b/drivers/nvdimm/of_pmem.c > index 97187d6c0bdb..41348fa6b74c 100644 > --- a/drivers/nvdimm/of_pmem.c > +++ b/drivers/nvdimm/of_pmem.c > @@ -11,7 +11,6 @@ > > static const struct attribute_group *region_attr_groups[] = { > &nd_region_attribute_group, > - &nd_device_attribute_group, > NULL, > }; > > diff --git a/drivers/nvdimm/region_devs.c b/drivers/nvdimm/region_devs.c > index e89f2eb3678c..710b5111eaa8 100644 > --- a/drivers/nvdimm/region_devs.c > +++ b/drivers/nvdimm/region_devs.c > @@ -763,19 +763,27 @@ struct attribute_group nd_region_attribute_group = { > }; > EXPORT_SYMBOL_GPL(nd_region_attribute_group); > > -static struct device_type nd_blk_device_type = { > +static const struct attribute_group *nd_region_attribute_groups[] = { > + &nd_device_attribute_group, > + NULL, > +}; > + > +static const struct device_type nd_blk_device_type = { > .name = "nd_blk", > .release = nd_region_release, > + .groups = nd_region_attribute_groups, > }; > > -static struct device_type nd_pmem_device_type = { > +static const struct device_type nd_pmem_device_type = { > .name = "nd_pmem", > .release = nd_region_release, > + .groups = nd_region_attribute_groups, > }; > > -static struct device_type nd_volatile_device_type = { > +static const struct device_type nd_volatile_device_type = { > .name = "nd_volatile", > .release = nd_region_release, > + .groups = nd_region_attribute_groups, > }; > > bool is_nd_pmem(struct device *dev) > @@ -931,8 +939,8 @@ void nd_region_release_lane(struct nd_region *nd_region, unsigned int lane) > EXPORT_SYMBOL(nd_region_release_lane); > > static struct nd_region *nd_region_create(struct nvdimm_bus *nvdimm_bus, > - struct nd_region_desc *ndr_desc, struct device_type *dev_type, > - const char *caller) > + struct nd_region_desc *ndr_desc, > + const struct device_type *dev_type, const char *caller) > { > struct nd_region *nd_region; > struct device *dev; > diff --git a/include/linux/libnvdimm.h b/include/linux/libnvdimm.h > index b6eddf912568..d7dbf42498af 100644 > --- a/include/linux/libnvdimm.h > +++ b/include/linux/libnvdimm.h > @@ -67,7 +67,6 @@ enum { > > extern struct attribute_group nvdimm_bus_attribute_group; > extern struct attribute_group nvdimm_attribute_group; > -extern struct attribute_group nd_device_attribute_group; > extern struct attribute_group nd_numa_attribute_group; > extern struct attribute_group nd_region_attribute_group; > extern struct attribute_group nd_mapping_attribute_group; > _______________________________________________ > Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org > To unsubscribe send an email to linux-nvdimm-leave@lists.01.org