linux/arch/arm/mach-omap1
Paul Walmsley d8328f3b85 OMAP: counter_32k: init clocksource as part of machine timer init
After commit dc548fbbd2 ("ARM: omap: convert
sched_clock() to use new infrastructure"), OMAPs that use the 32KiHz
"synchronization timer" as their clocksource crash during boot:

[    0.000000] OMAP clockevent source: GPTIMER1 at 32768 Hz
[    0.000000] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[    0.000000] pgd = c0004000
[    0.000000] [00000000] *pgd=00000000
[    0.000000] Internal error: Oops: 80000005 [#1] SMP
[    0.000000] last sysfs file:
[    0.000000] Modules linked in:
[    0.000000] CPU: 0    Tainted: G        W    (2.6.37-07734-g2467802 #7)
[    0.000000] PC is at 0x0
[    0.000000] LR is at sched_clock_poll+0x2c/0x3c
[    0.000000] pc : [<00000000>]    lr : [<c0060b74>]    psr: 600001d3
[    0.000000] sp : c058bfd0  ip : c058a000  fp : 00000000
[    0.000000] r10: 00000000  r9 : 411fc092  r8 : 800330c8
[    0.000000] r7 : c05a08e0  r6 : c0034c48  r5 : c05ffc40  r4 : c0034c4c
[    0.000000] r3 : c05ffe6c  r2 : c05a0bc0  r1 : c059f098  r0 : 00000000
[    0.000000] Flags: nZCv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
[    0.000000] Control: 10c53c7f  Table: 8000404a  DAC: 00000017

This is due to the recent ARM init_sched_clock() changes and the late
initialization of the counter_32k clock source.  More information here:

   http://marc.info/?l=linux-omap&m=129513468605208&w=2

Fix by initializing the counter_32k clocksource during the machine timer
initialization.

Reported-by: Russell King <rmk+kernel@arm.linux.org.uk>
Tested-by: Thomas Weber <weber@corscience.de>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
2011-01-18 12:04:12 -07:00
..
include/mach omap1: Use asm_irq_flags for entry-macro.S 2010-12-09 15:49:23 -08:00
ams-delta-fiq-handler.S OMAP1: Amstrad Delta: add FIQ handler for serial keyboardport interrupt processing 2010-05-05 11:11:10 -07:00
ams-delta-fiq.c ARM: omap1: irq_data conversion. 2011-01-13 17:18:51 +01:00
board-ams-delta.c Keyboard: omap-keypad: use matrix_keypad.h 2010-12-22 11:11:47 -08:00
board-fsample.c Keyboard: omap-keypad: use matrix_keypad.h 2010-12-22 11:11:47 -08:00
board-generic.c arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
board-h2-mmc.c omap: Fix spotty MMC voltages 2010-10-12 16:07:51 -07:00
board-h2.c Keyboard: omap-keypad: use matrix_keypad.h 2010-12-22 11:11:47 -08:00
board-h2.h
board-h3-mmc.c omap: Fix spotty MMC voltages 2010-10-12 16:07:51 -07:00
board-h3.c Keyboard: omap-keypad: use matrix_keypad.h 2010-12-22 11:11:47 -08:00
board-h3.h
board-htcherald.c Keyboard: omap-keypad: use matrix_keypad.h 2010-12-22 11:11:47 -08:00
board-innovator.c Keyboard: omap-keypad: use matrix_keypad.h 2010-12-22 11:11:47 -08:00
board-nokia770.c Keyboard: omap-keypad: use matrix_keypad.h 2010-12-22 11:11:47 -08:00
board-osk.c Keyboard: omap-keypad: use matrix_keypad.h 2010-12-22 11:11:47 -08:00
board-palmte.c Keyboard: omap-keypad: use matrix_keypad.h 2010-12-22 11:11:47 -08:00
board-palmtt.c Keyboard: omap-keypad: use matrix_keypad.h 2010-12-22 11:11:47 -08:00
board-palmz71.c Keyboard: omap-keypad: use matrix_keypad.h 2010-12-22 11:11:47 -08:00
board-perseus2.c Keyboard: omap-keypad: use matrix_keypad.h 2010-12-22 11:11:47 -08:00
board-sx1-mmc.c omap: Fix spotty MMC voltages 2010-10-12 16:07:51 -07:00
board-sx1.c Keyboard: omap-keypad: use matrix_keypad.h 2010-12-22 11:11:47 -08:00
board-voiceblue.c Merge branch 'devel-gpio' into omap-for-linus 2010-12-10 11:37:47 -08:00
clock.c ARM: 6483/1: arm & sh: factorised duplicated clkdev.c 2010-11-26 10:51:04 +00:00
clock.h OMAP1: clock: some cleanup 2010-07-26 16:34:28 -06:00
clock_data.c OMAP1: clock_data: use runtime cpu / machine checks 2010-12-21 21:08:15 -07:00
devices.c omap1: Add initcall checks for omap1 and booted board 2010-12-10 09:46:24 -08:00
dma.c OMAP: DMA: Convert DMA library into platform driver 2010-12-20 18:38:31 -08:00
flash.c arm: omap1: add missing includes 2010-11-24 16:46:48 -08:00
fpga.c ARM: omap1: irq_data conversion. 2011-01-13 17:18:51 +01:00
gpio7xx.c omap1: Fix gpio mpuio bank to work for multi-omap for 7xx/15xx/16xx 2010-12-07 16:26:58 -08:00
gpio15xx.c omap1: Fix gpio mpuio bank to work for multi-omap for 7xx/15xx/16xx 2010-12-07 16:26:58 -08:00
gpio16xx.c omap1: Fix gpio mpuio bank to work for multi-omap for 7xx/15xx/16xx 2010-12-07 16:26:58 -08:00
i2c.c omap: i2c: Fix muxing for command line enabled bus 2010-02-25 14:45:08 -08:00
id.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
io.c omap: Split omap_read/write functions for omap1 and omap2+ 2010-12-10 09:46:24 -08:00
irq.c ARM: omap1: irq_data conversion. 2011-01-13 17:18:51 +01:00
Kconfig OMAP1: drop AMS_DELTA_FIQ config option 2010-11-30 13:48:46 -08:00
lcd_dma.c omap1: Add initcall checks for omap1 and booted board 2010-12-10 09:46:24 -08:00
leds-h2p2-debug.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
leds-innovator.c
leds-osk.c
leds.c omap1: Add initcall checks for omap1 and booted board 2010-12-10 09:46:24 -08:00
leds.h
mailbox.c arm: omap1: mbox: delete unused variable 2010-11-24 16:48:47 -08:00
Makefile OMAP: DMA: Convert DMA library into platform driver 2010-12-20 18:38:31 -08:00
Makefile.boot
mcbsp.c omap1: Add initcall checks for omap1 and booted board 2010-12-10 09:46:24 -08:00
mux.c arm: omap1: make some functions static 2010-11-24 16:48:25 -08:00
opp.h OMAP1 clock: convert mach-omap1/clock.h to mach-omap1/clock_data.c 2009-12-11 17:00:40 -07:00
opp_data.c OMAP1 clock: convert mach-omap1/clock.h to mach-omap1/clock_data.c 2009-12-11 17:00:40 -07:00
pm.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
pm.h
pm_bus.c omap1: pm_bus: Fix compilation warning 2010-12-20 17:53:04 -08:00
serial.c omap1: Add initcall checks for omap1 and booted board 2010-12-10 09:46:24 -08:00
sleep.S
sram.S
time.c OMAP: counter_32k: init clocksource as part of machine timer init 2011-01-18 12:04:12 -07:00
timer32k.c arm: omap1: remove dead code from timer32k.c 2010-04-22 17:32:36 -07:00
usb.c omap: Move omap1 USB platform init code into mach-omap1/usb.c 2010-07-05 16:31:30 +03:00