diff options
author | Fabio Rossi <rossi.f@inwind.it> | 2017-02-25 00:57:43 +0100 |
---|---|---|
committer | Fabio Rossi <rossi.f@inwind.it> | 2017-02-25 00:57:43 +0100 |
commit | de0399990b57345de18693f42b68238de6b38e8c (patch) | |
tree | f658fa764b519085143d34e8dee8116486bc78be /app-emulation/vmware-modules | |
parent | Merge branch 'baergj-z/baergj/kernel_4.9' (diff) | |
download | vmware-de0399990b57345de18693f42b68238de6b38e8c.tar.gz vmware-de0399990b57345de18693f42b68238de6b38e8c.tar.bz2 vmware-de0399990b57345de18693f42b68238de6b38e8c.zip |
app-emulation/vmware-modules: added support up to kernel 4.10
* Split the patch for kernel 4.6 in two parts, the first one has been
modified to be compatible with the changes in the next module 308.5.2
(so it's possible to share a single patch between 308.1 and 308.5)
* Fixed the patch for kernel 4.9 to be shared between 308.1 and 308.5
* Added patch for kernel 4.10 (https://github.com/gentoo/vmware/pull/29)
Diffstat (limited to 'app-emulation/vmware-modules')
-rw-r--r-- | app-emulation/vmware-modules/files/308-4.06-00-user-pages-p1.patch (renamed from app-emulation/vmware-modules/files/308-4.06-00-user-pages.patch) | 62 | ||||
-rw-r--r-- | app-emulation/vmware-modules/files/308-4.06-00-user-pages-p2.patch | 28 | ||||
-rw-r--r-- | app-emulation/vmware-modules/files/308-4.09-00-user-pages.patch | 116 | ||||
-rw-r--r-- | app-emulation/vmware-modules/files/308-4.10-00-generic_readlink.patch | 14 | ||||
-rw-r--r-- | app-emulation/vmware-modules/vmware-modules-308.1.1.ebuild | 4 |
5 files changed, 120 insertions, 104 deletions
diff --git a/app-emulation/vmware-modules/files/308-4.06-00-user-pages.patch b/app-emulation/vmware-modules/files/308-4.06-00-user-pages-p1.patch index dc677c2..9012176 100644 --- a/app-emulation/vmware-modules/files/308-4.06-00-user-pages.patch +++ b/app-emulation/vmware-modules/files/308-4.06-00-user-pages-p1.patch @@ -4,81 +4,65 @@ int retval; down_read(¤t->mm->mmap_sem); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) -+ retval = get_user_pages(addr, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) ++ retval = get_user_pages(addr, 1, 1, 0, &page, NULL); +#else retval = get_user_pages(current, current->mm, addr, -+#endif 1, 1, 0, &page, NULL); ++#endif up_read(¤t->mm->mmap_sem); --- ./vmci-only/linux/vmciKernelIf.c.old 2016-05-19 18:57:04.344658673 +0200 +++ ./vmci-only/linux/vmciKernelIf.c 2016-05-19 19:03:28.600680159 +0200 -@@ -1835,7 +1835,11 @@ - if (dirty) { - set_page_dirty(pages[i]); - } -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) -+ put_page(pages[i]); -+#else - page_cache_release(pages[i]); -+#endif - pages[i] = NULL; - } - } -@@ -2049,9 +2053,13 @@ +@@ -2049,6 +2049,13 @@ int err = VMCI_SUCCESS; down_write(¤t->mm->mmap_sem); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) + retval = get_user_pages((VA)produceUVA, ++ produceQ->kernelIf->numPages, ++ 1, 0, ++ produceQ->kernelIf->u.h.headerPage, ++ NULL); +#else retval = get_user_pages(current, current->mm, (VA)produceUVA, -+#endif - produceQ->kernelIf->numPages, +@@ -2056,6 +2063,7 @@ 1, 0, produceQ->kernelIf->u.h.headerPage, -@@ -2063,9 +2071,13 @@ - goto out; - } - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) -+ retval = get_user_pages((VA)consumeUVA, -+#else - retval = get_user_pages(current, - current->mm, - (VA)consumeUVA, + NULL); +#endif - consumeQ->kernelIf->numPages, - 1, 0, - consumeQ->kernelIf->u.h.headerPage, + if (retval < produceQ->kernelIf->numPages) { + Log("get_user_pages(produce) failed (retval=%d)\n", retval); + VMCIReleasePages(produceQ->kernelIf->u.h.headerPage, retval, FALSE); --- ./vmmon-only/linux/hostif.c.old 2016-05-19 18:50:42.872637343 +0200 +++ ./vmmon-only/linux/hostif.c 2016-05-19 18:53:40.208647259 +0200 @@ -1163,7 +1163,11 @@ int retval; down_read(¤t->mm->mmap_sem); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) -+ retval = get_user_pages((unsigned long)uvAddr, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) ++ retval = get_user_pages((unsigned long)uvAddr, numPages, 0, 0, ppages, NULL); +#else retval = get_user_pages(current, current->mm, (unsigned long)uvAddr, -+#endif numPages, 0, 0, ppages, NULL); ++#endif up_read(¤t->mm->mmap_sem); --- ./vmnet-only/userif.c.old 2016-05-19 18:52:45.904644222 +0200 +++ ./vmnet-only/userif.c 2016-05-19 18:53:28.599646610 +0200 -@@ -113,7 +113,11 @@ +@@ -113,8 +113,12 @@ int retval; down_read(¤t->mm->mmap_sem); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) -+ retval = get_user_pages(addr, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) ++ retval = get_user_pages(addr, 1, 1, 0, &page, NULL); +#else retval = get_user_pages(current, current->mm, addr, +- 1, 1, 0, &page, NULL); ++ 1, 1, 0, &page, NULL); +#endif - 1, 1, 0, &page, NULL); up_read(¤t->mm->mmap_sem); + if (retval != 1) { diff --git a/app-emulation/vmware-modules/files/308-4.06-00-user-pages-p2.patch b/app-emulation/vmware-modules/files/308-4.06-00-user-pages-p2.patch new file mode 100644 index 0000000..14605d1 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-4.06-00-user-pages-p2.patch @@ -0,0 +1,28 @@ +--- ./vmci-only/linux/vmciKernelIf.c.old 2016-05-19 18:57:04.344658673 +0200 ++++ ./vmci-only/linux/vmciKernelIf.c 2016-05-19 19:03:28.600680159 +0200 +@@ -1835,7 +1835,11 @@ + if (dirty) { + set_page_dirty(pages[i]); + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) ++ put_page(pages[i]); ++#else + page_cache_release(pages[i]); ++#endif + pages[i] = NULL; + } + } +@@ -2063,9 +2067,13 @@ + goto out; + } + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) ++ retval = get_user_pages((VA)consumeUVA, ++#else + retval = get_user_pages(current, + current->mm, + (VA)consumeUVA, ++#endif + consumeQ->kernelIf->numPages, + 1, 0, + consumeQ->kernelIf->u.h.headerPage, diff --git a/app-emulation/vmware-modules/files/308-4.09-00-user-pages.patch b/app-emulation/vmware-modules/files/308-4.09-00-user-pages.patch index 73c6c9f..1790f73 100644 --- a/app-emulation/vmware-modules/files/308-4.09-00-user-pages.patch +++ b/app-emulation/vmware-modules/files/308-4.09-00-user-pages.patch @@ -1,77 +1,65 @@ ---- vmmon-only/linux/hostif.c 2016-12-12 09:17:44.438182532 -0700 -+++ vmmon-only/linux/hostif.c 2016-12-12 09:19:24.066254301 -0700 -@@ -1172,7 +1172,11 @@ - #else - retval = get_user_pages(current, current->mm, (unsigned long)uvAddr, - #endif -- numPages, 0, 0, ppages, NULL); -+ numPages, 0, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) -+ 0, -+#endif -+ ppages, NULL); - up_read(¤t->mm->mmap_sem); - - return retval != numPages; ---- vmnet-only/userif.c 2016-12-12 09:27:12.445246854 -0700 -+++ vmnet-only/userif.c 2016-12-12 09:27:30.654298646 -0700 -@@ -118,7 +118,13 @@ - #else - retval = get_user_pages(current, current->mm, addr, - #endif -- 1, 1, 0, &page, NULL); -+ 1, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) -+ 1, 0, -+#else -+ FOLL_WRITE, -+#endif -+ &page, NULL); - up_read(¤t->mm->mmap_sem); - - if (retval != 1) { ---- vmci-only/linux/driver.c 2016-12-12 09:38:13.076847013 -0700 -+++ vmci-only/linux/driver.c 2016-12-12 09:38:45.638087445 -0700 -@@ -1473,7 +1473,13 @@ - #else - retval = get_user_pages(current, current->mm, addr, - #endif -- 1, 1, 0, &page, NULL); -+ 1, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) -+ 1, 0, -+#else -+ FOLL_WRITE, -+#endif -+ &page, NULL); - up_read(¤t->mm->mmap_sem); - - if (retval != 1) { ---- vmci-only/linux/vmciKernelIf.c 2016-12-12 09:38:20.678904322 -0700 -+++ vmci-only/linux/vmciKernelIf.c 2016-12-12 09:39:59.129587451 -0700 -@@ -2061,7 +2061,11 @@ - (VA)produceUVA, - #endif +--- ./vmci-only/linux/vmciKernelIf.c 2017-02-23 12:19:59.706822502 +0100 ++++ ./vmci-only/linux/vmciKernelIf.c.new 2017-02-23 13:12:09.382997502 +0100 +@@ -2056,7 +2056,11 @@ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) + retval = get_user_pages((VA)produceUVA, produceQ->kernelIf->numPages, -- 1, 0, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) -+ 1, 0, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0) ++ FOLL_WRITE, +#else -+ FOLL_WRITE, + 1, 0, +#endif produceQ->kernelIf->u.h.headerPage, NULL); - if (retval < produceQ->kernelIf->numPages) { -@@ -2079,7 +2083,11 @@ + #else +@@ -2083,7 +2087,11 @@ (VA)consumeUVA, #endif consumeQ->kernelIf->numPages, -- 1, 0, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) -+ 1, 0, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0) ++ FOLL_WRITE, +#else -+ FOLL_WRITE, + 1, 0, +#endif consumeQ->kernelIf->u.h.headerPage, NULL); if (retval < consumeQ->kernelIf->numPages) { +--- ./vmci-only/linux/driver.c 2017-02-23 12:19:59.645822499 +0100 ++++ ./vmci-only/linux/driver.c.new 2017-02-23 12:30:38.845858240 +0100 +@@ -1468,7 +1468,9 @@ + int retval; + + down_read(¤t->mm->mmap_sem); +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0) ++ retval = get_user_pages(addr, 1, FOLL_WRITE, &page, NULL); ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) + retval = get_user_pages(addr, 1, 1, 0, &page, NULL); + #else + retval = get_user_pages(current, current->mm, addr, +--- ./vmnet-only/userif.c 2017-02-23 12:29:00.909852764 +0100 ++++ ./vmnet-only/userif.c.new 2017-02-23 12:28:51.309852227 +0100 +@@ -113,7 +113,9 @@ + int retval; + + down_read(¤t->mm->mmap_sem); +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0) ++ retval = get_user_pages(addr, 1, FOLL_WRITE, &page, NULL); ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) + retval = get_user_pages(addr, 1, 1, 0, &page, NULL); + #else + retval = get_user_pages(current, current->mm, addr, +--- ./vmmon-only/linux/hostif.c 2017-02-23 12:19:59.772822506 +0100 ++++ ./vmmon-only/linux/hostif.c.new 2017-02-23 12:26:42.661845034 +0100 +@@ -1167,7 +1167,9 @@ + int retval; + + down_read(¤t->mm->mmap_sem); +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0) ++ retval = get_user_pages((unsigned long)uvAddr, numPages, 0, ppages, NULL); ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) + retval = get_user_pages((unsigned long)uvAddr, numPages, 0, 0, ppages, NULL); + #else + retval = get_user_pages(current, current->mm, (unsigned long)uvAddr, diff --git a/app-emulation/vmware-modules/files/308-4.10-00-generic_readlink.patch b/app-emulation/vmware-modules/files/308-4.10-00-generic_readlink.patch new file mode 100644 index 0000000..ab22a75 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-4.10-00-generic_readlink.patch @@ -0,0 +1,14 @@ +--- vmblock-only/linux/inode.c 2017-02-21 08:38:50.844678686 -0700 ++++ vmblock-only/linux/inode.c 2017-02-21 08:59:40.557917497 -0700 +@@ -207,8 +207,10 @@ + return vfs_readlink(dentry, buffer, buflen, iinfo->name); + #elif LINUX_VERSION_CODE <= KERNEL_VERSION(4, 6, 99) + return readlink_copy(buffer, buflen, iinfo->name); +-#else ++#elif LINUX_VERSION_CODE <= KERNEL_VERSION(4, 9, 99) + return generic_readlink(dentry, buffer, buflen); ++#else ++ return vfs_readlink(dentry, buffer, buflen); + #endif + } + diff --git a/app-emulation/vmware-modules/vmware-modules-308.1.1.ebuild b/app-emulation/vmware-modules/vmware-modules-308.1.1.ebuild index bb9db4f..1e4eebb 100644 --- a/app-emulation/vmware-modules/vmware-modules-308.1.1.ebuild +++ b/app-emulation/vmware-modules/vmware-modules-308.1.1.ebuild @@ -101,11 +101,13 @@ src_prepare() { kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.02-01-sk_alloc.patch" kernel_is ge 4 3 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.03-00-vmci-misc_deregister.patch" kernel_is ge 4 5 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.05-00-vmblock-follow_link.patch" - kernel_is ge 4 6 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.06-00-user-pages.patch" + kernel_is ge 4 6 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.06-00-user-pages-p1.patch" + kernel_is ge 4 6 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.06-00-user-pages-p2.patch" kernel_is ge 4 7 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.07-00-trans_start.patch" kernel_is ge 4 7 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.07-01-readlink_copy.patch" kernel_is ge 4 8 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.08-00-nr_anon_mapped.patch" kernel_is ge 4 9 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.09-00-user-pages.patch" + kernel_is ge 4 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.10-00-generic_readlink.patch" # Allow user patches so they can support RC kernels and whatever else epatch_user |