Anna-Maria Gleixner
e46b1db249
mm/compaction: Convert to hotplug state machine
...
Install the callbacks via the state machine. Should the hotplug init fail then
no threads are spawned.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de >
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: Michal Hocko <mhocko@suse.com >
Cc: Mel Gorman <mgorman@techsingularity.net >
Cc: linux-mm@kvack.org
Cc: rt@linutronix.de
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: Vlastimil Babka <vbabka@suse.cz >
Link: http://lkml.kernel.org/r/20161126231350.10321-15-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-12-02 00:52:37 +01:00
Anna-Maria Gleixner
21647615db
iommu/vt-d: Convert to hotplug state machine
...
Install the callbacks via the state machine.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de >
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: iommu@lists.linux-foundation.org
Cc: rt@linutronix.de
Cc: David Woodhouse <dwmw2@infradead.org >
Link: http://lkml.kernel.org/r/20161126231350.10321-14-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-12-02 00:52:37 +01:00
Sebastian Andrzej Siewior
cab7a7e5b6
mm/zswap: Convert pool to hotplug state machine
...
Install the callbacks via the state machine. Multi state is used to address the
per-pool notifier. Uppon adding of the intance the callback is invoked for all
online CPUs so the manual init can go.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: linux-mm@kvack.org
Cc: Seth Jennings <sjenning@redhat.com >
Cc: rt@linutronix.de
Link: http://lkml.kernel.org/r/20161126231350.10321-13-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-12-02 00:52:36 +01:00
Sebastian Andrzej Siewior
ad7ed7708d
mm/zswap: Convert dst-mem to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: linux-mm@kvack.org
Cc: Seth Jennings <sjenning@redhat.com >
Cc: rt@linutronix.de
Link: http://lkml.kernel.org/r/20161126231350.10321-12-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-12-02 00:52:36 +01:00
Sebastian Andrzej Siewior
215c89d055
mm/zsmalloc: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com >
Cc: linux-mm@kvack.org
Cc: Minchan Kim <minchan@kernel.org >
Cc: rt@linutronix.de
Cc: Nitin Gupta <ngupta@vflare.org >
Link: http://lkml.kernel.org/r/20161126231350.10321-11-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-12-02 00:52:36 +01:00
Sebastian Andrzej Siewior
5438da977f
mm/vmstat: Convert to hotplug state machine
...
Install the callbacks via the state machine, but do not invoke them as we
can initialize the node state without calling the callbacks on all online
CPUs.
start_shepherd_timer() is now called outside the get_online_cpus() block
which is safe as it only operates on cpu possible mask.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: linux-mm@kvack.org
Cc: rt@linutronix.de
Cc: Johannes Weiner <hannes@cmpxchg.org >
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: Mel Gorman <mgorman@techsingularity.net >
Cc: Vlastimil Babka <vbabka@suse.cz >
Link: http://lkml.kernel.org/r/20161129145221.ffc3kg3hd7lxiwj6@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-12-02 00:52:35 +01:00
Sebastian Andrzej Siewior
4c501327b4
mm/vmstat: Avoid on each online CPU loops
...
Both iterations over online cpus can be replaced by the proper node
specific functions.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Acked-by: Michal Hocko <mhocko@suse.com >
Cc: linux-mm@kvack.org
Cc: rt@linutronix.de
Cc: Johannes Weiner <hannes@cmpxchg.org >
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: Mel Gorman <mgorman@techsingularity.net >
Cc: Vlastimil Babka <vbabka@suse.cz >
Link: http://lkml.kernel.org/r/20161129145113.fn3lw5aazjjvdrr3@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-12-02 00:52:35 +01:00
Sebastian Andrzej Siewior
76f290935b
mm/vmstat: Drop get_online_cpus() from init_cpu_node_state/vmstat_cpu_dead()
...
Both functions are called with protection against cpu hotplug already so
*_online_cpus() could be dropped.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Acked-by: Michal Hocko <mhocko@suse.com >
Cc: linux-mm@kvack.org
Cc: rt@linutronix.de
Cc: Johannes Weiner <hannes@cmpxchg.org >
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: Mel Gorman <mgorman@techsingularity.net >
Cc: Vlastimil Babka <vbabka@suse.cz >
Link: http://lkml.kernel.org/r/20161126231350.10321-8-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-12-02 00:52:35 +01:00
Sebastian Andrzej Siewior
b32614c034
tracing/rb: Convert to hotplug state machine
...
Install the callbacks via the state machine. The notifier in struct
ring_buffer is replaced by the multi instance interface. Upon
__ring_buffer_alloc() invocation, cpuhp_state_add_instance() will invoke
the trace_rb_cpu_prepare() on each CPU.
This callback may now fail. This means __ring_buffer_alloc() will fail and
cleanup (like previously) and during a CPU up event this failure will not
allow the CPU to come up.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: rt@linutronix.de
Link: http://lkml.kernel.org/r/20161126231350.10321-7-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-12-02 00:52:34 +01:00
Sebastian Andrzej Siewior
14660b7ea3
oprofile/nmi timer: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: oprofile-list@lists.sf.net
Cc: Robert Richter <rric@kernel.org >
Cc: rt@linutronix.de
Link: http://lkml.kernel.org/r/20161126231350.10321-6-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-12-02 00:52:34 +01:00
Sebastian Andrzej Siewior
9c6bafab03
net/iucv: Use explicit clean up labels in iucv_init()
...
Ursula suggested to use explicit labels for clean up in the error path
instead of one `out_free' label, which handles multiple exits, introduced
in commit 38b482929e ("net/iucv: Convert to hotplug state machine").
Suggested-by: Ursula Braun <ubraun@linux.vnet.ibm.com >
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: linux-s390@vger.kernel.org
Cc: netdev@vger.kernel.org
Cc: rt@linutronix.de
Cc: "David S. Miller" <davem@davemloft.net >
Link: http://lkml.kernel.org/r/20161124161013.dukr42y2nwscosk6@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-28 17:29:04 +01:00
Sebastian Andrzej Siewior
c8b877a5e5
x86/pci/amd-bus: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
The smp_call_function_single() is dropped because the ONLINE callback is
invoked on the target CPU since commit 1cf4f629d9 ("cpu/hotplug: Move
online calls to hotplugged cpu"). smp_call_function_single() invokes the
invoked function with interrupts disabled, but this calling convention is
not preserved as the MSR is not modified by anything else than this code.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: linux-pci@vger.kernel.org
Cc: rt@linuxtronix.de
Link: http://lkml.kernel.org/r/20161117183541.8588-21-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-22 23:34:43 +01:00
Sebastian Andrzej Siewior
89666c5047
x86/oprofile/nmi: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: Robert Richter <rric@kernel.org >
Cc: oprofile-list@lists.sf.net
Cc: rt@linuxtronix.de
Link: http://lkml.kernel.org/r/20161117183541.8588-20-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-22 23:34:43 +01:00
Anna-Maria Gleixner
08ed487c81
x86/oprofile/nmi: Remove superfluous smp_function_call_single()
...
Since commit 1cf4f629d9 ("cpu/hotplug: Move online calls to
hotplugged cpu") the CPU_ONLINE and CPU_DOWN_PREPARE notifiers are
always run on the hot plugged CPU, and as of commit 3b9d6da67e
("cpu/hotplug: Fix rollback during error-out in __cpu_disable()")
the CPU_DOWN_FAILED notifier also runs on the hot plugged CPU.
This patch converts the SMP functional calls into direct calls.
smp_call_function_single() executes the function with interrupts
disabled. This calling convention is preserved.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de >
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: Robert Richter <rric@kernel.org >
Cc: rt@linuxtronix.de
Cc: oprofile-list@lists.sf.net
Link: http://lkml.kernel.org/r/20161117183541.8588-19-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-22 23:34:42 +01:00
Sebastian Andrzej Siewior
e5355cd6e7
sparc/sysfs: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
The previous convention of keeping the files around until the CPU is dead
has not been preserved as there is no point to keep them available when the
cpu is going down. This makes the hotplug call symmetric.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Acked-by: "David S. Miller" <davem@davemloft.net >
Cc: sparclinux@vger.kernel.org
Cc: rt@linuxtronix.de
Link: http://lkml.kernel.org/r/20161117183541.8588-18-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-22 23:34:42 +01:00
Sebastian Andrzej Siewior
977ab257a2
powerpc/sysfs: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
The previous convention of keeping the files around until the CPU is dead
has not been preserved as there is no point to keep them available when the
cpu is going down. This makes the hotplug call symmetric.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: rt@linuxtronix.de
Cc: Paul Mackerras <paulus@samba.org >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: linuxppc-dev@lists.ozlabs.org
Link: http://lkml.kernel.org/r/20161117183541.8588-17-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-22 23:34:42 +01:00
Sebastian Andrzej Siewior
9b377e217f
ARM/hw_breakpoint: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
smp_call_function_single() has been removed because the function is already
invoked on the target CPU.
[ tglx: Added protection agaist hotplug back according to discussion with Will ]
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: Mark Rutland <mark.rutland@arm.com >
Cc: rt@linuxtronix.de
Cc: Will Deacon <will.deacon@arm.com >
Cc: Russell King <linux@armlinux.org.uk >
Cc: linux-arm-kernel@lists.infradead.org
Link: http://lkml.kernel.org/r/20161117183541.8588-16-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-22 23:34:41 +01:00
Sebastian Andrzej Siewior
a3c9b14f6f
arm/bL_switcher: Convert to hotplug state machine
...
Install the callbacks via the state machine.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: rt@linuxtronix.de
Cc: linux-arm-kernel@lists.infradead.org
Cc: Russell King <linux@armlinux.org.uk >
Link: http://lkml.kernel.org/r/20161117183541.8588-15-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-22 23:34:41 +01:00
Sebastian Andrzej Siewior
31eff2434d
sched/nohz: Convert to hotplug state machine
...
Install the callbacks via the state machine.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: rt@linuxtronix.de
Link: http://lkml.kernel.org/r/20161117183541.8588-14-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-22 23:34:41 +01:00
Sebastian Andrzej Siewior
38b482929e
net/iucv: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke the
callbacks on the already online CPUs. The smp function calls in the
online/downprep callbacks are not required as the callback is guaranteed to
be invoked on the upcoming/outgoing cpu.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: "David S. Miller" <davem@davemloft.net >
Cc: linux-s390@vger.kernel.org
Cc: netdev@vger.kernel.org
Cc: Ursula Braun <ubraun@linux.vnet.ibm.com >
Cc: rt@linuxtronix.de
Link: http://lkml.kernel.org/r/20161117183541.8588-13-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-22 23:34:40 +01:00
Sebastian Andrzej Siewior
948b9c60cb
watchdog/octeon: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: Wim Van Sebroeck <wim@iguana.be >
Cc: rt@linuxtronix.de
Cc: Guenter Roeck <linux@roeck-us.net >
Cc: linux-watchdog@vger.kernel.org
Link: http://lkml.kernel.org/r/20161117183541.8588-12-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-22 23:34:40 +01:00
Sebastian Andrzej Siewior
9c248f8896
PCI/xgene-msi: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: linux-pci@vger.kernel.org
Cc: Duc Dang <dhdang@apm.com >
Cc: rt@linuxtronix.de
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: linux-arm-kernel@lists.infradead.org
Link: http://lkml.kernel.org/r/20161117183541.8588-8-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-22 23:34:40 +01:00
Sebastian Andrzej Siewior
8fba38c937
x86/msr: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
Move the callbacks to online/offline as there is no point in having the
files around before the cpu is online and until its completely gone.
[ tglx: Move the callbacks to online/offline ]
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: rt@linuxtronix.de
Link: http://lkml.kernel.org/r/20161117183541.8588-4-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-22 23:34:39 +01:00
Thomas Gleixner
ee92be9b0d
x86/cpuid: Move the hotplug callbacks to online
...
No point to have this file around before the cpu is online and no point to
have it around until the cpu is dead. Get rid of the explicit state.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Sebastian Siewior <bigeasy@linutronix.de >
2016-11-22 23:34:39 +01:00
Sebastian Andrzej Siewior
8c07b494ab
x86/cpuid: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: rt@linuxtronix.de
Link: http://lkml.kernel.org/r/20161117183541.8588-3-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-22 23:34:39 +01:00
Thomas Gleixner
33d97302eb
x86/mce/therm_throt: Move hotplug callbacks to online
...
No point to have the sysfs files around before the cpu is online and no
point to have them around until the cpu is dead. Get rid of the explicit
state.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Sebastian Siewior <bigeasy@linutronix.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Borislav Petkov <bp@alien8.de >
2016-11-22 23:34:38 +01:00
Sebastian Andrzej Siewior
d6526e73db
x86/mce/therm_throt: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: rt@linuxtronix.de
Cc: Borislav Petkov <bp@alien8.de >
Cc: linux-edac@vger.kernel.org
Link: http://lkml.kernel.org/r/20161117183541.8588-2-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-22 23:34:38 +01:00
Borislav Petkov
254fe9c7a4
x86/MCE/AMD: Fix thinko about thresholding_en
...
So adding thresholding_en et al was a good thing for removing the
per-CPU thresholding callback, i.e., threshold_cpu_callback.
But, in order for it to work and especially that test in
mce_threshold_create_device() so that all thresholding banks get
properly created and not the whole thing to fail with a NULL ptr
dereference at mce_cpu_pre_down() when we offline the CPUs, we need to
set the thresholding_en flag *before* we start creating the devices.
Yap, it failed because thresholding_en wasn't set at the time
we were creating the banks so we didn't create any and then at
mce_cpu_pre_down() -> mce_threshold_remove_device() time, we would blow
up.
And the fix is actually easy: we have thresholding on the system when we
have managed to set the thresholding vector to amd_threshold_interrupt()
earlier in mce_amd_feature_init() while we were picking apart the
thresholding banks and what is set and what not.
So let's do that.
Signed-off-by: Borislav Petkov <bp@suse.de >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Yazen Ghannam <Yazen.Ghannam@amd.com >
Fixes: 4d7b02d58c ("x86/mcheck: Split threshold_cpu_callback into two callbacks")
Link: http://lkml.kernel.org/r/20161119103402.5227-1-bp@alien8.de
Signed-off-by: Ingo Molnar <mingo@kernel.org >
2016-11-21 11:02:12 +01:00
Thomas Gleixner
f97960fbdd
kernel/printk: Block cpuhotplug callback when tasks are frozen
...
The recent conversion of the console hotplug notifier to the state machine
missed the fact, that the notifier only operated on the non frozen
transitions. As a consequence the console_lock/unlock() pair is also
invoked during suspend, which results in a lockdep warning.
Restore the previous state by making the lock/unlock conditional on
!tasks_frozen.
Fixes: 90b14889d2 ("kernel/printk: Convert to hotplug state machine")
Reported-and-tested-by: Borislav Petkov <bp@alien8.de >
Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1611171729320.3645@nanos
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
2016-11-17 19:44:58 +01:00
Sebastian Andrzej Siewior
0e285d36bd
x86/mcheck: Move CPU_DEAD to hotplug state machine
...
This moves the last piece of the old hotplug notifier code in MCE to the
new hotplug state machine.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Acked-by: Borislav Petkov <bp@alien8.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: rt@linutronix.de
Cc: linux-edac@vger.kernel.org
Link: http://lkml.kernel.org/r/20161110174447.11848-8-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-16 09:34:18 +01:00
Sebastian Andrzej Siewior
8c0eeac819
x86/mcheck: Move CPU_ONLINE and CPU_DOWN_PREPARE to hotplug state machine
...
The CPU_ONLINE and CPU_DOWN_PREPARE look fully symmetrical and could be move
to the hotplug state machine.
On a failure during registration we have the tear down callback invoked
(mce_cpu_pre_down()) so there should be no timer around and so no need to need
keep notifier installed (this was the reason according to the comment why the
notifier was registered despite of errors).
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Acked-by: Borislav Petkov <bp@alien8.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: rt@linutronix.de
Cc: linux-edac@vger.kernel.org
Link: http://lkml.kernel.org/r/20161110174447.11848-7-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-16 09:34:18 +01:00
Sebastian Andrzej Siewior
39f152ffbf
x86/mcheck: Reorganize the hotplug callbacks
...
Initially I wanted to remove mcheck_cpu_init() from identify_cpu() and let it
become an independent early hotplug callback. The main problem here was that
the init on the boot CPU may happen too late
(device_initcall_sync(mcheck_init_device)) and nobody wanted to risk receiving
and MCE event at boot time leading to a shutdown (if the MCE feature is not yet
enabled).
Here is attempt two: the timming stays as-is but the ordering of the functions
is changed:
- mcheck_cpu_init() (which is run from identify_cpu()) will setup the timer
struct but won't fire the timer. This is moved to CPU_ONLINE since its
cleanup part is in CPU_DOWN_PREPARE. So if it is okay to stop the timer early
in the shutdown phase, it should be okay to start it late in the bring up phase.
- CPU_DOWN_PREPARE disables the MCE feature flags for !INTEL CPUs in
mce_disable_cpu(). If a failure occures it would be re-enabled on all vendor
CPUs (including Intel where it was not disabled during shutdown). To keep this
working I am moving it to CPU_ONLINE. smp_call_function_single() is dropped
beause the notifier runs nowdays on the target CPU.
- CPU_ONLINE is invoking mce_device_create() + mce_threshold_create_device()
but its cleanup part is in CPU_DEAD (mce_threshold_remove_device() and
mce_device_remove()). In order to keep this symmetrical I am moving the clean
up from CPU_DEAD to CPU_DOWN_PREPARE.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Acked-by: Borislav Petkov <bp@alien8.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: rt@linutronix.de
Cc: linux-edac@vger.kernel.org
Link: http://lkml.kernel.org/r/20161110174447.11848-6-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-16 09:34:18 +01:00
Sebastian Andrzej Siewior
4d7b02d58c
x86/mcheck: Split threshold_cpu_callback into two callbacks
...
The threshold_cpu_callback callbacks looks like one of the notifier and
its arguments are almost the same. Split this out and have one ONLINE
and one DEAD callback. This will come handy later once the main code
gets changed to use the callback mechanism.
Also, handle threshold_cpu_callback_online() return value so we don't
continue if the function fails.
Boris Petkov removed the callback pointer and replaced it with proper
functions.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Acked-by: Borislav Petkov <bp@alien8.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: rt@linutronix.de
Cc: linux-edac@vger.kernel.org
Link: http://lkml.kernel.org/r/20161110174447.11848-5-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-16 09:34:17 +01:00
Sebastian Andrzej Siewior
7f34b935e8
x86/mcheck: Be prepared for a rollback back to the ONLINE state
...
If we try a CPU down and fail in the middle then we roll back to the
online state. This means we would perform CPU_ONLINE / mce_device_create()
without invoking CPU_DEAD / mce_device_remove() for the cleanup of what was
allocated in CPU_ONLINE.
Be prepared for this and don't allocate the struct if we have it
already.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Acked-by: Borislav Petkov <bp@alien8.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: rt@linutronix.de
Cc: linux-edac@vger.kernel.org
Link: http://lkml.kernel.org/r/20161110174447.11848-4-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-16 09:34:17 +01:00
Sebastian Andrzej Siewior
ec553abb31
x86/mcheck: Explicit cleanup on failure in mce_amd
...
If the ONLINE callback fails, the driver does not any clean up right
away instead it waits to get to the DEAD stage to do it. Yes, it waits.
Since we don't pass the error code back to the caller, no one knows.
Do the clean up right away so it does not look like a leak.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Acked-by: Borislav Petkov <bp@alien8.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: rt@linutronix.de
Cc: linux-edac@vger.kernel.org
Link: http://lkml.kernel.org/r/20161110174447.11848-3-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-16 09:34:17 +01:00
Sebastian Andrzej Siewior
0943637293
x86/mcheck: Move threshold_create_device()
...
Move the threshold_create_device() so it can use
threshold_remove_device() without a forward declaration.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Acked-by: Borislav Petkov <bp@alien8.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: rt@linutronix.de
Cc: linux-edac@vger.kernel.org
Link: http://lkml.kernel.org/r/20161110174447.11848-2-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-16 09:34:16 +01:00
Sebastian Andrzej Siewior
5c584dd58e
ia64/topology: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Fenghua Yu <fenghua.yu@intel.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: linux-ia64@vger.kernel.org
Cc: kbuild test robot <lkp@intel.com >
Cc: rt@linutronix.de
Cc: kbuild-all@01.org
Link: http://lkml.kernel.org/r/20161103173353.dudhkpioitghd74x@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-09 23:45:30 +01:00
Sebastian Andrzej Siewior
aa17662bc2
ia64/salinfo: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Fenghua Yu <fenghua.yu@intel.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: linux-ia64@vger.kernel.org
Cc: kbuild test robot <lkp@intel.com >
Cc: rt@linutronix.de
Cc: kbuild-all@01.org
Link: http://lkml.kernel.org/r/20161103173128.xuulg4nius46dng5@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-09 23:45:30 +01:00
Sebastian Andrzej Siewior
715c32116f
ia64/palinfo: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
The removal of the files happens now in the prepare down stage as there is
no reason to keep them around until the cpu has actually died.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Fenghua Yu <fenghua.yu@intel.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: linux-ia64@vger.kernel.org
Cc: rt@linutronix.de
Link: http://lkml.kernel.org/r/20161103145021.28528-16-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-09 23:45:30 +01:00
Sebastian Andrzej Siewior
122231445f
ia64/err-inject: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
The removal of the files happens now in the prepare down stage as there is
no reason to keep them around until the cpu has actually died.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Fenghua Yu <fenghua.yu@intel.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: linux-ia64@vger.kernel.org
Cc: rt@linutronix.de
Link: http://lkml.kernel.org/r/20161103145021.28528-15-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-09 23:45:29 +01:00
Sebastian Andrzej Siewior
38643a0e69
drivers base/topology: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs. No functional change
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: rt@linutronix.de
Link: http://lkml.kernel.org/r/20161103145021.28528-14-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-09 23:45:29 +01:00
Sebastian Andrzej Siewior
7cc277b489
drivers base/cacheinfo: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs. No functional change.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: rt@linutronix.de
Link: http://lkml.kernel.org/r/20161103145021.28528-13-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-09 23:45:29 +01:00
Sebastian Andrzej Siewior
dfbbd86a0f
s390/smp: Convert to hotplug state machine
...
cpuhp_setup_state() invokes the startup callback on all online cpus with
the proper protection, so we can remove the cpu hotplug protection from the
init function and the creation of the per cpu files for online cpus in
smp_add_present_cpu(). smp_add_present_cpu() is called also called from
__smp_rescan_cpus(), but this callpath never adds an online cpu, it merily
adds newly present cpus, so the creation of the cpu files is not required.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com >
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com >
Cc: linux-s390@vger.kernel.org
Cc: rt@linutronix.de
Link: http://lkml.kernel.org/r/20161104144502.7kd4bxz2rxqvtack@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-09 23:45:28 +01:00
Thomas Gleixner
ef65d45cbf
s390/smp: Make cpu notifier symetric
...
There is no reason to remove the sysfs cpu files when the CPU is dead, they
can be removed when the cpu is prepared to go down. Doing it at
DOWN_PREPARE allows us to convert it to a symetric hotplug state in the
next step.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com >
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com >
Cc: linux-s390@vger.kernel.org
Cc: rt@linutronix.de
Link: http://lkml.kernel.org/r/20161104144140.lcee6kwmwlx37m7g@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-09 23:45:28 +01:00
Sebastian Andrzej Siewior
a4fc1bfc42
net/flowcache: Convert to hotplug state machine
...
Install the callbacks via the state machine. Use multi state support to avoid
custom list handling for the multiple instances.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Steffen Klassert <steffen.klassert@secunet.com >
Cc: Herbert Xu <herbert@gondor.apana.org.au >
Cc: netdev@vger.kernel.org
Cc: rt@linutronix.de
Cc: "David S. Miller" <davem@davemloft.net >
Link: http://lkml.kernel.org/r/20161103145021.28528-10-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-09 23:45:28 +01:00
Sebastian Andrzej Siewior
f0bf90def3
net/dev: Convert to hotplug state machine
...
Install the callbacks via the state machine.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: netdev@vger.kernel.org
Cc: "David S. Miller" <davem@davemloft.net >
Cc: rt@linutronix.de
Link: http://lkml.kernel.org/r/20161103145021.28528-9-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-09 23:45:28 +01:00
Sebastian Andrzej Siewior
517bbed906
mm/vmscan: Convert to hotplug state machine
...
Install the callbacks via the state machine.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: linux-mm@kvack.org
Cc: rt@linutronix.de
Link: http://lkml.kernel.org/r/20161103145021.28528-8-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-09 23:45:27 +01:00
Sebastian Andrzej Siewior
005fd4bbef
mm/page_alloc: Convert to hotplug state machine
...
Install the callbacks via the state machine.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: linux-mm@kvack.org
Cc: rt@linutronix.de
Link: http://lkml.kernel.org/r/20161103145021.28528-7-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-09 23:45:27 +01:00
Sebastian Andrzej Siewior
d544abd5ff
lib/radix-tree: Convert to hotplug state machine
...
Install the callbacks via the state machine.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: rt@linutronix.de
Link: http://lkml.kernel.org/r/20161103145021.28528-6-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-09 23:45:27 +01:00
Sebastian Andrzej Siewior
5588f5afb4
lib/percpu_counter: Convert to hotplug state machine
...
Install the callbacks via the state machine and let the core invoke
the callbacks on the already online CPUs.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: rt@linutronix.de
Link: http://lkml.kernel.org/r/20161103145021.28528-5-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-11-09 23:45:26 +01:00