From 4cdbea594a238d7fd341673d18fca1f77b004593 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20R=C4=99korajski?= Date: Sat, 29 Dec 2018 10:52:42 +0900 Subject: [PATCH] - fix building kernel module for kernel 4.4.169 - rel 2 --- kernel-4.4.169.patch | 103 ++++++++++++++++++++++++++++++++++ xorg-driver-video-nvidia.spec | 4 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 kernel-4.4.169.patch diff --git a/kernel-4.4.169.patch b/kernel-4.4.169.patch new file mode 100644 index 0000000..6034674 --- /dev/null +++ b/kernel-4.4.169.patch @@ -0,0 +1,103 @@ +--- NVIDIA-Linux-x86_64-390.87-no-compat32/kernel/conftest.sh~ 2018-08-22 06:47:57.000000000 +0900 ++++ NVIDIA-Linux-x86_64-390.87-no-compat32/kernel/conftest.sh 2018-12-29 09:33:30.537541114 +0900 +@@ -2725,6 +2725,32 @@ + return + fi + ++ # Conftest #3: Check if get_user_pages has gup_flags instead of write and force parameters. ++ # Return if available. ++ # Fall through to default case if absent. ++ ++ echo "$CONFTEST_PREAMBLE ++ #include ++ long get_user_pages(struct task_struct *tsk, ++ struct mm_struct *mm, ++ unsigned long start, ++ unsigned long nr_pages, ++ unsigned int gup_flags, ++ struct page **pages, ++ struct vm_area_struct **vmas) { ++ return 0; ++ }" > conftest$$.c ++ ++ $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 ++ rm -f conftest$$.c ++ ++ if [ -f conftest$$.o ]; then ++ echo "#undef NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS" | append_conftest "functions" ++ echo "#define NV_GET_USER_PAGES_HAS_TASK_STRUCT" | append_conftest "functions" ++ rm -f conftest$$.o ++ return ++ fi ++ + echo "#define NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS" | append_conftest "functions" + echo "#define NV_GET_USER_PAGES_HAS_TASK_STRUCT" | append_conftest "functions" + +--- NVIDIA-Linux-x86_64-390.87-no-compat32/kernel/common/inc/nv-mm.h~ 2018-08-22 09:55:23.000000000 +0900 ++++ NVIDIA-Linux-x86_64-390.87-no-compat32/kernel/common/inc/nv-mm.h 2018-12-29 09:30:55.797962776 +0900 +@@ -40,8 +40,31 @@ + */ + + #if defined(NV_GET_USER_PAGES_HAS_TASK_STRUCT) ++ #if defined(NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS) + #define NV_GET_USER_PAGES(start, nr_pages, write, force, pages, vmas) \ + get_user_pages(current, current->mm, start, nr_pages, write, force, pages, vmas) ++ #else ++ #include ++ #include ++ #include ++ ++ static inline long NV_GET_USER_PAGES(unsigned long start, ++ unsigned long nr_pages, ++ int write, ++ int force, ++ struct page **pages, ++ struct vm_area_struct **vmas) ++ { ++ unsigned int flags = 0; ++ ++ if (write) ++ flags |= FOLL_WRITE; ++ if (force) ++ flags |= FOLL_FORCE; ++ ++ return get_user_pages(current, current->mm, start, nr_pages, flags, pages, vmas); ++ } ++ #endif + #else + #if defined(NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS) + #define NV_GET_USER_PAGES get_user_pages +@@ -147,7 +147,32 @@ + } + #endif + #else +- #define NV_GET_USER_PAGES_REMOTE get_user_pages ++ #if defined(NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS) ++ #define NV_GET_USER_PAGES_REMOTE get_user_pages ++ #else ++ #include ++ #include ++ #include ++ ++ static inline long NV_GET_USER_PAGES_REMOTE(struct task_struct *tsk, ++ struct mm_struct *mm, ++ unsigned long start, ++ unsigned long nr_pages, ++ int write, ++ int force, ++ struct page **pages, ++ struct vm_area_struct **vmas) ++ { ++ unsigned int flags = 0; ++ ++ if (write) ++ flags |= FOLL_WRITE; ++ if (force) ++ flags |= FOLL_FORCE; ++ ++ return get_user_pages(tsk, mm, start, nr_pages, flags, pages, vmas); ++ } ++ #endif + #endif + + diff --git a/xorg-driver-video-nvidia.spec b/xorg-driver-video-nvidia.spec index fb305f8..456ea9b 100644 --- a/xorg-driver-video-nvidia.spec +++ b/xorg-driver-video-nvidia.spec @@ -33,7 +33,7 @@ exit 1 %define no_install_post_check_so 1 -%define rel 1 +%define rel 2 %define pname xorg-driver-video-nvidia Summary: Linux Drivers for nVidia GeForce/Quadro Chips Summary(hu.UTF-8): Linux meghajtók nVidia GeForce/Quadro chipekhez @@ -52,6 +52,7 @@ Source3: gl.pc.in Source4: 10-nvidia.conf Source5: 10-nvidia-modules.conf Patch0: X11-driver-nvidia-desktop.patch +Patch1: kernel-4.4.169.patch URL: http://www.nvidia.com/object/unix.html BuildRequires: rpmbuild(macros) >= 1.701 %{?with_kernel:%{expand:%buildrequires_kernel kernel%%{_alt_kernel}-module-build >= 3:2.6.32}} @@ -259,6 +260,7 @@ rm -rf NVIDIA-Linux-x86_64-%{version} /bin/sh %{SOURCE0} --extract-only %setup -qDT -n NVIDIA-Linux-x86_64-%{version} %patch0 -p1 +%patch1 -p1 echo 'EXTRA_CFLAGS += -Wno-pointer-arith -Wno-sign-compare -Wno-unused' >> kernel/Makefile.kbuild %build -- 2.43.0