--- /dev/null
+--- 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 <linux/mm.h>
++ 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 <asm/current.h>
++ #include <linux/mm.h>
++ #include <linux/sched.h>
++
++ 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 <asm/current.h>
++ #include <linux/mm.h>
++ #include <linux/sched.h>
++
++ 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
+
+
%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
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}}
/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