Re: [PATCH v2 5/7] acpi, nfit: Show bus_dsm_mask

From: Dan Williams
Date: Wed Jun 28 2017 - 19:31:18 EST


On Wed, Jun 28, 2017 at 4:29 PM, Dan Williams <dan.j.williams@xxxxxxxxx> wrote:
> On Wed, Jun 28, 2017 at 4:15 PM, Jerry Hoemann <jerry.hoemann@xxxxxxx> wrote:
>> On Wed, Jun 28, 2017 at 02:07:20PM -0700, Dan Williams wrote:
>>> On Tue, Jun 20, 2017 at 9:51 AM, Jerry Hoemann <jerry.hoemann@xxxxxxx> wrote:
>>> > Add bus_dsm_mask to sysfs display under /sys/bus/nd/devices/ndbusX/nfit.
>>> >
>>> > Signed-off-by: Jerry Hoemann <jerry.hoemann@xxxxxxx>
>>> > ---
>>> > drivers/acpi/nfit/core.c | 10 ++++++++++
>>> > 1 file changed, 10 insertions(+)
>>> >
>>> > diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c
>>> > index 9d281a4..f133b3e 100644
>>> > --- a/drivers/acpi/nfit/core.c
>>> > +++ b/drivers/acpi/nfit/core.c
>>> > @@ -928,6 +928,15 @@ static int nfit_mem_init(struct acpi_nfit_desc *acpi_desc)
>>> > return 0;
>>> > }
>>> >
>>> > +static ssize_t bus_dsm_mask_show(struct device *dev,
>>> > + struct device_attribute *attr, char *buf)
>>> > +{
>>> > + struct nvdimm_bus *nvdimm_bus = to_nvdimm_bus(dev);
>>> > + struct nvdimm_bus_descriptor *nd_desc = to_nd_desc(nvdimm_bus);
>>> > + return sprintf(buf, "%#lx\n", nd_desc->bus_dsm_mask);
>>> > +}
>>> > +static DEVICE_ATTR_RO(bus_dsm_mask);
>>> > +
>>> > static ssize_t revision_show(struct device *dev,
>>> > struct device_attribute *attr, char *buf)
>>> > {
>>> > @@ -1064,6 +1073,7 @@ static umode_t nfit_visible(struct kobject *kobj, struct attribute *a, int n)
>>> > &dev_attr_revision.attr,
>>> > &dev_attr_scrub.attr,
>>> > &dev_attr_hw_error_scrub.attr,
>>> > + &dev_attr_bus_dsm_mask.attr,
>>> > NULL,
>>> > };
>>>
>>> I think it's redundant to keep 'bus_' in the name of the attribute
>>> since 'bus' is included in the sysfs path. You can use DEVICE_ATTR()
>>> instead of DEVICE_ATTR_RO() to specify the attribute name manually,
>>> and get around the collision with the existing dsm_mash_show()
>>> routine.
>>
>> DEVICE_ATTR and DEVICE_ATTR_RO uses the same tokenization & stringification
>> schemes, so that doesn't disambiguate. They need to be different
>> case sensitive names if they are to be in same source file.
>>
>> Do you want me to change name to root_dsm_mask? or change case: DSM_MASK?
>
> I'm saying do something like this:
>
> DEVICE_ATTR(dsm_mask, 0444, bus_dsm_mask_show, NULL)
>
> ...so that the attribute name in sysfs is just 'dsm_mask'.

Actually, you'll need to go further and use __ATTR() directly to
initialize a bus_dsm_mask_attr.