mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 08:40:53 +07:00
libnvdimm: Move nvdimm_attribute_group to device_type
A 'struct device_type' instance can carry default attributes for the device. Use this facility to remove the export of nvdimm_attribute_group and put the responsibility on the core rather than leaf implementations to define this attribute. Cc: Ira Weiny <ira.weiny@intel.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: "Oliver O'Halloran" <oohall@gmail.com> Cc: Vishal Verma <vishal.l.verma@intel.com> Cc: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> Link: https://lore.kernel.org/r/157309903201.1582359.10966209746585062329.stgit@dwillia2-desk3.amr.corp.intel.com
This commit is contained in:
parent
4ce79fa97e
commit
360eba7ebd
@ -289,11 +289,6 @@ static const struct attribute_group *bus_attr_groups[] = {
|
||||
NULL,
|
||||
};
|
||||
|
||||
static const struct attribute_group *papr_scm_dimm_groups[] = {
|
||||
&nvdimm_attribute_group,
|
||||
NULL,
|
||||
};
|
||||
|
||||
static inline int papr_scm_node(int node)
|
||||
{
|
||||
int min_dist = INT_MAX, dist;
|
||||
@ -339,8 +334,8 @@ static int papr_scm_nvdimm_init(struct papr_scm_priv *p)
|
||||
dimm_flags = 0;
|
||||
set_bit(NDD_ALIASING, &dimm_flags);
|
||||
|
||||
p->nvdimm = nvdimm_create(p->bus, p, papr_scm_dimm_groups,
|
||||
dimm_flags, PAPR_SCM_DIMM_CMD_MASK, 0, NULL);
|
||||
p->nvdimm = nvdimm_create(p->bus, p, NULL, dimm_flags,
|
||||
PAPR_SCM_DIMM_CMD_MASK, 0, NULL);
|
||||
if (!p->nvdimm) {
|
||||
dev_err(dev, "Error creating DIMM object for %pOF\n", p->dn);
|
||||
goto err;
|
||||
|
@ -1698,7 +1698,6 @@ static const struct attribute_group acpi_nfit_dimm_attribute_group = {
|
||||
};
|
||||
|
||||
static const struct attribute_group *acpi_nfit_dimm_attribute_groups[] = {
|
||||
&nvdimm_attribute_group,
|
||||
&acpi_nfit_dimm_attribute_group,
|
||||
NULL,
|
||||
};
|
||||
|
@ -202,22 +202,6 @@ static void nvdimm_release(struct device *dev)
|
||||
kfree(nvdimm);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
return dev->type == &nvdimm_device_type;
|
||||
}
|
||||
|
||||
struct nvdimm *to_nvdimm(struct device *dev)
|
||||
{
|
||||
struct nvdimm *nvdimm = container_of(dev, struct nvdimm, dev);
|
||||
@ -456,11 +440,27 @@ static umode_t nvdimm_visible(struct kobject *kobj, struct attribute *a, int n)
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct attribute_group nvdimm_attribute_group = {
|
||||
static const struct attribute_group nvdimm_attribute_group = {
|
||||
.attrs = nvdimm_attributes,
|
||||
.is_visible = nvdimm_visible,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(nvdimm_attribute_group);
|
||||
|
||||
static const struct attribute_group *nvdimm_attribute_groups[] = {
|
||||
&nd_device_attribute_group,
|
||||
&nvdimm_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)
|
||||
{
|
||||
return dev->type == &nvdimm_device_type;
|
||||
}
|
||||
|
||||
struct nvdimm *__nvdimm_create(struct nvdimm_bus *nvdimm_bus,
|
||||
void *provider_data, const struct attribute_group **groups,
|
||||
|
@ -66,7 +66,6 @@ enum {
|
||||
};
|
||||
|
||||
extern struct attribute_group nvdimm_bus_attribute_group;
|
||||
extern struct attribute_group nvdimm_attribute_group;
|
||||
|
||||
struct nvdimm;
|
||||
struct nvdimm_bus_descriptor;
|
||||
|
Loading…
Reference in New Issue
Block a user