Srivatsa S. Bhat
8daa127f4e
clocksource, dummy-timer: Fix CPU hotplug callback registration
...
Subsystems that want to register CPU hotplug callbacks, as well as perform
initialization for the CPUs that are already online, often do it as shown
below:
get_online_cpus();
for_each_online_cpu(cpu)
init_cpu(cpu);
register_cpu_notifier(&foobar_cpu_notifier);
put_online_cpus();
This is wrong, since it is prone to ABBA deadlocks involving the
cpu_add_remove_lock and the cpu_hotplug.lock (when running concurrently
with CPU hotplug operations).
Instead, the correct and race-free way of performing the callback
registration is:
cpu_notifier_register_begin();
for_each_online_cpu(cpu)
init_cpu(cpu);
/* Note the use of the double underscored version of the API */
__register_cpu_notifier(&foobar_cpu_notifier);
cpu_notifier_register_done();
Fix the clocksource dummy-timer code by using this latter form of callback
registration.
Cc: Daniel Lezcano <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: Ingo Molnar <[email protected] >
Signed-off-by: Srivatsa S. Bhat <[email protected] >
Signed-off-by: Rafael J. Wysocki <[email protected] >
2014-03-20 13:43:45 +01:00
..
acpi_pm.c
treewide: Fix printks with 0x%#
2013-08-27 10:49:38 +02:00
arm_arch_timer.c
clocksource: arch_timer: Do not register arch_sys_counter twice
2013-10-16 08:30:03 +02:00
arm_global_timer.c
clocksource: arm_global_timer: Switch to sched_clock_register()
2013-12-11 11:40:23 +01:00
bcm2835_timer.c
clocksource: bcm2835: Switch to sched_clock_register()
2013-07-30 11:24:51 -07:00
bcm_kona_timer.c
clocksource: Kona: Print warning rather than panic
2014-02-06 16:01:40 +01:00
cadence_ttc_timer.c
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-01-20 11:34:26 -08:00
clksrc-dbx500-prcmu.c
clocksource: dbx500-prcmu: Switch to sched_clock_register()
2013-07-30 11:24:52 -07:00
clksrc-of.c
Merge branch 'clockevents/3.14' of git://git.linaro.org/people/daniel.lezcano/linux into timers/core
2014-01-14 14:33:29 +01:00
cs5535-clockevt.c
clocksource: misc drivers: Remove deprecated IRQF_DISABLED
2013-12-11 11:40:27 +01:00
cyclone.c
dummy_timer.c
clocksource, dummy-timer: Fix CPU hotplug callback registration
2014-03-20 13:43:45 +01:00
dw_apb_timer.c
clocksource: misc drivers: Remove deprecated IRQF_DISABLED
2013-12-11 11:40:27 +01:00
dw_apb_timer_of.c
clocksource: dw_apb_timer_of: Fix support for dts binding "snps,dw-apb-timer"
2013-12-10 19:49:18 +01:00
em_sti.c
clocksource: em_sti: convert to clk_prepare/unprepare
2013-10-22 22:36:24 +02:00
exynos_mct.c
clocksource: mct: extend mct to support 8 local interrupts for Exynos5420
2013-12-16 04:47:34 +09:00
i8253.c
Kconfig
Merge branch 'clockevents/3.14' of git://git.linaro.org/people/daniel.lezcano/linux into timers/core
2014-01-14 14:33:29 +01:00
Makefile
ARM: SoC platform changes for 3.14
2014-01-23 18:40:49 -08:00
metag_generic.c
clocksource+irqchip: delete __cpuinit usage from all related files
2013-07-14 19:36:57 -04:00
mmio.c
moxart_timer.c
ARM: clocksource: moxart: Add bitops.h include
2013-08-01 01:13:34 +02:00
mxs_timer.c
clocksource: mxs_timer: Switch to sched_clock_register()
2013-07-30 11:24:52 -07:00
nomadik-mtu.c
ARM: SoC DT updates for 3.14
2014-01-23 18:45:38 -08:00
samsung_pwm_timer.c
clocksource: misc drivers: Remove deprecated IRQF_DISABLED
2013-12-11 11:40:27 +01:00
scx200_hrt.c
sh_cmt.c
Merge branch 'clockevents/for-Simon-3.13-rc2' into clockevents/3.14
2013-12-18 15:14:36 +01:00
sh_mtu2.c
Merge branch 'clockevents/3.14' of git://git.linaro.org/people/daniel.lezcano/linux into timers/core
2014-01-14 14:33:29 +01:00
sh_tmu.c
Merge branch 'clockevents/3.14' of git://git.linaro.org/people/daniel.lezcano/linux into timers/core
2014-01-14 14:33:29 +01:00
sun4i_timer.c
Merge branch 'clockevents/3.14' of git://git.linaro.org/people/daniel.lezcano/linux into timers/core
2014-01-14 14:33:29 +01:00
tcb_clksrc.c
clocksource: tcb_clksrc: Remove IRQF_DISABLED
2013-10-03 16:28:40 +02:00
tegra20_timer.c
clocksource: tegra: Remove deprecated IRQF_DISABLED
2013-12-11 11:40:28 +01:00
time-armada-370-xp.c
Merge branch 'clockevents/3.14' of git://git.linaro.org/people/daniel.lezcano/linux into timers/core
2014-01-14 14:33:29 +01:00
time-efm32.c
clocksource: Provide timekeeping for efm32 SoCs
2013-10-22 22:36:33 +02:00
time-orion.c
clocksource: orion: Switch to sched_clock_register()
2013-12-11 11:40:25 +01:00
timer-marco.c
Now that we have a generic arch hook for broadcast we can remove the local
2013-07-23 16:54:15 -07:00
timer-prima2.c
clocksource: sirf: Switch to sched_clock_register() and use 64 bits
2013-07-30 11:24:55 -07:00
timer-sun5i.c
clocksource: Timer-sun5i: Switch to sched_clock_register()
2014-01-19 13:23:23 +01:00
vf_pit_timer.c
clocksource: vf_pit_timer: Switch to sched_clock_register()
2013-07-30 11:24:56 -07:00
vt8500_timer.c
clocksource: vt8500: Remove deprecated IRQF_DISABLED
2013-12-11 11:40:28 +01:00
zevio-timer.c