关于IMX6 SDIO-WIFI奔溃问题分析

测试环境:IMX6平台,SDIO-WIFI模块rtl8189fs,随机出现奔溃问题。

1)优化了WIFI 驱动代码,防止死锁

spin_lock的函数改为spin_lock_bh,   是spin_unlock函数改为spin_unlock_bh

 

2)关闭CPU抢占

 

 

3.系统调优

root@M6708-T:/proc/irq/69# sysctl -w vm.min_free_kbytes=32768
vm.min_free_kbytes = 32768
root@M6708-T:/proc/irq/69# sysctl -a|grep min_free_kbytes
vm.min_free_kbytes = 32768

4.关闭eth0

#ifconfig eth0 down

5.加入cap-sdio-irq

 

 

6. 性能检测

#perf top -K

 

 出现情况:中断25异常,

 

查看中断:确认25就是MMC3. 

因此判读与WIFI驱动无关。

 

附录log:

BEGIN] 2020/11/11 21:05:23
[2020/11/12 8:58:42] fec 2188000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[2020/11/12 8:58:42] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[2020/11/12 10:52:59] fec 2188000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[2020/11/12 10:52:59] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[2020/11/12 11:55:56] fec 2188000.ethernet eth0: Link is Down
[2020/11/12 11:55:56] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[2020/11/12 12:52:00] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
regulator regulator.30: Failed to increase supply voltage: -110
[2020/11/12 12:52:00] cpu cpu0: failed to scale vddarm up: -110
[2020/11/12 12:52:00] cpufreq: __target_index: Failed to change cpu frequency: -110
[2020/11/12 12:52:00] fec 2188000.ethernet eth0: MDIO read timeout
[2020/11/12 12:52:11] mmc3: Timeout waiting for hardware interrupt.
[2020/11/12 12:52:11] sdhci: =========== REGISTER DUMP (mmc3)===========
[2020/11/12 12:52:11] sdhci: Sys addr: 0x1005d000 | Version: 0x00000002
[2020/11/12 12:52:11] sdhci: Blk size: 0x00000200 | Blk cnt: 0x00000000
[2020/11/12 12:52:11] sdhci: Argument: 0x00363a70 | Trn mode: 0x0000002b
[2020/11/12 12:52:11] sdhci: Present: 0x01fd8008 | Host ctl: 0x00000031
[2020/11/12 12:52:11] sdhci: Power: 0x00000002 | Blk gap: 0x00000080
[2020/11/12 12:52:11] sdhci: Wake-up: 0x00000008 | Clock: 0x0000001f
[2020/11/12 12:52:11] sdhci: Timeout: 0x0000008f | Int stat: 0x00000003
[2020/11/12 12:52:11] sdhci: Int enab: 0x107f100b | Sig enab: 0x107f100b
[2020/11/12 12:52:11] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000003
[2020/11/12 12:52:11] sdhci: Caps: 0x07eb0000 | Caps_1: 0x0000a007
[2020/11/12 12:52:11] sdhci: Cmd: 0x0000193a | Max curr: 0x00ffffff
[2020/11/12 12:52:11] sdhci: Host ctl2: 0x00000000
[2020/11/12 12:52:11] sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x3c078210
[2020/11/12 12:52:11] sdhci: ===========================================
[2020/11/12 12:52:21] INFO: rcu_preempt self-detected stall on CPU
[2020/11/12 12:52:21] 0-...: (1 GPs behind) idle=dbd/140000000000002/0 softirq=2831262/2831262 fqs=920
[2020/11/12 12:52:21] (t=2100 jiffies g=879456 c=879455 q=21047)
[2020/11/12 12:52:21] Task dump for CPU 0:
[2020/11/12 12:52:21] RTW_XMIT_THREAD R running task 0 759 2 0x00000002
[2020/11/12 12:52:21] [<8010eb94>] (unwind_backtrace) from [<8010b260>] (show_stack+0x10/0x14)
[2020/11/12 12:52:21] [<8010b260>] (show_stack) from [<801b8790>] (rcu_dump_cpu_stacks+0xa4/0xc4)
[2020/11/12 12:52:21] [<801b8790>] (rcu_dump_cpu_stacks) from [<8017edb8>] (rcu_check_callbacks+0x908/0x988)
[2020/11/12 12:52:21] [<8017edb8>] (rcu_check_callbacks) from [<8018201c>] (update_process_times+0x30/0x5c)
[2020/11/12 12:52:21] [<8018201c>] (update_process_times) from [<80192f04>] (tick_sched_timer+0x54/0x98)
[2020/11/12 12:52:21] [<80192f04>] (tick_sched_timer) from [<80182f6c>] (__hrtimer_run_queues+0x10c/0x1a4)
[2020/11/12 12:52:21] [<80182f6c>] (__hrtimer_run_queues) from [<801831cc>] (hrtimer_interrupt+0xa8/0x1fc)
[2020/11/12 12:52:21] [<801831cc>] (hrtimer_interrupt) from [<8010e4c0>] (twd_handler+0x30/0x38)
[2020/11/12 12:52:21] [<8010e4c0>] (twd_handler) from [<8017540c>] (handle_percpu_devid_irq+0x8c/0x144)
[2020/11/12 12:52:21] [<8017540c>] (handle_percpu_devid_irq) from [<801708a4>] (generic_handle_irq+0x24/0x34)
[2020/11/12 12:52:21] [<801708a4>] (generic_handle_irq) from [<80170dc4>] (__handle_domain_irq+0x7c/0xec)
[2020/11/12 12:52:21] [<80170dc4>] (__handle_domain_irq) from [<801014c0>] (gic_handle_irq+0x48/0x8c)
[2020/11/12 12:52:21] [<801014c0>] (gic_handle_irq) from [<8010bd4c>] (__irq_svc+0x6c/0xa8)
[2020/11/12 12:52:21] Exception stack(0xa9237ca0 to 0xa9237ce8)
[2020/11/12 12:52:21] 7ca0: 00000000 80d5a2c8 810a43c0 00000000 00000002 00000000 00000010 a9236000
[2020/11/12 12:52:21] 7cc0: 00000001 81002080 a8008000 a9236000 00000001 a9237cf0 8013201c 8013202c
[2020/11/12 12:52:21] 7ce0: 20000113 ffffffff
[2020/11/12 12:52:21] [<8010bd4c>] (__irq_svc) from [<8013202c>] (__do_softirq+0x94/0x22c)
[2020/11/12 12:52:21] [<8013202c>] (__do_softirq) from [<801324a4>] (irq_exit+0xcc/0x108)
[2020/11/12 12:52:21] [<801324a4>] (irq_exit) from [<80170dc8>] (__handle_domain_irq+0x80/0xec)
[2020/11/12 12:52:21] [<80170dc8>] (__handle_domain_irq) from [<801014c0>] (gic_handle_irq+0x48/0x8c)
[2020/11/12 12:52:21] [<801014c0>] (gic_handle_irq) from [<8010bd4c>] (__irq_svc+0x6c/0xa8)
[2020/11/12 12:52:21] Exception stack(0xa9237d80 to 0xa9237dc8)
[2020/11/12 12:52:21] 7d80: a8588b00 00ff1003 c0b0c000 807b3144 a8588b00 00ff1003 a8588800 00000000
[2020/11/12 12:52:21] 7da0: a9236000 a81cf674 a8588800 a9236000 00000100 a9237dd0 80114748 807ae97c
[2020/11/12 12:52:21] 7dc0: a0000013 ffffffff
[2020/11/12 12:52:21] [<8010bd4c>] (__irq_svc) from [<807ae97c>] (sdhci_init+0xcc/0xdc)
[2020/11/12 12:52:21] [<807ae97c>] (sdhci_init) from [<807b13e8>] (sdhci_runtime_resume_host+0x38/0x14c)
[2020/11/12 12:52:21] [<807b13e8>] (sdhci_runtime_resume_host) from [<804d4370>] (__rpm_callback+0x2c/0x60)
[2020/11/12 12:52:21] [<804d4370>] (__rpm_callback) from [<804d43f4>] (rpm_callback+0x50/0x80)
[2020/11/12 12:52:21] [<804d43f4>] (rpm_callback) from [<804d52b0>] (rpm_resume+0x360/0x550)
[2020/11/12 12:52:21] [<804d52b0>] (rpm_resume) from [<804d54ec>] (__pm_runtime_resume+0x4c/0x64)
[2020/11/12 12:52:21] [<804d54ec>] (__pm_runtime_resume) from [<80799348>] (__mmc_claim_host+0x170/0x1b0)
[2020/11/12 12:52:21] [<80799348>] (__mmc_claim_host) from [<8064fe34>] (sd_read+0x4c/0x94)
[2020/11/12 12:52:21] [<8064fe34>] (sd_read) from [<80681f14>] (sdio_local_read+0x88/0xc4)
[2020/11/12 12:52:21] [<80681f14>] (sdio_local_read) from [<806827e4>] (HalQueryTxBufferStatus8188FSdio+0x20/0x50)
[2020/11/12 12:52:21] [<806827e4>] (HalQueryTxBufferStatus8188FSdio) from [<806801d0>] (_dequeue_writeport+0xb0/0x1c0)
[2020/11/12 12:52:21] [<806801d0>] (_dequeue_writeport) from [<806233a0>] (_rtw_mi_dequeue_writeport+0x54/0x7c)
[2020/11/12 12:52:21] [<806233a0>] (_rtw_mi_dequeue_writeport) from [<806242a4>] (rtw_mi_dequeue_writeport+0xc/0x10)
[2020/11/12 12:52:21] [<806242a4>] (rtw_mi_dequeue_writeport) from [<8068033c>] (rtl8188fs_xmit_buf_handler+0x5c/0x8c)
[2020/11/12 12:52:21] [<8068033c>] (rtl8188fs_xmit_buf_handler) from [<80662104>] (rtw_hal_xmit_thread_handler+0x10/0x14)
[2020/11/12 12:52:21] [<80662104>] (rtw_hal_xmit_thread_handler) from [<8063c194>] (rtw_xmit_thread+0x28/0xb4)
[2020/11/12 12:52:21] [<8063c194>] (rtw_xmit_thread) from [<80148e28>] (kthread+0xdc/0xf4)
[2020/11/12 12:52:21] [<80148e28>] (kthread) from [<801077f8>] (ret_from_fork+0x14/0x3c)
[2020/11/12 12:52:21] mmc3: Timeout waiting for hardware interrupt.
[2020/11/12 12:52:21] sdhci: =========== REGISTER DUMP (mmc3)===========
[2020/11/12 12:52:21] sdhci: Sys addr: 0x00000000 | Version: 0x00000002
[2020/11/12 12:52:21] sdhci: Blk size: 0x00000200 | Blk cnt: 0x00000000
[2020/11/12 12:52:21] sdhci: Argument: 0x00000000 | Trn mode: 0x00000023
[2020/11/12 12:52:21] sdhci: Present: 0x01fd8009 | Host ctl: 0x00000031
[2020/11/12 12:52:21] sdhci: Power: 0x00000002 | Blk gap: 0x00000080
[2020/11/12 12:52:21] sdhci: Wake-up: 0x00000008 | Clock: 0x0000001f
[2020/11/12 12:52:21] sdhci: Timeout: 0x0000008f | Int stat: 0x00010000
[2020/11/12 12:52:21] sdhci: Int enab: 0x107f100b | Sig enab: 0x107f100b
[2020/11/12 12:52:21] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000003
[2020/11/12 12:52:21] sdhci: Caps: 0x07eb0000 | Caps_1: 0x0000a007
[2020/11/12 12:52:21] sdhci: Cmd: 0x00000cdb | Max curr: 0x00ffffff
[2020/11/12 12:52:21] sdhci: Host ctl2: 0x00000000
[2020/11/12 12:52:21] sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x00000000
[2020/11/12 12:52:21] sdhci: ===========================================
[2020/11/12 12:52:32] mmc3: Timeout waiting for hardware cmd interrupt.
[2020/11/12 12:52:32] sdhci: =========== REGISTER DUMP (mmc3)===========
[2020/11/12 12:52:32] sdhci: Sys addr: 0x00000000 | Version: 0x00000002
[2020/11/12 12:52:32] sdhci: Blk size: 0x00000200 | Blk cnt: 0x00000000
[2020/11/12 12:52:32] sdhci: Argument: 0x00010000 | Trn mode: 0x00000023
[2020/11/12 12:52:32] sdhci: Present: 0x01fd8008 | Host ctl: 0x00000031
[2020/11/12 12:52:32] sdhci: Power: 0x00000002 | Blk gap: 0x00000080
[2020/11/12 12:52:32] sdhci: Wake-up: 0x00000008 | Clock: 0x0000001f
[2020/11/12 12:52:32] sdhci: Timeout: 0x0000008f | Int stat: 0x00000001
[2020/11/12 12:52:32] sdhci: Int enab: 0x107f100b | Sig enab: 0x107f100b
[2020/11/12 12:52:32] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000003
[2020/11/12 12:52:32] sdhci: Caps: 0x07eb0000 | Caps_1: 0x0000a007
[2020/11/12 12:52:32] sdhci: Cmd: 0x00000d1a | Max curr: 0x00ffffff
[2020/11/12 12:52:32] sdhci: Host ctl2: 0x00000000
[2020/11/12 12:52:32] sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x00000000
[2020/11/12 12:52:32] sdhci: ===========================================
[2020/11/12 12:52:32] mmcblk3: error -110 sending status command, retrying
[2020/11/12 12:52:42] mmc3: Timeout waiting for hardware cmd interrupt.
[2020/11/12 12:52:42] sdhci: =========== REGISTER DUMP (mmc3)===========
[2020/11/12 12:52:42] sdhci: Sys addr: 0x00000000 | Version: 0x00000002
[2020/11/12 12:52:42] sdhci: Blk size: 0x00000200 | Blk cnt: 0x00000000
[2020/11/12 12:52:42] sdhci: Argument: 0x00010000 | Trn mode: 0x00000023
[2020/11/12 12:52:42] sdhci: Present: 0x01fd8008 | Host ctl: 0x00000031
[2020/11/12 12:52:42] sdhci: Power: 0x00000002 | Blk gap: 0x00000080
[2020/11/12 12:52:42] sdhci: Wake-up: 0x00000008 | Clock: 0x0000001f
[2020/11/12 12:52:42] sdhci: Timeout: 0x0000008f | Int stat: 0x00000001
[2020/11/12 12:52:42] sdhci: Int enab: 0x107f100b | Sig enab: 0x107f100b
[2020/11/12 12:52:42] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000003
[2020/11/12 12:52:42] sdhci: Caps: 0x07eb0000 | Caps_1: 0x0000a007
[2020/11/12 12:52:42] sdhci: Cmd: 0x00000d1a | Max curr: 0x00ffffff
[2020/11/12 12:52:42] sdhci: Host ctl2: 0x00000000
[2020/11/12 12:52:42] sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x00000000
[2020/11/12 12:52:42] sdhci: ===========================================
[2020/11/12 12:52:42] mmcblk3: error -110 sending status command, retrying

参考--->:

https://blog.csdn.net/wdq347/article/details/39641551

posted @ 2021-02-25 16:19  DMCF  阅读(2086)  评论(0编辑  收藏  举报