Skip to main content
当 UFS 设备出现问题时,内核日志会记录 cmd pending in the deviceno response from device。有关更多信息,请联系 UFS 设备供应商。 示例 1:
示例 2:

物理适配器或数据链路错误

在内核日志中,pa_err_cnt_totaldl_err_cnt_total 为非零值表示存在物理适配器或数据链路(PA/DL)错误问题。当 AP 与 UFS 设备之间的信号质量不佳时会出现此问题,需要在硬件、软件和 UFS 设备供应商这三个方面进行修改才能解决。 要查看 PA/DL 错误计数,请使用 debugfs 路径 /sys/kernel/debug/ufshcd/1d84000.ufshc/stats 使用以下命令挂载 debugfs。该命令可确保 debugfs 文件系统对调试节点保持可访问。
例如:

Active 状态 UFS 设备功耗问题

使用以下步骤调试 UFS 设备在 Active 状态下的高功耗问题。
  1. 检查问题发生的频率。使用以下 SSH 命令检查当前时钟频率。
    如果频率已是最大值,请跳到步骤 3。
  2. 检查是否启用了任何与 UFS 设备相关的功能(例如 WriteBooster)。
  3. 检查时钟调频是否已禁用。
  4. 监控 UFS 设备时钟频率和 UFS 设备电源轨。 该问题可能由初始设置或意外的 devfreq 事件引起。

Sleep 状态功耗问题

在 Sleep 状态下,如果 UFS 设备功耗偏高,请使用以下步骤调试与 UFS 设备挂起相关的问题。
  1. 使用 sysfs 节点 link_statecur_freqruntime_status 以及 PM 级别(PM_LVL 3 的功耗高于 5)检查电源管理状态。
  2. 使用 sysfs 节点 dev_pm 检查 UFS 设备状态,以确定 UFS 设备是否处于睡眠模式。
  3. 检查是否启用了 HPB 和 write booster 功能,因为它们会导致高功耗。
  4. 如果出现问题,请从硬件侧检查 UFS 设备 VCC/VCCQ/VCCQ2 时序。

未处理的 UFS 设备 SMMU 问题

系统内存管理单元(SMMU)是一种内存管理单元(MMU),它将支持直接内存访问(DMA)的 I/O 总线连接到物理内存。 每个设备被分配一个唯一的流 ID(SID)。UFS 设备控制器的 SID 值为 0x80。 对于来自 UFS 设备 SMMU 的未处理 SMMU 故障,请禁用 UFS 设备 SMMU。
要禁用 UFS 设备 SMMU,请修改通常位于 SOC DTSI 文件中的 ufshc_mem 节点。例如,<workspace_root_path>/sources/kernel/kernel_platform/kernel/arch/arm64/boot/dts/qcom/sc7280.dtsi 文件。