Files
chromebox_10th_audio_driver/docs/OPERATION_Kaisa_SOF_HDMI_Trace.md
2026-04-04 07:45:01 +00:00

3.6 KiB
Raw Blame History

KaisaSOF HDMI STREAM_PCM_PARAMS 观测dynamic_debug + IPC 载荷)

jack-Kaisa 真机(非本仓库 PVE/容器)上执行。目的:在 STREAM_PCM_PARAMS 失败前后看到 发往 DSP 的 IPC 载荷comp_idbufferstream_tag、格式等),与拓扑/固件预期对照。

1. 前置条件

  • 内核已加载 SOFlsmod | grep snd_sof)。
  • sof_debug模块参数sound/soc/sof/core.c),权限 0444不能在运行时通过 sysfs 改写,须在 /etc/modprobe.d 中设置并在 下次加载模块前 生效(推荐 重启,或完整卸载 snd_sof* 相关模块后按依赖顺序再加载——易踩坑,优先重启)。
  • IPC 载荷十六进制 依赖 SOF_DBG_DUMP_IPC_MESSAGE_PAYLOADsof-priv.hBIT(11),即 0x800 或十进制 2048)。载荷通过 dev_dbg / print_hex_dump_debug 输出,需同时打开 dynamic_debug(见下)。

2. 固定 sof_debug(载荷 dump

创建或编辑(需 root

/etc/modprobe.d/sof-ipc-payload.conf

# BIT(11): SOF_DBG_DUMP_IPC_MESSAGE_PAYLOAD — 在 IPC 头发送后 dump 载荷(见 sound/soc/sof/sof-priv.h
options snd_sof sof_debug=0x800

若需叠加其它标志,用按位或,例如同时打印 IPC 成功路径(可能较吵):

# options snd_sof sof_debug=0x800

保存后 重启,确认:

cat /sys/module/snd_sof/parameters/sof_debug
# 期望2048 或 0x800

3. dynamic_debug使 dev_dbg 进入 dmesg

挂载 debugfs通常已挂载

sudo mount -t debugfs none /sys/kernel/debug 2>/dev/null || true

对 6.17 源码树中常见路径开启打印(路径以 当前内核构建 为准,下列与 Ubuntu HWE 6.17 树一致):

sudo bash -c 'for f in \
  sound/soc/sof/ipc3.c \
  sound/soc/sof/ipc3-pcm.c \
  sound/soc/sof/intel/hda-pcm.c \
  sound/soc/sof/intel/hda-dai.c; do
  echo "file $f +p" >> /sys/kernel/debug/dynamic_debug/control
done'

若某行报错「Unknown」用下面命令查看本内核实际注册的 file 名后替换:

grep -E "ipc3-pcm|hda-pcm|hda-dai" /sys/kernel/debug/dynamic_debug/control | head -20

4. 采集流程(失败前后各一段)

  1. 清屏旧日志(可选):sudo dmesg -C
  2. 记录物理口:aplay -L | grep -iE 'hdmi|hdmi3|pcm'
  3. 对目标设备播放(示例,卡号/设备号按本机改):
    speaker-test -D plughw:0,4 -c 2 -l 1
    或使用 PipeWire/设置界面切到对应 HDMI sink以触发 hw_params
  4. 立刻保存:
TS=$(date +%Y%m%d_%H%M%S)
KR=$(uname -r)
sudo dmesg -T > "/tmp/dmesg_sof_TRACE_STREAM_PCM_PARAMS_jack-Kaisa_${KR}_${TS}.txt"
  1. 将文件复制到本仓库 audio_topology/collected/(可 scp并在 docs/WORK_PROGRESS.mddocs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md 中加一行文件名索引。

5. 日志中应关注的内容

  • STREAM_PCM_PARAMS / ipc tx error / stream_tag
  • Message payload: / print_hex_dump 块中的 comp_id、buffer 物理地址与长度、stream_tag、rate/channels/format
  • audio_topology/ANALYSIS_Audio.mdpcm2/3/4 ↔ HDMI1/2/3 的对应关系是否一致

6. 相关脚本

  • scripts/collect-kaisa-sof-trace.sh:在本机检查 root、挂载 debugfs、写入 dynamic_debug、提示 modprobe.d 与采集命令。

7. 参考(源码)

  • sound/soc/sof/sof-priv.hSOF_DBG_DUMP_IPC_MESSAGE_PAYLOADBIT 11
  • sound/soc/sof/ipc3.csof_ipc_tx_message 内对载荷的 sof_ipc3_dump_payload
  • sound/soc/sof/ipc3-pcm.csof_ipc3_pcm_hw_params 填充 struct sof_ipc_pcm_params