2021-04-29 07:05:59

by Tian Tao

[permalink] [raw]
Subject: [PATCH 0/2] clarify and cleanup CPU and NUMA topology ABIs

patch #1: clarify the overflow issue of sysfs pagebuf, and Move the
presence of BUILD_BUG_ON to more sensible place.

patch #2: move the interface that exists under
/sys/devices/system/cpu/cpuX/topology/ to the more logical
Documentation/ABI/ file that can be properly parsed and
displayed to the user space.

these two patches are a follow-up to Greg's comments in the below threads:
https://lore.kernel.org/lkml/[email protected]/
https://lore.kernel.org/lkml/[email protected]/

Tian Tao (2):
CPU, NUMA topology ABIs: clarify the overflow issue of sysfs pagebuf
Documentation/ABI: Move the topology-related sysfs interface to the
right place

Documentation/ABI/stable/sysfs-devices-node | 5 +-
Documentation/ABI/stable/sysfs-devices-system-cpu | 142 ++++++++++++++++++++++
Documentation/admin-guide/cputopology.rst | 83 +------------
drivers/base/node.c | 3 -
include/linux/cpumask.h | 6 +
5 files changed, 154 insertions(+), 85 deletions(-)

--
2.7.4


2021-04-29 07:08:17

by Tian Tao

[permalink] [raw]
Subject: [PATCH 2/2] Documentation/ABI: Move the topology-related sysfs interface to the right place

Move the interface that exists under
/sys/devices/system/cpu/cpuX/topology/ to the more logical
Documentation/ABI/ file that can be properly parsed and
displayed to the user space

Signed-off-by: Tian Tao <[email protected]>
---
Documentation/ABI/stable/sysfs-devices-system-cpu | 142 ++++++++++++++++++++++
Documentation/admin-guide/cputopology.rst | 98 +--------------
2 files changed, 144 insertions(+), 96 deletions(-)

diff --git a/Documentation/ABI/stable/sysfs-devices-system-cpu b/Documentation/ABI/stable/sysfs-devices-system-cpu
index 33c133e..f63a72d 100644
--- a/Documentation/ABI/stable/sysfs-devices-system-cpu
+++ b/Documentation/ABI/stable/sysfs-devices-system-cpu
@@ -1,3 +1,7 @@
+Export CPU topology info via sysfs. Items (attributes) are similar
+to /proc/cpuinfo output of some architectures. They reside in
+/sys/devices/system/cpu/cpuX/topology/:
+
What: /sys/devices/system/cpu/dscr_default
Date: 13-May-2014
KernelVersion: v3.15.0
@@ -23,3 +27,141 @@ Description: Default value for the Data Stream Control Register (DSCR) on
here).
If set by a process it will be inherited by child processes.
Values: 64 bit unsigned integer (bit field)
+
+What: /sys/devices/system/cpu/cpuX/topology/physical_package_id
+Date: 19-Mar-2021
+KernelVersion: v5.12
+Contact:
+Description: physical package id of cpuX. Typically corresponds to a physical
+ socket number, but the actual value is architecture and platform
+ dependent.
+Values: 64 bit unsigned integer (bit field)
+
+What: /sys/devices/system/cpu/cpuX/topology/die_id
+Date: 19-Mar-2021
+KernelVersion: v5.12
+Contact:
+Description: the CPU die ID of cpuX. Typically it is the hardware platform's
+ identifier (rather than the kernel's). The actual value is
+ architecture and platform dependent.
+Values: 64 bit unsigned integer (bit field)
+
+What: /sys/devices/system/cpu/cpuX/topology/core_id
+Date: 19-Mar-2021
+KernelVersion: v5.12
+Contact:
+Description: the CPU core ID of cpuX. Typically it is the hardware platform's
+ identifier (rather than the kernel's). The actual value is
+ architecture and platform dependent.
+Values: 64 bit unsigned integer (bit field)
+
+What: /sys/devices/system/cpu/cpuX/topology/book_id
+Date: 19-Mar-2021
+KernelVersion: v5.12
+Contact:
+Description: the book ID of cpuX. Typically it is the hardware platform's
+ identifier (rather than the kernel's). The actual value is
+ architecture and platform dependent. it's only used on s390.
+Values: 64 bit unsigned integer (bit field)
+
+What: /sys/devices/system/cpu/cpuX/topology/drawer_id
+Date: 19-Mar-2021
+KernelVersion: v5.12
+Contact:
+Description: the drawer ID of cpuX. Typically it is the hardware platform's
+ identifier (rather than the kernel's). The actual value is
+ architecture and platform dependent. it's only used on s390.
+Values: 64 bit unsigned integer (bit field)
+
+What: /sys/devices/system/cpu/cpuX/topology/core_cpus
+Date: 19-Mar-2021
+KernelVersion: v5.12
+Contact:
+Description: internal kernel map of CPUs within the same core.
+ (deprecated name: "thread_siblings")
+Values: hexadecimal bitmask.
+
+What: /sys/devices/system/cpu/cpuX/topology/core_cpus_list
+Date: 19-Mar-2021
+KernelVersion: v5.12
+Contact:
+Description: human-readable list of CPUs within the same core.
+ The format is like 0-3, 8-11, 14,17. The maximum size is PAGE_SIZE,
+ so the tail of the string will be trimmed while its size is larger
+ than PAGE_SIZE.
+ (deprecated name: "thread_siblings_list").
+Values: decimal list.
+
+What: /sys/devices/system/cpu/cpuX/topology/package_cpus
+Date: 19-Mar-2021
+KernelVersion: v5.12
+Contact:
+Description: internal kernel map of the CPUs sharing the same physical_package_id.
+ (deprecated name: "core_siblings").
+Values: hexadecimal bitmask.
+
+What: /sys/devices/system/cpu/cpuX/topology/package_cpus_list
+Date: 19-Mar-2021
+KernelVersion: v5.12
+Contact:
+Description: human-readable list of CPUs sharing the same physical_package_id.
+ The format is like 0-3, 8-11, 14,17. The maximum size is PAGE_SIZE,
+ so the tail of the string will be trimmed while its size is larger
+ than PAGE_SIZE.
+ (deprecated name: "core_siblings_list")
+Values: decimal list.
+
+What: /sys/devices/system/cpu/cpuX/topology/die_cpus
+Date: 19-Mar-2021
+KernelVersion: v5.12
+Contact:
+Description: internal kernel map of CPUs within the same die.
+Values: hexadecimal bitmask.
+
+What: /sys/devices/system/cpu/cpuX/topology/die_cpus_list
+Date: 19-Mar-2021
+KernelVersion: v5.12
+Contact:
+Description: human-readable list of CPUs within the same die.
+ The format is like 0-3, 8-11, 14,17. The maximum size is PAGE_SIZE,
+ so the tail of the string will be trimmed while its size is larger
+ than PAGE_SIZE.
+Values: decimal list.
+
+What: /sys/devices/system/cpu/cpuX/topology/book_siblings
+Date: 19-Mar-2021
+KernelVersion: v5.12
+Contact:
+Description: internal kernel map of cpuX's hardware threads within the same
+ book_id. it's only used on s390.
+Values: hexadecimal bitmask.
+
+What: /sys/devices/system/cpu/cpuX/topology/book_siblings_list
+Date: 19-Mar-2021
+KernelVersion: v5.12
+Contact:
+Description: human-readable list of cpuX's hardware threads within the same
+ book_id. it's only used on s390.
+ The format is like 0-3, 8-11, 14,17. The maximum size is PAGE_SIZE,
+ so the tail of the string will be trimmed while its size is larger
+ than PAGE_SIZE.
+Values: decimal list.
+
+What: /sys/devices/system/cpu/cpuX/topology/drawer_siblings
+Date: 19-Mar-2021
+KernelVersion: v5.12
+Contact:
+Description: internal kernel map of cpuX's hardware threads within the same
+ drawer_id. it's only used on s390.
+Values: hexadecimal bitmask.
+
+What: /sys/devices/system/cpu/cpuX/topology/drawer_siblings_list
+Date: 19-Mar-2021
+KernelVersion: v5.12
+Contact:
+Description: human-readable list of cpuX's hardware threads within the same
+ drawer_id.
+ The format is like 0-3, 8-11, 14,17. The maximum size is PAGE_SIZE,
+ so the tail of the string will be trimmed while its size is larger
+ than PAGE_SIZE. it's only used on s390.
+Values: decimal list.
diff --git a/Documentation/admin-guide/cputopology.rst b/Documentation/admin-guide/cputopology.rst
index 4538d78..de1995c 100644
--- a/Documentation/admin-guide/cputopology.rst
+++ b/Documentation/admin-guide/cputopology.rst
@@ -2,102 +2,8 @@
How CPU topology info is exported via sysfs
===========================================

-Export CPU topology info via sysfs. Items (attributes) are similar
-to /proc/cpuinfo output of some architectures. They reside in
-/sys/devices/system/cpu/cpuX/topology/:
-
-physical_package_id:
-
- physical package id of cpuX. Typically corresponds to a physical
- socket number, but the actual value is architecture and platform
- dependent.
-
-die_id:
-
- the CPU die ID of cpuX. Typically it is the hardware platform's
- identifier (rather than the kernel's). The actual value is
- architecture and platform dependent.
-
-core_id:
-
- the CPU core ID of cpuX. Typically it is the hardware platform's
- identifier (rather than the kernel's). The actual value is
- architecture and platform dependent.
-
-book_id:
-
- the book ID of cpuX. Typically it is the hardware platform's
- identifier (rather than the kernel's). The actual value is
- architecture and platform dependent.
-
-drawer_id:
-
- the drawer ID of cpuX. Typically it is the hardware platform's
- identifier (rather than the kernel's). The actual value is
- architecture and platform dependent.
-
-core_cpus:
-
- internal kernel map of CPUs within the same core.
- (deprecated name: "thread_siblings")
-
-core_cpus_list:
-
- human-readable list of CPUs within the same core.
- The format is like 0-3, 8-11, 14,17. The maximum size is PAGE_SIZE,
- so the tail of the string will be trimmed while its size is larger
- than PAGE_SIZE.
- (deprecated name: "thread_siblings_list");
-
-package_cpus:
-
- internal kernel map of the CPUs sharing the same physical_package_id.
- (deprecated name: "core_siblings")
-
-package_cpus_list:
-
- human-readable list of CPUs sharing the same physical_package_id.
- The format is like 0-3, 8-11, 14,17. The maximum size is PAGE_SIZE,
- so the tail of the string will be trimmed while its size is larger
- than PAGE_SIZE.
- (deprecated name: "core_siblings_list")
-
-die_cpus:
-
- internal kernel map of CPUs within the same die.
-
-die_cpus_list:
-
- human-readable list of CPUs within the same die.
- The format is like 0-3, 8-11, 14,17. The maximum size is PAGE_SIZE,
- so the tail of the string will be trimmed while its size is larger
- than PAGE_SIZE.
-
-book_siblings:
-
- internal kernel map of cpuX's hardware threads within the same
- book_id.
-
-book_siblings_list:
-
- human-readable list of cpuX's hardware threads within the same
- book_id.
- The format is like 0-3, 8-11, 14,17. The maximum size is PAGE_SIZE,
- so the tail of the string will be trimmed while its size is larger
- than PAGE_SIZE.
-
-drawer_siblings:
-
- internal kernel map of cpuX's hardware threads within the same
- drawer_id.
-
-drawer_siblings_list:
-
- human-readable list of cpuX's hardware threads within the same
- drawer_id.
- The format is like 0-3, 8-11, 14,17. The maximum size is PAGE_SIZE,
- so the tail of the string will be trimmed while its size is larger
- than PAGE_SIZE.
+Export CPU topology info via sysfs. Please refer to the ABI file:
+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
--
2.7.4