pci, sysfs: move bus cpuaffinity to class dev_attrs
PATCH 1/2 pci, sysfs: move bus cpuaffinity to class dev_attrs
Requested by Greg KH
need to apply after
[PATCH -v4 1/3] pci: add rescan to /sys/.../pci_bus/.../
Signed-off-by Yinghai Lu <[email protected]>
--- drivers/pci/bus.c | 6 ------ drivers/pci/pci-sysfs.c | 36 ++++++++++++++++++++++++++++++++++++ drivers/pci/pci.h | 2 -- drivers/pci/probe.c | 42 ------------------------------------------ drivers/pci/remove.c | 2 -- 5 files changed, 36 insertions(+), 52 deletions(-)
drivers/pci/pci-sysfs.c +36 -0
@@ -108,6 +108,40 @@ static ssize_t local_cpulist_show(structreturn len; } +/* +* PCI Bus Class Devices +*/ +static ssize_t pci_bus_show_cpuaffinity (struct device *dev, +int type, +struct device_attribute *attr, +char *buf) +{ +int ret; +const struct cpumask *cpumask; + + cpumask =cpumask_of_pcibus (to_pci_bus (dev)); + ret = type ? +cpulist_scnprintf (buf,PAGE_SIZE -2 , cpumask) : +cpumask_scnprintf (buf,PAGE_SIZE -2 , cpumask); + buf[ret++] ='\n' ; + buf[ret] ='\0' ; +return ret; +} + +static inline ssize_t pci_bus_show_cpumaskaffinity (struct device *dev, +struct device_attribute *attr, +char *buf) +{ +return pci_bus_show_cpuaffinity (dev,0 , attr, buf); +} + +static inline ssize_t pci_bus_show_cpulistaffinity (struct device *dev, +struct device_attribute *attr, +char *buf) +{ +return pci_bus_show_cpuaffinity (dev,1 , attr, buf); +} +/* show resources */ static ssize_t resource_show (struct device * dev,struct device_attribute *attr,char * buf)
@@ -370,6 +404,8 @@ struct device_attribute pcibus_dev_attrs#ifdef CONFIG_HOTPLUG __ATTR (rescan, (S_IWUSR |S_IWGRP ),NULL , dev_bus_rescan_store), #endif +__ATTR (cpuaffinity,S_IRUGO , pci_bus_show_cpumaskaffinity,NULL ), +__ATTR (cpulistaffinity,S_IRUGO , pci_bus_show_cpulistaffinity,NULL ), __ATTR_NULL, };
drivers/pci/bus.c +0 -6
@@ -163,12 +163,6 @@ int pci_bus_add_child(struct pci_bus *bu bus->is_added =1 ; - retval =device_create_file (&bus->dev, &dev_attr_cpuaffinity); -if (retval) -return retval; - - retval =device_create_file (&bus->dev, &dev_attr_cpulistaffinity); -/* Create legacy_io and legacy_mem files for this bus */ pci_create_legacy_files (bus);
drivers/pci/pci.h +0 -2
@@ -157,8 +157,6 @@ static inline int pci_no_d1d2(struct pci }extern struct device_attribute pci_dev_attrs[];extern struct device_attribute pcibus_dev_attrs[]; -extern struct device_attribute dev_attr_cpuaffinity; -extern struct device_attribute dev_attr_cpulistaffinity;#ifdef CONFIG_HOTPLUG extern struct bus_attribute pci_bus_attrs[];#else
drivers/pci/probe.c +0 -42
60 lines not on this page · raw message
drivers/pci/remove.c +0 -2
@@ -73,8 +73,6 @@ void pci_remove_bus(struct pci_bus *pci_return ;pci_remove_legacy_files (pci_bus); -device_remove_file (&pci_bus->dev, &dev_attr_cpuaffinity); -device_remove_file (&pci_bus->dev, &dev_attr_cpulistaffinity);device_unregister (&pci_bus->dev); }EXPORT_SYMBOL (pci_remove_bus);
PATCH 2/2 pci, sysfs: merge dev and bus cpuaffinity
merge them one function with two extra parameters.
Signed-off-by Yinghai Lu <[email protected]>
--- drivers/pci/pci-sysfs.c | 69 ++++++++++++++++++------------------------------ 1 file changed, 27 insertions(+), 42 deletions(-)
drivers/pci/pci-sysfs.c +27 -42
@@ -71,75 +71,60 @@ static ssize_t broken_parity_status_storreturn count; } -static ssize_t local_cpus_show (struct device *dev, -struct device_attribute *attr,char *buf) -{ -const struct cpumask *mask; +static ssize_t pci_show_cpuaffinity (struct device *dev, +int type,bool is_pci_dev, +struct device_attribute *attr, +char *buf) +{int len; +const struct cpumask *mask; +if (is_pci_dev) {#ifdef CONFIG_NUMA - mask = (dev_to_node (dev) ==-1 ) ? cpu_online_mask : -cpumask_of_node (dev_to_node (dev)); +int node =dev_to_node (dev); + + mask = (node ==-1 ) ? cpu_online_mask :cpumask_of_node (node);#else - mask =cpumask_of_pcibus (to_pci_dev (dev)->bus); + mask =cpumask_of_pcibus (to_pci_dev (dev)->bus);#endif - len =cpumask_scnprintf (buf,PAGE_SIZE -2 , mask); + }else + mask =cpumask_of_pcibus (to_pci_bus (dev)); + len = type ? +cpulist_scnprintf (buf,PAGE_SIZE -2 , mask) : +cpumask_scnprintf (buf,PAGE_SIZE -2 , mask); buf[len++] ='\n' ; buf[len] ='\0' ;return len; } +static ssize_t local_cpus_show (struct device *dev, +struct device_attribute *attr,char *buf) +{ +return pci_show_cpuaffinity (dev,0 , true, attr, buf); +} +static ssize_t local_cpulist_show (struct device *dev,struct device_attribute *attr,char *buf) { -const struct cpumask *mask; -int len; - -#ifdef CONFIG_NUMA - mask = (dev_to_node (dev) ==-1 ) ? cpu_online_mask : -cpumask_of_node (dev_to_node (dev)); -#else - mask =cpumask_of_pcibus (to_pci_dev (dev)->bus); -#endif - len =cpulist_scnprintf (buf,PAGE_SIZE -2 , mask); - buf[len++] ='\n' ; - buf[len] ='\0' ; -return len; +return pci_show_cpuaffinity (dev,1 , true, attr, buf); }/* * PCI Bus Class Devices */ -static ssize_t pci_bus_show_cpuaffinity (struct device *dev, -int type, -struct device_attribute *attr, -char *buf) -{ -int ret; -const struct cpumask *cpumask; - - cpumask =cpumask_of_pcibus (to_pci_bus (dev)); - ret = type ? -cpulist_scnprintf (buf,PAGE_SIZE -2 , cpumask) : -cpumask_scnprintf (buf,PAGE_SIZE -2 , cpumask); - buf[ret++] ='\n' ; - buf[ret] ='\0' ; -return ret; -} - -static inline ssize_t pci_bus_show_cpumaskaffinity (struct device *dev, +static ssize_t pci_bus_show_cpumaskaffinity (struct device *dev,struct device_attribute *attr,char *buf) { -return pci_bus_show_cpuaffinity (dev,0 , attr, buf); +return pci_show_cpuaffinity (dev,0 , false, attr, buf); } -static inline ssize_t pci_bus_show_cpulistaffinity (struct device *dev, +static ssize_t pci_bus_show_cpulistaffinity (struct device *dev,struct device_attribute *attr,char *buf) { -return pci_bus_show_cpuaffinity (dev,1 , attr, buf); +return pci_show_cpuaffinity (dev,1 , false, attr, buf); }/* show resources */