diff options
Diffstat (limited to 'drivers/base/platform.c')
| -rw-r--r-- | drivers/base/platform.c | 28 | 
1 files changed, 26 insertions, 2 deletions
diff --git a/drivers/base/platform.c b/drivers/base/platform.c index c0d0a5490ac6..e5d8a0503b4f 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -1019,7 +1019,7 @@ static ssize_t modalias_show(struct device *dev, struct device_attribute *a,  	if (len != -ENODEV)  		return len; -	len = acpi_device_modalias(dev, buf, PAGE_SIZE -1); +	len = acpi_device_modalias(dev, buf, PAGE_SIZE - 1);  	if (len != -ENODEV)  		return len; @@ -1076,13 +1076,37 @@ static ssize_t driver_override_show(struct device *dev,  }  static DEVICE_ATTR_RW(driver_override); +static ssize_t numa_node_show(struct device *dev, +		struct device_attribute *attr, char *buf) +{ +	return sprintf(buf, "%d\n", dev_to_node(dev)); +} +static DEVICE_ATTR_RO(numa_node); + +static umode_t platform_dev_attrs_visible(struct kobject *kobj, struct attribute *a, +		int n) +{ +	struct device *dev = container_of(kobj, typeof(*dev), kobj); + +	if (a == &dev_attr_numa_node.attr && +			dev_to_node(dev) == NUMA_NO_NODE) +		return 0; + +	return a->mode; +}  static struct attribute *platform_dev_attrs[] = {  	&dev_attr_modalias.attr, +	&dev_attr_numa_node.attr,  	&dev_attr_driver_override.attr,  	NULL,  }; -ATTRIBUTE_GROUPS(platform_dev); + +static struct attribute_group platform_dev_group = { +	.attrs = platform_dev_attrs, +	.is_visible = platform_dev_attrs_visible, +}; +__ATTRIBUTE_GROUPS(platform_dev);  static int platform_uevent(struct device *dev, struct kobj_uevent_env *env)  {  |