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
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to