7

I get following errors in my logs:

kernel: snd_hda_intel 0000:00:1b.0: IRQ timing workaround is 
        activated for card #0. Suggest a bigger bdl_pos_adj

Google found some old posts here and here which deal with the same problem. The offered solution suggests to change the value for the kernel module:

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

Howeveer, nowhere is there explained what the numbers mean. Moreover, the current (default) value that I have now has multiple numbers:

# cat /sys/module/snd_hda_intel/parameters/bdl_pos_adj
-1,1,-1,-1,-1,-1,-1,-1

Can somebody please explain what all these numbers mean, and how to change them to get rid of the errors ?

4

The kernel documentation describes bdl_pos_adj as follows (see ALSA-Configuration.txt and HD-Audio.txt):

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.

(sic). On Intel controllers, the default is 1 (which is what you can see in your own /sys/module/snd_hda_intel/parameters/bdl_pos_adj). The multiple numbers are there because the module supports multiple HDA devices (eight by default, it's SNDRV_CARDS in the kernel source). I'm not sure off-hand what the correspondence is; I'd have hoped it would match the card number, but you're getting the error for card #0 while your bdl_pos_adj suggests it's taking its value in second position...

As far as fixing the problem, there isn't much documentation and the code doesn't say much either. The only suggestion I have is to follow the instructions, and try increasing the value until you get something that works:

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

(I'm using 2,2 here because I'm not sure which of the first two will be used for your device.)

  • shall I keep the enable_msi=1 as in the example, or is it irrelevant here ? – Martin Vegter May 16 '15 at 14:39
  • If you didn't have it already then drop it, just keep the bdl_pos_adj option. – Stephen Kitt May 16 '15 at 14:41
  • OK, using -1,2 did not make any difference, but eventually increasing up until -1,64 seems to have fixed the problem. Could there be any negative consequences due to the number being too high ? – Martin Vegter May 16 '15 at 15:23
  • and is it really necessary to keep it power of 2 (as the linked post suggests) ? – Martin Vegter May 16 '15 at 16:53
  • Looking at the controller code (where bdl_pos_adj is used), I don't see why it should be a power of two. As far as negative consequences, all you risk is skipping to much in an audio buffer (as I understand it)... – Stephen Kitt May 16 '15 at 17:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.