Building DKMS soundwire module fails

Hi there, I have a Dell XPS 9700 and tried to follow the instructions to build a dkms package soundwire-dkms to make the speakers of this notebook work.
I was able to do this on Manjato a while back but on F33 I get these errors on 5.8.16 and on 5.8.17 when I try to sudo dkms build soundwire/1.4.0:

DKMS make.log for soundwire-1.4.0 for kernel 5.8.17-300.fc33.x86_64 (x86_64)
Mi 4. Nov 10:49:59 CET 2020
make -C /lib/modules/5.8.17-300.fc33.x86_64/build M=/var/lib/dkms/soundwire/1.4.0/build modules
make[1]: Entering directory '/usr/src/kernels/5.8.17-300.fc33.x86_64'
  CC [M]  /var/lib/dkms/soundwire/1.4.0/build/soundwire/generic_bandwidth_allocation.o

... [ left out a bunch of lines here] ...

  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-tlv320adcx140.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-tlv320aic32x4-spi.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-ts3a227e.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-tscs42xx.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-wm8524.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-wm8804.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-zl38060.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-wm8804-i2c.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-simple-amplifier.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/snd-soc-core.o
  MODPOST /var/lib/dkms/soundwire/1.4.0/build/Module.symvers
ERROR: modpost: "sdw_startup_stream" [/var/lib/dkms/soundwire/1.4.0/build/soc/intel/boards/snd-soc-sof-sdw.ko] undefined!
ERROR: modpost: "sdw_shutdown_stream" [/var/lib/dkms/soundwire/1.4.0/build/soc/intel/boards/snd-soc-sof-sdw.ko] undefined!
ERROR: modpost: "sdw_bread_no_pm_unlocked" [/var/lib/dkms/soundwire/1.4.0/build/soundwire/soundwire-cadence.ko] undefined!
ERROR: modpost: "sdw_rows" [/var/lib/dkms/soundwire/1.4.0/build/soundwire/soundwire-generic-allocation.ko] undefined!
ERROR: modpost: "sdw_cols" [/var/lib/dkms/soundwire/1.4.0/build/soundwire/soundwire-generic-allocation.ko] undefined!
make[2]: *** [scripts/Makefile.modpost:111: /var/lib/dkms/soundwire/1.4.0/build/Module.symvers] Error 1
make[2]: *** Deleting file '/var/lib/dkms/soundwire/1.4.0/build/Module.symvers'
make[1]: *** [Makefile:1665: modules] Error 2
make[1]: Leaving directory '/usr/src/kernels/5.8.17-300.fc33.x86_64'
make: *** [Makefile:10: all] Error 2

It was suggested that I may have a kernel config option disabled but I would not know how to look for that.

For completeness sake, I want to mention that I installed alsa-sof-firmware, alsa-plugins-pulseaudio, dkms, alsa-ucm and alsa-ucm-utils as prerequisites.

If anyone can point me to a solution, I would appreciate this very much.

1 Like

Make sure you boot the target kernel beforehand:

uname -r

That matches:

> uname -r
5.8.17-300.fc33.x86_64
2 Likes

Could this be an issue with kernel-headers?

Do you have them installed, and does the version match the kernel you booted?

(fyi, kernel-headers are only packaged when they change, so might not have a matching pair for kernel-5.8.16 and .17. Different kernel-headers version .)

Aha! Good point, I do have kernel-headers installed, however only for 5.8.11.
I will look into how to get current header files then! I’ll report back.
Thank you!

This is the current kernel-headers package then. If kernel-headers hasn’t been modified since 5.8.11 it’s not being built and released as .16. or .17, see https://lists.fedoraproject.org/archives/list/kernel@lists.fedoraproject.org/thread/JCPDUH2NST3PIVGRNVCRYGIL7Q7OFVWP/#SO5EEX2GECMFV4MHXOJANGSIJEHFZS6J and https://www.labbott.name/blog/2019/11/16/what-s-a-kernel-headers-package-anyway/

Yeah I read that thread. But that means that missing kernel-header files is not my problem, right? E.g. if they haven’t changed since 5.8.11, there is no need to install newer ones.

Also I have current kernel-devel packages matching my kernel version, they should contain the header files as well, no?

So after looking more into this, it was suggested by the maintainer that the undefined functions may be behind a #ifdef which requires a kernel config option that I don’t have (and/or which is not active under Fedora vs. Arch/Manjaro, etc. by default).

However, looking at where the functions are defined and where they are exported, they are not within a #ifdef.

So it looks like this is less of a Fedora issue, I thought this was more clear cut, sorry for not looking more into this before posting.

1 Like