1 |
commit: 21f2f9477ccb35e04fefed3c0bc3d4c724ab0255 |
2 |
Author: Evan Teran <evan.teran <AT> gmail <DOT> com> |
3 |
AuthorDate: Wed Apr 5 14:49:40 2017 +0000 |
4 |
Commit: Evan Teran <evan.teran <AT> gmail <DOT> com> |
5 |
CommitDate: Wed Apr 5 14:49:40 2017 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/vmware.git/commit/?id=21f2f947 |
7 |
|
8 |
adding support for 4.9 kernels to vmware-modules 304 (workstation 11) |
9 |
|
10 |
.../files/304-4.9-00-get_user_pages.patch | 20 ++++ |
11 |
.../files/304-4.9-01-get_user_pages.patch | 20 ++++ |
12 |
.../vmware-modules/vmware-modules-304.4-r1.ebuild | 125 +++++++++++++++++++++ |
13 |
3 files changed, 165 insertions(+) |
14 |
|
15 |
diff --git a/app-emulation/vmware-modules/files/304-4.9-00-get_user_pages.patch b/app-emulation/vmware-modules/files/304-4.9-00-get_user_pages.patch |
16 |
new file mode 100644 |
17 |
index 0000000..9b7e0a4 |
18 |
--- /dev/null |
19 |
+++ b/app-emulation/vmware-modules/files/304-4.9-00-get_user_pages.patch |
20 |
@@ -0,0 +1,20 @@ |
21 |
+--- vmmon-only.bak/linux/hostif.c 2017-04-05 10:10:24.522070886 -0400 |
22 |
++++ vmmon-only/linux/hostif.c 2017-04-05 10:13:35.871077701 -0400 |
23 |
+@@ -1171,12 +1171,16 @@ HostIFGetUserPages(void *uvAddr, |
24 |
+ int retval; |
25 |
+ |
26 |
+ down_read(¤t->mm->mmap_sem); |
27 |
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0) |
28 |
++ retval = get_user_pages((unsigned long)uvAddr, numPages, 0, ppages, NULL); |
29 |
++#else |
30 |
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) |
31 |
+ retval = get_user_pages((unsigned long)uvAddr, |
32 |
+ #else |
33 |
+ retval = get_user_pages(current, current->mm, (unsigned long)uvAddr, |
34 |
+ #endif |
35 |
+ numPages, 0, 0, ppages, NULL); |
36 |
++#endif |
37 |
+ up_read(¤t->mm->mmap_sem); |
38 |
+ |
39 |
+ return retval != numPages; |
40 |
+ |
41 |
|
42 |
diff --git a/app-emulation/vmware-modules/files/304-4.9-01-get_user_pages.patch b/app-emulation/vmware-modules/files/304-4.9-01-get_user_pages.patch |
43 |
new file mode 100644 |
44 |
index 0000000..0858beb |
45 |
--- /dev/null |
46 |
+++ b/app-emulation/vmware-modules/files/304-4.9-01-get_user_pages.patch |
47 |
@@ -0,0 +1,20 @@ |
48 |
+diff -rupN vmnet-only.bak/userif.c vmnet-only/userif.c |
49 |
+--- vmnet-only.bak/userif.c 2017-04-05 10:44:29.166143701 -0400 |
50 |
++++ vmnet-only/userif.c 2017-04-05 10:45:46.443146453 -0400 |
51 |
+@@ -113,12 +113,16 @@ UserifLockPage(VA addr) // IN |
52 |
+ int retval; |
53 |
+ |
54 |
+ down_read(¤t->mm->mmap_sem); |
55 |
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0) |
56 |
++ retval = get_user_pages(addr, 1, FOLL_WRITE, &page, NULL); |
57 |
++#else |
58 |
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) |
59 |
+ retval = get_user_pages(addr, |
60 |
+ #else |
61 |
+ retval = get_user_pages(current, current->mm, addr, |
62 |
+ #endif |
63 |
+ 1, 1, 0, &page, NULL); |
64 |
++#endif |
65 |
+ up_read(¤t->mm->mmap_sem); |
66 |
+ |
67 |
+ if (retval != 1) { |
68 |
|
69 |
diff --git a/app-emulation/vmware-modules/vmware-modules-304.4-r1.ebuild b/app-emulation/vmware-modules/vmware-modules-304.4-r1.ebuild |
70 |
new file mode 100644 |
71 |
index 0000000..d50aedc |
72 |
--- /dev/null |
73 |
+++ b/app-emulation/vmware-modules/vmware-modules-304.4-r1.ebuild |
74 |
@@ -0,0 +1,125 @@ |
75 |
+# Copyright 1999-2016 Gentoo Foundation |
76 |
+# Distributed under the terms of the GNU General Public License v2 |
77 |
+# $Id$ |
78 |
+ |
79 |
+EAPI=5 |
80 |
+ |
81 |
+inherit eutils flag-o-matic linux-info linux-mod user versionator udev |
82 |
+ |
83 |
+PV_MAJOR=$(get_major_version) |
84 |
+PV_MINOR=$(get_version_component_range 2) |
85 |
+ |
86 |
+DESCRIPTION="VMware kernel modules" |
87 |
+HOMEPAGE="http://www.vmware.com/" |
88 |
+ |
89 |
+SRC_URI="" |
90 |
+ |
91 |
+LICENSE="GPL-2" |
92 |
+SLOT="0" |
93 |
+KEYWORDS="-* ~amd64" |
94 |
+IUSE="pax_kernel +vmci +vsock" |
95 |
+ |
96 |
+RDEPEND="" |
97 |
+DEPEND="${RDEPEND} |
98 |
+ || ( =app-emulation/vmware-player-7.1.${PV_MINOR}* |
99 |
+ =app-emulation/vmware-workstation-11.1.${PV_MINOR}* )" |
100 |
+ |
101 |
+S=${WORKDIR} |
102 |
+ |
103 |
+pkg_setup() { |
104 |
+ CONFIG_CHECK="~HIGH_RES_TIMERS" |
105 |
+ if kernel_is ge 2 6 37 && kernel_is lt 2 6 39; then |
106 |
+ CONFIG_CHECK="${CONFIG_CHECK} BKL" |
107 |
+ fi |
108 |
+ if use vmci ; then |
109 |
+ CONFIG_CHECK="${CONFIG_CHECK} !VMWARE_VMCI" |
110 |
+ else |
111 |
+ CONFIG_CHECK="${CONFIG_CHECK} VMWARE_VMCI" |
112 |
+ fi |
113 |
+ if use vsock ; then |
114 |
+ CONFIG_CHECK="${CONFIG_CHECK} !VMWARE_VMCI_VSOCKETS" |
115 |
+ else |
116 |
+ CONFIG_CHECK="${CONFIG_CHECK} VMWARE_VMCI_VSOCKETS" |
117 |
+ fi |
118 |
+ |
119 |
+ linux-info_pkg_setup |
120 |
+ |
121 |
+ linux-mod_pkg_setup |
122 |
+ |
123 |
+ VMWARE_GROUP=${VMWARE_GROUP:-vmware} |
124 |
+ |
125 |
+ VMWARE_MODULE_LIST_ALL="vmblock vmmon vmnet vmci vsock" |
126 |
+ VMWARE_MODULE_LIST="vmblock vmmon vmnet" |
127 |
+ use vmci && VMWARE_MODULE_LIST="${VMWARE_MODULE_LIST} vmci" |
128 |
+ use vsock && VMWARE_MODULE_LIST="${VMWARE_MODULE_LIST} vsock" |
129 |
+ |
130 |
+ VMWARE_MOD_DIR="${PN}-${PVR}" |
131 |
+ |
132 |
+ BUILD_TARGETS="auto-build KERNEL_DIR=${KERNEL_DIR} KBUILD_OUTPUT=${KV_OUT_DIR}" |
133 |
+ |
134 |
+ enewgroup "${VMWARE_GROUP}" |
135 |
+ filter-flags -mfpmath=sse |
136 |
+ |
137 |
+ for mod in ${VMWARE_MODULE_LIST}; do |
138 |
+ MODULE_NAMES="${MODULE_NAMES} ${mod}(misc:${S}/${mod}-only)" |
139 |
+ done |
140 |
+} |
141 |
+ |
142 |
+src_unpack() { |
143 |
+ cd "${S}" |
144 |
+ for mod in ${VMWARE_MODULE_LIST_ALL}; do |
145 |
+ tar -xf /opt/vmware/lib/vmware/modules/source/${mod}.tar |
146 |
+ done |
147 |
+} |
148 |
+ |
149 |
+src_prepare() { |
150 |
+ epatch "${FILESDIR}/${PV_MAJOR}-makefile-kernel-dir.patch" |
151 |
+ epatch "${FILESDIR}/${PV_MAJOR}-makefile-include.patch" |
152 |
+ epatch "${FILESDIR}/${PV_MAJOR}-netdevice.patch" |
153 |
+ use pax_kernel && epatch "${FILESDIR}/${PV_MAJOR}-hardened.patch" |
154 |
+ epatch "${FILESDIR}/${PV_MAJOR}-apic.patch" |
155 |
+ |
156 |
+ kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-00-dentry.patch" |
157 |
+ kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-01-inode.patch" |
158 |
+ kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-02-control.patch" |
159 |
+ kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-03-inline.patch" |
160 |
+ kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.11-00-readdir.patch" |
161 |
+ kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.11-01-filldir.patch" |
162 |
+ kernel_is ge 3 15 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.15-00-vsock.patch" |
163 |
+ kernel_is ge 3 18 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.18-00-version-redefined.patch" |
164 |
+ kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-00-compat-namei.patch" |
165 |
+ #kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-01-dentry.patch" |
166 |
+ kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-02-vmblock-path.patch" |
167 |
+ #kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-03-iovec.patch" |
168 |
+ kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-04-iovec.patch" |
169 |
+ kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-05-vmci_qpair.patch" |
170 |
+ kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-06-vsock.patch" |
171 |
+ kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-07-vsock.patch" |
172 |
+ kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-00-inode_op.patch" |
173 |
+ kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-01-vmci_vmalloc.patch" |
174 |
+ kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-02-vsock.patch" |
175 |
+ kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-03-vsock.patch" |
176 |
+ kernel_is ge 4 3 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.3-00-misc_deregister.patch" |
177 |
+ kernel_is ge 4 5 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.5-00-get_link.patch" |
178 |
+ kernel_is ge 4 6 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.6-00-user-pages.patch" |
179 |
+ kernel_is ge 4 7 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.7-00-trans_start.patch" |
180 |
+ kernel_is ge 4 7 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.7-01-readlink_copy.patch" |
181 |
+ kernel_is ge 4 8 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.8-00-nr_anon_mapped.patch" |
182 |
+ kernel_is ge 4 9 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.9-00-get_user_pages.patch" |
183 |
+ kernel_is ge 4 9 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.9-01-get_user_pages.patch" |
184 |
+ |
185 |
+ # Allow user patches so they can support RC kernels and whatever else |
186 |
+ epatch_user |
187 |
+} |
188 |
+ |
189 |
+src_install() { |
190 |
+ linux-mod_src_install |
191 |
+ local udevrules="${T}/60-vmware.rules" |
192 |
+ cat > "${udevrules}" <<-EOF |
193 |
+ KERNEL=="vmci", GROUP="vmware", MODE="660" |
194 |
+ KERNEL=="vmw_vmci", GROUP="vmware", MODE="660" |
195 |
+ KERNEL=="vmmon", GROUP="vmware", MODE="660" |
196 |
+ KERNEL=="vsock", GROUP="vmware", MODE="660" |
197 |
+ EOF |
198 |
+ udev_dorules "${udevrules}" |
199 |
+} |