Kernel
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
Google在這里和這裡發現了一些處理同樣問題的舊文章。提供的解決方案建議更改核心模組的值:
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
有人可以解釋所有這些數字的含義,以及如何更改它們以消除錯誤嗎?
核心文件描述
bdl_pos_adj
如下(參見ALSA 驅動程序配置指南和更多關於 HD-Audio 驅動程序的說明):
bdl_pos_adj
- 指定樣本中的 DMA IRQ 時序延遲。傳遞-1將使驅動程序根據控制器晶片選擇合適的值。(原文如此)。在 Intel 控制器上,預設值為 1(這是您可以在自己的 中看到的
/sys/module/snd_hda_intel/parameters/bdl_pos_adj
)。有多個數字是因為該模組支持多個 HDA 設備(預設情況下有八個,它SNDRV_CARDS
在核心原始碼中)。我不確定通信是什麼;我希望它與卡號匹配,但是您收到卡 #0 的錯誤,而您的bdl_pos_adj
建議是它的價值排在第二位…至於解決問題,沒有太多的文件,程式碼也沒有說太多。我唯一的建議是按照說明進行操作,並嘗試增加值,直到你得到一些有用的東西:
options snd-hda-intel enable_msi=1 bdl_pos_adj=2,2
(我在
2,2
這裡使用是因為我不確定前兩個中的哪一個將用於您的設備。)