工具/软件:Linux
大家好、
客户在 Android N 上使用 sdm660平台以及 相关的 Linux 内核版本4.4。
当 Power_SUPPLY 调用通知程序且 RCU_READ_LOCK 中的任务无法睡眠时、通知程序中存在 RCU_READ_LOCK、但 当 bq27542驱动器读取 i2c 信息时、在睡眠中生成 i2c_transfer 中的互斥量、导致崩溃。(内核4.4 μ)
工作队列是我们当前的方法,但这对实时有影响,是否有更好的解决方案?
以下是器件崩溃时的堆栈信息:
[9.916404] init:(解析/system/etc/init/vold.rc 花费了0.00s。)
[9.926649] EXT4-FS (mmcblk0p51):恢复完成
[9.927653] EXT4-FS (mmcblk0p51):已安装的具有已排序数据模式的文件系统。 OPTS:barrier = 1
[9.934119] ADSP-loader SoC:QCOM、msm-ADSP-loader:ADSP_LOAD_DO:调度工作以加载 ADSP FW
[9.944120] init:正在启动服务'logd'……
[9.949834] Subsys-pil-tz 15700000。QCOM、lpass:ADSP:从0x0000000092a00000加载到0x000094800000
[9.950751] EXT4-FS (mmcblk0p14):已重新安装。 OPTS:(空)
[9.956112] init:正在启动服务'qseecomd'……
[9.956859] init:正在启动服务'exec 1 (/system/bin/init.qti.qseecomd.sh)'...
[9.964479] 审核:type=1400审核(315.619:4):AVC: 针对 pid=551 comm="init.QTI.qseeco" path="/vendor" dev="mmcblk0p14" ino_7812 scontext=u:r:init-qTI-fbe-sh=/fendor" dev="mmcblk0p14" target=7812 scontext=u:r=r_zh_per管辖 范围:tagle_system_context=nature=0:tagendor_file_s=nper管辖 范围
[9.980281] logd.auditd:开始
[9.980317] logd.klogd:9969547495
[10.022799] `:警告:"qseecomd"使用32位功能(使用的传统支持)
[10.079418] type=1400审核(315.729:5):AVC:针对 pid=578 comm="getprop" path="/vendor" dev="mmcblk0p14" ino=7812 scontext=u:r:init-qTI-fbe-sh:s0 tcontext=u:object_nts=允许的文件:nk_class=u.h
[10.098327] init:服务'exec 1 (/system/bin/init.qti.qseecomd.sh)'(pid 551)以状态0退出
[10.098462] init:write_file:Unable to write to '/dev/ipa:invalid arge.
[10.102916] bq_psy_pffea28e49000
[10.102924] 错误:从/home/user/Awork/mt/TOO/LA.UM.6.1/LINUX/android/kernel/msm-4.4/kernel/locking/rtmutex.c:1399中的无效上下文调用的睡眠函数
[10.102927] in_at原 子():0、IRQs_disabled():0、pid:204、name:kwork/0:1
[10.102935] ------ [在此处剪切]-----
[10.102938] 内核错误,网址为/home/user/Awork/mt/TOO/LA.UM.6.1/LINUX/android/kernel/msm-4.4/kernel/sched/core.c:8531!
[10.102943] ------ [在此处剪切]-----
[10.102947] 内核错误,网址为/home/user/Awork/mt/TOO/LA.UM.6.1/LINUX/android/kernel/msm-4.4/kernel/sched/core.c:8531!
[10.102950] 内部错误:Oops -错误:0 [#1]抢占 SMP
[10.102958] 链接的模块:
[10.102964] CPU:0 PID:204 Comm:kwork/0:1未被污染4.4.4.21+#1
[10.102967] 硬件名称:Qualcomm Technologies、Inc. SDM 660 PM660 + PM660A MTP (DT)
[10.102982] 工作队列:事件 power_supply_changed_work
[10.102986] task:ffffffea29735100 ti: ffffffea297d4000 task.ti: ffffffea297d4000
[10.109997] PC 位于__Might _sleep+0x134/0x144
[10.103001] LR 位于__MSO_SLEEP+0xf8/0x144
[10.103005] 电脑:[ ] LR:[ ]状态:60000145
[10.103008] sp:ffffea297d79b0
[10.103015] X29:ffffea297d79b0 x28:0000000000000000
[10.103022] X27:000000000000 x26:0000000000000000
[10.103029] x25:000000000000 x24:ffff8966827128
[10.103036] x23:000000000000 x22:0000000000000000
[10.103043] x21:0000000000000577 x20:ffffff8965738f99
[10.103049] x19:ffffea297d4000 x18:0000000000c3
[10.103056] X17:0000007f94257e58 x16:ffffff89643f8870
[10.103063] x15:0000007f94316810 x14:0ffffffffffffffffffffe
[10.103070] X13:000000000018 x12:010101010101
[10.103076] x11:7f7f7f7f7f7f7f7f7f x10:fefefeff30392f
[10.103083] x9:7f7f7f7f7f7f7f7f7f x8:ffffea350712b7
[10.103090] x7:ffffffff89643027b8 x6:0000000000000000
[10.103096] x5:ffffea297d7830 x4:ffffffea297d78d0
[10.103103] x3:0000000000000000 x2:0000000000000000
[10.103110] x1:000057ac6e9d x0:0000000000000140
[10.103114]
[10.103114] PC:0xff89642cc734:
[10.103135] c734 9402da9d f9400a60 f9400401 d28dd3a0 f2aaf580 f9401021 eb00003f 54000080
[10.103155] c754 b000a380 91311c00 9402da93 d53b4220 36380080 d5384100 f9400800 940256af
[10.103175] c774 d4210000 a94153f3 a8c37bfd d65f03c0 a9bd7bfd 910003fd a90153f3 a9025bf5
[10.103194] c794 aa0003f4 aa1e03e0 2a0103f5 2a0203f6 d503201f d5384100 f9400800 f9400001
[10.103198]
[10.103198] LR:0xff89642cc6f8:
[10.103217] c6f8 f9000801 b000a380 aa1403e1 912f3400 9402daa8 b9401a60 d53b4222 f9400a64
[10.103236] c718 6b1f001f b000a380 1a9f07e1 91303000 12190042 b944f083 911ac084 9402da9d
[10.103256] c738 f9400a60 f9400401 d28dd3a0 f2aaf580 f9401021 eb00003f 54000080 b000a380
[10.103275] c758 91311c00 9402da93 d53b4220 36380080 d5384100 f9400800 940256af d4210000
[10.103279]
[10.103279] SP:0xffffff297d7970:
[10.103299] 7970 642cc738 ffffff89 297d79b0 ffffffea 642cc774 ffffffffff89 60000145 00000000
[10.103318] 7990 297357b0 ffffffea 297d7830 ffffffffffea ffffffFFFF 643027b8 ffffffff 89
[10.103338] 79b0 297d79e0 ffffffea 642cc800 ffff89 2a0b4040 ffffffffea 65738f99 ffffffffffff89
[10.103357] 79d0 00000000 00000000 00000000 00000000 297d7a10 ffffffea 651d274c ffffffffffff89
[10.103360]
[10.103363] 进程 kwork/0:1 (pid:204、栈限制= 0xffea297d4020)
[10.103366] 呼叫跟踪:
[10.103370] 异常堆栈(0xffffff297d77e0至0xffffff297d7910)
[10.103375] 77e0:ffffffea297d4000 0000008000000000 ffffffea297d79b0 ffffffffffffff89642cc774
[10.103380] 7800:0000000000000000 0000000000000000 ffffffea297d7830 ffffffffff89643025c4
[10.103384] 7820:000000000000 ffffff89665b0000 ffffffffffffea297d78d0 ffffffff89643027b8
[10.103389] 7840:ffffffffff8964302770 ffffffffff896573dc0c 0000000000000577 0000000000000000000000000000
[10.103393] 7860:0000000000000000 ffffffff8966827128 000000000000000000000000 000000000000000000000000
[10.103397] 7880:0000000000000140 0000000057ac6e9d 0000000000000000 0000000000000000000000000000
[10.103403] 78a0:ffffffea297d78d0 ffffffffea297d7830 00000000000000000000 ffffffffffff89643027b8
[10.103407] 78c0:ffffffffea350712b7 7f7f7f7f7f7f7f7f7f7f fefefefeff30392f 7f7f7f7f7f7f7f7f7f7f7f7f
[10.103410] 78e0:01010101010101 000000000018 0ffffffffffffffffe 0000007f94316810
[10.103414] 7900:ffffffff89643f8870 0000007f94257e58
[10.103420] [ ]__mo_sleep+0x134/0x144
[10.103424] [ ]__MTO_SLEEP+0x7c/0x8c
[10.103432] [ ] RT_mutex_lock+0x2C/0x7c
[10.103440] [ ] i2c_lock_adapter+0x50/0x5c
[10.103444] [ ] i2c_transfer+0x60/bb
[10.103449] [ ] bq27542_READ_i2c.isra.4+0x78/0x90
[10.103453] [ ] bq27x00_battery_soc +0x40/0x94
[10.103457] [ ] bq27542_get_property+0xb8/0x120
[10.103462] [ ] power_supply_get_property+0x48/0x54
[10.103470] [ ] smblib_get_prop_Batt_capacity+0x5c/0x80
[10.103475] [ ] SMB2_batt_get_prop+0x1e8/0x358
[10.103479][ ] power_supply_get_property+0x48/0x54
[10.103483] [ ] get_and_evaluate_battery_soc +0x5c/0x23c
[10.103488][ ] power_supply_callback +0x80/0x94
[10.103497][ ] notifier_call_chain+0x58/0x8c
[10.103502] [ ]__atom_notifier_call_chain+0x44/0x5c
[10.103506] [ ]原子_通知_调用_链+0x38/0x44
[10.103511] ] power_supply_changed_work + 0xa8/0xec
[10.103517][ ] Process_One_Work+0x234/0x40c
[10.103522] [ ] worker_thread+0x2e0/0x410
[10.103527] [ ] kthread+0xf4/0xFC
[10.103533][ ] RET_FANK_+0x10/0x40
[10.103538] 代码:36380080 d5384100 f9400800 940256af (d4210000)
[10.103544] --[结束线迹01d13094a4f88e3d ]--