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.

[参考译文] AM62P:6.18 时 AM62P 挂起/恢复崩溃、具有可唤醒的 SDIO 子设备 (genpd/TIFS desync)

Guru**** 2905440 points

Other Parts Discussed in Thread: AM62P

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1640518/am62p-am62p-suspend-resume-crash-on-6-18-with-wakeup-capable-sdio-child-device-genpd-tifs-desync

部件号: AM62P

您好、

我们 Toradex 正在集成 TI 内核 6.18、当 TI SCI 电源域下存在可唤醒的子设备(通过 SDIO 连接的 WiFi)时、AM62P 将面临暂停/恢复崩溃。

子设备调用时 device_init_wakeup()、内核 PM 内核传播 wakeup_path 到父 TI SCI 域设备(例如 sdhci 主机)。 由于设置了 TI SCI 域 GENPD_FLAG_ACTIVE_WAKEUP、因此 genpd_finish_suspend() 需要提前返回并跳过 genpd_sync_power_off()。 否 put_device 发送到 TIFS、域的 genpd 状态保持为 On。

TIFS 不知道这种唤醒安排、因为 set_device_constraintdevice_may_wakeup() 在 TI SCI 域器件本身上为 true 时触发、而不是在子域上触发。 无论如何、TIFS 都会在深度睡眠期间关闭硬件。

在恢复时、由于域的 genpd 状态为 on、因此不 get_device 发出 no。 然后、驱动程序访问断电域的寄存器、导致同步外部中止:

AXI bus error, ESR 0x96000010

这似乎被 0b5fe1c4ab3c 暴露(“pmdomain:TI-sci:根据硬件状态设置 PD 开/关状态“)。 在此之前、域的状态已初始化为关闭、因此 get_device 无论唤醒路径旁路如何、始终在恢复时发出。

我们已向 LKML 提交了一个补丁、该补丁 .resume 向 TI SCI pmdomain 驱动程序添加了一个挂钩。 它向 TIFS 查询实际硬件状态、并 get_device 在 genpd 认为域已打开但 TIFS 已关闭时与重新同步。 这会在不触碰暂挂路径或 TIFS 本身的情况下侧推不同步。

LKML 链接: https://lore.kernel.org/all/20260427074808.3244226-2-ivitro@gmail.com/

我们感谢 TI 在以下两点方面提供帮助:

  1. 此分析是否正确?
  2. TI 能否支持并查看建议的补丁?

 

谢谢、

Vitor Soares

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

    您好:  

    主题专家将在 5 月 11 日之前离职、请预计回复会延迟。

    -道林

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

    你好 Vitor、

    对延迟深表歉意。

    我离开时、您似乎收到了开发团队关于补丁的一些反馈。 您能否说明一下是否仍在寻求支持? 我认为最好在 lore 网站上继续讨论、因为软件开发团队在修补程序上是抄送的。

    此致、

    Anshu