| .. | .. |
|---|
| 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, |
|---|