From 403b09dc7e68b449d9c33dd79f353d232ade3054 Mon Sep 17 00:00:00 2001 From: LinuxWhatA <68576488+LinuxWhatA@users.noreply.github.com> Date: Tue, 4 Nov 2025 21:10:07 +0800 Subject: [PATCH] linuxPackages.nvidiaPackages.legacy_(390,470}: patch for linux 6.17 --- pkgs/os-specific/linux/nvidia-x11/default.nix | 62 ++++++++++++------- .../linux/nvidia-x11/follow_pfn.patch | 61 ------------------ 2 files changed, 40 insertions(+), 83 deletions(-) delete mode 100644 pkgs/os-specific/linux/nvidia-x11/follow_pfn.patch diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix index 7c58fb9fee8a..c34102f0b486 100644 --- a/pkgs/os-specific/linux/nvidia-x11/default.nix +++ b/pkgs/os-specific/linux/nvidia-x11/default.nix @@ -50,8 +50,8 @@ let # Source corresponding to https://aur.archlinux.org/packages/nvidia-390xx-dkms aurPatches = fetchgit { url = "https://aur.archlinux.org/nvidia-390xx-utils.git"; - rev = "94dffc01e23a93c354a765ea7ac64484a3ef96c1"; - hash = "sha256-c94qXNZyMrSf7Dik7jvz2ECaGELqN7WEYNpnbUkzeeU="; + rev = "cf1a1c571c425b4b66d12e468fc4ce45a397c583"; + hash = "sha256-SERB5ihOroagJn7apAiqjUckbrfP2FZPCuTLWcBccoM="; }; # https://github.com/NVIDIA/open-gpu-kernel-modules/issues/840 @@ -166,26 +166,39 @@ rec { }; # Last one supporting Kepler architecture - legacy_470 = generic { - version = "470.256.02"; - sha256_64bit = "sha256-1kUYYt62lbsER/O3zWJo9z6BFowQ4sEFl/8/oBNJsd4="; - sha256_aarch64 = "sha256-e+QvE+S3Fv3JRqC9ZyxTSiCu8gJdZXSz10gF/EN6DY0="; - settingsSha256 = "sha256-kftQ4JB0iSlE8r/Ze/+UMnwLzn0nfQtqYXBj+t6Aguk="; - persistencedSha256 = "sha256-iYoSib9VEdwjOPBP1+Hx5wCIMhW8q8cCHu9PULWfnyQ="; + legacy_470 = + let + # Source corresponding to https://aur.archlinux.org/packages/nvidia-470xx-dkms + aurPatches = fetchgit { + url = "https://aur.archlinux.org/nvidia-470xx-utils.git"; + rev = "7c1c2c124147d960a6c7114eb26a4eadae9b9f3d"; + hash = "sha256-sNW+I4dkPSudfORLEp1RNGHyQKWBYnBEeGrfJU7SYTs="; + }; + in + generic { + version = "470.256.02"; + sha256_64bit = "sha256-1kUYYt62lbsER/O3zWJo9z6BFowQ4sEFl/8/oBNJsd4="; + sha256_aarch64 = "sha256-e+QvE+S3Fv3JRqC9ZyxTSiCu8gJdZXSz10gF/EN6DY0="; + settingsSha256 = "sha256-kftQ4JB0iSlE8r/Ze/+UMnwLzn0nfQtqYXBj+t6Aguk="; + persistencedSha256 = "sha256-iYoSib9VEdwjOPBP1+Hx5wCIMhW8q8cCHu9PULWfnyQ="; - patches = [ - "${aurPatches}/gcc-14.patch" - # fixes 6.10 follow_pfn - ./follow_pfn.patch - # https://gist.github.com/joanbm/a6d3f7f873a60dec0aa4a734c0f1d64e - (fetchpatch { - url = "https://gist.github.com/joanbm/a6d3f7f873a60dec0aa4a734c0f1d64e/raw/6bae5606c033b6c6c08233523091992370e357b7/nvidia-470xx-fix-linux-6.12.patch"; - hash = "sha256-6nbzcRTRCxW8GDAhB8Zwx9rVcCzwPtVYlqoUhL9gxlY="; - stripLen = 1; - extraPrefix = "kernel/"; - }) - ]; - }; + patches = map (patch: "${aurPatches}/${patch}") [ + "0001-Fix-conftest-to-ignore-implicit-function-declaration.patch" + "0002-Fix-conftest-to-use-a-short-wchar_t.patch" + "0003-Fix-conftest-to-use-nv_drm_gem_vmap-which-has-the-se.patch" + "nvidia-470xx-fix-gcc-15.patch" + "kernel-6.10.patch" + "kernel-6.12.patch" + "nvidia-470xx-fix-linux-6.13.patch" + "nvidia-470xx-fix-linux-6.14.patch" + "nvidia-470xx-fix-linux-6.15.patch" + "nvidia-470xx-fix-linux-6.17.patch" + ]; + patchFlags = [ + "-p1" + "--directory=kernel" + ]; + }; # Last one supporting x86 legacy_390 = generic { @@ -206,8 +219,13 @@ rec { "gcc-14.patch" "kernel-6.10.patch" "kernel-6.12.patch" + "kernel-6.13.patch" + "kernel-6.14.patch" + "gcc-15.patch" + "kernel-6.15.patch" + "kernel-6.17.patch" ]; - broken = kernel.kernelAtLeast "6.13"; + broken = kernel.kernelAtLeast "6.18"; # fixes the bug described in https://bbs.archlinux.org/viewtopic.php?pid=2083439#p2083439 # see https://bbs.archlinux.org/viewtopic.php?pid=2083651#p2083651 diff --git a/pkgs/os-specific/linux/nvidia-x11/follow_pfn.patch b/pkgs/os-specific/linux/nvidia-x11/follow_pfn.patch deleted file mode 100644 index 19026229bd1d..000000000000 --- a/pkgs/os-specific/linux/nvidia-x11/follow_pfn.patch +++ /dev/null @@ -1,61 +0,0 @@ -diff -ruNb a/kernel/conftest.sh b/kernel/conftest.sh ---- a/kernel/conftest.sh 2024-07-19 04:36:26.183701185 -0500 -+++ b/kernel/conftest.sh 2024-07-19 04:36:26.230366381 -0500 -@@ -4464,20 +4464,22 @@ - compile_check_conftest "$CODE" "NV_DRM_GEM_OBJECT_VMAP_HAS_MAP_ARG" "" "types" - ;; - -- unsafe_follow_pfn) -+ follow_pfn) - # -- # Determine if unsafe_follow_pfn() is present. -+ # Determine if follow_pfn() is present. - # -- # unsafe_follow_pfn() was added by commit 69bacee7f9ad -- # ("mm: Add unsafe_follow_pfn") in v5.13-rc1. -+ # follow_pfn() was added by commit 3b6748e2dd69 -+ # ("mm: introduce follow_pfn()") in v2.6.31-rc1, and removed -+ # by commit 233eb0bf3b94 ("mm: remove follow_pfn") -+ # from linux-next 233eb0bf3b94. - # - CODE=" - #include -- void conftest_unsafe_follow_pfn(void) { -- unsafe_follow_pfn(); -+ void conftest_follow_pfn(void) { -+ follow_pfn(); - }" - -- compile_check_conftest "$CODE" "NV_UNSAFE_FOLLOW_PFN_PRESENT" "" "functions" -+ compile_check_conftest "$CODE" "NV_FOLLOW_PFN_PRESENT" "" "functions" - ;; - - drm_plane_atomic_check_has_atomic_state_arg) -diff -ruNb a/kernel/nvidia/nvidia.Kbuild b/kernel/nvidia/nvidia.Kbuild ---- a/kernel/nvidia/nvidia.Kbuild 2022-10-12 04:29:57.000000000 -0500 -+++ b/kernel/nvidia/nvidia.Kbuild 2024-07-19 05:17:39.148448922 -0500 -@@ -164,7 +164,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += cc - NV_CONFTEST_FUNCTION_COMPILE_TESTS += iterate_fd - NV_CONFTEST_FUNCTION_COMPILE_TESTS += seq_read_iter - NV_CONFTEST_FUNCTION_COMPILE_TESTS += sg_page_iter_page --NV_CONFTEST_FUNCTION_COMPILE_TESTS += unsafe_follow_pfn -+NV_CONFTEST_FUNCTION_COMPILE_TESTS += follow_pfn - NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_gem_object_get - NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_gem_object_put_unlocked - NV_CONFTEST_FUNCTION_COMPILE_TESTS += set_close_on_exec -diff -ruNb a/kernel/nvidia/os-mlock.c b/kernel/nvidia/os-mlock.c ---- a/kernel/nvidia/os-mlock.c 2022-10-12 04:30:26.000000000 -0500 -+++ b/kernel/nvidia/os-mlock.c 2024-07-19 04:36:26.230366381 -0500 -@@ -18,10 +18,10 @@ - unsigned long address, - unsigned long *pfn) - { --#if defined(NV_UNSAFE_FOLLOW_PFN_PRESENT) -- return unsafe_follow_pfn(vma, address, pfn); --#else -+#if defined(NV_FOLLOW_PFN_PRESENT) - return follow_pfn(vma, address, pfn); -+#else -+ return -1; - #endif - } \ No newline at end of file