Drivers do not compile on latest Proxmox kernel headers

With Proxmox kernel headers 7.0.14-22 (and -23) the NVIDIA driver (615.71.09-2) fails to compile with error nv-linux.h:1270:34: error: field 'cxlds' has incomplete type. It previously worked fine with Proxmox kernel headers 7.0.14-16 and earlier.

Setting up proxmox-kernel-7.0.14-23-pve-signed (7.0.14-23) ...
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/dkms 7.0.14-23-pve /boot/vmlinuz-7.0.14-23-pve
Sign command: /lib/modules/7.0.14-23-pve/build/scripts/sign-file
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub

Autoinstall of module nvidia/615.71.09 for kernel 7.0.14-23-pve (x86_64)
Building module(s).....................(bad exit status: 2)
Failed command:
'make' -j40 KERNEL_UNAME=7.0.14-23-pve IGNORE_PREEMPT_RT_PRESENCE=1 IGNORE_XEN_PRESENCE=1 modules

Error! Bad return status for module build on kernel: 7.0.14-23-pve (x86_64)
Consult /var/lib/dkms/nvidia/615.71.09/build/make.log for more information.

Autoinstall on 7.0.14-23-pve failed for module(s) nvidia(10).

Error! One or more modules failed to install during autoinstall.
Refer to previous errors for more information.
run-parts: /etc/kernel/postinst.d/dkms exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/proxmox-kernel-7.0.14-23-pve-signed.postinst line 20.
dpkg: error processing package proxmox-kernel-7.0.14-23-pve-signed (--configure):
 installed proxmox-kernel-7.0.14-23-pve-signed package post-installation script subprocess returned error exit status 2
dpkg: dependency problems prevent configuration of nvidia-driver:
 nvidia-driver depends on nvidia-kernel-open-dkms (= 615.71.09-2); however:
  Package nvidia-kernel-open-dkms is not configured yet.

dpkg: error processing package nvidia-driver (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of proxmox-kernel-7.0:
 proxmox-kernel-7.0 depends on proxmox-kernel-7.0.14-23-pve-signed | proxmox-kernel-7.0.14-23-pve; however:
  Package proxmox-kernel-7.0.14-23-pve-signed is not configured yet.
  Package proxmox-kernel-7.0.14-23-pve is not installed.
  Package proxmox-kernel-7.0.14-23-pve-signed which provides proxmox-kernel-7.0.14-23-pve is not configured yet.

dpkg: error processing package proxmox-kernel-7.0 (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of nvidia-open:
 nvidia-open depends on nvidia-kernel-open-dkms (>= 615.71.09); however:
  Package nvidia-kernel-open-dkms is not configured yet.
 nvidia-open depends on nvidia-driver (>= 615.71.09); however:
  Package nvidia-driver is not configured yet.

dpkg: error processing package nvidia-open (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 nvidia-kernel-open-dkms
 proxmox-kernel-7.0.14-23-pve-signed
 nvidia-driver
 proxmox-kernel-7.0
 nvidia-open
Removing subscription nag from UI...
E: Sub-process /usr/bin/dpkg returned an error code (1)

What changed in the kernel. The 7.0.14-16 headers have no include/cxl/cxl.h, so the guard was false and the CXL code was skipped. The 7.0.14-22 headers do ship that file. Proxmox has pulled in some newer upstream CXL work, though I’m inferring which part from the headers rather than the changelog. But the file only names struct cxl_dev_state without defining its contents; nowhere in the -22 headers is the struct fully defined. So the guard becomes true, the compiler hits an embedded field whose size it can’t know, and you get field 'cxlds' has incomplete type.

The tell-tale is in the probe results the build generated:

#define NV_CXL_CXL_H_PRESENT      ← header exists, so the struct gets compiled
#undef  NV_CXL_INIT_SUPPORTED     ← NVIDIA's own fuller CXL test correctly failed
#undef  NV_CXL_PCI_H_PRESENT

NVIDIA’s more thorough test, which actually tries to use cxl_dev_state, correctly concluded CXL isn’t usable on this kernel. The struct is just guarded by the weaker file-exists test instead. That’s an NVIDIA bug: the two checks disagree, and the wrong one wins.

nvidia-bug-report.log.gz (1003.8 KB)

make.log (128.0 KB)

Can confirm this on my end as well.

I meet same issue.
The last working kernel is “7.0.14-19” for both “615.71.09” and “615.78.08”
Since kernel “7.0.14-20”, there 2 “615” will fail in installation

Confirmed independently on a fresh Proxmox VE 9.2 installation.

  • PVE Manager: 9.2.21

  • Kernel: 7.0.14-23-pve

  • GPU: GeForce RTX 3060 (GA106, 10de:2504)

  • NVIDIA driver: 615.71.09-2

  • Package: nvidia-kernel-open-dkms

  • Kernel headers: proxmox-headers-7.0.14-23-pve

  • DKMS: 3.2.2

Installed through NVIDIA’s official Debian 13 repository using apt install nvidia-driver-cuda nvidia-kernel-open-dkms.

DKMS compilation fails with the same error:

nv-linux.h:1270:34: error: field 'cxlds' has incomplete type

This reproduces the issue on a newly installed, fully updated Proxmox host, without a previously installed NVIDIA proprietary driver.