bdl_pos_adj:为 hda-intel 设置 IRQ 时序解决方法

bdl_pos_adj:为 hda-intel 设置 IRQ 时序解决方法

我的日志中出现以下错误:

kernel: snd_hda_intel 0000:00:1b.0: IRQ timing workaround is 
        activated for card #0. Suggest a bigger bdl_pos_adj

谷歌发现一些旧帖子这里这里处理同样的问题。提供的解决方案建议更改内核模块的值:

options snd-hda-intel enable_msi=1 bdl_pos_adj=1,48

然而,没有任何地方解释这些数字的含义。此外,我现在拥有的当前(默认)值有多个数字:

# cat /sys/module/snd_hda_intel/parameters/bdl_pos_adj
-1,1,-1,-1,-1,-1,-1,-1

有人可以解释一下所有这些数字的含义以及如何更改它们以消除错误吗?

答案1

内核文档描述bdl_pos_adj如下(参见ALSA 驱动程序配置指南有关 HD-Audio 驱动程序的更多注意事项):

bdl_pos_adj- 指定样本中的 DMA IRQ 时序延迟。传递-1将使驱动程序根据控制器芯片选择合适的值。

(原文如此)。在 Intel 控制器上,默认值为 1(您可以在自己的 中看到/sys/module/snd_hda_intel/parameters/bdl_pos_adj)。之所以有多个数字,是因为该模块支持多个 HDA 设备(默认为 8 个,它SNDRV_CARDS位于内核源代码)。我一时不确定这封信是什么;我本来希望它与卡号匹配,但是您收到卡 #0 的错误,而您bdl_pos_adj建议它将其值放在第二位......

至于解决问题,没有太多文档,代码也没有说太多。我唯一的建议是按照说明进行操作,并尝试增加该值,直到获得有效的结果:

options snd-hda-intel enable_msi=1 bdl_pos_adj=2,2

(我在这里使用是2,2因为我不确定前两个中的哪一个将用于您的设备。)

相关内容