android_kernel_motorola_sm6375/drivers/clocksource
Repository files (latest commit first)
Filename Latest commit message Latest commit date
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