This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/BQ27542-G1:Qualcomm SDM660驱动程序问题

Guru**** 2358920 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/635039/linux-bq27542-g1-qualcomm-sdm660-driver-issue

器件型号:BQ27542-G1

工具/软件: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 ]--

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、arking、
    软件不是我的专业技术、而是您的客户是否遵循我们的 Linux 驱动程序、如以下链接所示:
    processors.wiki.ti.com/.../Android_Software_Solutions_for_TI_Single-cell_Gas_Gauges

    谢谢
    Onyx
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、arking、
    我们的一位软件专家观看了数据、并提供了以下反馈

    "从内核日志中的调用堆栈中、问题出在 I2C 驱动程序、而不是 bq27542驱动程序。

    [10.103432][ ] RT_mutex_lock+0x2C/0x7c
    [10.103440][ ] i2c_lock_adapter+0x50/0x5c
    [10.103444][ ] i2c_transfer+0x60/bb

    这就是混乱的情况–这是 SDM660基座端口而不是监测计的问题。

    谢谢
    Onyx