Messages in this thread | | | Date | Mon, 29 Nov 2021 07:55:04 +0100 | From | Greg Kroah-Hartman <> | Subject | Re: [PATCH 3/3] topology/sysfs: rework book and drawer topology ifdefery |
| |
On Sun, Nov 28, 2021 at 10:22:21PM +0100, Heiko Carstens wrote: > Provide default defines for the topology_book_[id|cpumask] and > topology_drawer_[id|cpumask] macros just like for each other topology > level. > This way all topology levels are handled in a similar way. Still the > the book and drawer levels are only used on s390, and also the sysfs > attributes are only created on s390. However other architectures may > opt in if wanted. > > Signed-off-by: Heiko Carstens <hca@linux.ibm.com> > --- > Documentation/admin-guide/cputopology.rst | 36 ++++++++++------------- > drivers/base/topology.c | 12 ++++---- > include/linux/topology.h | 16 ++++++++++ > 3 files changed, 37 insertions(+), 27 deletions(-) > > diff --git a/Documentation/admin-guide/cputopology.rst b/Documentation/admin-guide/cputopology.rst > index ad2238b41439..677ba1c2c820 100644 > --- a/Documentation/admin-guide/cputopology.rst > +++ b/Documentation/admin-guide/cputopology.rst > @@ -8,14 +8,9 @@ to /proc/cpuinfo output of some architectures. They reside in > Documentation/ABI/stable/sysfs-devices-system-cpu. > > Architecture-neutral, drivers/base/topology.c, exports these attributes. > -However, the book and drawer related sysfs files will only be created if > -CONFIG_SCHED_BOOK and CONFIG_SCHED_DRAWER are selected, respectively. > - > -The die and cluster hierarchy related sysfs files will only be created if an > -architecture provides the related macros as described below. > - > -CONFIG_SCHED_BOOK and CONFIG_SCHED_DRAWER are currently only used on s390, > -where they reflect the cpu and cache hierarchy. > +However the die, cluster, book, and drawer hierarchy related sysfs files will > +only be created if an architecture provides the related macros as described > +below. > > For an architecture to support this feature, it must define some of > these macros in include/asm-XXX/topology.h:: > @@ -42,19 +37,18 @@ To be consistent on all architectures, include/linux/topology.h > provides default definitions for any of the above macros that are > not defined by include/asm-XXX/topology.h: > > -1) topology_physical_package_id: -1 > -2) topology_die_id: -1 > -3) topology_cluster_id: -1 > -4) topology_core_id: 0 > -5) topology_sibling_cpumask: just the given CPU > -6) topology_core_cpumask: just the given CPU > -7) topology_cluster_cpumask: just the given CPU > -8) topology_die_cpumask: just the given CPU > - > -For architectures that don't support books (CONFIG_SCHED_BOOK) there are no > -default definitions for topology_book_id() and topology_book_cpumask(). > -For architectures that don't support drawers (CONFIG_SCHED_DRAWER) there are > -no default definitions for topology_drawer_id() and topology_drawer_cpumask(). > + 1) topology_physical_package_id: -1 > + 2) topology_die_id: -1 > + 3) topology_cluster_id: -1 > + 4) topology_core_id: 0 > + 5) topology_book_id: -1 > + 6) topology_drawer_id: -1 > + 7) topology_sibling_cpumask: just the given CPU > + 8) topology_core_cpumask: just the given CPU > + 9) topology_cluster_cpumask: just the given CPU > +10) topology_die_cpumask: just the given CPU > +11) topology_book_cpumask: just the given CPU > +12) topology_drawer_cpumask: just the given CPU > > Additionally, CPU topology information is provided under > /sys/devices/system/cpu and includes these files. The internal > diff --git a/drivers/base/topology.c b/drivers/base/topology.c > index 1a288eac2c44..a942fadd3c5b 100644 > --- a/drivers/base/topology.c > +++ b/drivers/base/topology.c > @@ -86,7 +86,7 @@ define_siblings_read_func(package_cpus, core_cpumask); > static BIN_ATTR_RO(package_cpus, 0); > static BIN_ATTR_RO(package_cpus_list, 0); > > -#ifdef CONFIG_SCHED_BOOK > +#ifndef topology_book_no_sysfs > define_id_show_func(book_id); > static DEVICE_ATTR_RO(book_id); > define_siblings_read_func(book_siblings, book_cpumask); > @@ -94,7 +94,7 @@ static BIN_ATTR_RO(book_siblings, 0); > static BIN_ATTR_RO(book_siblings_list, 0); > #endif > > -#ifdef CONFIG_SCHED_DRAWER > +#ifndef topology_drawer_no_sysfs > define_id_show_func(drawer_id); > static DEVICE_ATTR_RO(drawer_id); > define_siblings_read_func(drawer_siblings, drawer_cpumask); > @@ -119,11 +119,11 @@ static struct bin_attribute *bin_attrs[] = { > #endif > &bin_attr_package_cpus, > &bin_attr_package_cpus_list, > -#ifdef CONFIG_SCHED_BOOK > +#ifndef topology_book_no_sysfs
Again, flip around: TOPOLOGY_BOOK_SYSFS
thanks,
greg k-h
| |