ati-drivers: update to Catalyst 15.7 and fix build with recent kernels

+66 -36
+4 -1
pkgs/os-specific/linux/ati-drivers/builder.sh
··· 7 die(){ echo $@; exit 1; } 8 9 # custom unpack: 10 unzip $src 11 - run_file=$(echo fglrx-*/amd-driver-installer-*) 12 sh $run_file --extract . 13 14 eval "$patchPhase"
··· 7 die(){ echo $@; exit 1; } 8 9 # custom unpack: 10 + mkdir fglrx 11 + cd fglrx 12 unzip $src 13 + cd .. 14 + run_file=$(echo fglrx/amd-driver-installer-*) 15 sh $run_file --extract . 16 17 eval "$patchPhase"
+4 -4
pkgs/os-specific/linux/ati-drivers/default.nix
··· 31 with stdenv.lib; 32 33 stdenv.mkDerivation { 34 - name = "ati-drivers-14.12" + (optionalString (!libsOnly) "-${kernel.version}"); 35 36 builder = ./builder.sh; 37 ··· 39 gcc = stdenv.cc.cc; 40 41 src = fetchurl { 42 - url = http://www2.ati.com/drivers/linux/amd-catalyst-omega-14.12-linux-run-installers.zip; 43 - sha256 = "0jd2scrdlyapynxfjdrarnwcdzxjqrk5fg5i10g3bm0ay8v9hrk8"; 44 curlOpts = "--referer http://support.amd.com/en-us/download/desktop?os=Linux%20x86_64"; 45 }; 46 47 - patchPhase = "patch -p1 < ${./fglrx_3.17rc6-no_hotplug.patch}"; 48 patchPhaseSamples = "patch -p2 < ${./patch-samples.patch}"; 49 50 buildInputs =
··· 31 with stdenv.lib; 32 33 stdenv.mkDerivation { 34 + name = "ati-drivers-15.7" + (optionalString (!libsOnly) "-${kernel.version}"); 35 36 builder = ./builder.sh; 37 ··· 39 gcc = stdenv.cc.cc; 40 41 src = fetchurl { 42 + url = "http://www2.ati.com/drivers/linux/amd-driver-installer-15.20.1046-x86.x86_64.zip"; 43 + sha256 = "ffde64203f49d9288eaa25f4d744187b6f4f14a87a444bab6a001d822b327a9d"; 44 curlOpts = "--referer http://support.amd.com/en-us/download/desktop?os=Linux%20x86_64"; 45 }; 46 47 + patchPhase = "patch -p1 < ${./fglrx_3.18.19-no_hotplug_underscore_cr4.patch}"; 48 patchPhaseSamples = "patch -p2 < ${./patch-samples.patch}"; 49 50 buildInputs =
-31
pkgs/os-specific/linux/ati-drivers/fglrx_3.17rc6-no_hotplug.patch
··· 1 - source: https://aur.archlinux.org/packages/catalyst/ 2 - 3 - diff -uNr 14.9/common/lib/modules/fglrx/build_mod/firegl_public.c 14.9/common/lib/modules/fglrx/build_mod/firegl_public.c 4 - --- 14.9/common/lib/modules/fglrx/build_mod/firegl_public.c 2014-09-09 16:10:17.000000000 +0200 5 - +++ 14.9/common/lib/modules/fglrx/build_mod/firegl_public.c 2014-09-26 19:01:44.000000000 +0200 6 - @@ -1093,6 +1093,9 @@ 7 - // directly here to allow suspend/resume without X server start. 8 - firegl_pci_save_state((KCL_PCI_DevHandle)pdev, privdev); 9 - pci_disable_device(pdev); 10 - +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0) 11 - + pci_ignore_hotplug(pdev); 12 - +#endif 13 - PMSG_EVENT(pdev->dev.power.power_state) = state; 14 - } 15 - else 16 - diff -uNr 14.9/common/lib/modules/fglrx/build_mod/kcl_acpi.c 14.9/common/lib/modules/fglrx/build_mod/kcl_acpi.c 17 - --- 14.9/common/lib/modules/fglrx/build_mod/kcl_acpi.c 2014-09-09 16:10:17.000000000 +0200 18 - +++ 14.9/common/lib/modules/fglrx/build_mod/kcl_acpi.c 2014-09-26 18:57:27.000000000 +0200 19 - @@ -840,10 +840,12 @@ 20 - if(tdev != NULL) 21 - { 22 - device = (acpi_device_adr(tdev) >> 16) & 0xffff; 23 - +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0) 24 - if(PCI_SLOT(pdev->devfn) == device) 25 - { 26 - tdev->flags.no_hotplug = true; 27 - } 28 - +#endif 29 - } 30 - #endif 31 - return 0;
···
+58
pkgs/os-specific/linux/ati-drivers/fglrx_3.18.19-no_hotplug_underscore_cr4.patch
···
··· 1 + diff -Nru 15.7/common/lib/modules/fglrx/build_mod/firegl_public.c 15.7.new/common/lib/modules/fglrx/build_mod/firegl_public.c 2 + --- 15.7/common/lib/modules/fglrx/build_mod/firegl_public.c 2015-07-04 10:31:23.000000000 -0400 3 + +++ 15.7.new/common/lib/modules/fglrx/build_mod/firegl_public.c 2015-08-02 19:47:04.123014897 -0400 4 + @@ -4498,8 +4498,8 @@ 5 + 6 + if (cpu_has_pge) 7 + { 8 + - cr4 = read_cr4(); 9 + - write_cr4(cr4 & ~X86_CR4_PGE); 10 + + cr4 = __read_cr4(); 11 + + __write_cr4(cr4 & ~X86_CR4_PGE); 12 + } 13 + __flush_tlb(); 14 + 15 + @@ -4512,7 +4512,7 @@ 16 + write_cr0(cr0 & 0xbfffffff); 17 + if (cpu_has_pge) 18 + { 19 + - write_cr4(cr4); 20 + + __write_cr4(cr4); 21 + } 22 + local_irq_restore(flags); 23 + 24 + @@ -4539,8 +4539,8 @@ 25 + 26 + if (cpu_has_pge) 27 + { 28 + - cr4 = read_cr4(); 29 + - write_cr4(cr4 & ~X86_CR4_PGE); 30 + + cr4 = __read_cr4(); 31 + + __write_cr4(cr4 & ~X86_CR4_PGE); 32 + } 33 + __flush_tlb(); 34 + 35 + @@ -4552,7 +4552,7 @@ 36 + write_cr0(cr0 & 0xbfffffff); 37 + if (cpu_has_pge) 38 + { 39 + - write_cr4(cr4); 40 + + __write_cr4(cr4); 41 + } 42 + local_irq_restore(flags); 43 + 44 + diff -Nru 15.7/common/lib/modules/fglrx/build_mod/kcl_acpi.c 15.7.new/common/lib/modules/fglrx/build_mod/kcl_acpi.c 45 + --- 15.7/common/lib/modules/fglrx/build_mod/kcl_acpi.c 2015-07-04 10:31:23.000000000 -0400 46 + +++ 15.7.new/common/lib/modules/fglrx/build_mod/kcl_acpi.c 2015-08-02 19:59:54.797911610 -0400 47 + @@ -861,7 +861,10 @@ 48 + #elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0) 49 + if(pdev) 50 + { 51 + - pci_ignore_hotplug(pdev); 52 + + struct pci_dev *bridge = pdev->bus->self; 53 + + 54 + + pdev->ignore_hotplug = 1; 55 + + if(bridge) bridge->ignore_hotplug = 1; 56 + } 57 + #endif 58 + }