linuxPackages.nvidiaPackages.legacy_(390,470}: patch for linux 6.17 (#458686)

This commit is contained in:
Masum Reza
2025-11-05 03:43:13 +00:00
committed by GitHub
2 changed files with 40 additions and 83 deletions
+40 -22
View File
@@ -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
@@ -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 <linux/mm.h>
- 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
}