NVIDIA / open-gpu-kernel-modules

NVIDIA Linux open GPU kernel module source

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

unconditional use of hmm_pfn_to_page() which was introduced in Linux 5.8

anbe42 opened this issue · comments

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)