summary refs log tree commit diff
path: root/pkgs/os-specific/linux
diff options
context:
space:
mode:
authorEdward Tjörnhammar <ed@cflags.cc>2015-07-03 09:28:07 +0200
committerEdward Tjörnhammar <ed@cflags.cc>2015-07-03 09:32:14 +0200
commit6257425dabe7ad9190d7e5d5fab3d0bc5dad366e (patch)
tree1318a1ccf93a656752158bf6279290a635ac5466 /pkgs/os-specific/linux
parent8e16c57424c5462f0e4c842aac2b5f0c379559a5 (diff)
downloadnixlib-6257425dabe7ad9190d7e5d5fab3d0bc5dad366e.tar
nixlib-6257425dabe7ad9190d7e5d5fab3d0bc5dad366e.tar.gz
nixlib-6257425dabe7ad9190d7e5d5fab3d0bc5dad366e.tar.bz2
nixlib-6257425dabe7ad9190d7e5d5fab3d0bc5dad366e.tar.lz
nixlib-6257425dabe7ad9190d7e5d5fab3d0bc5dad366e.tar.xz
nixlib-6257425dabe7ad9190d7e5d5fab3d0bc5dad366e.tar.zst
nixlib-6257425dabe7ad9190d7e5d5fab3d0bc5dad366e.zip
linuxPackages.nvidia_x11_legacy340: fix cr4 references
Patch was copied from here:
https://devtalk.nvidia.com/default/topic/813458/linux-4-0-rc1-346-47-build-error-_cr4-functions-fix/

Reference to kernel change, also noted in the forum post:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/arch/x86/include/asm/paravirt.h?id=1e02ce4cccdcb9688386e5b8d2c9fa4660b45389
Diffstat (limited to 'pkgs/os-specific/linux')
-rw-r--r--pkgs/os-specific/linux/nvidia-x11/legacy340.nix2
-rw-r--r--pkgs/os-specific/linux/nvidia-x11/nvidia-340.76-kernel-4.0.patch28
2 files changed, 30 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/nvidia-x11/legacy340.nix b/pkgs/os-specific/linux/nvidia-x11/legacy340.nix
index 7fcdb40de03a..a53906ed0200 100644
--- a/pkgs/os-specific/linux/nvidia-x11/legacy340.nix
+++ b/pkgs/os-specific/linux/nvidia-x11/legacy340.nix
@@ -25,6 +25,8 @@ stdenv.mkDerivation {
 
   builder = ./builder-legacy340.sh;
 
+  patches = [ ./nvidia-340.76-kernel-4.0.patch ];
+
   src =
     if stdenv.system == "i686-linux" then
       fetchurl {
diff --git a/pkgs/os-specific/linux/nvidia-x11/nvidia-340.76-kernel-4.0.patch b/pkgs/os-specific/linux/nvidia-x11/nvidia-340.76-kernel-4.0.patch
new file mode 100644
index 000000000000..c959190023b7
--- /dev/null
+++ b/pkgs/os-specific/linux/nvidia-x11/nvidia-340.76-kernel-4.0.patch
@@ -0,0 +1,28 @@
+--- a/kernel/nv-pat.c	2015-07-03 08:39:35.417031728 +0200
++++ b/kernel/nv-pat.c	2015-07-03 08:42:15.631838988 +0200
+@@ -35,8 +35,13 @@
+     unsigned long cr0 = read_cr0();
+     write_cr0(((cr0 & (0xdfffffff)) | 0x40000000));
+     wbinvd();
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 20, 0)
+     *cr4 = read_cr4();
+     if (*cr4 & 0x80) write_cr4(*cr4 & ~0x80);
++#else
++    *cr4 = __read_cr4();
++    if (*cr4 & 0x80) __write_cr4(*cr4 & ~0x80);
++#endif
+     __flush_tlb();
+ }
+
+@@ -46,7 +51,11 @@
+     wbinvd();
+     __flush_tlb();
+     write_cr0((cr0 & 0x9fffffff));
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 20, 0)
+     if (cr4 & 0x80) write_cr4(cr4);
++#else
++    if (cr4 & 0x80) __write_cr4(cr4);
++#endif
+ }
+
+ static int nv_determine_pat_mode(void)