The information in /sys/devices/system/cpu/cpuX/topology directory is useful for userspace monitoring applications and in-tree utilities like cpupower & turbostat.
When down'ing a CPU the /sys/devices/system/cpu/cpuX/topology directory is removed during the CPU_DEAD hotplug callback in the kernel. The problem with this model is that the CPU has not been physically removed and the data in the topology directory is still valid. This patchset adds CONFIG_PERMANENT_CPU_TOPOLOGY, and is Y by default for x86, an N for all other arches. When enabled the kernel is modified so that the topology directory is added to the core cpu sysfs files so that the topology directory exists for the lifetime of the CPU. When disabled, the behavior of the current kernel is maintained (that is, the topology directory is removed on a down and added on an up). Adding CONFIG_PERMANENT_CPU_TOPOLOGY may require additional architecture so that the cpumask data the CPU's topology is not cleared during a CPU down. This patchset combines drivers/base/topology.c and drivers/base/cpu.c to implement CONFIG_PERMANENT_CPU_TOPOLOGY, and leaves all arches except x86 with the current behavior, and adds an additional minor cleanup to drivers/base/cpu.c. Before patch: [root@prarit cpu143]# ls cache crash_notes firmware_node online thermal_throttle cpufreq crash_notes_size microcode power topology cpuidle driver node3 subsystem uevent Down a cpu [root@prarit cpu143]# echo 0 > online [root@intel-brickland-05 cpu143]# ls cpuidle crash_notes_size firmware_node online subsystem crash_notes driver node3 power uevent [root@intel-brickland-05 cpu143]# ls -l topology ls: cannot access topology: No such file or directory After patch: [root@prarit cpu143]# ls cache crash_notes firmware_node online thermal_throttle cpufreq crash_notes_size microcode power topology cpuidle driver node3 subsystem uevent [root@prarit cpu143]# cat topology/* 27 ffff,c0000000,000000ff,ffc00000,00000000 54-71,126-143 3 8000,00000000,00000080,00000000,00000000 71,143 Down a cpu [root@prarit cpu143]# echo 0 > online [root@intel-brickland-05 cpu143]# ls cpuidle crash_notes_size firmware_node online subsystem uevent crash_notes driver node3 power topology [root@prarit cpu143]# cat topology/* 27 ffff,c0000000,000000ff,ffc00000,00000000 54-71,126-143 3 8000,00000000,00000080,00000000,00000000 71,143 I did some light testing with and without BOOTPARAM_HOTPLUG_CPU0 enabled, and up'd and down'd CPUs in sequence, randomly, by thread group, by socket group and didn't see any issues. Cc: Thomas Gleixner <t...@linutronix.de> Cc: Ingo Molnar <mi...@redhat.com> Cc: "H. Peter Anvin" <h...@zytor.com> Cc: x...@kernel.org Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org> Cc: Borislav Petkov <b...@alien8.de> Cc: Len Brown <len.br...@intel.com> Cc: Andy Lutomirski <l...@amacapital.net> Cc: Zhu Guihua <zhugh.f...@cn.fujitsu.com> Cc: Denys Vlasenko <dvlas...@redhat.com> Cc: "Jan H. Schönherr" <jscho...@amazon.de> Cc: Boris Ostrovsky <boris.ostrov...@oracle.com> Cc: Prarit Bhargava <pra...@redhat.com> Cc: "Paul E. McKenney" <paul...@linux.vnet.ibm.com> Cc: Thomas Renninger <tr...@suse.de> Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org> Signed-off-by: Prarit Bhargava <pra...@redhat.com> Prarit Bhargava (2): cpu hotplug, add CONFIG_PERMANENT_CPU_TOPOLOGY and keep topology directory for lifetime of CPU base, cpu, remove hotplugable_cpu_attr_groups arch/x86/kernel/smpboot.c | 28 -------- drivers/base/Kconfig | 13 ++++ drivers/base/Makefile | 2 +- drivers/base/cpu.c | 141 ++++++++++++++++++++++++++++++++++++++--- drivers/base/topology.c | 155 --------------------------------------------- 5 files changed, 146 insertions(+), 193 deletions(-) delete mode 100644 drivers/base/topology.c -- 1.7.9.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/