media-sound/pulseaudio ebuild warns about CONFIG_SND_HDA_PREALLOC_SIZE if it is not set to "2048". In a modern 64bit kernel the symbol defaults to "0" and is not visible and not changeable. Editing that symbol in .config does not survive a "make oldconfig". The same for UML and SND_DMA_SGBUF. Symbol: SND_HDA_PREALLOC_SIZE [=0] │ │ Type : integer │ │ Range : [0 32768] │ │ Defined at sound/hda/Kconfig:23 │ │ Prompt: Pre-allocated buffer size for HD-audio driver │ │ Depends on: SOUND [=y] && !UML && SND [=y] │ │ Visible if: SOUND [=y] && !UML && SND [=y] && !SND_DMA_SGBUF [=y] │ │ Location: │ │ -> Device Drivers │ │ -> Sound card support (SOUND [=y]) │ │ (1) -> Advanced Linux Sound Architecture (SND [=y]) │
What is a "modern" kernel for you? # zgrep -F SND_HDA_PREALLOC_SIZE /proc/config.gz CONFIG_SND_HDA_PREALLOC_SIZE=2048 # uname -r 5.4.30 #
(In reply to Lars Wendler (Polynomial-C) from comment #1) > What is a "modern" kernel for you? > > # zgrep -F SND_HDA_PREALLOC_SIZE /proc/config.gz > CONFIG_SND_HDA_PREALLOC_SIZE=2048 > # uname -r > 5.4.30 > # I'm on 5.6.0 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/sound/hda/Kconfig?id=c31427d0d21e198c74d5d92082c4b8194b257f82 "ALSA: hda: No preallocation on x86 platforms Like many other drivers, HD-audio drivers also do PCM buffer preallocation to assure the buffer pages allocated at the early boot stage. This step is useful for platforms that may fail to allocate the PCM hardware buffers -- which is mostly for either large continuous pages or with the specific DMA mask (like emu10k1). OTOH, when a buffer is allocated as SG-buffer and the DMA mask is either 32 or 64 bits, the allocation almost never fails unless it hits the real OOM situation. In such a case, we don't need the preallocation inevitably unlike the cases above. That said, we may drop the preallocation for HD-audio that does allocate via SG-buffers, and the patch achieves it. However, there is one caveat: the buffer allocation behavior depends on CONFIG_SND_DMA_SGBUF, and it falls back to the continuous pages when it's not set. And, currently this SG buffer allocation is enabled only on x86 platforms. So, covering those fall-outs, the patch adjusts CONFIG_SND_HDA_PREALLOC_SIZE depending on the condition, and keeps the old behavior as-is for non-x86 platforms. On x86, the kconfig item is no longer adjustable but always set to zero for disabling the preallocation. You can still enable the preallocation via procfs interface at any time later, too."
* A preallocated buffer-size of 2048 (kB) or higher is recommended for the HD-audio driver! * CONFIG_SND_HDA_PREALLOC_SIZE=0 ^ that is not visible due to SND_DMA_SGBUF=y and this is Y because Depends on: SOUND [=m] && !UML && SND [=m] && X86 [=y] Maybe this message should only show if SND_DMA_SGBUF isn't y ? even though the prev. comment says: > You can still enable the preallocation via procfs interface at any time later I remember seeing that message at least once before and went through the steps to try to enable it, yet found out (again) why I cannot :)
Just got this today with dist-kernel since I got lazy about going through kernel config every time. Would be nice to silence the warning since it's not needed in this case.
I too have just hit this situation on kernel 5.14.9-gentoo, as a result of the emerge -e @world suggested to sort out the /var/db/pkg debacle. IIUC the message in the ebuild is misleading on x86, as there's no need or mechanism to set SND_HDA_PREALLOC_SIZE. If you try to set it using make nconfig, you go down a rabbit hole trying to work out how to change UML, which I guess you shouldn't...
It seems this was addressed at some point. I see a pulseaudio-13.0-r1.ebuild right now, and three 15.* ebuilds (15.0-r2, 15.0-r3, and 15.99.1-r1). The 13.0-r1 one contains the CONFIG_SND_HDA_PREALLOC_SIZE check in question, but the 15.* ones do not.
Yes, I removed it when doing the big Meson conversion. You're welcome. ;)