From 7bc91ffe41d6c4adaa2a778dcf1526caa0f8677b Mon Sep 17 00:00:00 2001 From: Matt McHenry Date: Tue, 30 Aug 2016 22:28:01 -0400 Subject: [PATCH] patch ati-drivers for kernel 4.6 this uses the patch from https://github.com/manjaro/packages-extra/commit/ddae91f2 to account for https://github.com/torvalds/linux/commit/d4edcf0d and the patch from https://www.virtualbox.org/ticket/15298 to account for https://github.com/torvalds/linux/commit/09cbfeaf --- .../os-specific/linux/ati-drivers/default.nix | 7 ++++-- .../patches/kernel-4.6-get_user_pages.patch | 25 +++++++++++++++++++ ...rnel-4.6-page_cache_release-put_page.patch | 16 ++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 pkgs/os-specific/linux/ati-drivers/patches/kernel-4.6-get_user_pages.patch create mode 100644 pkgs/os-specific/linux/ati-drivers/patches/kernel-4.6-page_cache_release-put_page.patch diff --git a/pkgs/os-specific/linux/ati-drivers/default.nix b/pkgs/os-specific/linux/ati-drivers/default.nix index e5eb9b8c6c3c..6da46d1e1eb9 100644 --- a/pkgs/os-specific/linux/ati-drivers/default.nix +++ b/pkgs/os-specific/linux/ati-drivers/default.nix @@ -71,8 +71,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