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

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

誰かがこれらすべての数字の意味とエラーを取り除くために数字を変更する方法を説明できますか?

答え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値を2番目に置くことを提案しました。

トラブルシューティングに関しては、ドキュメントが多くなく、コードでも多くの内容がわかりません。私が提案する唯一の提案は、指示に従い、有効な結果が得られるまで値を増やすことです。

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

2,2(最初の2つのうちどれがあなたのデバイスで動作するのかわからないので、ここではこれを使用しています。)

関連情報