Open issues after 2.6.38 merge window
Subsystems (4)
Tony Lindgren
maintainerHi all,
Before I update out master branch, let's try to summarize the open issues after the merge window. Here's a list of issues in omap-fixes-for-linus that I'm aware of:
- NFS root oopses while mounting root
- omap4430 es1.0 hangs if L2X0 cache is enabled
- omap4 panda powers down after boot (watchdog?)
- omap3 ldp board powers down after boot?
Any other issues?
Regards,
Tony
Tony Lindgren
maintainerQuoted 2 lines · Tony Lindgren
- NFS root oopses while mounting root
Looks like this one is now fixed.
Tony
Quoted 4 lines · On Fri, 14 Jan 2011 11:47:58 -0800 Tony Lindgren <[email protected]> wrote:
- omap4 panda powers down after boot (watchdog?)
- omap3 ldp board powers down after boot?
my 2c to Panda power down problem:
Nishanth helped me recently to debug why my board does this power down and it seems to be caused by a broken hw. I.e. we were using exactly same bootloader and kernel and only my board was not working.
Signature · 1 line
Jarkko
Tony Lindgren
maintainerQuoted 5 lines · Jarkko Nikula
Quoted 2 lines · On Fri, 14 Jan 2011 11:47:58 -0800 Tony Lindgren <[email protected]> wrote:
- omap4 panda powers down after boot (watchdog?)
Quoted 7 lines
Quoted 2 lines
- omap3 ldp board powers down after boot?
my 2c to Panda power down problem:
Nishanth helped me recently to debug why my board does this power down and it seems to be caused by a broken hw. I.e. we were using exactly same bootloader and kernel and only my board was not working.
Hmm, mine was working just fine until about a week ago. I did update the bootloader also though. What's the recommended x-loader + u-boot combo for panda?
Tony
Tony Lindgren wrote, on 01/14/2011 02:54 PM:
Quoted 10 lines · Jarkko Nikula
Quoted 9 lines
Quoted 4 lines · On Fri, 14 Jan 2011 11:47:58 -0800 Tony Lindgren<[email protected]> wrote:
- omap4 panda powers down after boot (watchdog?)
- omap3 ldp board powers down after boot?
my 2c to Panda power down problem:
Quoted 7 lines
Quoted 3 lines
Nishanth helped me recently to debug why my board does this power down and it seems to be caused by a broken hw. I.e. we were using exactly same bootloader and kernel and only my board was not working.
Hmm, mine was working just fine until about a week ago. I did update the bootloader also though. What's the recommended x-loader + u-boot combo for panda?
The combination I had used was:
x-loader: http://gitorious.org/x-loader/x-loader
u-boot: http://git.denx.de/?p=u-boot.git;a=summary
The issue on the board potentially could be solder issue and RMA was recommended.
Signature · 2 lines
Regards, Nishanth Menon
Tony,
i've been testing the 2.6.37 kernel on ES2.0, ES2.1, ES2.2 using the following:
x-loader:git://gitorious.org/x-loader/x-loader.git
branch: master
6f3a261 omap1: remove support for 1710 and 1510
defconfig: omap4430panda_config
U-boot:git://git.denx.de/u-boot.git
tag: v2010.12
defconfig: omap4_panda_config
kernel:git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
tag: v2.6.37
defconfig: omap2plus_defconfig
i've not seen the power off issue you have described.
thanks
Dave
Quoted 24 lines · Tony Lindgren
Hi all,
Before I update out master branch, let's try to summarize the open issues after the merge window. Here's a list of issues in omap-fixes-for-linus that I'm aware of:
- NFS root oopses while mounting root
- omap4430 es1.0 hangs if L2X0 cache is enabled
- omap4 panda powers down after boot (watchdog?)
- omap3 ldp board powers down after boot?
Any other issues?
Regards,
Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Tony Lindgren
maintainerQuoted 11 lines · David Anders
Tony,
i've been testing the 2.6.37 kernel on ES2.0, ES2.1, ES2.2 using the following:
x-loader:
git://gitorious.org/x-loader/x-loader.git
branch: master
6f3a261 omap1: remove support for 1710 and 1510
defconfig:omap4430panda_config
Quoted 4 lines
U-boot:
git://git.denx.de/u-boot.git
tag: v2010.12
defconfig:omap4_panda_config
That's what I'm using too.
Quoted 6 lines
kernel:
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
tag: v2.6.37
defconfig:omap2plus_defconfigi've not seen the power off issue you have described.
Hmm well it happens also with v2.6.37, so sounds like it's a u-boot or hardware issue. I'll debug a bit further.
Tony
Tony Lindgren
maintainerQuoted 24 lines · Tony Lindgren
Quoted 11 lines · David Anders
Tony,
i've been testing the 2.6.37 kernel on ES2.0, ES2.1, ES2.2 using the following:
x-loader:
git://gitorious.org/x-loader/x-loader.git
branch: master
6f3a261 omap1: remove support for 1710 and 1510
defconfig:omap4430panda_configQuoted 4 lines
U-boot:
git://git.denx.de/u-boot.git
tag: v2010.12
defconfig:omap4_panda_configThat's what I'm using too.
Quoted 5 lines
kernel:
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
tag: v2.6.37
defconfig:omap2plus_defconfig
Quoted 4 lines
Quoted 1 line
i've not seen the power off issue you have described.
Hmm well it happens also with v2.6.37, so sounds like it's a u-boot or hardware issue. I'll debug a bit further.
Weird. While debugging the problem, I left just the u-boot console running for a few minutes to see if panda shuts down on it's own.
It did not, but instead it now stays running with the kernel booted also.. No idea why. Did not touch anything with u-boot..
Tony
Am 14.01.2011 20:47, schrieb Tony Lindgren:
Quoted 16 lines
Hi all,
Before I update out master branch, let's try to summarize the open issues after the merge window. Here's a list of issues in omap-fixes-for-linus that I'm aware of:
- NFS root oopses while mounting root
- omap4430 es1.0 hangs if L2X0 cache is enabled
- omap4 panda powers down after boot (watchdog?)
- omap3 ldp board powers down after boot?
Any other issues?
Quoted 7 lines
Regards,
Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Hello,
today I tried to enable the DVI output on Devkit8000 and got the following error.
When the DVI port is configured as omapdss.def_disp I can turn on and off the DVI, but not the display0 (LCD).
Thomas
My cmdline is:
console=ttyO2,115200n8 root=/dev/nfs nfsroot=192.168.1.102:/nfsroot ip=192.168.1.200 rootdelay=1 omapdss.def_disp=lcd omapfb.mode=lcd:800x480 vram=12M
# echo 1 > /sys/devices/omapdss/display1/enabled [ 27.399017] omapdss DPI: Could not find exact pixel clock. Requested 23500 kHz, got 24000 kHz [ 27.410156] Unable to handle kernel NULL pointer dereference at virtual address 00000078 [ 27.418731] pgd = ce438000 [ 27.421844] [00000078] *pgd=8e432031, *pte=00000000, *ppte=00000000 [ 27.428466] Internal error: Oops: 17 [#1] SMP [ 27.433044] last sysfs file: /sys/devices/omapdss/display1/enabled [ 27.439544] Modules linked in: [ 27.442779] CPU: 0 Not tainted (2.6.37-rc5-09166-g28d7f6a #26) [ 27.449279] PC is at omapdss_dpi_display_enable+0x8c/0xd8 [ 27.454956] LR is at omapdss_dpi_display_enable+0x88/0xd8 [ 27.460632] pc : [<c026c110>] lr : [<c026c10c>] psr: 60000013 [ 27.460632] sp : ce425f00 ip : 000026ca fp : 00000002 [ 27.472686] r10: cef240f8 r9 : c0439634 r8 : 00000002 [ 27.478179] r7 : cef240e0 r6 : c05db110 r5 : 00000000 r4 : c05db108 [ 27.485015] r3 : c0b61e7c r2 : 00000740 r1 : cef19a50 r0 : 00000000 [ 27.491882] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user [ 27.499359] Control: 10c5387d Table: 8e438019 DAC: 00000015 [ 27.505401] Process sh (pid: 546, stack limit = 0xce4242f8) [ 27.511260] Stack: (0xce425f00 to 0xce426000) [ 27.515838] 5f00: 00000000 c05db108 00000002 c0272370 c02723c0 c05db108 00000002 c02723cc [ 27.524444] 5f20: c05db108 c02695ec 00000002 cee5e148 ce425f80 c0299c1c 00000002 c016fd0c [ 27.533020] 5f40: 00000002 ce407080 400ea000 ce425f80 00000000 00000000 00000000 c01205a0 [ 27.541625] 5f60: ce407080 400ea000 ce407080 400ea000 00000002 00000004 00000000 c01206c8 [ 27.550201] 5f80: 00000000 00000000 00000002 00000000 00000002 402d35c8 00000002 c005a3e8 [ 27.558807] 5fa0: ce424000 c005a220 00000002 402d35c8 00000001 400ea000 00000002 00000000 [ 27.567382] 5fc0: 00000002 402d35c8 00000002 00000004 400ea000 40084000 0000000a 00000002 [ 27.575988] 5fe0: 00000000 bea235f8 401f9e98 40256adc 60000010 00000001 00000000 00000000 [ 27.584594] [<c026c110>] (omapdss_dpi_display_enable+0x8c/0xd8) from [<c0272370>] (generic_panel_power_on+0x1c/0x50) [ 27.595672] [<c0272370>] (generic_panel_power_on+0x1c/0x50) from [<c02723cc>] (generic_panel_enable+0xc/0x1c) [ 27.606079] [<c02723cc>] (generic_panel_enable+0xc/0x1c) from [<c02695ec>] (display_enabled_store+0x50/0x74) [ 27.616424] [<c02695ec>] (display_enabled_store+0x50/0x74) from [<c0299c1c>] (dev_attr_store+0x1c/0x20) [ 27.626312] [<c0299c1c>] (dev_attr_store+0x1c/0x20) from [<c016fd0c>] (sysfs_write_file+0x10c/0x144) [ 27.635925] [<c016fd0c>] (sysfs_write_file+0x10c/0x144) from [<c01205a0>] (vfs_write+0xb0/0x128) [ 27.645172] [<c01205a0>] (vfs_write+0xb0/0x128) from [<c01206c8>] (sys_write+0x3c/0x68) [ 27.653594] [<c01206c8>] (sys_write+0x3c/0x68) from [<c005a220>] (ret_fast_syscall+0x0/0x3c) [ 27.662445] Code: 1a000005 e59f004c ebff2da5 e59402b4 (e5903078) [ 27.669006] ---[ end trace f5536249261ca351 ]---
Quoted 7 lines
-----Original Message-----
From: [email protected] [mailto:linux-omap- [email protected]] On Behalf Of Tony Lindgren
Sent: Saturday, January 15, 2011 1:18 AM
To: [email protected]
Subject: Open issues after 2.6.38 merge window
Quoted 9 lines
Hi all,
Before I update out master branch, let's try to summarize the open issues after the merge window. Here's a list of issues in omap-fixes-for-linus that I'm aware of:
- omap4430 es1.0 hangs if L2X0 cache is enabled
Will have look at this one on Monday
Quoted 2 lines
- omap4 panda powers down after boot (watchdog?)
Must be watchdog
Quoted 2 lines
- omap3 ldp board powers down after boot?
I guess this was already concluded as a watchdog issue.
Quoted 2 lines
Any other issues?
I saw the build related pull request from you, so most of those gets sorted out.
- !CONFIG_RUNTIME_PM, boot crash because of watchdog.
Posted the patch for this but I need to verify one scenario pointed out by Paul Where if the boot-loader keeps watchdog enabled.
- omap2plus_defconfig build break because of SWP_EMULATE missing patch.
This one will gets fixed once the Catalin patch is merged
Regards,
Santosh
Tony,
Quoted 15 lines
-----Original Message-----
From: Santosh Shilimkar [mailto:[email protected]]
Sent: Saturday, January 15, 2011 10:50 AM
To: Tony Lindgren; [email protected]
Subject: RE: Open issues after 2.6.38 merge windowQuoted 9 lines
-----Original Message-----
From: [email protected] [mailto:linux-omap- [email protected]] On Behalf Of Tony Lindgren
Sent: Saturday, January 15, 2011 1:18 AM
To: [email protected]
Subject: Open issues after 2.6.38 merge windowHi all,
Quoted 9 lines
Quoted 7 lines
Before I update out master branch, let's try to summarize the open issues after the merge window. Here's a list of issues in omap-fixes-for-linus that I'm aware of:
- omap4430 es1.0 hangs if L2X0 cache is enabled
Will have look at this one on Monday
I don't see the hang with L2X0 enable on my ES1.0 SDP with the latest Linus's head.
(Mainline 'e78bf5e6cbe837' + Paul's sync timer fix)
The kernel boots fine.
Regards
Santosh
Tony Lindgren
maintainerQuoted 11 lines · Santosh Shilimkar
Quoted 5 lines
Quoted 3 lines
- omap4430 es1.0 hangs if L2X0 cache is enabled
Will have look at this one on Monday
I don't see the hang with L2X0 enable on my ES1.0 SDP with the latest Linus's head.
(Mainline '
e78bf5e6cbe837' + Paul's sync timer fix)The kernel boots fine.
Just checked this again, for me it hangs at some random point.
Tony
Hi,
Quoted 6 lines · Tony Lindgren
Before I update out master branch, let's try to summarize the open issues after the merge window. Here's a list of issues in omap-fixes-for-linus that I'm aware of:
- NFS root oopses while mounting root
Quoted 7 lines
- omap4430 es1.0 hangs if L2X0 cache is enabled
- omap4 panda powers down after boot (watchdog?)
- omap3 ldp board powers down after boot?
Any other issues?
Amstrad E3 fails during the boot. Bisection points to:
commit 211baa7016894c02fc18693e21ca479cd08ac0c0 Author: Russell King <[email protected]> Date: Tue Jan 11 16:23:04 2011 +0000 ARM: sched_clock: allow init_sched_clock() to be called early
The board does not have sched_clock(), although HAVE_SCHED_CLOCK is defined for all OMAP.
A.
Quoted 34 lines
-----Original Message-----
From: [email protected] [mailto:linux-omap- [email protected]] On Behalf Of Aaro Koskinen
Sent: Monday, January 17, 2011 5:07 PM
To: Tony Lindgren; [email protected]
Cc: [email protected]
Subject: Re: Open issues after 2.6.38 merge windowHi,
Quoted 6 lines · Tony Lindgren
Before I update out master branch, let's try to summarize the open issues after the merge window. Here's a list of issues in omap-fixes-for-linus that I'm aware of:
- NFS root oopses while mounting root
Quoted 7 lines
- omap4430 es1.0 hangs if L2X0 cache is enabled
- omap4 panda powers down after boot (watchdog?)
- omap3 ldp board powers down after boot?
Any other issues?
Amstrad E3 fails during the boot. Bisection points to:
(quoted diff) +0
-0commit 211baa7016894c02fc18693e21ca479cd08ac0c0 Author: Russell King <[email protected]> Date: Tue Jan 11 16:23:04 2011 +0000 ARM: sched_clock: allow init_sched_clock() to be calledearly
Quoted 3 lines
The board does not have
sched_clock(), althoughHAVE_SCHED_CLOCKis defined for all OMAP.
I guess above is sorted out by the attached patch from Paul.
Regards,
Santosh
Quoted 1 line
From
8a2d92faa2c21fda24124e75da3ba47930e1eaf6Mon Sep 17 00:00:00 2001
From: Paul Walmsley <[email protected]>
Date: Sun, 16 Jan 2011 21:08:13 +0530
Subject: [PATCH] OMAP: counter_32k: init clocksource as part of machine timer init
Linus's master branch, currently at commit 1b59be2a6cdcb5a12e18d8315c07c94a624de48f ("Merge branch 'slab/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6"),
crashes during boot on OMAP4430 ES2.0 Panda:
[ 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:
http://marc.info/?l=linux-omap&m=129513468605208&w=2
Fix by initializing the counter_32k clocksource during the machine timer initialization.
--- arch/arm/mach-omap1/time.c | 7 +++++++ arch/arm/mach-omap2/timer-gp.c | 10 ++++++++-- arch/arm/plat-omap/counter_32k.c | 3 +-- arch/arm/plat-omap/include/plat/common.h | 1 + 4 files changed, 17 insertions(+), 4 deletions(-)
arch/arm/mach-omap1/time.c +7 -0
@@ -244,6 +244,13 @@ static void __init omap_timer_init(void)omap_init_mpu_timer (rate);omap_init_clocksource (rate); +/* +* XXX Since this file seems to deal mostly with the MPU timer, +* this doesn't seem like the correct place for the sync timer +* clocksource init. +*/ +if (!cpu_is_omap7xx () && !cpu_is_omap15xx ()) +omap_init_clocksource_32k (); }struct sys_timer omap_timer = {
(quoted diff) +0 -0
b/arch/arm/mach-omap2/timer-gp.c
index 4e48e78..57d53e0 100644
arch/arm/mach-omap2/timer-gp.c +8 -2
@@ -42,6 +42,8 @@#include "timer-gp.h" +#include <plat/common.h> +/* MAX_GPTIMER_ID: number of GPTIMERs on the chip */ #define MAX_GPTIMER_ID 12
@@ -176,10 +178,14 @@ static void __init omap2_gp_clockevent_init(void)/* * When 32k-timer is enabled, don't use GPTimer for clocksource * instead, just leave default clocksource which uses the 32k -* sync counter. See clocksource setup in see plat-omap/common.c. +* sync counter. See clocksource setup in plat-omap/timer-32k.c */ -static inline void __init omap2_gp_clocksource_init (void ) {} +static void __init omap2_gp_clocksource_init (void ) +{ +omap_init_clocksource_32k (); +} +#else /* * clocksource
(quoted diff) +0 -0
b/arch/arm/plat-omap/counter_32k.c
index ea46440..0367998 100644
arch/arm/plat-omap/counter_32k.c +1 -2
@@ -160,7 +160,7 @@ void read_persistent_clock(struct timespec *ts) *ts = *tsp; } -static int __init omap_init_clocksource_32k (void ) +int __init omap_init_clocksource_32k (void ) {static char err[]__initdata =KERN_ERR "%s: can't register clocksource!\n" ;
@@ -195,7 +195,6 @@ static int __init omap_init_clocksource_32k(void) }return 0 ; } -arch_initcall (omap_init_clocksource_32k);#endif /* !(defined(CONFIG_ARCH_OMAP730) ||
defined(CONFIG_ARCH_OMAP15XX)) */
(quoted diff) +0 -0
b/arch/arm/plat-omap/include/plat/common.h
index 6b8088e..84c707f 100644
arch/arm/plat-omap/include/plat/common.h +1 -0
@@ -35,6 +35,7 @@ struct sys_timer;extern void omap_map_common_io (void );extern struct sys_timer omap_timer; +extern int __init omap_init_clocksource_32k (void );extern void omap_reserve (void );
Signature · 1 line
1.6.0.4
From 8a2d92faa2c21fda24124e75da3ba47930e1eaf6 Mon Sep 17 00:00:00 2001
From: Paul Walmsley <[email protected]>
Date: Sun, 16 Jan 2011 21:08:13 +0530
Subject: [PATCH] OMAP: counter_32k: init clocksource as part of machine timer init
Linus's master branch, currently at commit 1b59be2a6cdcb5a12e18d8315c07c94a624de48f ("Merge branch 'slab/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6"),
crashes during boot on OMAP4430 ES2.0 Panda:
[ 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:
http://marc.info/?l=linux-omap&m=129513468605208&w=2
Fix by initializing the counter_32k clocksource during the machine timer initialization.
--- arch/arm/mach-omap1/time.c | 7 +++++++ arch/arm/mach-omap2/timer-gp.c | 10 ++++++++-- arch/arm/plat-omap/counter_32k.c | 3 +-- arch/arm/plat-omap/include/plat/common.h | 1 + 4 files changed, 17 insertions(+), 4 deletions(-)
arch/arm/mach-omap1/time.c +7 -0
@@ -244,6 +244,13 @@ static void __init omap_timer_init(void)omap_init_mpu_timer (rate);omap_init_clocksource (rate); +/* +* XXX Since this file seems to deal mostly with the MPU timer, +* this doesn't seem like the correct place for the sync timer +* clocksource init. +*/ +if (!cpu_is_omap7xx () && !cpu_is_omap15xx ()) +omap_init_clocksource_32k (); }struct sys_timer omap_timer = {
arch/arm/mach-omap2/timer-gp.c +8 -2
@@ -42,6 +42,8 @@#include "timer-gp.h" +#include <plat/common.h> +/* MAX_GPTIMER_ID: number of GPTIMERs on the chip */ #define MAX_GPTIMER_ID 12
@@ -176,10 +178,14 @@ static void __init omap2_gp_clockevent_init(void)/* * When 32k-timer is enabled, don't use GPTimer for clocksource * instead, just leave default clocksource which uses the 32k -* sync counter. See clocksource setup in see plat-omap/common.c. +* sync counter. See clocksource setup in plat-omap/timer-32k.c */ -static inline void __init omap2_gp_clocksource_init (void ) {} +static void __init omap2_gp_clocksource_init (void ) +{ +omap_init_clocksource_32k (); +} +#else /* * clocksource
arch/arm/plat-omap/counter_32k.c +1 -2
@@ -160,7 +160,7 @@ void read_persistent_clock(struct timespec *ts) *ts = *tsp; } -static int __init omap_init_clocksource_32k (void ) +int __init omap_init_clocksource_32k (void ) {static char err[]__initdata =KERN_ERR "%s: can't register clocksource!\n" ;
@@ -195,7 +195,6 @@ static int __init omap_init_clocksource_32k(void) }return 0 ; } -arch_initcall (omap_init_clocksource_32k);#endif /* !(defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP15XX)) */
arch/arm/plat-omap/include/plat/common.h +1 -0
@@ -35,6 +35,7 @@ struct sys_timer;extern void omap_map_common_io (void );extern struct sys_timer omap_timer; +extern int __init omap_init_clocksource_32k (void );extern void omap_reserve (void );
Signature · 1 line
1.6.0.4
Quoted 5 lines · Santosh Shilimkar
Quoted 5 lines · Tony Lindgren
Quoted 4 lines
Before I update out master branch, let's try to summarize the open issues after the merge window. Here's a list of issues in omap-fixes-for-linus that I'm aware of:
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
- NFS root oopses while mounting root
- omap4430 es1.0 hangs if L2X0 cache is enabled
- omap4 panda powers down after boot (watchdog?)
- omap3 ldp board powers down after boot?
This doesn't happen for me.
Quoted 9 lines
Quoted 9 lines
Quoted 2 lines
Any other issues?
Amstrad E3 fails during the boot. Bisection points to:
(quoted diff) +0
-0commit 211baa7016894c02fc18693e21ca479cd08ac0c0 Author: Russell King <[email protected]> Date: Tue Jan 11 16:23:04 2011 +0000
Quoted 7 lines
Quoted 6 lines
ARM:
sched_clock: allowinit_sched_clock()to be called
earlyThe board does not have
sched_clock(), althoughHAVE_SCHED_CLOCKis defined for all OMAP.I guess above is sorted out by the attached patch from Paul.
There's an issue missing from Tony's list:
- running an omap2plus_defconfig kernel on SMP is unsafe to the point of being data corrupting for filesystems, especially for ext2/ext3 mounted read-write.
This is because when CPU_32v6K is disabled - which is required to build a kernel to boot on ARMv6, it turns off the SMP safe bitops - the SMP safe bitops only use instructions available to ARMv6K and above. They are reduced to local-irq-disabling, plain byte loads and stores.
So, running omap2plus_defconfig on SMP is risking filesystem corruption.
Patches for this are being worked on, but they won't be ready for -rc1. I strongly suggest someone restores some kind of build or runtime error (eg, by removing CPU_32v6K's dependence on !OMAP2 - thereby _intentionally_ breaking omap2plus_defconfig) before someone ends up with a corrupted filesystem. Or just make sure that everyone is aware that omap2plus_defconfig can eat filesystems at the moment.
Signature · 3 lines
Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of:
Quoted 59 lines
-----Original Message-----
From: Russell King [mailto:[email protected]]
Sent: Monday, January 17, 2011 5:42 PM
To: Santosh Shilimkar
Cc: Aaro Koskinen; Tony Lindgren; [email protected]
Subject: Re: Open issues after 2.6.38 merge windowQuoted 5 lines · Santosh Shilimkar
Quoted 5 lines · Tony Lindgren
Quoted 4 lines
Before I update out master branch, let's try to summarize the open issues after the merge window. Here's a list of issues in omap-fixes-for-linus that I'm aware of:
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
- NFS root oopses while mounting root
- omap4430 es1.0 hangs if L2X0 cache is enabled
- omap4 panda powers down after boot (watchdog?)
- omap3 ldp board powers down after boot?
This doesn't happen for me.
Quoted 5 lines
Quoted 5 lines
Quoted 2 lines
Any other issues?
Amstrad E3 fails during the boot. Bisection points to:
Quoted 8 lines
Quoted 8 lines
(quoted diff) +0
-0commit 211baa7016894c02fc18693e21ca479cd08ac0c0 Author: Russell King <[email protected]> Date: Tue Jan 11 16:23:04 2011 +0000 ARM: sched_clock: allow init_sched_clock() to be calledearly
The board does not have
sched_clock(), althoughHAVE_SCHED_CLOCKis
Quoted 3 lines
Quoted 2 lines
defined for all OMAP.
I guess above is sorted out by the attached patch from Paul.
There's an issue missing from Tony's list:
- running an
omap2plus_defconfigkernel on SMP is unsafe to the point
of being data corrupting for filesystems, especially for ext2/ext3 mounted read-write.This is because when
CPU_32v6Kis disabled - which is required to build
a kernel to boot on ARMv6, it turns off the SMP safe bitops - the SMP
safe bitops only use instructions available to ARMv6K and above. They
are reduced to local-irq-disabling, plain byte loads and stores.So, running
omap2plus_defconfigon SMP is risking filesystem corruption.
Quoted 11 lines
Patches for this are being worked on, but they won't be ready for - rc1.
I strongly suggest someone restores some kind of build or runtime error
(eg, by removing CPU_32v6K's dependence on !OMAP2 - thereby _intentionally_
breakingomap2plus_defconfig) before someone ends up with a corrupted
filesystem. Or just make sure that everyone is aware thatomap2plus_defconfigcan eat filesystems at the moment.
Thanks. I missed your other patch of removing !OMAP2 from CPU_32v6K config.
Regards,
Santosh
Quoted 70 lines · Santosh Shilimkar
Quoted 59 lines
-----Original Message-----
From: Russell King [mailto:[email protected]]
Sent: Monday, January 17, 2011 5:42 PM
To: Santosh Shilimkar
Cc: Aaro Koskinen; Tony Lindgren; [email protected]
Subject: Re: Open issues after 2.6.38 merge windowQuoted 5 lines · Santosh Shilimkar
Quoted 5 lines · Tony Lindgren
Quoted 4 lines
Before I update out master branch, let's try to summarize the open issues after the merge window. Here's a list of issues in omap-fixes-for-linus that I'm aware of:
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
- NFS root oopses while mounting root
- omap4430 es1.0 hangs if L2X0 cache is enabled
- omap4 panda powers down after boot (watchdog?)
- omap3 ldp board powers down after boot?
This doesn't happen for me.
Quoted 5 lines
Quoted 5 lines
Quoted 2 lines
Any other issues?
Amstrad E3 fails during the boot. Bisection points to:
Quoted 8 lines
Quoted 8 lines
(quoted diff) +0
-0commit 211baa7016894c02fc18693e21ca479cd08ac0c0 Author: Russell King <[email protected]> Date: Tue Jan 11 16:23:04 2011 +0000 ARM: sched_clock: allow init_sched_clock() to be calledearly
The board does not have
sched_clock(), althoughHAVE_SCHED_CLOCKis
Quoted 3 lines
Quoted 2 lines
defined for all OMAP.
I guess above is sorted out by the attached patch from Paul.
There's an issue missing from Tony's list:
- running an
omap2plus_defconfigkernel on SMP is unsafe to the point
of being data corrupting for filesystems, especially for ext2/ext3 mounted read-write.This is because when
CPU_32v6Kis disabled - which is required to build
a kernel to boot on ARMv6, it turns off the SMP safe bitops - the SMP
safe bitops only use instructions available to ARMv6K and above. They
are reduced to local-irq-disabling, plain byte loads and stores.So, running
omap2plus_defconfigon SMP is risking filesystem corruption.Quoted 11 lines
Patches for this are being worked on, but they won't be ready for - rc1.
I strongly suggest someone restores some kind of build or runtime error
(eg, by removing CPU_32v6K's dependence on !OMAP2 - thereby _intentionally_
breakingomap2plus_defconfig) before someone ends up with a corrupted
filesystem. Or just make sure that everyone is aware thatomap2plus_defconfigcan eat filesystems at the moment.
Quoted 2 lines
Thanks. I missed your other patch of removing !OMAP2 from
CPU_32v6Kconfig.
With the problems addressed, I think that removal of !OMAP2 is not strictly required - but I don't like the idea of disabling CPU_32v6K in general as we can't ensure that this kind of thing doesn't happen in the future.
Not disabling CPU_32v6K also fixes the swp_emulate build problem too (which is why I've never seen it here.)
There are several V6K bits that need to be addressed (such as a single clrex vs two instruction strex) before we can properly build a kernel supporting V6 but also containing V6K extensions.
Signature · 3 lines
Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of:
Tony Lindgren
maintainerQuoted 16 lines · Russell King
Quoted 15 lines · Santosh Shilimkar
Quoted 15 lines
-----Original Message-----
From: Russell King [mailto:[email protected]]
Sent: Monday, January 17, 2011 5:42 PM
To: Santosh Shilimkar
Cc: Aaro Koskinen; Tony Lindgren; [email protected]
Subject: Re: Open issues after 2.6.38 merge windowQuoted 7 lines · Santosh Shilimkar
Quoted 7 lines · Tony Lindgren
Quoted 6 lines
Before I update out master branch, let's try to summarize the open issues after the merge window. Here's a list of issues in omap-fixes-for-linus that I'm aware of:
- NFS root oopses while mounting root
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
- omap4430 es1.0 hangs if L2X0 cache is enabled
- omap4 panda powers down after boot (watchdog?)
- omap3 ldp board powers down after boot?
This doesn't happen for me.
OK, good to hear that's a separate issue and fixed.
Quoted 47 lines
Quoted 47 lines
Quoted 47 lines
Quoted 5 lines
Quoted 5 lines
Quoted 2 lines
Any other issues?
Amstrad E3 fails during the boot. Bisection points to:
Quoted 8 lines
Quoted 8 lines
(quoted diff) +0
-0commit 211baa7016894c02fc18693e21ca479cd08ac0c0 Author: Russell King <[email protected]> Date: Tue Jan 11 16:23:04 2011 +0000 ARM: sched_clock: allow init_sched_clock() to be calledearly
The board does not have
sched_clock(), althoughHAVE_SCHED_CLOCKis
Quoted 3 lines
Quoted 2 lines
defined for all OMAP.
I guess above is sorted out by the attached patch from Paul.
There's an issue missing from Tony's list:
- running an
omap2plus_defconfigkernel on SMP is unsafe to the point
of being data corrupting for filesystems, especially for ext2/ext3 mounted read-write.This is because when
CPU_32v6Kis disabled - which is required to build
a kernel to boot on ARMv6, it turns off the SMP safe bitops - the SMP
safe bitops only use instructions available to ARMv6K and above. They
are reduced to local-irq-disabling, plain byte loads and stores.So, running
omap2plus_defconfigon SMP is risking filesystem corruption.Patches for this are being worked on, but they won't be ready for - rc1.
I strongly suggest someone restores some kind of build or runtime error
(eg, by removing CPU_32v6K's dependence on !OMAP2 - thereby _intentionally_
breakingomap2plus_defconfig) before someone ends up with a corrupted
filesystem. Or just make sure that everyone is aware thatomap2plus_defconfigcan eat filesystems at the moment.
Quoted 7 lines
Quoted 2 lines
Thanks. I missed your other patch of removing !OMAP2 from
CPU_32v6Kconfig.With the problems addressed, I think that removal of !OMAP2 is not strictly required - but I don't like the idea of disabling
CPU_32v6Kin general as we can't ensure that this kind of thing doesn't happen in the future.
For the current -rc cycle, is the spinlock fix is enough while keeping CPU_32v6K disabled?
Quoted 6 lines
Not disabling
CPU_32v6Kalso fixes theswp_emulatebuild problem too (which is why I've never seen it here.)There are several V6K bits that need to be addressed (such as a single clrex vs two instruction strex) before we can properly build a kernel supporting V6 but also containing V6K extensions.
I agree building in the V6K extensions would the best solution in the long run.
Regards,
Tony
Hi,
Quoted 6 lines · Santosh Shilimkar
Quoted 6 lines
Amstrad E3 fails during the boot. Bisection points to:
(quoted diff) +0
-0commit 211baa7016894c02fc18693e21ca479cd08ac0c0 Author: Russell King <[email protected]> Date: Tue Jan 11 16:23:04 2011 +0000
Quoted 7 lines
Quoted 6 lines
ARM:
sched_clock: allowinit_sched_clock()to be called
earlyThe board does not have
sched_clock(), althoughHAVE_SCHED_CLOCKis defined for all OMAP.I guess above is sorted out by the attached patch from Paul.
I don't see how it could help? Amstrad E3 is OMAP 15xx.
A.
Quoted 20 lines
-----Original Message-----
From: Aaro Koskinen [mailto:[email protected]]
Sent: Monday, January 17, 2011 5:52 PM
To: Santosh Shilimkar
Cc: Aaro Koskinen; Tony Lindgren; [email protected]; [email protected]
Subject: RE: Open issues after 2.6.38 merge windowHi,
Quoted 9 lines · Santosh Shilimkar
Quoted 9 lines
Amstrad E3 fails during the boot. Bisection points to:
(quoted diff) +0
-0commit 211baa7016894c02fc18693e21ca479cd08ac0c0 Author: Russell King <[email protected]> Date: Tue Jan 11 16:23:04 2011 +0000 ARM: sched_clock: allow init_sched_clock() to be calledearly
Quoted 8 lines
Quoted 1 line
Quoted 1 line
The board does not have
sched_clock(), althoughHAVE_SCHED_CLOCKis
Quoted 3 lines
Quoted 2 lines
defined for all OMAP.
I guess above is sorted out by the attached patch from Paul.
I don't see how it could help? Amstrad E3 is OMAP 15xx.
I read patch again and omap15xx is skipped. Not sure why 15xx is skipped.
Regards,
Santosh
Quoted 22 lines · Santosh Shilimkar
Quoted 22 lines
-----Original Message-----
From: Aaro Koskinen [mailto:[email protected]]
Sent: Monday, January 17, 2011 5:52 PM
To: Santosh Shilimkar
Cc: Aaro Koskinen; Tony Lindgren; [email protected]; [email protected]
Subject: RE: Open issues after 2.6.38 merge windowHi,
Quoted 10 lines · Santosh Shilimkar
Quoted 10 lines
Amstrad E3 fails during the boot. Bisection points to:
(quoted diff) +0
-0commit 211baa7016894c02fc18693e21ca479cd08ac0c0 Author: Russell King <[email protected]> Date: Tue Jan 11 16:23:04 2011 +0000 ARM: sched_clock: allow init_sched_clock() to be calledearly
The board does not have
sched_clock(), althoughHAVE_SCHED_CLOCKis
Quoted 8 lines
Quoted 6 lines
Quoted 3 lines
Quoted 2 lines
defined for all OMAP.
I guess above is sorted out by the attached patch from Paul.
I don't see how it could help? Amstrad E3 is OMAP 15xx.
I read patch again and omap15xx is skipped. Not sure why 15xx is skipped.
EWW. This is horrible - and too far complicated.
So if we build a kernel with OMAP730 or OMAP15xx support, the 32k counter support is disabled for every platform, which also removes sched_clock() support (as this uses the 32k timer).
If CONFIG_OMAP_32K_TIMER is also true (eg, because you enabled OMAP16xx) then we won't have the GP clocksource code. So a kernel which is configured for OMAP15xx + OMAP16xx won't have any clocksource code at all.
In effect, all this being done by _negative_ dependencies. As has been seen with deselecting the V6K configuration symbol, negative dependencies are Bad News(tm).
This code needs to be restructured for positive dependencies and proper selection of the appopriate clock sources - which then needs to be coupled into sched_clock() properly so OMAP15xx can also benefit from sched_clock() support.
Signature · 3 lines
Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of:
Tony Lindgren
maintainerQuoted 43 lines · Russell King
Quoted 22 lines · Santosh Shilimkar
Quoted 22 lines
-----Original Message-----
From: Aaro Koskinen [mailto:[email protected]]
Sent: Monday, January 17, 2011 5:52 PM
To: Santosh Shilimkar
Cc: Aaro Koskinen; Tony Lindgren; [email protected]; [email protected]
Subject: RE: Open issues after 2.6.38 merge windowHi,
Quoted 10 lines · Santosh Shilimkar
Quoted 10 lines
Amstrad E3 fails during the boot. Bisection points to:
(quoted diff) +0
-0commit 211baa7016894c02fc18693e21ca479cd08ac0c0 Author: Russell King <[email protected]> Date: Tue Jan 11 16:23:04 2011 +0000 ARM: sched_clock: allow init_sched_clock() to be calledearly
The board does not have
sched_clock(), althoughHAVE_SCHED_CLOCKis
Quoted 8 lines
Quoted 6 lines
Quoted 3 lines
Quoted 2 lines
defined for all OMAP.
I guess above is sorted out by the attached patch from Paul.
I don't see how it could help? Amstrad E3 is OMAP 15xx.
I read patch again and omap15xx is skipped. Not sure why 15xx is skipped.
EWW. This is horrible - and too far complicated.
So if we build a kernel with OMAP730 or OMAP15xx support, the 32k counter support is disabled for every platform, which also removes
sched_clock()support (as this uses the 32k timer).If
CONFIG_OMAP_32K_TIMERis also true (eg, because you enabled OMAP16xx) then we won't have the GP clocksource code. So a kernel which is configured for OMAP15xx + OMAP16xx won't have any clocksource code at all.
Quoted 8 lines
In effect, all this being done by _negative_ dependencies. As has been seen with deselecting the V6K configuration symbol, negative dependencies are Bad News(tm).
This code needs to be restructured for positive dependencies and proper selection of the appopriate clock sources - which then needs to be coupled into
sched_clock()properly so OMAP15xx can also benefit fromsched_clock()support.
I'll take a look at fixing this. Sounds like we need both MPU timer and the 32K timer compiled in, then enable the right one based on runtime checks.
Regards,
Tony
Quoted 10 lines · Aaro Koskinen
Quoted 9 lines · Santosh Shilimkar
Quoted 9 lines
Amstrad E3 fails during the boot. Bisection points to:
(quoted diff) +0
-0commit 211baa7016894c02fc18693e21ca479cd08ac0c0 Author: Russell King <[email protected]> Date: Tue Jan 11 16:23:04 2011 +0000 ARM: sched_clock: allow init_sched_clock() to be calledearly
Quoted 6 lines
Quoted 4 lines
Quoted 3 lines
The board does not have
sched_clock(), althoughHAVE_SCHED_CLOCKis defined for all OMAP.I guess above is sorted out by the attached patch from Paul.
I don't see how it could help? Amstrad E3 is OMAP 15xx.
OMAP15xx uses the MPU timer for its clocksource, since OMAP15xx doesn't have GPTIMERs or the 32k sync timer, and the MPU timer code in mach-omap1/time.c wasn't updated for sched_clock() support.
Adding an init_fixed_sched_clock() into omap_init_clocksource() should fix the boot on OMAP15xx/7xx.
- Paul
Quoted 17 lines · Paul Walmsley
Quoted 15 lines · Aaro Koskinen
Quoted 13 lines · Santosh Shilimkar
Quoted 9 lines
Amstrad E3 fails during the boot. Bisection points to:
(quoted diff) +0
-0commit 211baa7016894c02fc18693e21ca479cd08ac0c0 Author: Russell King <[email protected]> Date: Tue Jan 11 16:23:04 2011 +0000 ARM: sched_clock: allow init_sched_clock() to be calledearly
Quoted 3 lines
The board does not have
sched_clock(), althoughHAVE_SCHED_CLOCKis defined for all OMAP.I guess above is sorted out by the attached patch from Paul.
Quoted 8 lines
Quoted 1 line
I don't see how it could help? Amstrad E3 is OMAP 15xx.
OMAP15xx uses the MPU timer for its clocksource, since OMAP15xx doesn't have GPTIMERs or the 32k sync timer, and the MPU timer code in
mach-omap1/time.cwasn't updated forsched_clock()support.Adding an
init_fixed_sched_clock()intoomap_init_clocksource()should fix the boot on OMAP15xx/7xx.
No, it needs fixing properly. There's no reason the gpt clocksource can't be used for sched_clock. We just need to switch to the variable rate implementation rather than the fixed rate if we include OMAP15xx/7xx support.
Signature · 3 lines
Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of:
Quoted 11 lines · Russell King
Quoted 7 lines · Paul Walmsley
OMAP15xx uses the MPU timer for its clocksource, since OMAP15xx doesn't have GPTIMERs or the 32k sync timer, and the MPU timer code in
mach-omap1/time.cwasn't updated forsched_clock()support.Adding an
init_fixed_sched_clock()intoomap_init_clocksource()should fix the boot on OMAP15xx/7xx.No, it needs fixing properly. There's no reason the gpt clocksource can't be used for
sched_clock.
There's a very good reason why it can't on OMAP15xx/7xx. GPTIMER/DMTIMER IP blocks are only present on OMAP1610 and later[1]. Nor is a SYNCTIMER_32K IP block present on OMAP15xx/7xx[2].
That said, the clocksource code in the OMAP tree could definitely use some cleanup. The SYNCTIMER_32K/counter_32k clocksource should be registered from the plat-omap/counter_32k.c. And your point about the compile-time negative dependencies is also a good one, now that omap1_defconfig exists.
- Paul
1. Current mainline source code for arch/arm/plat-omap/dmtimer.c, line 168:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=arch/arm/plat-omap/dmtimer.c;h=1d706cf63ca0e697521d38ab814d9889a1b70435;hb=refs/heads/master#l168
2. Current mainline source code for arch/arm/plat-omap/counter_32k.c, line 39:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=arch/arm/plat-omap/counter_32k.c;h=ea4644021fb9c0867c2e4ca4bd4bcb118e863f80;hb=refs/heads/master#l39
3. ibid.
Quoted 11 lines · Paul Walmsley
Quoted 9 lines · Russell King
Quoted 7 lines · Paul Walmsley
OMAP15xx uses the MPU timer for its clocksource, since OMAP15xx doesn't have GPTIMERs or the 32k sync timer, and the MPU timer code in
mach-omap1/time.cwasn't updated forsched_clock()support.Adding an
init_fixed_sched_clock()intoomap_init_clocksource()should fix the boot on OMAP15xx/7xx.
Quoted 6 lines
Quoted 2 lines
No, it needs fixing properly. There's no reason the gpt clocksource can't be used for
sched_clock.There's a very good reason why it can't on OMAP15xx/7xx. GPTIMER/DMTIMER IP blocks are only present on OMAP1610 and later[1]. Nor is a
SYNCTIMER_32KIP block present on OMAP15xx/7xx[2].
Yes I realise that. That doesn't negate what I said though. Let me show you how to do it:
static DEFINE_CLOCK_DATA(cd);
static inline u32 32k_read_cycles(void)
{
...
}
static inline u32 gpt_read_cycles(void)
{
...
}
#if defined(GPTIMER) && defined(32KTIMER)
static u32 (*omap_read_cycles)(void);
#elif defined(32KTIMER)
#define SC_MULT 4000000000u
#define SC_SHIFT 17
#define omap_read_cycles 32k_read_cycles
#else
#define SC_MULT gpt_value_if_fixed
#define SC_SHIFT gpt_value_if_fixed
#define omap_read_cycles gpt_read_cycles
#endif
unsigned long long notrace sched_clock(void)
{
u32 cyc = omap_read_cycles();
#ifdef SC_MULT
return cyc_to_fixed_sched_clock(&cd, cyc, (u32)~0, SC_MULT, SC_SHIFT);
#else
return cyc_to_sched_clock(&cd, cyc, (u32)~0);#endif
}
static void notrace omap_update_sched_clock(void)
{
u32 cyc = omap_read_cycles();
update_sched_clock(&cd, cyc, (u32)~0);
}void omap_init_sched_clock(int gpt)
{
unsigned long rate;#ifndef omap_read_cycles omap_read_cycles = gpt ? gpt_read_cycles : 32k_read_cycles;
#endif
if (gpt) rate = gpt_rate; else rate = 32768;
#ifdef SC_MULT init_fixed_sched_clock(&cd, omap_update_sched_clock, 32, rate SC_MULT, SC_SHIFT); #else init_sched_clock(&cd, omap_update_sched_clock, 32, rate);
#endif
}
Both a GPT _and_ 32K sched_clock implementation together, selectable at runtime or build time depending on what is selected. I'll give you that it isn't nice code, but it does what's required.
Signature · 3 lines
Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of:
Quoted 20 lines · Russell King
Quoted 10 lines · Paul Walmsley
Quoted 9 lines · Russell King
Quoted 7 lines · Paul Walmsley
OMAP15xx uses the MPU timer for its clocksource, since OMAP15xx doesn't have GPTIMERs or the 32k sync timer, and the MPU timer code in
mach-omap1/time.cwasn't updated forsched_clock()support.Adding an
init_fixed_sched_clock()intoomap_init_clocksource()should fix the boot on OMAP15xx/7xx.Quoted 6 lines
Quoted 2 lines
No, it needs fixing properly. There's no reason the gpt clocksource can't be used for
sched_clock.There's a very good reason why it can't on OMAP15xx/7xx. GPTIMER/DMTIMER IP blocks are only present on OMAP1610 and later[1]. Nor is a
SYNCTIMER_32KIP block present on OMAP15xx/7xx[2].Yes I realise that. That doesn't negate what I said though. Let me show you how to do it:
...
Quoted 3 lines
Both a GPT _and_ 32K
sched_clockimplementation together, selectable at runtime or build time depending on what is selected. I'll give you that it isn't nice code, but it does what's required.
Right. I agree that it is possible to support both GPTIMER and 32KiHz clocksources at runtime. But there should be a third case in that code also, a case for the OMAP1 MPU Timer IP blocks.
Of course, it would be technically possible to define "GPT"/"GPTIMER" to mean "MPU Timer" on OMAP15xx/OMAP7xx. However, later OMAP1 chips contain all three of the above-mentioned timer IP blocks: GPTIMERs[1], a SYNCTIMER_32K[2], and the MPU Timers[3]. Each of these timers also has distinct power, interconnect, and register access properties. So it seems less confusing to keep the MPU Timer case distinct from the GPTIMER/GPT case.
- Paul
1. OMAP1611/12 Multimedia Processor Technical Reference Manual [SWPU066B], section 13.5, "Dual-Mode Timer"
2. OMAP1611/12 Multimedia Processor Technical Reference Manual [SWPU066B], section 13.6, "32-kHz Synchronized Timer"
3. OMAP1611/12 Multimedia Processor Technical Reference Manual [SWPU066B], section 13.4, "OMAP3.2 Operating System Timer"