diff mbox

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

Message ID 658db8f8c7a5042a2049e5fe08c0c68b4586526e.1497939166.git.jerry.hoemann@hpe.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jerry Hoemann June 20, 2017, 4:51 p.m. UTC
Add bus_dsm_mask to sysfs display under /sys/bus/nd/devices/ndbusX/nfit.

Signed-off-by: Jerry Hoemann <jerry.hoemann@hpe.com>
---
 drivers/acpi/nfit/core.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

Comments

Dan Williams June 28, 2017, 9:07 p.m. UTC | #1
On Tue, Jun 20, 2017 at 9:51 AM, Jerry Hoemann <jerry.hoemann@hpe.com> wrote:
> Add bus_dsm_mask to sysfs display under /sys/bus/nd/devices/ndbusX/nfit.
>
> Signed-off-by: Jerry Hoemann <jerry.hoemann@hpe.com>
> ---
>  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.
Jerry Hoemann June 28, 2017, 11:15 p.m. UTC | #2
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@hpe.com> wrote:
> > Add bus_dsm_mask to sysfs display under /sys/bus/nd/devices/ndbusX/nfit.
> >
> > Signed-off-by: Jerry Hoemann <jerry.hoemann@hpe.com>
> > ---
> >  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?
Dan Williams June 28, 2017, 11:29 p.m. UTC | #3
On Wed, Jun 28, 2017 at 4:15 PM, Jerry Hoemann <jerry.hoemann@hpe.com> 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@hpe.com> wrote:
>> > Add bus_dsm_mask to sysfs display under /sys/bus/nd/devices/ndbusX/nfit.
>> >
>> > Signed-off-by: Jerry Hoemann <jerry.hoemann@hpe.com>
>> > ---
>> >  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'.
Dan Williams June 28, 2017, 11:31 p.m. UTC | #4
On Wed, Jun 28, 2017 at 4:29 PM, Dan Williams <dan.j.williams@intel.com> wrote:
> On Wed, Jun 28, 2017 at 4:15 PM, Jerry Hoemann <jerry.hoemann@hpe.com> 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@hpe.com> wrote:
>>> > Add bus_dsm_mask to sysfs display under /sys/bus/nd/devices/ndbusX/nfit.
>>> >
>>> > Signed-off-by: Jerry Hoemann <jerry.hoemann@hpe.com>
>>> > ---
>>> >  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.
diff mbox

Patch

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,
 };