From 7b28f321ee27290ba58d9b80b83b45bde987057b Mon Sep 17 00:00:00 2001 From: Quentin Rameau Date: Sat, 19 Nov 2022 12:27:57 +0100 Subject: [PATCH] nvidia470: Add patch for Linux 6.x support This patch should be temporary, and removed once upstream releases a new version with support for this. --- srcpkgs/nvidia470/patches/kernel-6.0.patch | 60 ++++++++++++++++++++++ srcpkgs/nvidia470/template | 3 +- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/nvidia470/patches/kernel-6.0.patch diff --git a/srcpkgs/nvidia470/patches/kernel-6.0.patch b/srcpkgs/nvidia470/patches/kernel-6.0.patch new file mode 100644 index 00000000000..3ad376a2acc --- /dev/null +++ b/srcpkgs/nvidia470/patches/kernel-6.0.patch @@ -0,0 +1,60 @@ +From 17bed78791d6f311c83ff1794d085b18c9f89730 Mon Sep 17 00:00:00 2001 +From: Joan Bruguera +Date: Wed, 3 Aug 2022 00:56:57 +0200 +Subject: [PATCH] Tentative fix for NVIDIA 470.141.03 driver for Linux 6.0-rc1 + +--- + nvidia-drm/nvidia-drm-helper.c | 5 +++++ + nvidia/nv-acpi.c | 5 ++++- + nvidia/nv.c | 3 ++- + 3 files changed, 11 insertions(+), 2 deletions(-) + +diff --git a/nvidia-drm/nvidia-drm-helper.c b/nvidia-drm/nvidia-drm-helper.c +index 3831180..fa03d51 100644 +--- a/nvidia-drm/nvidia-drm-helper.c ++++ b/nvidia-drm/nvidia-drm-helper.c +@@ -41,6 +41,11 @@ + #include + #endif + ++// Add header which is no longer indirectly referenced as of Linux 6.0-rc1 ++#if defined(NV_DRM_DRM_FRAMEBUFFER_H_PRESENT) ++#include ++#endif ++ + static void __nv_drm_framebuffer_put(struct drm_framebuffer *fb) + { + #if defined(NV_DRM_FRAMEBUFFER_GET_PRESENT) +diff --git a/nvidia/nv-acpi.c b/nvidia/nv-acpi.c +index 2b7b988..76c36fa 100644 +--- a/nvidia/nv-acpi.c ++++ b/nvidia/nv-acpi.c +@@ -16,7 +16,10 @@ + + #include + +-#if defined(NV_LINUX_ACPI_EVENTS_SUPPORTED) ++#include ++// Rel.commit "ACPI: bus: Drop unused list heads from struct acpi_device" (Rafael J. Wysocki, 4 Jun 2022) ++// Disable ACPI support due to more GPL stuff (acpi_dev_for_each_child is only GPL-exported) ++#if defined(NV_LINUX_ACPI_EVENTS_SUPPORTED) && (LINUX_VERSION_CODE < KERNEL_VERSION(6, 0, 0)) + static NV_STATUS nv_acpi_extract_integer (const union acpi_object *, void *, NvU32, NvU32 *); + static NV_STATUS nv_acpi_extract_buffer (const union acpi_object *, void *, NvU32, NvU32 *); + static NV_STATUS nv_acpi_extract_package (const union acpi_object *, void *, NvU32, NvU32 *); +diff --git a/nvidia/nv.c b/nvidia/nv.c +index ab7d17c..e313e2e 100644 +--- a/nvidia/nv.c ++++ b/nvidia/nv.c +@@ -5423,7 +5423,8 @@ NvBool NV_API_CALL nv_s2idle_pm_configured(void) + { + NvU8 buf[8]; + +-#if defined(NV_SEQ_READ_ITER_PRESENT) ++// FIXME: Avoid this code path because on Linux 6.0-rc1, init_sync_kiocb references a GPL symbol ++#if defined(NV_SEQ_READ_ITER_PRESENT) && (LINUX_VERSION_CODE < KERNEL_VERSION(6, 0, 0)) + struct file *file; + ssize_t num_read; + struct kiocb kiocb; +-- +2.37.1 + diff --git a/srcpkgs/nvidia470/template b/srcpkgs/nvidia470/template index 5567824f41b..0f3e4d20f10 100644 --- a/srcpkgs/nvidia470/template +++ b/srcpkgs/nvidia470/template @@ -4,7 +4,7 @@ _desc="NVIDIA drivers (GKxxx “Kepler”)" pkgname=nvidia470 version=470.141.03 -revision=1 +revision=2 maintainer="Andrew Benson " license="custom:NVIDIA Proprietary" homepage="https://www.nvidia.com/en-us/drivers/unix/" @@ -25,6 +25,7 @@ subpackages="nvidia470-gtklibs nvidia470-dkms nvidia470-opencl nvidia470-libs nv depends="nvidia470-libs-${version}_${revision} nvidia470-gtklibs-${version}_${revision} nvidia470-dkms-${version}_${revision}" +patch_args="-Np1 --directory=${XBPS_BUILDDIR}/${pkgname}-${version}/${_pkg}/kernel" _install_libs() { local libdir=$1