8735728ef8
During CPU hot-remove the sysfs directory created by threshold_create_bank(), defined in arch/x86/kernel/cpu/mcheck/mce_amd_64.c, has to be removed before its parent directory, created by mce_create_device(), defined in arch/x86/kernel/cpu/mcheck/mce_64.c . Moreover, when the CPU in question is hotplugged again, obviously the latter has to be created before the former. At present, the right ordering is not enforced, because all of these operations are carried out by CPU hotplug notifiers which are not appropriately ordered with respect to each other. This leads to serious problems on systems with two or more multicore AMD CPUs, among other things during suspend and hibernation. Fix the problem by placing threshold bank CPU hotplug callbacks in mce_cpu_callback(), so that they are invoked at the right places, if defined. Additionally, use kobject_del() to remove the sysfs directory associated with the kobject created by kobject_create_and_add() in threshold_create_bank(), to prevent the kernel from crashing during CPU hotplug operations on systems with two or more multicore AMD CPUs. This patch fixes bug #11337. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Acked-by: Andi Kleen <andi@firstfloor.org> Tested-by: Mark Langsdorf <mark.langsdorf@amd.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> |
||
---|---|---|
.. | ||
cpufreq | ||
mcheck | ||
mtrr | ||
addon_cpuid_features.c | ||
amd.c | ||
amd_64.c | ||
bugs.c | ||
bugs_64.c | ||
centaur.c | ||
centaur_64.c | ||
common.c | ||
common_64.c | ||
cpu.h | ||
cyrix.c | ||
feature_names.c | ||
intel.c | ||
intel_64.c | ||
intel_cacheinfo.c | ||
Makefile | ||
perfctr-watchdog.c | ||
proc.c | ||
transmeta.c | ||
umc.c |