]> Git Repo - linux.git/commit
kernel: remove stop_machine() Kconfig dependency
authorChris Wilson <[email protected]>
Fri, 11 Dec 2015 21:40:46 +0000 (13:40 -0800)
committerLinus Torvalds <[email protected]>
Sat, 12 Dec 2015 18:15:34 +0000 (10:15 -0800)
commit86fffe4a61dd972d5a4e23260d530be6da02f614
tree60727aa79cbed733cee2343417bcba5bd6b0d6c4
parent98e89cf02aed11166698dd53c6f14865613babb3
kernel: remove stop_machine() Kconfig dependency

Currently the full stop_machine() routine is only enabled on SMP if
module unloading is enabled, or if the CPUs are hotpluggable.  This
leads to configurations where stop_machine() is broken as it will then
only run the callback on the local CPU with irqs disabled, and not stop
the other CPUs or run the callback on them.

For example, this breaks MTRR setup on x86 in certain configs since
ea8596bb2d8d379 ("kprobes/x86: Remove unused text_poke_smp() and
text_poke_smp_batch() functions") as the MTRR is only established on the
boot CPU.

This patch removes the Kconfig option for STOP_MACHINE and uses the SMP
and HOTPLUG_CPU config options to compile the correct stop_machine() for
the architecture, removing the false dependency on MODULE_UNLOAD in the
process.

Link: https://lkml.org/lkml/2014/10/8/124
References: https://bugs.freedesktop.org/show_bug.cgi?id=84794
Signed-off-by: Chris Wilson <[email protected]>
Acked-by: Ingo Molnar <[email protected]>
Cc: "Paul E. McKenney" <[email protected]>
Cc: Pranith Kumar <[email protected]>
Cc: Michal Hocko <[email protected]>
Cc: Vladimir Davydov <[email protected]>
Cc: Johannes Weiner <[email protected]>
Cc: H. Peter Anvin <[email protected]>
Cc: Tejun Heo <[email protected]>
Cc: Iulia Manda <[email protected]>
Cc: Andy Lutomirski <[email protected]>
Cc: Rusty Russell <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Chuck Ebbert <[email protected]>
Cc: Oleg Nesterov <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
include/linux/stop_machine.h
init/Kconfig
kernel/stop_machine.c
This page took 0.044004 seconds and 4 git commands to generate.