cmd pending in the device 或 no response from device。有关更多信息,请联系 UFS 设备供应商。
示例 1:
物理适配器或数据链路错误
在内核日志中,pa_err_cnt_total 和 dl_err_cnt_total 为非零值表示存在物理适配器或数据链路(PA/DL)错误问题。当 AP 与 UFS 设备之间的信号质量不佳时会出现此问题,需要在硬件、软件和 UFS 设备供应商这三个方面进行修改才能解决。
要查看 PA/DL 错误计数,请使用 debugfs 路径 /sys/kernel/debug/ufshcd/1d84000.ufshc/stats。
使用以下命令挂载 debugfs。该命令可确保 debugfs 文件系统对调试节点保持可访问。
Active 状态 UFS 设备功耗问题
使用以下步骤调试 UFS 设备在 Active 状态下的高功耗问题。-
检查问题发生的频率。使用以下 SSH 命令检查当前时钟频率。
如果频率已是最大值,请跳到步骤 3。
- 检查是否启用了任何与 UFS 设备相关的功能(例如 WriteBooster)。
-
检查时钟调频是否已禁用。
-
监控 UFS 设备时钟频率和 UFS 设备电源轨。
该问题可能由初始设置或意外的
devfreq事件引起。
Sleep 状态功耗问题
在 Sleep 状态下,如果 UFS 设备功耗偏高,请使用以下步骤调试与 UFS 设备挂起相关的问题。-
使用 sysfs 节点
link_state、cur_freq和runtime_status以及 PM 级别(PM_LVL3 的功耗高于 5)检查电源管理状态。 -
使用 sysfs 节点
dev_pm检查 UFS 设备状态,以确定 UFS 设备是否处于睡眠模式。 - 检查是否启用了 HPB 和 write booster 功能,因为它们会导致高功耗。
- 如果出现问题,请从硬件侧检查 UFS 设备 VCC/VCCQ/VCCQ2 时序。
未处理的 UFS 设备 SMMU 问题
系统内存管理单元(SMMU)是一种内存管理单元(MMU),它将支持直接内存访问(DMA)的 I/O 总线连接到物理内存。 每个设备被分配一个唯一的流 ID(SID)。UFS 设备控制器的 SID 值为 0x80。 对于来自 UFS 设备 SMMU 的未处理 SMMU 故障,请禁用 UFS 设备 SMMU。ufshc_mem 节点。例如,<workspace_root_path>/sources/kernel/kernel_platform/kernel/arch/arm64/boot/dts/qcom/sc7280.dtsi 文件。

