Bug#870677: nvidia-kernel-dkms: Doesn't compile with kernel 4.11 (and probably later)

Andreas Beckmann anbe at debian.org
Mon Aug 7 01:12:54 UTC 2017


On 2017-08-04 03:09, Jiri Palecek wrote:
> Package: nvidia-kernel-dkms
> Version: 378.13-1

Hi Luca,

I tried to backport two patches from 340 (couldn't find the place where the third should be applied now), but that is not sufficient ...

conftest result changes with these patches applied (this may already indicate the problem):
4.10.0-trunk-amd64 -> 4.11.0-1-amd64

-#undef NV_VM_OPS_FAULT_REMOVED_VMA_ARG
+#define NV_VM_OPS_FAULT_REMOVED_VMA_ARG

-#define NV_DRM_HELPER_MODE_FILL_FB_STRUCT_HAS_CONST_MODE_CMD_ARG
+#undef NV_DRM_HELPER_MODE_FILL_FB_STRUCT_HAS_CONST_MODE_CMD_ARG


and it is failing here:

  if [ "-pg" = "-pg" ]; then if [ /usr/src/modules/nvidia-kernel/nvidia-uvm/uvm8_gpu.o != "scripts/mod/empty.o" ]; then ./scripts/recordmcount  "/usr/src/modules/nvidia-kernel/nvidia-uvm/uvm8_gpu.o"; fi; fi;
   gcc-6 -Wp,-MD,/usr/src/modules/nvidia-kernel/nvidia-uvm/.uvm8_gpu_isr.o.d  -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/6/include -I/usr/src/linux-headers-4.11.0-1-common/arch/x86/include -I./arch/x86/includ
e/generated/uapi -I./arch/x86/include/generated  -I/usr/src/linux-headers-4.11.0-1-common/include -I./include -I/usr/src/linux-headers-4.11.0-1-common/arch/x86/include/uapi -I/usr/src/linux-headers-4.11.0-1-common/
include/uapi -I./include/generated/uapi -include /usr/src/linux-headers-4.11.0-1-common/include/linux/kconfig.h  -I/usr/src/modules/nvidia-kernel -I/usr/src/modules/nvidia-kernel -D__KERNEL__ -Wall -Wundef -Wstrict
-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falig
n-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAM
E=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_AVX512=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-c
ompare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -Wno-frame-address -O2 --param=allow-store-data-races=0 -DCC_HAVE_ASM_GOTO -Wframe-larger-than=2048 -fstack-protector-strong -Wno-unused-but-se
t-variable -Wno-unused-const-variable -fno-var-tracking-assignments -g -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werr
or=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types  -I/usr/src/modules/nvidia-kernel/common/inc  -I/usr/src/modules/nvidia-kernel -Wall -MD -Wsign-compare -Wno-cast-qual -Wno-error -D__KERNEL
__ -DMODULE -DNVRM -DNV_VERSION_STRING=\"378.13\" -Wno-unused-function -Wuninitialized -fno-strict-aliasing -mno-red-zone -mcmodel=kernel -DNV_UVM_ENABLE -Wno-sign-compare -Wno-format-extra-args -Werror=undef -O2 -
DNVIDIA_UVM_ENABLED -DNVIDIA_UNDEF_LEGACY_BIT_MACROS -DLinux -D__linux__  -I/usr/src/modules/nvidia-kernel/nvidia-uvm  -DMODULE  -DKBUILD_BASENAME='"uvm8_gpu_isr"'  -DKBUILD_MODNAME='"nvidia_uvm"' -c -o /usr/src/mo
dules/nvidia-kernel/nvidia-uvm/.tmp_uvm8_gpu_isr.o /usr/src/modules/nvidia-kernel/nvidia-uvm/uvm8_gpu_isr.c
In file included from /usr/src/modules/nvidia-kernel/nvidia-uvm/uvm8_global.h:29:0,
                 from /usr/src/modules/nvidia-kernel/nvidia-uvm/uvm8_gpu_isr.c:24:
/usr/src/modules/nvidia-kernel/nvidia-uvm/uvm8_gpu_isr.c: In function 'uvm_gpu_replayable_faults_isr_unlock':
/usr/src/modules/nvidia-kernel/nvidia-uvm/uvm8_gpu_isr.c:273:28: error: passing argument 1 of 'atomic_read' from incompatible pointer type [-Werror=incompatible-pointer-types]
     UVM_ASSERT(atomic_read(&gpu->gpu_kref.refcount) > 0);
                            ^
/usr/src/modules/nvidia-kernel/nvidia-uvm/uvm_common.h:138:45: note: in definition of macro 'UVM_IGNORE_EXPR'
 #define UVM_IGNORE_EXPR(expr) ((void)sizeof(expr))
                                             ^~~~
/usr/src/modules/nvidia-kernel/nvidia-uvm/uvm_common.h:168:26: note: in expansion of macro '_UVM_ASSERT_MSG'
 #define UVM_ASSERT(expr) _UVM_ASSERT_MSG(expr, #expr, "\n")
                          ^~~~~~~~~~~~~~~
/usr/src/modules/nvidia-kernel/nvidia-uvm/uvm8_gpu_isr.c:273:5: note: in expansion of macro 'UVM_ASSERT'
     UVM_ASSERT(atomic_read(&gpu->gpu_kref.refcount) > 0);
     ^~~~~~~~~~
In file included from /usr/src/linux-headers-4.11.0-1-common/arch/x86/include/asm/msr.h:66:0,
                 from /usr/src/linux-headers-4.11.0-1-common/arch/x86/include/asm/processor.h:20,
                 from /usr/src/linux-headers-4.11.0-1-common/arch/x86/include/asm/cpufeature.h:4,
                 from /usr/src/linux-headers-4.11.0-1-common/arch/x86/include/asm/thread_info.h:52,
                 from /usr/src/linux-headers-4.11.0-1-common/include/linux/thread_info.h:25,
                 from /usr/src/linux-headers-4.11.0-1-common/arch/x86/include/asm/preempt.h:6,
                 from /usr/src/linux-headers-4.11.0-1-common/include/linux/preempt.h:80,
                 from /usr/src/linux-headers-4.11.0-1-common/include/linux/spinlock.h:50,
                 from /usr/src/linux-headers-4.11.0-1-common/include/linux/mmzone.h:7,
                 from /usr/src/linux-headers-4.11.0-1-common/include/linux/gfp.h:5,
                 from /usr/src/linux-headers-4.11.0-1-common/include/linux/mm.h:9,
                 from /usr/src/modules/nvidia-kernel/common/inc/nv-pgprot.h:17,
                 from /usr/src/modules/nvidia-kernel/common/inc/nv-linux.h:17,
                 from /usr/src/modules/nvidia-kernel/nvidia-uvm/uvm_linux.h:39,
                 from /usr/src/modules/nvidia-kernel/nvidia-uvm/uvm8_global.h:28,
                 from /usr/src/modules/nvidia-kernel/nvidia-uvm/uvm8_gpu_isr.c:24:
/usr/src/linux-headers-4.11.0-1-common/arch/x86/include/asm/atomic.h:24:28: note: expected 'const atomic_t * {aka const struct <anonymous> *}' but argument is of type 'refcount_t * {aka struct refcount_struct *}'
 static __always_inline int atomic_read(const atomic_t *v)
                            ^~~~~~~~~~~
cc1: some warnings being treated as errors
/usr/src/linux-headers-4.11.0-1-common/scripts/Makefile.build:299: recipe for target '/usr/src/modules/nvidia-kernel/nvidia-uvm/uvm8_gpu_isr.o' failed
make[4]: *** [/usr/src/modules/nvidia-kernel/nvidia-uvm/uvm8_gpu_isr.o] Error 1


Hopefully you can spot immediately what I missed.

(I want to fix 378 first before uploading 381 which will go through NEW, which may take some time)

Andreas



More information about the pkg-nvidia-devel mailing list