高通平台稳定性分析-hungtask-持锁后sleep

例子:

[86:khungtaskd]Task SettingsProvide:4139 blocked for 120s is causing panic
[86:khungtaskd]Kernel panic - not syncing: hungtask: blocked tasks

 __switch_to+0x304
 __schedule+0x51c
schedule+0xb0
wait_on_page_bit_common+0x310 //这里等待IO页面操作
wait_on_page_writeback+0xb4
__filemap_fdatawait_range+0x130
f2fs_do_sync_file+0x204
f2fs_sync_file+0x30

查看UFS相关的进程调用栈,可以看到是在等clk_unprepare的锁:

hungtask:name=kworker/u16:2,PID=10357,tgid=11286,tgname=kworker/u16:2,type=8,blocked for 122s,
task:kworker/u16:2   state:D stack:    0 pid:11286  ppid:     2 flags:0x00000008
Workqueue: ufs_clk_gating_0 ufshcd_gate_work.cfi_jt
Call trace:
 __switch_to+0x304/0x434
 __schedule+0x51c/0x8e4
 schedule+0xb0/0x1e4
 __mutex_lock+0x630/0xc90 
 clk_unprepare+0xa0/0x17c
 ufs_qcom_phy_disable_ref_clk+0x38/0xac [phy_qcom_ufs]
 ufs_qcom_phy_power_off+0x90/0x1c0 [phy_qcom_ufs]

查看持锁进程:两种方法:

1、通过Trace32直接看counter的值0xFFFFFF8265381C37,对应的进程就是0xFFFFFF8265381C30

2、通过log的调用栈中的信息:搜索clk_unprepare,可以看到只有一个是0xc0的指令处

 查看调用栈:

Process: kworker/0:0, [affinity: 0x1] cpu: 0 pid: 13047 start: 0xffffff8265381c30
=====================================================
    Stack:
    __switch_to+0x304
    __schedule+0x51c
    schedule+0xb0
    schedule_hrtimeout_range_clock+0x198
    usleep_range+0x6c //这里sleep
    spf_core_is_apm_ready[spf_core_dlkm]+0x7c
    prm_gpr_send_pkt[audio_prm_dlkm]+0x228
    audio_prm_set_lpass_hw_core_req[audio_prm_dlkm]+0x90
    lpass_hw_vote_prepare[wcd9xxx_dlkm]+0x68
    clk_core_prepare+0x154
    clk_prepare+0xc0 //这里持锁
    digital_cdc_rsc_mgr_hw_vote_enable[spf_core_dlkm]+0x40

持锁之后,再调sleep就会导致锁无法释放,很容易死锁。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
高通平台稳定性是指在高通处理器上运行的操作系统和应用程序的稳定性。然而,有时候由于一些特殊情况,可能会出现中断风暴而导致系统崩溃。 中断风暴是指由于某些硬件或软件问题,中断请求过于频繁,超出系统处理能力的范围,从而导致系统无法正常运行。这会导致系统进入一种无限处理中断请求的循环状态,最终可能导致系统panic。 在高通平台上,中断控制器负责管理和协调中断请求的处理。当有中断请求发生时,中断控制器会将其传递给处理器,并相应地进行中断服务程序的处理。 然而,如果系统中存在某个硬件或驱动程序的问题,可能会导致中断请求的频率过高,超出系统处理能力的范围。这可能是由于硬件故障、驱动程序错误或应用程序错误等原因引起的。 当中断请求过于频繁时,处理器无法及时处理所有请求,导致系统陷入中断处理的循环,无法继续正常运行。最终,系统可能会因为无法处理中断请求而panic,即系统崩溃。 为避免中断风暴导致panic,开发人员应该严格测试和调试硬件、驱动程序和应用程序,确保其在高通平台上的稳定性。同时,及时修复和更新可能存在的问题,并优化中断处理机制,以提高系统的稳定性和性能。 总而言之,高通平台稳定性分析中应注意中断风暴可能导致系统panic的情况。通过合理优化中断处理机制、修复和更新问题,可以提高系统的稳定性,确保正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

thonmin

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值