web-dev-qa-db-ja.com

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は、同じ問題を扱っている古い投稿 here および here を見つけました。提供されているソリューションは、カーネルモジュールの値を変更することを提案しています。

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

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

7
Martin Vegter

カーネルのドキュメントでは、bdl_pos_adjを次のように説明しています( ALSA-Configuration.txt および HD-Audio.txt を参照):

bdl_pos_adj-DMA IRQタイミング遅延をサンプルで指定します。-1を渡すと、ドライバーはコントローラーチップに基づいて適切な値を選択します。

(原文のまま)。 Intelコントローラでは、デフォルトは1です(これは自分の/sys/module/snd_hda_intel/parameters/bdl_pos_adjで確認できます)。モジュールが複数のHDAデバイスをサポートしているため、複数の数値が存在します(デフォルトでは8個で、これは カーネルソースSNDRV_CARDSです)。私は、通信が何であるかを手放しで確信していません。カード番号と一致することを期待していましたが、bdl_pos_adjが2番目の位置で値を取得していることを示唆しているときに、カード#0のエラーが発生しています...

問題を修正する限り、ドキュメントはあまりなく、コードもあまり言いません。私が持っている唯一の提案は、指示に従って、うまくいくものが得られるまで値を増やしてみることです:

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

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

4
Stephen Kitt