Mailing List Archive

strange message from hda_intel today
Hi. I got a message from my sound card module today, but I can't find
what to change -- seems not to be a kernel config.
snd_hda_intel 0000:00:1f.3: IRQ timing workaround is activated for
card #0. Suggest a bigger bdl_pos_adj.

What the heck is that?

Thanks in advance for any suggestions.

--
Your life is like a penny. You're going to lose it. The question is:
How do
you spend it?

John Covici wb2una
covici@ccs.covici.com
Re: strange message from hda_intel today [ In reply to ]
John Covici wrote:
> Hi. I got a message from my sound card module today, but I can't find
> what to change -- seems not to be a kernel config.
> snd_hda_intel 0000:00:1f.3: IRQ timing workaround is activated for
> card #0. Suggest a bigger bdl_pos_adj.
>
> What the heck is that?
>
> Thanks in advance for any suggestions.
>


I'm clueless what this means.  I just used a search engine.  Here goes. 


bdl_pos_adj

    Specifies the DMA IRQ timing delay in samples. Passing -1 will make
the driver to choose the appropriate value based on the controller chip.


https://www.kernel.org/doc/html/latest/sound/alsa-configuration.html#module-snd-hda-intel


and this:


HD-Audio Controller
DMA-Position Problem

The most common problem of the controller is the inaccurate DMA pointer
reporting. The DMA pointer for playback and capture can be read in two
ways, either via a LPIB register or via a position-buffer map. As
default the driver tries to read from the io-mapped position-buffer, and
falls back to LPIB if the position-buffer appears dead. However, this
detection isn't perfect on some devices. In such a case, you can change
the default method via position_fix option.

position_fix=1 means to use LPIB method explicitly. position_fix=2 means
to use the position-buffer. position_fix=3 means to use a combination of
both methods, needed for some VIA controllers. The capture stream
position is corrected by comparing both LPIB and position-buffer values.
position_fix=4 is another combination available for all controllers, and
uses LPIB for the playback and the position-buffer for the capture
streams. position_fix=5 is specific to Intel platforms, so far, for
Skylake and onward. It applies the delay calculation for the precise
position reporting. position_fix=6 is to correct the position with the
fixed FIFO size, mainly targeted for the recent AMD controllers. 0 is
the default value for all other controllers, the automatic check and
fallback to LPIB as described in the above. If you get a problem of
repeated sounds, this option might help.

In addition to that, every controller is known to be broken regarding
the wake-up timing. It wakes up a few samples before actually processing
the data on the buffer. This caused a lot of problems, for example, with
ALSA dmix or JACK. Since 2.6.27 kernel, the driver puts an artificial
delay to the wake up timing. This delay is controlled via bdl_pos_adj
option.

When bdl_pos_adj is a negative value (as default), it's assigned to an
appropriate value depending on the controller chip. For Intel chips,
it'd be 1 while it'd be 32 for others. Usually this works. Only in case
it doesn't work and you get warning messages, you should change this
parameter to other values.


https://www.kernel.org/doc/html/latest/sound/hd-audio/notes.html


Does that help any? 

Dale

:-)  :-) 
Re: strange message from hda_intel today [ In reply to ]
On Wed, 21 Jun 2023 06:14:36 -0400,
Dale wrote:
>
> John Covici wrote:
> > Hi. I got a message from my sound card module today, but I can't find
> > what to change -- seems not to be a kernel config.
> > snd_hda_intel 0000:00:1f.3: IRQ timing workaround is activated for
> > card #0. Suggest a bigger bdl_pos_adj.
> >
> > What the heck is that?
> >
> > Thanks in advance for any suggestions.
> >
>
>
> I'm clueless what this means.? I just used a search engine.? Here goes.?
>
>
> bdl_pos_adj
>
> ??? Specifies the DMA IRQ timing delay in samples. Passing -1 will make
> the driver to choose the appropriate value based on the controller chip.
>
>
> https://www.kernel.org/doc/html/latest/sound/alsa-configuration.html#module-snd-hda-intel
>
>
> and this:
>
>
> HD-Audio Controller
> DMA-Position Problem
>
> The most common problem of the controller is the inaccurate DMA pointer
> reporting. The DMA pointer for playback and capture can be read in two
> ways, either via a LPIB register or via a position-buffer map. As
> default the driver tries to read from the io-mapped position-buffer, and
> falls back to LPIB if the position-buffer appears dead. However, this
> detection isn't perfect on some devices. In such a case, you can change
> the default method via position_fix option.
>
> position_fix=1 means to use LPIB method explicitly. position_fix=2 means
> to use the position-buffer. position_fix=3 means to use a combination of
> both methods, needed for some VIA controllers. The capture stream
> position is corrected by comparing both LPIB and position-buffer values.
> position_fix=4 is another combination available for all controllers, and
> uses LPIB for the playback and the position-buffer for the capture
> streams. position_fix=5 is specific to Intel platforms, so far, for
> Skylake and onward. It applies the delay calculation for the precise
> position reporting. position_fix=6 is to correct the position with the
> fixed FIFO size, mainly targeted for the recent AMD controllers. 0 is
> the default value for all other controllers, the automatic check and
> fallback to LPIB as described in the above. If you get a problem of
> repeated sounds, this option might help.
>
> In addition to that, every controller is known to be broken regarding
> the wake-up timing. It wakes up a few samples before actually processing
> the data on the buffer. This caused a lot of problems, for example, with
> ALSA dmix or JACK. Since 2.6.27 kernel, the driver puts an artificial
> delay to the wake up timing. This delay is controlled via bdl_pos_adj
> option.
>
> When bdl_pos_adj is a negative value (as default), it's assigned to an
> appropriate value depending on the controller chip. For Intel chips,
> it'd be 1 while it'd be 32 for others. Usually this works. Only in case
> it doesn't work and you get warning messages, you should change this
> parameter to other values.
>
>
> https://www.kernel.org/doc/html/latest/sound/hd-audio/notes.html
>
>
> Does that help any??

Thanks, now to figure out which config file to put it in -- I will see
if its in the module parameters.

--
Your life is like a penny. You're going to lose it. The question is:
How do
you spend it?

John Covici wb2una
covici@ccs.covici.com