diff --git a/pkgs/os-specific/linux/ati-drivers/default.nix b/pkgs/os-specific/linux/ati-drivers/default.nix index 902f0e37e35f..3bfd59de7ed6 100644 --- a/pkgs/os-specific/linux/ati-drivers/default.nix +++ b/pkgs/os-specific/linux/ati-drivers/default.nix @@ -73,8 +73,11 @@ stdenv.mkDerivation rec { ./patches/15.9-kcl_str.patch ./patches/15.9-mtrr.patch ./patches/15.9-preempt.patch - ./patches/15.9-sep_printf.patch - ]; + ./patches/15.9-sep_printf.patch ] + ++ optionals ( kernel != null && + (builtins.compareVersions kernel.version "4.6") >= 0 ) + [ ./patches/kernel-4.6-get_user_pages.patch + ./patches/kernel-4.6-page_cache_release-put_page.patch ]; buildInputs = [ xorg.libXrender xorg.libXext xorg.libX11 xorg.libXinerama xorg.libSM diff --git a/pkgs/os-specific/linux/ati-drivers/patches/kernel-4.6-get_user_pages.patch b/pkgs/os-specific/linux/ati-drivers/patches/kernel-4.6-get_user_pages.patch new file mode 100644 index 000000000000..1e7209ed5ed1 --- /dev/null +++ b/pkgs/os-specific/linux/ati-drivers/patches/kernel-4.6-get_user_pages.patch @@ -0,0 +1,25 @@ +diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c +index 9c70211..b2242af 100755 +--- a/common/lib/modules/fglrx/build_mod/firegl_public.c ++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c +@@ -3220,7 +3220,7 @@ int ATI_API_CALL KCL_LockUserPages(unsigned long vaddr, unsigned long* page_list + int ret; + + down_read(¤t->mm->mmap_sem); +- ret = get_user_pages(current, current->mm, vaddr, page_cnt, 1, 0, (struct page **)page_list, NULL); ++ ret = get_user_pages(vaddr, page_cnt, 1, 0, (struct page **)page_list, NULL); + up_read(¤t->mm->mmap_sem); + + return ret; +@@ -3238,7 +3238,7 @@ int ATI_API_CALL KCL_LockReadOnlyUserPages(unsigned long vaddr, unsigned long* p + int ret; + + down_read(¤t->mm->mmap_sem); +- ret = get_user_pages(current, current->mm, vaddr, page_cnt, 0, 0, (struct page **)page_list, NULL); ++ ret = get_user_pages(vaddr, page_cnt, 0, 0, (struct page **)page_list, NULL); + up_read(¤t->mm->mmap_sem); + + return ret; +-- +2.9.2 + diff --git a/pkgs/os-specific/linux/ati-drivers/patches/kernel-4.6-page_cache_release-put_page.patch b/pkgs/os-specific/linux/ati-drivers/patches/kernel-4.6-page_cache_release-put_page.patch new file mode 100644 index 000000000000..28820790e492 --- /dev/null +++ b/pkgs/os-specific/linux/ati-drivers/patches/kernel-4.6-page_cache_release-put_page.patch @@ -0,0 +1,16 @@ +diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c +index b2242af..586129c 100755 +--- a/common/lib/modules/fglrx/build_mod/firegl_public.c ++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c +@@ -3249,7 +3249,7 @@ void ATI_API_CALL KCL_UnlockUserPages(unsigned long* page_list, unsigned int pag + unsigned int i; + for (i=0; i