unconditional use of hmm_pfn_to_page() which was introduced in Linux 5.8
anbe42 opened this issue · comments
Andreas Beckmann commented
NVIDIA Open GPU Kernel Modules Version
535.171.04
Operating System and Version
Debian
Kernel Release
< 5.8
Please confirm you are running a stable release kernel (e.g. not a -rc). We do not accept bug reports for unreleased kernels.
- I am running on a stable kernel release.
Build Command
This issue was noticed during QA tests that test module building against many official Debian kernels going back to 2.6.32.
Terminal output/Build Log
gcc-9 -Wp,-MD,/usr/src/modules/nvidia-open-kernel/nvidia-uvm/.uvm_ats_faults.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/9/include -I/usr/src/linux-headers-5.7.0-3-common/arch/x86/include -I./arch/x86/include/generated -I/usr/src/linux-headers-5.
7.0-3-common/include -I./include -I/usr/src/linux-headers-5.7.0-3-common/arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I/usr/src/linux-headers-5.7.0-3-common/include/uapi -I./include/generated/uapi -include /usr/src/linux-headers-5.7.0-3-common/
include/linux/kconfig.h -include /usr/src/linux-headers-5.7.0-3-common/include/linux/compiler_types.h -D__KERNEL__ -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declar
ation -Werror=implicit-int -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=
kernel -DCONFIG_X86_X32_ABI -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-addre
ss-of-packed-member -O2 --param=allow-store-data-races=0 -Wframe-larger-than=2048 -fstack-protector-strong -Wno-unused-but-set-variable -Wimplicit-fallthrough -Wno-unused-const-variable -fno-var-tracking-assignments -g -pg -mrecord-mcount -mfentry -DCC_USING
_FENTRY -flive-patching=inline-clone -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -fno-strict-overflow -fno-merge-all-constants -fmerge-constant
s -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -fmacro-prefix-map=/usr/src/linux-headers-5.7.0-3-common/= -fcf-protection=none -Wno-packed-not-aligned -I/usr/src/modules/nvidia-open-kernel/com
mon/inc -I/usr/src/modules/nvidia-open-kernel -Wall -Wno-cast-qual -Wno-error -Wno-format-extra-args -D__KERNEL__ -DMODULE -DNVRM -DNV_VERSION_STRING=\"535.171.04\" -Wno-unused-function -Wuninitialized -fno-strict-aliasing -ffreestanding -mno-red-zone -mcmod
el=kernel -DNV_UVM_ENABLE -Werror=undef -DNV_SPECTRE_V2=0 -DNV_KERNEL_INTERFACE_LAYER -O2 -DNVIDIA_UVM_ENABLED -DNVIDIA_UNDEF_LEGACY_BIT_MACROS -DLinux -D__linux__ -I/usr/src/modules/nvidia-open-kernel/nvidia-uvm -DMODULE -DKBUILD_BASENAME='"uvm_ats_faults
"' -DKBUILD_MODNAME='"nvidia_uvm"' -c -o /usr/src/modules/nvidia-open-kernel/nvidia-uvm/uvm_ats_faults.o /usr/src/modules/nvidia-open-kernel/nvidia-uvm/uvm_ats_faults.c
/usr/src/modules/nvidia-open-kernel/nvidia-uvm/uvm_ats_faults.c: In function 'ats_compute_residency_mask':
/usr/src/modules/nvidia-open-kernel/nvidia-uvm/uvm_ats_faults.c:312:10: error: 'struct hmm_range' has no member named 'hmm_pfns'
312 | range.hmm_pfns = ats_context->prefetch_state.pfns;
| ^
/usr/src/modules/nvidia-open-kernel/nvidia-uvm/uvm_ats_faults.c:359:37: error: implicit declaration of function 'hmm_pfn_to_page'; did you mean 'pfn_to_page'? [-Werror=implicit-function-declaration]
359 | struct page *page = hmm_pfn_to_page(pfn);
| ^~~~~~~~~~~~~~~
| pfn_to_page
/usr/src/modules/nvidia-open-kernel/nvidia-uvm/uvm_ats_faults.c:359:37: warning: initialization of 'struct page *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
cc1: some warnings being treated as errors
More Info
hmm_pfn_to_page()
was introduced in Linux 5.8, but there is no corresponding check in conftest.sh
for its availability. Thus module compilation is failing for all kernels predating Linux 5.8.
common/inc/nv-linux.h
has a check for a minimal supported version of 2.6.32 which seems to be wrong, since the README mentions 3.10 as lower limit (post-470). (minimal kernel version seems to get bumped to 4.15 post-550)