diff --git a/packages/x11/driver/xf86-video-nvidia/patches/nvidia-kernel-ccflags-y-fix-linux-6.14.patch b/packages/x11/driver/xf86-video-nvidia/patches/nvidia-kernel-ccflags-y-fix-linux-6.14.patch new file mode 100644 index 0000000000..37deab1b8b --- /dev/null +++ b/packages/x11/driver/xf86-video-nvidia/patches/nvidia-kernel-ccflags-y-fix-linux-6.14.patch @@ -0,0 +1,235 @@ +diff -Naur nvidia-kmod-570.133.07-x86_64.old/kernel/Kbuild nvidia-kmod-570.133.07-x86_64/kernel/Kbuild +--- nvidia-kmod-570.133.07-x86_64.old/kernel/Kbuild 2025-04-12 09:54:19.974786018 +0200 ++++ nvidia-kmod-570.133.07-x86_64/kernel/Kbuild 2025-04-12 09:56:58.900332108 +0200 +@@ -74,22 +74,15 @@ + $(foreach _module, $(NV_KERNEL_MODULES), \ + $(eval include $(src)/$(_module)/$(_module).Kbuild)) + +- +-# +-# Define CFLAGS that apply to all the NVIDIA kernel modules. EXTRA_CFLAGS +-# is deprecated since 2.6.24 in favor of ccflags-y, but we need to support +-# older kernels which do not have ccflags-y. Newer kernels append +-# $(EXTRA_CFLAGS) to ccflags-y for compatibility. +-# +- +-EXTRA_CFLAGS += -I$(src)/common/inc +-EXTRA_CFLAGS += -I$(src) +-EXTRA_CFLAGS += -Wall $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-format-extra-args +-EXTRA_CFLAGS += -D__KERNEL__ -DMODULE -DNVRM +-EXTRA_CFLAGS += -DNV_VERSION_STRING=\"570.133.07\" ++ccflags-y += -std=gnu17 ++ccflags-y += -I$(src)/common/inc ++ccflags-y += -I$(src) ++ccflags-y += -Wall $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-format-extra-args ++ccflags-y += -D__KERNEL__ -DMODULE -DNVRM ++ccflags-y += -DNV_VERSION_STRING=\"570.133.07\" + + ifneq ($(SYSSRCHOST1X),) +- EXTRA_CFLAGS += -I$(SYSSRCHOST1X) ++ ccflags-y += -I$(SYSSRCHOST1X) + endif + + # Some Android kernels prohibit driver use of filesystem functions like +@@ -99,57 +92,57 @@ + PLATFORM_IS_ANDROID ?= 0 + + ifeq ($(PLATFORM_IS_ANDROID),1) +- EXTRA_CFLAGS += -DNV_FILESYSTEM_ACCESS_AVAILABLE=0 ++ ccflags-y += -DNV_FILESYSTEM_ACCESS_AVAILABLE=0 + else +- EXTRA_CFLAGS += -DNV_FILESYSTEM_ACCESS_AVAILABLE=1 ++ ccflags-y += -DNV_FILESYSTEM_ACCESS_AVAILABLE=1 + endif + +-EXTRA_CFLAGS += -Wno-unused-function ++ccflags-y += -Wno-unused-function + + ifneq ($(NV_BUILD_TYPE),debug) +- EXTRA_CFLAGS += -Wuninitialized ++ ccflags-y += -Wuninitialized + endif + +-EXTRA_CFLAGS += -fno-strict-aliasing ++ccflags-y += -fno-strict-aliasing + + ifeq ($(ARCH),arm64) +- EXTRA_CFLAGS += -mstrict-align ++ ccflags-y += -mstrict-align + endif + + ifeq ($(NV_BUILD_TYPE),debug) +- EXTRA_CFLAGS += -g ++ ccflags-y += -g + endif + +-EXTRA_CFLAGS += -ffreestanding ++ccflags-y += -ffreestanding + + ifeq ($(ARCH),arm64) +- EXTRA_CFLAGS += -mgeneral-regs-only -march=armv8-a +- EXTRA_CFLAGS += $(call cc-option,-mno-outline-atomics,) ++ ccflags-y += -mgeneral-regs-only -march=armv8-a ++ ccflags-y += $(call cc-option,-mno-outline-atomics,) + endif + + ifeq ($(ARCH),x86_64) +- EXTRA_CFLAGS += -mno-red-zone -mcmodel=kernel ++ ccflags-y += -mno-red-zone -mcmodel=kernel + endif + + ifeq ($(ARCH),powerpc) +- EXTRA_CFLAGS += -mlittle-endian -mno-strict-align ++ ccflags-y += -mlittle-endian -mno-strict-align + endif + +-EXTRA_CFLAGS += -DNV_UVM_ENABLE +-EXTRA_CFLAGS += $(call cc-option,-Werror=undef,) +-EXTRA_CFLAGS += -DNV_SPECTRE_V2=$(NV_SPECTRE_V2) +-EXTRA_CFLAGS += -DNV_KERNEL_INTERFACE_LAYER ++ccflags-y += -DNV_UVM_ENABLE ++ccflags-y += $(call cc-option,-Werror=undef,) ++ccflags-y += -DNV_SPECTRE_V2=$(NV_SPECTRE_V2) ++ccflags-y += -DNV_KERNEL_INTERFACE_LAYER + + # + # Detect SGI UV systems and apply system-specific optimizations. + # + + ifneq ($(wildcard /proc/sgi_uv),) +- EXTRA_CFLAGS += -DNV_CONFIG_X86_UV ++ ccflags-y += -DNV_CONFIG_X86_UV + endif + + ifdef VGX_FORCE_VFIO_PCI_CORE +- EXTRA_CFLAGS += -DNV_VGPU_FORCE_VFIO_PCI_CORE ++ ccflags-y += -DNV_VGPU_FORCE_VFIO_PCI_CORE + endif + + WARNINGS_AS_ERRORS ?= +@@ -183,7 +176,7 @@ + + NV_CFLAGS_FROM_CONFTEST := $(shell $(NV_CONFTEST_CMD) build_cflags) + +-NV_CONFTEST_CFLAGS = $(NV_CFLAGS_FROM_CONFTEST) $(EXTRA_CFLAGS) -fno-pie ++NV_CONFTEST_CFLAGS = $(NV_CFLAGS_FROM_CONFTEST) $(ccflags-y) -fno-pie + NV_CONFTEST_CFLAGS += $(call cc-disable-warning,pointer-sign) + NV_CONFTEST_CFLAGS += $(call cc-option,-fshort-wchar,) + NV_CONFTEST_CFLAGS += $(call cc-option,-Werror=incompatible-pointer-types,) +diff -Naur nvidia-kmod-570.133.07-x86_64.old/kernel-open/Kbuild nvidia-kmod-570.133.07-x86_64/kernel-open/Kbuild +--- nvidia-kmod-570.133.07-x86_64.old/kernel-open/Kbuild 2025-04-12 09:54:20.039786545 +0200 ++++ nvidia-kmod-570.133.07-x86_64/kernel-open/Kbuild 2025-04-12 09:56:51.436478034 +0200 +@@ -75,21 +75,15 @@ + $(eval include $(src)/$(_module)/$(_module).Kbuild)) + + +-# +-# Define CFLAGS that apply to all the NVIDIA kernel modules. EXTRA_CFLAGS +-# is deprecated since 2.6.24 in favor of ccflags-y, but we need to support +-# older kernels which do not have ccflags-y. Newer kernels append +-# $(EXTRA_CFLAGS) to ccflags-y for compatibility. +-# +- +-EXTRA_CFLAGS += -I$(src)/common/inc +-EXTRA_CFLAGS += -I$(src) +-EXTRA_CFLAGS += -Wall $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-format-extra-args +-EXTRA_CFLAGS += -D__KERNEL__ -DMODULE -DNVRM +-EXTRA_CFLAGS += -DNV_VERSION_STRING=\"570.133.07\" ++ccflags-y += -std=gnu17 ++ccflags-y += -I$(src)/common/inc ++ccflags-y += -I$(src) ++ccflags-y += -Wall $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-format-extra-args ++ccflags-y += -D__KERNEL__ -DMODULE -DNVRM ++ccflags-y += -DNV_VERSION_STRING=\"570.133.07\" + + ifneq ($(SYSSRCHOST1X),) +- EXTRA_CFLAGS += -I$(SYSSRCHOST1X) ++ ccflags-y += -I$(SYSSRCHOST1X) + endif + + # Some Android kernels prohibit driver use of filesystem functions like +@@ -99,57 +93,57 @@ + PLATFORM_IS_ANDROID ?= 0 + + ifeq ($(PLATFORM_IS_ANDROID),1) +- EXTRA_CFLAGS += -DNV_FILESYSTEM_ACCESS_AVAILABLE=0 ++ ccflags-y += -DNV_FILESYSTEM_ACCESS_AVAILABLE=0 + else +- EXTRA_CFLAGS += -DNV_FILESYSTEM_ACCESS_AVAILABLE=1 ++ ccflags-y += -DNV_FILESYSTEM_ACCESS_AVAILABLE=1 + endif + +-EXTRA_CFLAGS += -Wno-unused-function ++ccflags-y += -Wno-unused-function + + ifneq ($(NV_BUILD_TYPE),debug) +- EXTRA_CFLAGS += -Wuninitialized ++ ccflags-y += -Wuninitialized + endif + +-EXTRA_CFLAGS += -fno-strict-aliasing ++ccflags-y += -fno-strict-aliasing + + ifeq ($(ARCH),arm64) +- EXTRA_CFLAGS += -mstrict-align ++ ccflags-y += -mstrict-align + endif + + ifeq ($(NV_BUILD_TYPE),debug) +- EXTRA_CFLAGS += -g ++ ccflags-y += -g + endif + +-EXTRA_CFLAGS += -ffreestanding ++ccflags-y += -ffreestanding + + ifeq ($(ARCH),arm64) +- EXTRA_CFLAGS += -mgeneral-regs-only -march=armv8-a +- EXTRA_CFLAGS += $(call cc-option,-mno-outline-atomics,) ++ ccflags-y += -mgeneral-regs-only -march=armv8-a ++ ccflags-y += $(call cc-option,-mno-outline-atomics,) + endif + + ifeq ($(ARCH),x86_64) +- EXTRA_CFLAGS += -mno-red-zone -mcmodel=kernel ++ ccflags-y += -mno-red-zone -mcmodel=kernel + endif + + ifeq ($(ARCH),powerpc) +- EXTRA_CFLAGS += -mlittle-endian -mno-strict-align ++ ccflags-y += -mlittle-endian -mno-strict-align + endif + +-EXTRA_CFLAGS += -DNV_UVM_ENABLE +-EXTRA_CFLAGS += $(call cc-option,-Werror=undef,) +-EXTRA_CFLAGS += -DNV_SPECTRE_V2=$(NV_SPECTRE_V2) +-EXTRA_CFLAGS += -DNV_KERNEL_INTERFACE_LAYER ++ccflags-y += -DNV_UVM_ENABLE ++ccflags-y += $(call cc-option,-Werror=undef,) ++ccflags-y += -DNV_SPECTRE_V2=$(NV_SPECTRE_V2) ++ccflags-y += -DNV_KERNEL_INTERFACE_LAYER + + # + # Detect SGI UV systems and apply system-specific optimizations. + # + + ifneq ($(wildcard /proc/sgi_uv),) +- EXTRA_CFLAGS += -DNV_CONFIG_X86_UV ++ ccflags-y += -DNV_CONFIG_X86_UV + endif + + ifdef VGX_FORCE_VFIO_PCI_CORE +- EXTRA_CFLAGS += -DNV_VGPU_FORCE_VFIO_PCI_CORE ++ ccflags-y += -DNV_VGPU_FORCE_VFIO_PCI_CORE + endif + + WARNINGS_AS_ERRORS ?= +@@ -183,7 +177,7 @@ + + NV_CFLAGS_FROM_CONFTEST := $(shell $(NV_CONFTEST_CMD) build_cflags) + +-NV_CONFTEST_CFLAGS = $(NV_CFLAGS_FROM_CONFTEST) $(EXTRA_CFLAGS) -fno-pie ++NV_CONFTEST_CFLAGS = $(NV_CFLAGS_FROM_CONFTEST) $(ccflags-y) -fno-pie + NV_CONFTEST_CFLAGS += $(call cc-disable-warning,pointer-sign) + NV_CONFTEST_CFLAGS += $(call cc-option,-fshort-wchar,) + NV_CONFTEST_CFLAGS += $(call cc-option,-Werror=incompatible-pointer-types,)