Kernel

bdl_pos_adj:為 hda-intel 設置 IRQ 時序解決方法

  • July 31, 2021

我的日誌中出現以下錯誤:

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這裡使用是因為我不確定前兩個中的哪一個將用於您的設備。)

引用自:https://unix.stackexchange.com/questions/203792