Re: next: gcc-8-ppc6xx_defconfig: ERROR: modpost: "__divdi3" [sound/pci/emu10k1/snd-emu10k1.ko] undefined!

From: Christophe Leroy
Date: Wed May 17 2023 - 12:02:24 EST




Le 17/05/2023 à 16:02, Naresh Kamboju a écrit :
> Linux next powerpc gcc-8 build failed on Linux next 20230516 and 20230517.
> - build/gcc-8-ppc6xx_defconfig
>
> Reported-by: Linux Kernel Functional Testing <lkft@xxxxxxxxxx>
>
> Build log:
> ====
> make --silent --keep-going --jobs=8
> O=/home/tuxbuild/.cache/tuxmake/builds/1/build \
> ARCH=powerpc CROSS_COMPILE=powerpc64le-linux-gnu- \
> 'CC=sccache powerpc64le-linux-gnu-gcc' \
> 'HOSTCC=sccache gcc'
>
> ERROR: modpost: "__divdi3" [sound/pci/emu10k1/snd-emu10k1.ko] undefined!
> ERROR: modpost: "__udivdi3" [sound/pci/emu10k1/snd-emu10k1.ko] undefined!
> make[2]: *** [/builds/linux/scripts/Makefile.modpost:136:
> Module.symvers] Error 1
> make[2]: Target '__modpost' not remade because of errors.
> make[1]: *** [/builds/linux/Makefile:1978: modpost] Error 2

Problem introduced by commits:
bb5ceb43b7bf ("ALSA: emu10k1: fix non-zero mixer control defaults in
highres mode")
1298bc978afb ("ALSA: emu10k1: enable bit-exact playback, part 1: DSP
attenuation")

More exactly by :

+ defval = defval * 0x7fffffffLL / 100;

or

+ defval = defval * 0x80000000LL / 100 - 1;


powerpc/32 doesn't expect raw 64 bits division.

You have to use function div_u64() as defined in include/linux/math64.h
for this kind of operation.

Christophe


>
>
> links,
> - https://qa-reports.linaro.org/lkft/linux-next-master/build/next-20230517/testrun/17031706/suite/build/test/gcc-8-ppc6xx_defconfig/log
> - https://qa-reports.linaro.org/lkft/linux-next-master/build/next-20230517/testrun/17031706/suite/build/test/gcc-8-ppc6xx_defconfig/history/
>
> Steps to reproduce:
> =======
> # To install tuxmake on your system globally:
> # sudo pip3 install -U tuxmake
> #
> # See https://docs.tuxmake.org/ for complete documentation.
> # Original tuxmake command with fragments listed below.
>
> tuxmake --runtime podman --target-arch powerpc --toolchain gcc-8
> --kconfig ppc6xx_defconfig
>
>
> --
> Linaro LKFT
> https://lkft.linaro.org