While waking from standby, resume code of DaVinci audio driver oopses [2].
Looking into it, it seems that in file
sound/oss/davinci-audio-dma-intfc.c
in function
davinci_start_sound_dma()
in else part of
if (s->input_or_output == FMODE_WRITE) {
ret = audio_set_dma_params_play(s->lch[s->dma_q_tail],
dma_ptr, dma_size);
} else {
ret = audio_set_dma_params_capture(s->lch[s->dma_q_tail],
dma_ptr, dma_size);
}
s->lch is a NULL pointer. Temporarily disabling the
audio_set_dma_params_capture() call here make resume work fine.
Would be really nice if anybody with audio driver and DMA knowledge
could have a look at this!
How to reproduce this:
1) Apply DaVinci PM patch [1] to recent git
2) In kernel config power management configuration enable
[*] Power Management support
[*] Power Management Debug Support
[*] Verbose Power Management debugging
[*] Keep console(s) enabled during suspend/resume (DANGEROUS)
[*] Suspend to RAM and standby
(and make sure audio driver is enabled)
3) Start system, send it to standby "echo standby > /sys/power/state"
and wake it again e.g. by ping from host PC.
Then you should get Oops below.
Many thanks,
Dirk
[1]
http://linux.omap.com/pipermail/davinci-linux-open-source/2008-January/004918.html
[2] Oops at audio driver resume:
Unable to handle kernel paging request at virtual address 00a6f440
pgd = cf62c000
[00a6f440] *pgd=00000000
Internal error: Oops: 5 [#1]
Modules linked in:
CPU: 0 Not tainted (2.6.23-davinci1 #84)
PC is at davinci_start_sound_dma+0xf0/0x210
LR is at 0xc028d258
pc : [<c017c680>] lr : [<c028d258>] psr: 60000013
sp : cf56ddcc ip : c028d258 fp : cf56de14
r10: 00000008 r9 : cf56df80 r8 : 0000ffff
r7 : 5a208e12 r6 : c029bda4 r5 : c029bd64 r4 : 0001fffe
r3 : 00000000 r2 : 00000000 r1 : c029bd10 r0 : 0000001e
Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
Control: 0005317f Table: 8f62c000 DAC: 00000015
Process echo (pid: 718, stack limit = 0xcf56c258)
Stack: (0xcf56ddcc to 0xcf56e000)
ddc0: c029be4c cf56de70 c02a99f4 c02621e4
0000002f
dde0: cf56de54 cf56ddf0 c0040a50 c00402a4 00000000 c029bd64 019d71e0
c1c72f44
de00: c029bd64 0001fffe cf56de3c cf56de18 c017cf80 c017c5a0 c029bd64
b404503f
de20: c02a99f4 00000001 c01fe890 00000008 cf56de54 cf56de40 c017d144
c017ced0
de40: 0000000f c029bd64 cf56de68 cf56de58 c017d1c0 c017d068 c029be4c
cf56de78
de60: cf56de6c c014f848 c017d158 cf56de90 cf56de7c c0151b7c c014f828
00000000
de80: 00000001 cf56dea0 cf56de94 c0151bb4 c0151b18 cf56deb8 cf56dea4
c00611a0
dea0: c0151bb0 00000001 00000000 cf56ded4 cf56debc c0061254 c0061154
0000e8e6
dec0: c02ae0c4 c0252cf8 cf56def4 cf56ded8 c0061394 c00611e0 c0252cf8
00000007
dee0: cfde0000 00000001 cf56df1c cf56def8 c00614d4 c0061294 cfc11f74
cf607e60
df00: 00000008 c028ecfc c0291d28 cf607e74 cf56df2c cf56df20 c00bc36c
c006143c
df20: cf56df58 cf56df30 c00bc6a0 c00bc344 cfc44e40 40017000 cf56df80
00000008
df40: c0026fc4 cf56c000 401761f0 cf56df7c cf56df5c c0083340 c00bc578
ffffffff
df60: cfc44e40 00000000 00000000 00000004 cf56dfa4 cf56df80 c008394c
c0083298
df80: 00000000 00000000 00000000 40017000 00000008 401747c4 00000000
cf56dfa8
dfa0: c0026e20 c0083910 40017000 00000008 00000001 40017000 00000008
401747c4
dfc0: 40017000 00000008 401747c4 00000008 00000002 0000c7bc 401761f0
00000000
dfe0: 00000000 bef18d94 00004050 40118890 60000010 00000001 eafffff5
e1560003
Backtrace:
[<c017c590>] (davinci_start_sound_dma+0x0/0x210) from [<c017cf80>]
(audio_process_dma+0)
r8:0001fffe r7:c029bd64 r6:c1c72f44 r5:019d71e0 r4:c029bd64
[<c017cec0>] (audio_process_dma+0x0/0x198) from [<c017d144>]
(audio_dma_callback+0xec/0)
[<c017d058>] (audio_dma_callback+0x0/0xf0) from [<c017d1c0>]
(audio_dsr_handler+0x78/0x)
r5:c029bd64 r4:0000000f
[<c017d148>] (audio_dsr_handler+0x0/0x7c) from [<c014f848>]
(platform_resume_early+0x30)
r4:c029be4c
[<c014f818>] (platform_resume_early+0x0/0x3c) from [<c0151b7c>]
(dpm_power_up+0x74/0x98)
[<c0151b08>] (dpm_power_up+0x0/0x98) from [<c0151bb4>]
(device_power_up+0x14/0x18)
r5:00000001 r4:00000000
[<c0151ba0>] (device_power_up+0x0/0x18) from [<c00611a0>]
(suspend_enter+0x5c/0x8c)
[<c0061144>] (suspend_enter+0x0/0x8c) from [<c0061254>]
(suspend_devices_and_enter+0x84)
r5:00000000 r4:00000001
[<c00611d0>] (suspend_devices_and_enter+0x0/0xb4) from [<c0061394>]
(enter_state+0x110/)
r6:c0252cf8 r5:c02ae0c4 r4:0000e8e6
[<c0061284>] (enter_state+0x0/0x1a8) from [<c00614d4>]
(state_store+0xa8/0xbc)
r7:00000001 r6:cfde0000 r5:00000007 r4:c0252cf8
[<c006142c>] (state_store+0x0/0xbc) from [<c00bc36c>]
(subsys_attr_store+0x38/0x44)
[<c00bc334>] (subsys_attr_store+0x0/0x44) from [<c00bc6a0>]
(sysfs_write_file+0x138/0x1)
[<c00bc568>] (sysfs_write_file+0x0/0x1ac) from [<c0083340>]
(vfs_write+0xb8/0x144)
[<c0083288>] (vfs_write+0x0/0x144) from [<c008394c>] (sys_write+0x4c/0x80)
r7:00000004 r6:00000000 r5:00000000 r4:cfc44e40
[<c0083900>] (sys_write+0x0/0x80) from [<c0026e20>]
(ret_fast_syscall+0x0/0x2c)
r6:401747c4 r5:00000008 r4:40017000
Code: ebfb1114 e5951030 e595303c e3a02000 (e7934101)
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source