.. | .. |
---|
14 | 14 | #include <linux/hardirq.h> |
---|
15 | 15 | #include <linux/topology.h> |
---|
16 | 16 | |
---|
17 | | -#define define_id_show_func(name) \ |
---|
18 | | -static ssize_t name##_show(struct device *dev, \ |
---|
19 | | - struct device_attribute *attr, char *buf) \ |
---|
20 | | -{ \ |
---|
21 | | - return sprintf(buf, "%d\n", topology_##name(dev->id)); \ |
---|
| 17 | +#define define_id_show_func(name) \ |
---|
| 18 | +static ssize_t name##_show(struct device *dev, \ |
---|
| 19 | + struct device_attribute *attr, char *buf) \ |
---|
| 20 | +{ \ |
---|
| 21 | + return sysfs_emit(buf, "%d\n", topology_##name(dev->id)); \ |
---|
22 | 22 | } |
---|
23 | 23 | |
---|
24 | 24 | #define define_siblings_show_map(name, mask) \ |
---|
.. | .. |
---|
43 | 43 | define_id_show_func(physical_package_id); |
---|
44 | 44 | static DEVICE_ATTR_RO(physical_package_id); |
---|
45 | 45 | |
---|
| 46 | +define_id_show_func(die_id); |
---|
| 47 | +static DEVICE_ATTR_RO(die_id); |
---|
| 48 | + |
---|
46 | 49 | define_id_show_func(core_id); |
---|
47 | 50 | static DEVICE_ATTR_RO(core_id); |
---|
48 | 51 | |
---|
.. | .. |
---|
50 | 53 | static DEVICE_ATTR_RO(thread_siblings); |
---|
51 | 54 | static DEVICE_ATTR_RO(thread_siblings_list); |
---|
52 | 55 | |
---|
| 56 | +define_siblings_show_func(core_cpus, sibling_cpumask); |
---|
| 57 | +static DEVICE_ATTR_RO(core_cpus); |
---|
| 58 | +static DEVICE_ATTR_RO(core_cpus_list); |
---|
| 59 | + |
---|
53 | 60 | define_siblings_show_func(core_siblings, core_cpumask); |
---|
54 | 61 | static DEVICE_ATTR_RO(core_siblings); |
---|
55 | 62 | static DEVICE_ATTR_RO(core_siblings_list); |
---|
| 63 | + |
---|
| 64 | +define_siblings_show_func(die_cpus, die_cpumask); |
---|
| 65 | +static DEVICE_ATTR_RO(die_cpus); |
---|
| 66 | +static DEVICE_ATTR_RO(die_cpus_list); |
---|
| 67 | + |
---|
| 68 | +define_siblings_show_func(package_cpus, core_cpumask); |
---|
| 69 | +static DEVICE_ATTR_RO(package_cpus); |
---|
| 70 | +static DEVICE_ATTR_RO(package_cpus_list); |
---|
56 | 71 | |
---|
57 | 72 | #ifdef CONFIG_SCHED_BOOK |
---|
58 | 73 | define_id_show_func(book_id); |
---|
.. | .. |
---|
72 | 87 | |
---|
73 | 88 | static struct attribute *default_attrs[] = { |
---|
74 | 89 | &dev_attr_physical_package_id.attr, |
---|
| 90 | + &dev_attr_die_id.attr, |
---|
75 | 91 | &dev_attr_core_id.attr, |
---|
76 | 92 | &dev_attr_thread_siblings.attr, |
---|
77 | 93 | &dev_attr_thread_siblings_list.attr, |
---|
| 94 | + &dev_attr_core_cpus.attr, |
---|
| 95 | + &dev_attr_core_cpus_list.attr, |
---|
78 | 96 | &dev_attr_core_siblings.attr, |
---|
79 | 97 | &dev_attr_core_siblings_list.attr, |
---|
| 98 | + &dev_attr_die_cpus.attr, |
---|
| 99 | + &dev_attr_die_cpus_list.attr, |
---|
| 100 | + &dev_attr_package_cpus.attr, |
---|
| 101 | + &dev_attr_package_cpus_list.attr, |
---|
80 | 102 | #ifdef CONFIG_SCHED_BOOK |
---|
81 | 103 | &dev_attr_book_id.attr, |
---|
82 | 104 | &dev_attr_book_siblings.attr, |
---|
.. | .. |
---|
111 | 133 | return 0; |
---|
112 | 134 | } |
---|
113 | 135 | |
---|
114 | | -static int topology_sysfs_init(void) |
---|
| 136 | +static int __init topology_sysfs_init(void) |
---|
115 | 137 | { |
---|
116 | 138 | return cpuhp_setup_state(CPUHP_TOPOLOGY_PREPARE, |
---|
117 | 139 | "base/topology:prepare", topology_add_dev, |
---|