在sdio中断的tasklet里调用SDIO读写函数出错。
分析:tasklet中不允许使用带睡眠机制的函数。
解决:换成workqueue或者信号量。
log:
mux_readfromsdio_tasklet_handler() [ 31.373676] BUG: scheduling while atomic: ksdioirqd/mmc2/91/0x00000104 [ 31.380196] Modules linked in: [ 31.383215] [ 31.384693] Pid: 91, comm: ksdioirqd/mmc2 [ 31.389217] CPU: 0 Not tainted (2.6.35.11 #174) [ 31.394080] PC is at vprintk+0x43c/0x4c0 [ 31.397983] LR is at vprintk+0x434/0x4c0 [ 31.401882] pc : [<c018cd9c>] lr : [<c018cd94>] psr: 60000013 [ 31.401887] sp : dff3deb8 ip : e18e6000 fp : 60000013 [ 31.413346] r10: dff3deb8 r9 : 00000000 r8 : 00000047 [ 31.418553] r7 : 00000001 r6 : 00000003 r5 : 00000035 r4 : 00000001 [ 31.425057] r3 : c0a46bc4 r2 : c0a46bc4 r1 : dff3de90 r0 : c0a46be4 [ 31.431575] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kerl [ 31.438866] Control: 10c57c7d Table: 5eaac06a DAC: 00000017 [ 31.444588] [ 31.444590] PC: 0xc018cd1c: [ 31.448848] cd1c e1d322b8 e3120010 1a000003 e5933034 e3530000 1aff