linux/arch/arm/plat-omap
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/plat OMAP: counter_32k: init clocksource as part of machine timer init 2011-01-18 12:04:12 -07:00
clock.c OMAP2+: clock: reduce the amount of standard debugging while disabling unused clocks 2010-10-08 11:40:20 -06:00
common.c Merge 'staging-next' to Linus's tree 2010-10-28 09:44:56 -07:00
counter_32k.c OMAP: counter_32k: init clocksource as part of machine timer init 2011-01-18 12:04:12 -07:00
cpu-omap.c OMAP: plat-omap: Fix static function warnings 2010-10-08 10:12:38 -07:00
debug-devices.c omap: use smc91x_platdata to setup smc91x 2009-12-11 16:16:33 -08:00
debug-leds.c Replacing LEDS_OMAP_DEBUG with OMAP_DEBUG_LEDS 2010-07-05 17:03:58 +03:00
devices.c omap: remove dead wdt code in plat-omap/devices.c 2010-12-17 17:45:03 -08:00
dma.c OMAP: DMA: Convert DMA library into platform driver 2010-12-20 18:38:31 -08:00
dmtimer.c omap4: Fix bootup crash observed with higher CPU clocks 2010-09-24 11:30:19 +05:30
fb.c Merge branch 'for-linus' of git://gitorious.org/linux-omap-dss2/linux 2010-10-26 10:02:39 -07:00
fb.h OMAP: plat-omap: Fix static function warnings 2010-10-08 10:12:38 -07:00
gpio.c Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-15 12:33:40 -08:00
i2c.c I2C: i2c-omap: Change device name: i2c_omap -> omap_i2c 2010-12-20 17:53:04 -08:00
io.c omap: Split omap_read/write functions for omap1 and omap2+ 2010-12-10 09:46:24 -08:00
iommu-debug.c arm/omap: use generic_file_llseek in iommu_debug 2010-09-16 10:33:11 +02:00
iommu.c OMAP: iommu: create new api to set valid da range 2010-12-15 11:29:10 -06:00
iopgtable.h omap iommu: Rename iopte_[p,v]addr -> iopte_page_[p,v]addr 2010-06-29 07:55:05 +03:00
iovmm.c OMAP: iommu: create new api to set valid da range 2010-12-15 11:29:10 -06:00
Kconfig Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 2011-01-06 19:13:58 -08:00
mailbox.c OMAP: mailbox: add notification support for multiple readers 2010-12-02 05:43:16 -06:00
Makefile OMAP: split plat-omap/common.c 2010-10-08 11:40:19 -06:00
mcbsp.c OMAP2/3: PRM/CM: prefix OMAP2 PRM/CM functions with "omap2_" 2010-12-21 21:05:14 -07:00
mux.c omap: mux: Remove old mux code 2010-07-05 16:31:40 +03:00
ocpi.c [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
omap_device.c OMAP: PM: implement context loss count APIs 2010-12-21 21:31:55 -07:00
omap-pm-noop.c OMAP: PM noop: implement context loss count for non-omap_devices 2010-12-21 21:31:55 -07:00
sram.c OMAP2/3: PRCM: split OMAP2/3-specific PRCM code into OMAP2/3-specific files 2010-12-21 20:01:55 -07:00
sram.h OMAP: plat-omap: Fix static function warnings 2010-10-08 10:12:38 -07:00
usb.c omap: Move omap1 USB platform init code into mach-omap1/usb.c 2010-07-05 16:31:30 +03:00