* omap pm : _enable_preprogram should not be __init ?
@ 2013-05-03 14:39 jean-philippe francois
2013-05-13 17:51 ` Kevin Hilman
0 siblings, 1 reply; 2+ messages in thread
From: jean-philippe francois @ 2013-05-03 14:39 UTC (permalink / raw)
To: linux-omap@vger.kernel.org; +Cc: s-guiriec, paul
[-- Attachment #1: Type: text/plain, Size: 624 bytes --]
Hi list,
Launching program using I2C after init leads to an oops with 3.9 on a
custom dm3730 based board.
Looking at the disassembly of the _enable function in omap_hwmod.o, I
noticed the call to _enable_preprogram was a direct branch to an
adress in the .text section in the middle of another function. Looking
for _enable_preprogram, it was at the right offset, but in the
.init.text section, so I guess this is why it works fine during the
boot, and oops once init is started
I recompiled the kernel with the attached patch and the oops is gone.
Is that the right ting to do ?
Jean-Philippe François
[-- Attachment #2: oops2.txt --]
[-- Type: text/plain, Size: 4531 bytes --]
[ 8.413635] Unable to handle kernel paging request at virtual address 000b0012
[ 8.421264] pgd = cf968000
[ 8.424102] [000b0012] *pgd=8fb06831, *pte=00000000, *ppte=00000000
[ 8.430725] Internal error: Oops: 17 [#1] PREEMPT ARM
[ 8.436065] Modules linked in:
[ 8.439270] CPU: 0 Not tainted (3.9.0 #2)
[ 8.443878] PC is at _enable_preprogram+0x1c/0x24
[ 8.448852] LR is at omap_hwmod_enable+0x34/0x60
[ 8.453735] pc : [<c04e408c>] lr : [<c001cb80>] psr: 80000093
[ 8.453735] sp : cf95de08 ip : 00002de5 fp : bec33d4c
[ 8.465820] r10: 00000000 r9 : 00000002 r8 : b6dd2c78
[ 8.471343] r7 : 00000004 r6 : 00000000 r5 : a0000013 r4 : cf95c000
[ 8.478210] r3 : 00000000 r2 : b6dd2c7c r1 : 00000000 r0 : 000b0012
[ 8.485107] Flags: Nzcv IRQs off FIQs on Mode SVC_32 ISA ARM Segment user
[ 8.492706] Control: 10c5387d Table: 8f968019 DAC: 00000015
[ 8.498779] Process otpcmd (pid: 607, stack limit = 0xcf95c230)
[ 8.505004] Stack: (0xcf95de08 to 0xcf95e000)
[ 8.509613] de00: 00000001 cf91f840 00000000 c001d6fc 00000002 cf91f840
[ 8.518249] de20: cf8f7e10 c001de54 cf8f7e10 c001de78 c001de68 c01d5e80 00000000 cf8f7e10
[ 8.526855] de40: cf8f7e10 c01d5f28 cf8f7e10 c0530d30 00000000 c01d6f28 00000000 c0088664
[ 8.535491] de60: b6ea1000 cfb05284 cf95c000 00000001 cf95c000 60000013 00000001 cf95dee4
[ 8.544128] de80: cf870050 c01d7308 cf870010 cf870050 00000001 c0278b14 c0526f28 00000000
[ 8.552734] dea0: cf870050 ffff8e18 00000001 cf95dee4 00000000 c0274f7c cf870050 00000001
[ 8.561370] dec0: cf95dee4 cf1d8484 000000e0 c0276464 00000008 cf9c0000 00000007 c0276980
[ 8.570007] dee0: cf9c0000 00000064 00000008 cf1d8404 cf1d8400 c01cc05c 0000270a cf1d8504
[ 8.578613] df00: 00000023 cf1d8484 00000007 c01cc670 00000bdd 00000001 00000000 cf449e60
[ 8.587249] df20: cf1dde70 cf1d8400 bec33d18 cf1d8504 c0246f00 00000003 cf95c000 00000000
[ 8.595886] df40: bec33d4c c01cd078 00000003 cf1d8504 00000081 c01cbcb8 bec33d18 00000003
[ 8.604492] df60: bec33d18 c00a9034 00002000 c00a9c68 cf92fe00 00000003 c0246f00 cf92fe00
[ 8.613128] df80: 00000000 c00a9cb0 00000003 00000000 00008e70 00000000 b6f17000 00000036
[ 8.621765] dfa0: c000e484 c000e300 00008e70 00000000 00000003 c0246f00 bec33d18 bec33d18
[ 8.630371] dfc0: 00008e70 00000000 b6f17000 00000036 00000000 00000000 b6f6d000 bec33d4c
[ 8.639007] dfe0: b6ea1bd0 bec33d0c 00008c9c b6ea1bdc 60000010 00000003 00000000 00000000
[ 8.647644] [<c001cb80>] (omap_hwmod_enable+0x34/0x60) from [<c001d6fc>] (_omap_device_enable_hwmods+0x20/0x34)
[ 8.658294] [<c001d6fc>] (_omap_device_enable_hwmods+0x20/0x34) from [<c001de54>] (omap_device_enable+0x3c/0x50)
[ 8.669036] [<c001de54>] (omap_device_enable+0x3c/0x50) from [<c001de78>] (_od_runtime_resume+0x10/0x1c)
[ 8.679046] [<c001de78>] (_od_runtime_resume+0x10/0x1c) from [<c01d5e80>] (__rpm_callback+0x54/0x98)
[ 8.688690] [<c01d5e80>] (__rpm_callback+0x54/0x98) from [<c01d5f28>] (rpm_callback+0x64/0x7c)
[ 8.697784] [<c01d5f28>] (rpm_callback+0x64/0x7c) from [<c01d6f28>] (rpm_resume+0x434/0x554)
[ 8.706665] [<c01d6f28>] (rpm_resume+0x434/0x554) from [<c01d7308>] (__pm_runtime_resume+0x48/0x74)
[ 8.716217] [<c01d7308>] (__pm_runtime_resume+0x48/0x74) from [<c0278b14>] (omap_i2c_xfer+0x28/0xe8)
[ 8.725860] [<c0278b14>] (omap_i2c_xfer+0x28/0xe8) from [<c0274f7c>] (__i2c_transfer+0x3c/0x78)
[ 8.735046] [<c0274f7c>] (__i2c_transfer+0x3c/0x78) from [<c0276464>] (i2c_transfer+0x6c/0xc0)
[ 8.744140] [<c0276464>] (i2c_transfer+0x6c/0xc0) from [<c0276980>] (i2c_master_send+0x38/0x48)
[ 8.753326] [<c0276980>] (i2c_master_send+0x38/0x48) from [<c01cc05c>] (sha204p_send_command+0x60/0x9c)
[ 8.763244] [<c01cc05c>] (sha204p_send_command+0x60/0x9c) from [<c01cc670>] (sha204c_send_and_receive+0x5c/0x1e0)
[ 8.774078] [<c01cc670>] (sha204c_send_and_receive+0x5c/0x1e0) from [<c01cd078>] (sha204m_read+0x94/0xa0)
[ 8.784179] [<c01cd078>] (sha204m_read+0x94/0xa0) from [<c01cbcb8>] (otp_do_read+0x50/0xa4)
[ 8.792999] [<c01cbcb8>] (otp_do_read+0x50/0xa4) from [<c00a9034>] (vfs_ioctl+0x24/0x40)
[ 8.801544] [<c00a9034>] (vfs_ioctl+0x24/0x40) from [<c00a9c68>] (do_vfs_ioctl+0x1b0/0x1c0)
[ 8.810363] [<c00a9c68>] (do_vfs_ioctl+0x1b0/0x1c0) from [<c00a9cb0>] (sys_ioctl+0x38/0x54)
[ 8.819152] [<c00a9cb0>] (sys_ioctl+0x38/0x54) from [<c000e300>] (ret_fast_syscall+0x0/0x30)
[ 8.828063] Code: e1a08002 ea000009 e598003c e592c05c (e7904003)
[-- Attachment #3: omap_hwmod_fix --]
[-- Type: application/octet-stream, Size: 494 bytes --]
Index: b/arch/arm/mach-omap2/omap_hwmod.c
===================================================================
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -2066,7 +2066,7 @@
* do so is present in the hwmod data, then call it and pass along the
* return value; otherwise, return 0.
*/
-static int __init _enable_preprogram(struct omap_hwmod *oh)
+static int _enable_preprogram(struct omap_hwmod *oh)
{
if (!oh->class->enable_preprogram)
return 0;
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: omap pm : _enable_preprogram should not be __init ?
2013-05-03 14:39 omap pm : _enable_preprogram should not be __init ? jean-philippe francois
@ 2013-05-13 17:51 ` Kevin Hilman
0 siblings, 0 replies; 2+ messages in thread
From: Kevin Hilman @ 2013-05-13 17:51 UTC (permalink / raw)
To: jean-philippe francois; +Cc: linux-omap@vger.kernel.org, s-guiriec, paul
Salut Jean-philippe,
jean-philippe francois <jp.francois@cynove.com> writes:
> Hi list,
>
> Launching program using I2C after init leads to an oops with 3.9 on a
> custom dm3730 based board.
>
> Looking at the disassembly of the _enable function in omap_hwmod.o, I
> noticed the call to _enable_preprogram was a direct branch to an
> adress in the .text section in the middle of another function. Looking
> for _enable_preprogram, it was at the right offset, but in the
> .init.text section, so I guess this is why it works fine during the
> boot, and oops once init is started
>
> I recompiled the kernel with the attached patch and the oops is gone.
> Is that the right ting to do ?
Yes, that looks like the right thing to do.
Could you please send a proper patch with changelog and signoff?
Thanks,
Kevin
> Jean-Philippe François
>
>
> Index: b/arch/arm/mach-omap2/omap_hwmod.c
> ===================================================================
> --- a/arch/arm/mach-omap2/omap_hwmod.c
> +++ b/arch/arm/mach-omap2/omap_hwmod.c
> @@ -2066,7 +2066,7 @@
> * do so is present in the hwmod data, then call it and pass along the
> * return value; otherwise, return 0.
> */
> -static int __init _enable_preprogram(struct omap_hwmod *oh)
> +static int _enable_preprogram(struct omap_hwmod *oh)
> {
> if (!oh->class->enable_preprogram)
> return 0;
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-05-13 17:51 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-03 14:39 omap pm : _enable_preprogram should not be __init ? jean-philippe francois
2013-05-13 17:51 ` Kevin Hilman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).