Receipe for reproduction:

amd64 host
i386 pbuilder chroot with sid+testing sources
dpkg --add-architecture amd64
apt-get update
apt-get install linux-headers-4.18.0-3-amd64 linux-headers-4.19.0-1-amd64 
module-assistant
apt-get install nvidia-kernel-source:amd64 
nvidia-legacy-340xx-kernel-source:amd64

sh /usr/share/doc/nvidia-legacy-340xx-kernel-source/build-module-packages.sh
sh /usr/share/doc/nvidia-kernel-source/build-module-packages.sh

the legacy driver builds fine, the current driver fails with:

ld  -r -o /usr/src/modules/nvidia-kernel/nvidia/nv-interface.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-frontend.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-instance.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-gpu-numa.o 
/usr/src/modules/nvidia-kernel/nvidia/nv.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-acpi.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-chrdev.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-cray.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-dma.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-gvi.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-i2c.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-mempool.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-mmap.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-p2p.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-pat.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-procfs.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-usermap.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-vm.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-vtophys.o 
/usr/src/modules/nvidia-kernel/nvidia/os-interface.o 
/usr/src/modules/nvidia-kernel/nvidia/os-mlock.o 
/usr/src/modules/nvidia-kernel/nvidia/os-pci.o 
/usr/src/modules/nvidia-kernel/nvidia/os-registry.o 
/usr/src/modules/nvidia-kernel/nvidia/os-usermap.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-modeset-interface.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-pci-table.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-kthread-q.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-kthread-q-selftest.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-memdbg.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-ibmnpu.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-report-err.o 
/usr/src/modules/nvidia-kernel/nvidia/nv_uvm_interface.o 
/usr/src/modules/nvidia-kernel/nvidia/nvlink_linux.o
ld: relocatable linking with relocations from format elf64-x86-64 
(/usr/src/modules/nvidia-kernel/nvidia/nv-frontend.o) to format elf32-i386 
(/usr/src/modules/nvidia-kernel/nvidia/nv-interface.o) is not supported
make[4]: *** [/usr/src/modules/nvidia-kernel/nvidia/nvidia.Kbuild:95: 
/usr/src/modules/nvidia-kernel/nvidia/nv-interface.o] Error 1
make[4]: *** Waiting for unfinished jobs....
...
make[3]: *** [/usr/src/linux-headers-4.19.0-1-common/Makefile:1532: 
_module_/usr/src/modules/nvidia-kernel] Error 2
make[3]: Leaving directory '/usr/src/linux-headers-4.19.0-1-amd64'
make[2]: *** [Makefile:146: sub-make] Error 2
make[2]: Leaving directory '/usr/src/linux-headers-4.19.0-1-common'
make[1]: *** [Makefile:79: modules] Error 2
make[1]: Leaving directory '/usr/src/modules/nvidia-kernel'
make: *** [debian/rules:47: build-stamp] Error 2

Why don't they fail both?
OK, they use completely different ld invocations:

/usr/src/modules/nvidia-legacy-340xx-kernel/nvidia-modules-common.mk:   @$(LD) 
$(EXTRA_LDFLAGS) $(MODULE_COMMON_SCRIPT) -r -o $(KERNEL_GLUE_NAME) 
$(KERNEL_GLUE_OBJS)

/usr/src/modules/nvidia-kernel/Makefile:        $(LD) 
$(NV_MODULE_COMMON_SCRIPT) -r -o $@ \
/usr/src/modules/nvidia-kernel/nvidia-modeset/nvidia-modeset.Kbuild:    $(LD) 
-r -o $@ $^
/usr/src/modules/nvidia-kernel/nvidia/nvidia.Kbuild:    $(LD) -r -o $@ $^


On 2018-12-19 22:53, Tomas Janousek wrote:
> Linux 4.19 renamed LDFLAGS to KBUILD_LDFLAGS [1], so use-kbuild-flags.patch
> doesn't work any more. I can confirm that using KBUILD_LDFLAGS fixes the
> issue. Do note that older kernels don't set KBUILD_LDFLAGS, so we need to
> support both for some time.
s/for some time/forever/

probably: $(or $(KBUILD_LDFLAGS),$(LDFLAGS))

That turns the failing command back into
ld -m elf_x86_64  -z max-page-size=0x200000 -r -o 
/usr/src/modules/nvidia-kernel/nvidia/nv-interface.o 
/usr/src/modules/nvidia-kernel/nvidia/nv-frontend.o ...

> Oh, and why does https://salsa.debian.org/nvidia-team/nvidia-graphics-drivers
> need signing in? :-(

Because the repository is not yet at that location.


Andreas

Reply via email to