Debian 12 splits kernel headers into two packages: linux-headers-<kver> (arch-specific: generated/, config/) linux-headers-<kver>-common (source headers: linux/, asm-generic/, etc.) NVIDIA conftest.sh builds include paths as HEADERS=$SOURCES/include. When SYSSRC=amd64, HEADERS=amd64/include/ which is nearly empty — conftest can't compile any kernel header tests, all compile-tests fail silently, and NVIDIA assumes all kernel APIs are present. This causes link errors for APIs added in kernel 6.3+ (vm_flags_set, vm_flags_clear) and removed APIs (phys_to_dma, dma_is_direct, get_dma_ops). Fix: pass SYSSRC=common (real headers) and SYSOUT=amd64 (generated headers). NVIDIA Makefile maps SYSSRC→NV_KERNEL_SOURCES, SYSOUT→NV_KERNEL_OUTPUT, and runs 'make -C common KBUILD_OUTPUT=amd64'. Conftest then correctly detects which APIs are present in kernel 6.1 and uses proper wrappers. Tested: 5 .ko files built successfully on Debian 12 kernel 6.1.0-43-amd64. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5.9 KiB
5.9 KiB