linux/drivers/clocksource
Chen-Yu Tsai 4e12317c7b clocksource/drivers/sun4i: Clear interrupts after stopping timer in probe function
commit b53e7d000d upstream.

The bootloader (U-boot) sometimes uses this timer for various delays.
It uses it as a ongoing counter, and does comparisons on the current
counter value. The timer counter is never stopped.

In some cases when the user interacts with the bootloader, or lets
it idle for some time before loading Linux, the timer may expire,
and an interrupt will be pending. This results in an unexpected
interrupt when the timer interrupt is enabled by the kernel, at
which point the event_handler isn't set yet. This results in a NULL
pointer dereference exception, panic, and no way to reboot.

Clear any pending interrupts after we stop the timer in the probe
function to avoid this.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2016-11-20 01:17:18 +00:00
..
acpi_pm.c treewide: Fix printks with 0x%# 2013-08-27 10:49:38 +02:00
arm_arch_timer.c clocksource: arch_timer: Only use the virtual counter (CNTVCT) on arm64 2015-02-04 10:58:31 +00:00
arm_global_timer.c clocksource: arm_global_timer: Only check for unusable timer on A9 2014-04-22 11:44:24 +02: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 clocksource: cadence_ttc: Use readl/writel_relaxed instead of __raw 2014-05-20 16:16:05 +02:00
clksrc-dbx500-prcmu.c clocksource: dbx500-prcmu: Switch to sched_clock_register() 2013-07-30 11:24:52 -07:00
clksrc-of.c of: consolidate linker section OF match table declarations 2014-05-20 14:25:24 -05:00
cs5535-clockevt.c clocksource: misc drivers: Remove deprecated IRQF_DISABLED 2013-12-11 11:40:27 +01:00
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: Do not trace read_sched_clock 2014-05-23 09:23:09 +02:00
em_sti.c clocksource: em_sti: Remove unnecessary OOM messages 2014-05-23 09:23:10 +02:00
exynos_mct.c clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier 2015-07-15 10:00:56 +01:00
fsl_ftm_timer.c clocksource: Add Freescale FlexTimer Module (FTM) timer support 2014-05-23 10:12:04 +02:00
i8253.c time: Kill xtime_lock, replacing it with jiffies_lock 2012-11-13 14:08:23 -05:00
Kconfig Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next 2014-06-04 15:57:20 -07:00
Makefile Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next 2014-06-04 15:57:20 -07:00
metag_generic.c clocksource+irqchip: delete __cpuinit usage from all related files 2013-07-14 19:36:57 -04:00
mmio.c clocksource: Fix clocksource_mmio_readX_down 2014-05-23 09:19:40 +02:00
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
qcom-timer.c clocksource: qcom: Implement read_current_timer for udelay 2014-05-19 11:30:11 +02:00
samsung_pwm_timer.c clocksource: misc drivers: Remove deprecated IRQF_DISABLED 2013-12-11 11:40:27 +01:00
scx200_hrt.c clocksource: scx200_hrt: Fix the build 2012-02-22 13:25:16 +01:00
sh_cmt.c clocksource: sh_cmt: Remove unnecessary OOM messages 2014-05-23 09:23:10 +02:00
sh_mtu2.c clocksource: sh_mtu2: Remove unnecessary OOM messages 2014-05-23 09:23:11 +02:00
sh_tmu.c Merge branch 'clockevents/cmt-mtu2-tmu-cleanups' into clockevents/3.16 2014-05-23 09:23:21 +02:00
sun4i_timer.c clocksource/drivers/sun4i: Clear interrupts after stopping timer in probe function 2016-11-20 01:17:18 +00:00
tcb_clksrc.c clocksource: tcb_clksrc: Make tc_mode interrupt safe 2014-05-22 18:54:58 +02:00
tegra20_timer.c clocksource: tegra: Remove deprecated IRQF_DISABLED 2013-12-11 11:40:28 +01:00
time-armada-370-xp.c clocksource: armada-370-xp: Use atomic access for shared registers 2014-03-11 23:05:05 +01:00
time-efm32.c clocksource: efm32: Fix a NULL pointer dereference 2015-03-30 11:10:57 +01:00
time-orion.c clocksource: orion: Use atomic access for shared registers 2014-03-11 23:05:02 +01:00
timer-keystone.c clocksource: timer-keystone: Delete unnecessary variable 2014-03-11 23:05:00 +01:00
timer-marco.c ARM: SoC cleanups for 3.16 2014-06-02 16:14:07 -07:00
timer-prima2.c clocksource:sirf: remove the hardcode for the clk of timers 2014-05-12 21:43:49 +08:00
timer-sun5i.c clockevents: sun5i: Fix setup_irq init sequence 2015-03-30 11:10:59 +01:00
timer-u300.c Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2014-04-05 13:20:43 -07:00
versatile.c clocksource: versatile: Use sched_clock_register() 2014-06-04 07:46:10 -07:00
vf_pit_timer.c clocksource: vf_pit_timer: use complement for sched_clock reading 2014-03-06 11:34:14 +01:00
vt8500_timer.c clocksource/drivers/vt8500: Increase the minimum delta 2016-02-02 19:09:28 +00:00
zevio-timer.c clocksource: nspire: Fix compiler warning 2014-04-29 15:06:43 +02:00