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

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

在内核日志中,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 文件系统对调试节点保持可访问。
例如:

活动状态下 UFS 设备功耗问题

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

休眠状态功耗问题

在休眠状态下,如果 UFS 设备功耗较高,请使用以下步骤调试与 UFS 设备挂起相关的问题。
  1. 使用 sysfs 节点 link_state、cur_freq 和 runtime_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-capable)的 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 文件。