diff options
author | 2019-03-14 16:16:11 -0500 | |
---|---|---|
committer | 2019-03-14 16:16:11 -0500 | |
commit | fbccbf2a4ea3a92e761fa9bd00138a1ecb76d7c5 (patch) | |
tree | e2ee6addda9d196557ed5f429d1f971a5f6241c2 /app-emulation | |
parent | Add leiningen-bin-2.9.1 (diff) | |
download | sattvik-fbccbf2a4ea3a92e761fa9bd00138a1ecb76d7c5.tar.gz sattvik-fbccbf2a4ea3a92e761fa9bd00138a1ecb76d7c5.tar.bz2 sattvik-fbccbf2a4ea3a92e761fa9bd00138a1ecb76d7c5.zip |
Import latest vmware-{modules,workstation} from stefantalpalaru-overlay
Signed-off-by: Daniel Solano <gentoo@sattvik.com>
Diffstat (limited to 'app-emulation')
17 files changed, 400 insertions, 1121 deletions
diff --git a/app-emulation/vmware-modules/Manifest b/app-emulation/vmware-modules/Manifest index 79428df..c09042d 100644 --- a/app-emulation/vmware-modules/Manifest +++ b/app-emulation/vmware-modules/Manifest @@ -2,15 +2,15 @@ AUX 329-00-vmmon-quick-workaround-for-objtool-warnings.patch 1555 BLAKE2B dd4a58 AUX 329-01-vmmon-fix-always_inline-attribute-usage.patch 1204 BLAKE2B faa201beb42ac4a04f660aa99d9cad76c12f47048b49f3c48f6932ec367ffebb9e94c5f06fd0957fb8451c183e6bf21954ce88c04910969f80370c2c85e1024b SHA512 b3ab5a62936bc1bed997f84401df998097062ca2b7425dcc2d01191c9b49ddafcee36e859b1bcd60de0d532c1c597aba2b406d6f90062674d5fe54c1534e3235 AUX 329-02-vmmon-fix-indirect-call-with-retpoline-build.patch 1829 BLAKE2B 6b2efbd868cd3ecf9bbd5e9781d9e85fa733b5919b66040e9c6cdf9f65bf5c5aabb43e52af9cd224481fc60943df546b2812ae17a65bbb476651ec399194ac4f SHA512 6ea044d1b9096b48fa3825f474a758aa67698753646e62dd83d427bfbf8ebd2168c9d0130a35b4ee81391c3ce4d4459cee39f0354469d0485d30118b50f3463c AUX 329-03-vmmon-check-presence-of-file_operations-poll.patch 2755 BLAKE2B 9a03511a0068d76574ccc7f5dd32c016477a7ede3c319c31cc4212960258aa3ba28edde655101ee39e441322e5a13dce1d6360c22c21f1ead29666f821f0445f SHA512 7dd424858cff634987323052ed331652e6399911c0389c8077109a91407fd549a47ebb222ffc449d42f4f816a54d682778863fe3488dd47b3bfcbfef1064f876 +AUX 329-04-modules-replace-SUBDIRS-with-M.patch 1513 BLAKE2B 6a9ee2fbfec63d669428049fec651dd5d4b5d4ba3043d13f69becb38be85e291fd4634193bcc35e1baf1a2935c5d565dd4396ab2a18e1d79f7e4fafa4b93c0f6 SHA512 d6c913be232d0e6758ade413e809a817b5ce906cb927539e9f6c08accb4c5de968815c1013d0e787483ef94a7a4d866d182b400ceb6fbe778fe9bfc48f690892 +AUX 329-05-vmmon-totalram_pages-is-a-function-since-5.0.patch 1614 BLAKE2B 72bccaf64551fb6e00397fe5b906ffaa4d865b1b97dab6b58064a3063611e6bff0d7e7085da8b4b07ee70e7d7dee1390e5fd2be75a4ee3daf69dce6c4d1bf341 SHA512 5ac103535292bc32d32daffd1669607f1d4c103b1a9243900df136fa19b6abdf10dbbf42f271f4a985e741206bfcb62eefe6457f568400e017b7307bf0d5fd94 +AUX 329-06-vmmon-bring-back-the-do_gettimeofday-helper.patch 1593 BLAKE2B c37009ba5147d4554846c9cddbf01a359c40d1b970d4261d5a98503ea93032b20263e9b9ddbe201d018ad5b9d69f00149838a2f68d99ada9f5043d7a4622f029 SHA512 ff049665bf29a4a76d8d16c60647859509b118c18ba3d5f56368ae4801c18a3a41149646c6277431e42baec620a354462245dfe7f069f39cb0a722d3dbd2e1a6 +AUX 329-07-modules-handle-access_ok-with-two-arguments.patch 2558 BLAKE2B db24524060d263ff295d9eff1f05f17ef5c3c495f7f46389b83190a7d693e33fdded23e215afffa0d3146649ff86b47e647f66d99dc6f3aed6a6bbd907e9caef SHA512 434654ac8eac96eb78e725161895d044c2d933045e3c9e74f4e067f4a0558998d7af9d72293337c39b76a363c8d511911d118115daa339be777751af483ea408 AUX 329-4.09-00-vmnet-use-standard-definition-of-PCI_VENDOR_ID_VMWAR.patch 1169 BLAKE2B 4e5a74961ff512748375bd1d90a6670fc519c2c4c0be94f89d14fdf39e4922b057ae2baa38d07d34aca9ec897b012c4b9326dfd51a44235418919708b789895e SHA512 727fb97a63399d7c19238ae864a38cf2297adccb466fc2deba2a72f0592eb655f653d3c8e45dac06bbd0e09fc71a59a8bfea491b7580b37d41d0729f6adc023d AUX 329-4.10-00-vmnet-use-standard-definition-of-PCI_VENDOR_ID_VMWAR.patch 1131 BLAKE2B 1e07b4a15ff1180349348d84efb606c223f5cfa4accdcc0e1a41c8a0de52fb186bddd3c6cd3f5f48041c52ad2c29110726197f1d9352bd87caf4e646c4c4c001 SHA512 192d6a9a14757706f1c9345ff45592a559729619627a32c9f0a1d7203e60881312a4d0fc92ff750c8ff5b5350cf1a2b55238c16973e9c7eb4c2cfe2966abe7d1 AUX 329-4.12-00-vmmon-use-standard-definition-of-MSR_MISC_FEATURES_E.patch 1603 BLAKE2B 4eea61a743cb443e4a4c22a02a03410adbae66339ac7ed1c1aafe54e447135c1ed976ce3c97f22db9984926de9b9a09b1820e253978f457c0c2b9d22f8e4c59b SHA512 4413cd5e791dd19c4b47ba2178e386160912882b0e1a549151eafcceae484b5e48f527ee45b14584c98e06c11e28ee5bfef34b318e46b45704fbcf93a7b52b56 AUX 329-4.13-00-vmmon-use-standard-definition-of-CR3_PCID_MASK-if-av.patch 1167 BLAKE2B b5c1c4d98d2aed5bb473270ea9b5737da05bab45748aa84b0a83c26abf8d826960ff3251132ae2770bf87168bfb9c01ab7c81ec99036af576ca3fa0eb08b36e2 SHA512 1cf13f9c745bcfcf24ac1e8f762d057f1afde46ec1de4e651a07e63e08d9073eca9bdbaa53c5a1ced556ec83da3bfd80d3c65c979fb91566cf3c7ddae38eaeac -AUX 329-4.14-00-vsock-gcc-plugins-randstruct.patch 3477 BLAKE2B 9d454174bd3cf888d92a5644a2f8078f9368e5db0ee1c1f0ca7f43a897efa69d9d28c3cd89af3e38a790a23c442898364bc9d189f7920cf0dea54ca20af6ece4 SHA512 a3b68de2664807715dff9648744bd345cdf007a7c1d173fc5c1f410baa65e3a8ef3063543fd369e969a60d2f2ec9cda6127b22b09c5e17aefe288de104d58871 AUX 329-4.16-00-vmmon-use-standard-definition-of-MSR_K7_HWCR_SMMLOCK.patch 1097 BLAKE2B edf94d85be2caa69ca8b7856e636dd1fc41d60b43e56e08e913b9decca7f1f3a2a39d98681366a4c2f948a60acdce513f873b1c080d7329720abd0f235ee739a SHA512 f2e359183999f0396406724a8e0a80ceb3551772958a8a1e31eec0af8a746191bf5c7b7a5282d0f59d5a7cdd14744e1b775ad5af45bc5ee030434bcbb686d50c -AUX 329-vmblock.patch 15016 BLAKE2B 887159b5c526eea4fcc7d49664a4c7233ab9c73440bef9e8f4ceb2b9694a72cd9c4dcff131f9a74dabe5a0ec3a4e0437db405f6c74f9cfd49ef590b19a658ab8 SHA512 6cb922537009fe39e2e58e19ba9c8fda6a5ea484f3d28a94793de0fbd63d8d564822f2c83447d135f1c5e7f5da6734af218f86e31c20d322cbf00b675297c712 -AUX 329-vmci.patch 9474 BLAKE2B 9e833fcafc39c4279a9d86c96c0d4b012d6f653d42a76ba7d7d65355876da469c0dcb746a6eab4be795c5c29f1d11ace5cbf705e066d12fff20df758b8ade901 SHA512 b8b46a3df7ee2f906dd474add6c0ec3d76566f1c643278e3a7faeb68c829c78926351359bd78e12ad744bb946a31324ee347bb67413c4d670e7a091379160e2e -AUX 329-vsock.patch 10068 BLAKE2B d84f22a1623e2303c6aa2ea3624857fb2cf2dbb31b4747582285fc506ae208c1fb4b2a5925b02e6473b43ba178d871276584800d06cd2cdfb06273743814cc24 SHA512 73df6466b1df7be6ae40751596834d967b46d48218267afe5244abcdcacf5e263a78ed3bd3c4e6f2a5d81dd9c0c9e9042fc52fa9f1d4d000098ad20f19509001 -EBUILD vmware-modules-329.1.5.ebuild 3330 BLAKE2B 335b3971c52dbae4f9d309aad8e17411d1fcabb8cbbb535781ec0f38f202da4b2ebe939359a93366ef9ec33d00abd624fce3f4191fcba509b96367ccdc8ca4b5 SHA512 c91ad321786ebce6126649eb279770ffd60b3260bb58f2a089ebb4439287e83cb273edc7cf38fb073ef76e11297d98687b3a541f64ff97e5b6f0d60fe0b63fb7 -EBUILD vmware-modules-330.0.2.ebuild 3330 BLAKE2B f43fa5d255ab0349d874fb28074992032ded368c926f87aafafef423f84459cd550db92c588ca67ed2a0cc9db928c20c8fe8a254afbe316d07c08f59d67610bb SHA512 92d53fd22a40fb9520e52e0073e5e326aaa332797b06d8dcf19987444ba456bb06a8dc1fc4f0c70cb97fb13932db82db1cc0be5b1ad52bc727fce836df6de21a +EBUILD vmware-modules-329.1.5-r1.ebuild 3631 BLAKE2B 5e024ddeed02e0dddf1e31f12a97175fd8fb81df60c95d6c612989fa751fd96006600849292e5f6e552d01ab77bec8109bb92c89b930aaffa5a0ddf120377599 SHA512 f592d32e78701ff7490cad53f32158d8bfbea9327e0982fd2cd447329c9404fe549e62e775800e5667f26ad4bb451c852dfe8fc36a8de88899b91890278a3b13 +EBUILD vmware-modules-330.0.2-r1.ebuild 3631 BLAKE2B 5f7c55369f46e3e8c5ed62206fa1b53a6f207c63ed9cf49dcd2987b36827877cde8086a7cf1340e1ba0eb12532bf58299a3ba8d81751e5da3fff32d368132cf7 SHA512 18da5531a1003bf2cf082c4bb31c7b4a57f3ea94c199c2f3c0e81a13e6d41c7d2565b042dc96aacc1ef2a085a9b3bfc033176ec13cf2ae825d882935b3d0a9c0 MISC metadata.xml 322 BLAKE2B 178d5a7e0f6a26281fdeb655994b728e1b2e831a9bd7e07d6ed7c5ad2edb04d30bb8543ee5a1440f06e3a9eb1af20810a3e93800291f5feda877a644aacad14a SHA512 8ed1935f376c38b57fdcd973dab5a8dd714b2fbb74108228f3aab19cec95340c93f6ecff03b10fcafd261896efa711f47ef8c301f35fa0fc4490a4fb45f2fd55 diff --git a/app-emulation/vmware-modules/files/329-04-modules-replace-SUBDIRS-with-M.patch b/app-emulation/vmware-modules/files/329-04-modules-replace-SUBDIRS-with-M.patch new file mode 100644 index 0000000..2663cb4 --- /dev/null +++ b/app-emulation/vmware-modules/files/329-04-modules-replace-SUBDIRS-with-M.patch @@ -0,0 +1,43 @@ +From 8ba37a5023f939ba8d2e0d91b916ff442b1c18dd Mon Sep 17 00:00:00 2001 +From: Michal Kubecek <mkubecek@suse.cz> +Date: Mon, 31 Dec 2018 00:05:42 +0100 +Subject: [PATCH 2/5] modules: replace SUBDIRS with M + +Since commit 0126be38d988 ("kbuild: announce removal of SUBDIRS if used") +in v5.0-rc1, using SUBDIRS when building out of tree modules produces +a deprecation warning. As M used to work since pretty much ever, use it +unconditionally. +--- + vmmon-only/Makefile | 2 +- + vmnet-only/Makefile | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/vmmon-only/Makefile b/vmmon-only/Makefile +index ccdd295..b4b71fb 100644 +--- a/vmmon-only/Makefile ++++ b/vmmon-only/Makefile +@@ -107,7 +107,7 @@ prebuild:: ; + postbuild:: ; + + $(DRIVER_KO): prebuild +- $(MAKE) -C $(BUILD_DIR) SUBDIRS=$$PWD SRCROOT=$$PWD/$(SRCROOT) \ ++ $(MAKE) -C $(BUILD_DIR) M=$$PWD SRCROOT=$$PWD/$(SRCROOT) \ + MODULEBUILDDIR=$(MODULEBUILDDIR) modules + $(MAKE) -C $$PWD SRCROOT=$$PWD/$(SRCROOT) \ + MODULEBUILDDIR=$(MODULEBUILDDIR) postbuild +diff --git a/vmnet-only/Makefile b/vmnet-only/Makefile +index caab6b9..c2fc51f 100644 +--- a/vmnet-only/Makefile ++++ b/vmnet-only/Makefile +@@ -107,7 +107,7 @@ prebuild:: ; + postbuild:: ; + + $(DRIVER_KO): prebuild +- $(MAKE) -C $(BUILD_DIR) SUBDIRS=$$PWD SRCROOT=$$PWD/$(SRCROOT) \ ++ $(MAKE) -C $(BUILD_DIR) M=$$PWD SRCROOT=$$PWD/$(SRCROOT) \ + MODULEBUILDDIR=$(MODULEBUILDDIR) modules + $(MAKE) -C $$PWD SRCROOT=$$PWD/$(SRCROOT) \ + MODULEBUILDDIR=$(MODULEBUILDDIR) postbuild +-- +2.21.0 + diff --git a/app-emulation/vmware-modules/files/329-05-vmmon-totalram_pages-is-a-function-since-5.0.patch b/app-emulation/vmware-modules/files/329-05-vmmon-totalram_pages-is-a-function-since-5.0.patch new file mode 100644 index 0000000..8b28310 --- /dev/null +++ b/app-emulation/vmware-modules/files/329-05-vmmon-totalram_pages-is-a-function-since-5.0.patch @@ -0,0 +1,51 @@ +From ca44ce7215b91f82ff500843784b4e86a720fffe Mon Sep 17 00:00:00 2001 +From: Michal Kubecek <mkubecek@suse.cz> +Date: Mon, 31 Dec 2018 00:11:35 +0100 +Subject: [PATCH 3/5] vmmon: totalram_pages is a function since 5.0 + +Since commit ca79b0c211af ("mm: convert totalram_pages and totalhigh_pages +variables to atomic") in v5.0-rc1, totalram_pages() is an accessor function +and the actual variable is an atomic. +--- + vmmon-only/linux/hostif.c | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +diff --git a/vmmon-only/linux/hostif.c b/vmmon-only/linux/hostif.c +index af4b1d9..d32653c 100644 +--- a/vmmon-only/linux/hostif.c ++++ b/vmmon-only/linux/hostif.c +@@ -183,6 +183,15 @@ static void UnlockEntry(void *clientData, MemTrackEntry *entryPtr); + uint8 monitorIPIVector; + uint8 hvIPIVector; + ++static unsigned long compat_totalram_pages(void) ++{ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0) ++ return totalram_pages; ++#else ++ return totalram_pages(); ++#endif ++} ++ + /* + *----------------------------------------------------------------------------- + * +@@ -1634,14 +1643,7 @@ unsigned int + HostIF_EstimateLockedPageLimit(const VMDriver* vm, // IN + unsigned int currentlyLockedPages) // IN + { +- /* +- * This variable is available and exported to modules, +- * since at least 2.6.0. +- */ +- +- extern unsigned long totalram_pages; +- +- unsigned int totalPhysicalPages = totalram_pages; ++ unsigned int totalPhysicalPages = compat_totalram_pages(); + + /* + * Use the memory information linux exports as of late for a more +-- +2.21.0 + diff --git a/app-emulation/vmware-modules/files/329-06-vmmon-bring-back-the-do_gettimeofday-helper.patch b/app-emulation/vmware-modules/files/329-06-vmmon-bring-back-the-do_gettimeofday-helper.patch new file mode 100644 index 0000000..a16982c --- /dev/null +++ b/app-emulation/vmware-modules/files/329-06-vmmon-bring-back-the-do_gettimeofday-helper.patch @@ -0,0 +1,46 @@ +From 97d03d41984a0ade064fa6ac0400eb61de7929ff Mon Sep 17 00:00:00 2001 +From: Michal Kubecek <mkubecek@suse.cz> +Date: Mon, 31 Dec 2018 00:15:11 +0100 +Subject: [PATCH 4/5] vmmon: bring back the do_gettimeofday() helper + +The do_gettimeofday() helper was removed by commit e4b92b108c6c +("timekeeping: remove obsolete time accessors") in v5.0-rc1. Bring it back +for users in vmmon-only/linux/hostif.c. + +This feels like a quick and clumsy band aid to allow build with post-4.20 +kernels. On a closer look, the whole gymnastics around uptimeState and +HostIFReadUptimeWork() with jiffies and wall time checking and correcting +each other seems to be a workaround for an absence of high resolution +monotonic time. Considering ktime_get_ts64() is available since 3.17 and +before that, ktime_get_ts() since 2.6.17, perhaps the time has come to +clean all this machinery up. But something like this would be beyond the +scope of this repository. +--- + vmmon-only/linux/hostif.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/vmmon-only/linux/hostif.c b/vmmon-only/linux/hostif.c +index d32653c..cf4197b 100644 +--- a/vmmon-only/linux/hostif.c ++++ b/vmmon-only/linux/hostif.c +@@ -192,6 +192,17 @@ static unsigned long compat_totalram_pages(void) + #endif + } + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0) ++static void do_gettimeofday(struct timeval *tv) ++{ ++ struct timespec64 now; ++ ++ ktime_get_real_ts64(&now); ++ tv->tv_sec = now.tv_sec; ++ tv->tv_usec = now.tv_nsec / 1000; ++} ++#endif ++ + /* + *----------------------------------------------------------------------------- + * +-- +2.21.0 + diff --git a/app-emulation/vmware-modules/files/329-07-modules-handle-access_ok-with-two-arguments.patch b/app-emulation/vmware-modules/files/329-07-modules-handle-access_ok-with-two-arguments.patch new file mode 100644 index 0000000..87c496b --- /dev/null +++ b/app-emulation/vmware-modules/files/329-07-modules-handle-access_ok-with-two-arguments.patch @@ -0,0 +1,70 @@ +From 92b90ac11baf215ba73cb94e5aebf0576f1966a0 Mon Sep 17 00:00:00 2001 +From: Michal Kubecek <mkubecek@suse.cz> +Date: Sat, 5 Jan 2019 01:54:57 +0100 +Subject: [PATCH 5/5] modules: handle access_ok() with two arguments + +Since commit 96d4f267e40f ("Remove 'type' argument from access_ok() +function") in v5.0-rc1, the type argument of access_ok() was dropped. +The same commit also dropped macros VERIFY_READ and VERIFY_WRITE so check +for their existence on pre-5.0 kernels to allow build against kernels with +this change backported. +--- + vmmon-only/linux/hostif.c | 8 +++++++- + vmnet-only/userif.c | 8 +++++++- + 2 files changed, 14 insertions(+), 2 deletions(-) + +diff --git a/vmmon-only/linux/hostif.c b/vmmon-only/linux/hostif.c +index cf4197b..ef88a22 100644 +--- a/vmmon-only/linux/hostif.c ++++ b/vmmon-only/linux/hostif.c +@@ -203,6 +203,12 @@ static void do_gettimeofday(struct timeval *tv) + } + #endif + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0) && defined(VERIFY_WRITE) ++ #define write_access_ok(addr, size) access_ok(VERIFY_WRITE, addr, size) ++#else ++ #define write_access_ok(addr, size) access_ok(addr, size) ++#endif ++ + /* + *----------------------------------------------------------------------------- + * +@@ -3419,7 +3425,7 @@ HostIF_MapUserMem(VA addr, // IN: User memory virtual address + + ASSERT(handle); + +- if (!access_ok(VERIFY_WRITE, p, size)) { ++ if (!write_access_ok(p, size)) { + printk(KERN_ERR "%s: Couldn't verify write to uva 0x%p with size %" + FMTSZ"u\n", __func__, p, size); + +diff --git a/vmnet-only/userif.c b/vmnet-only/userif.c +index acc6ca6..5d935ee 100644 +--- a/vmnet-only/userif.c ++++ b/vmnet-only/userif.c +@@ -85,6 +85,12 @@ extern unsigned int vnet_max_qlen; + # define compat_kunmap(page) kunmap((page).p) + #endif + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0) && defined(VERIFY_WRITE) ++ #define write_access_ok(addr, size) access_ok(VERIFY_WRITE, addr, size) ++#else ++ #define write_access_ok(addr, size) access_ok(addr, size) ++#endif ++ + /* + *----------------------------------------------------------------------------- + * +@@ -142,7 +148,7 @@ VNetUserIfMapPtr(VA uAddr, // IN: pointer to user memory + struct page **p, // OUT: locked page + void **ptr) // OUT: kernel mapped pointer + { +- if (!access_ok(VERIFY_WRITE, (void *)uAddr, size) || ++ if (!write_access_ok((void *)uAddr, size) || + (((uAddr + size - 1) & ~(PAGE_SIZE - 1)) != + (uAddr & ~(PAGE_SIZE - 1)))) { + return -EINVAL; +-- +2.21.0 + diff --git a/app-emulation/vmware-modules/files/329-4.14-00-vsock-gcc-plugins-randstruct.patch b/app-emulation/vmware-modules/files/329-4.14-00-vsock-gcc-plugins-randstruct.patch deleted file mode 100644 index 66ef8b9..0000000 --- a/app-emulation/vmware-modules/files/329-4.14-00-vsock-gcc-plugins-randstruct.patch +++ /dev/null @@ -1,84 +0,0 @@ ---- a/vsock-only/linux/notify.c 2017-10-03 06:52:10.953893050 +0300 -+++ b/vsock-only/linux/notify.c 2017-10-03 05:42:48.642701836 +0300 -@@ -1193,20 +1193,20 @@ VSockVmciNotifyPktProcessNegotiate(struc - - - /* Socket control packet based operations. */ --VSockVmciNotifyOps vSockVmciNotifyPktOps = { -- VSockVmciNotifyPktSocketInit, -- VSockVmciNotifyPktSocketDestruct, -- VSockVmciNotifyPktPollIn, -- VSockVmciNotifyPktPollOut, -- VSockVmciNotifyPktHandlePkt, -- VSockVmciNotifyPktRecvInit, -- VSockVmciNotifyPktRecvPreBlock, -- VSockVmciNotifyPktRecvPreDequeue, -- VSockVmciNotifyPktRecvPostDequeue, -- VSockVmciNotifyPktSendInit, -- VSockVmciNotifyPktSendPreBlock, -- VSockVmciNotifyPktSendPreEnqueue, -- VSockVmciNotifyPktSendPostEnqueue, -- VSockVmciNotifyPktProcessRequest, -- VSockVmciNotifyPktProcessNegotiate, -+VSockVmciNotifyOps vSockVmciNotifyPktOps __refdata = { -+ .socketInit = VSockVmciNotifyPktSocketInit, -+ .socketDestruct = VSockVmciNotifyPktSocketDestruct, -+ .pollIn = VSockVmciNotifyPktPollIn, -+ .pollOut = VSockVmciNotifyPktPollOut, -+ .handleNotifyPkt = VSockVmciNotifyPktHandlePkt, -+ .recvInit = VSockVmciNotifyPktRecvInit, -+ .recvPreBlock = VSockVmciNotifyPktRecvPreBlock, -+ .recvPreDequeue = VSockVmciNotifyPktRecvPreDequeue, -+ .recvPostDequeue = VSockVmciNotifyPktRecvPostDequeue, -+ .sendInit = VSockVmciNotifyPktSendInit, -+ .sendPreBlock = VSockVmciNotifyPktSendPreBlock, -+ .sendPreEnqueue = VSockVmciNotifyPktSendPreEnqueue, -+ .sendPostEnqueue = VSockVmciNotifyPktSendPostEnqueue, -+ .processRequest = VSockVmciNotifyPktProcessRequest, -+ .processNegotiate = VSockVmciNotifyPktProcessNegotiate, - }; -diff -urp a/vsock-only/linux/notifyQState.c b/vsock-only/linux/notifyQState.c ---- a/vsock-only/linux/notifyQState.c 2017-10-03 06:52:10.952893329 +0300 -+++ b/vsock-only/linux/notifyQState.c 2017-10-03 05:43:02.950697125 +0300 -@@ -771,21 +770,24 @@ VSockVmciNotifyPktProcessNegotiate(struc - } - - --/* Socket always on control packet based operations. */ --VSockVmciNotifyOps vSockVmciNotifyPktQStateOps = { -- VSockVmciNotifyPktSocketInit, -- VSockVmciNotifyPktSocketDestruct, -- VSockVmciNotifyPktPollIn, -- VSockVmciNotifyPktPollOut, -- VSockVmciNotifyPktHandlePkt, -- VSockVmciNotifyPktRecvInit, -- VSockVmciNotifyPktRecvPreBlock, -- NULL, /* recvPreDequeue */ -- VSockVmciNotifyPktRecvPostDequeue, -- VSockVmciNotifyPktSendInit, -- NULL, /* sendPreBlock */ -- NULL, /* sendPreEnqueue */ -- VSockVmciNotifyPktSendPostEnqueue, -- VSockVmciNotifyPktProcessRequest, -- VSockVmciNotifyPktProcessNegotiate, -+ -+ -+// Socket always on control packet based operations. -+VSockVmciNotifyOps vSockVmciNotifyPktQStateOps __refdata = { -+ .socketInit = VSockVmciNotifyPktSocketInit, -+ .socketDestruct = VSockVmciNotifyPktSocketDestruct, -+ .pollIn = VSockVmciNotifyPktPollIn, -+ .pollOut = VSockVmciNotifyPktPollOut, -+ .handleNotifyPkt = VSockVmciNotifyPktHandlePkt, -+ .recvInit = VSockVmciNotifyPktRecvInit, -+ .recvPreBlock = VSockVmciNotifyPktRecvPreBlock, -+ .recvPreDequeue = NULL, -+ .recvPostDequeue = VSockVmciNotifyPktRecvPostDequeue, -+ .sendInit = VSockVmciNotifyPktSendInit, -+ .sendPreBlock = NULL, -+ .sendPreEnqueue = NULL, -+ .sendPostEnqueue = VSockVmciNotifyPktSendPostEnqueue, -+ .processRequest = VSockVmciNotifyPktProcessRequest, -+ .processNegotiate = VSockVmciNotifyPktProcessNegotiate, -+ - }; diff --git a/app-emulation/vmware-modules/files/329-vmblock.patch b/app-emulation/vmware-modules/files/329-vmblock.patch deleted file mode 100644 index bddb978..0000000 --- a/app-emulation/vmware-modules/files/329-vmblock.patch +++ /dev/null @@ -1,461 +0,0 @@ -diff --git a/vmblock-only/Makefile b/vmblock-only/Makefile -index bbfe225..8ec1a86 100644 ---- a/vmblock-only/Makefile -+++ b/vmblock-only/Makefile -@@ -43,7 +43,11 @@ INCLUDE += -I$(SRCROOT)/shared - endif - - -+ifdef KVERSION -+VM_UNAME = $(KVERSION) -+else - VM_UNAME = $(shell uname -r) -+endif - - # Header directory for the running kernel - ifdef LINUXINCLUDE -diff --git a/vmblock-only/Makefile.kernel b/vmblock-only/Makefile.kernel -index ab7a727..e3ec9d2 100644 ---- a/vmblock-only/Makefile.kernel -+++ b/vmblock-only/Makefile.kernel -@@ -19,7 +19,7 @@ - - INCLUDE += -I$(SRCROOT)/include - --EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) -+EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) - - EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/cachecreate.c, -DVMW_KMEMCR_HAS_DTOR, ) - EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/cachector.c, -DVMW_KMEMCR_CTOR_HAS_3_ARGS, ) -diff --git a/vmblock-only/linux/control.c b/vmblock-only/linux/control.c -index 79716bd..5b6acb2 100644 ---- a/vmblock-only/linux/control.c -+++ b/vmblock-only/linux/control.c -@@ -29,7 +29,7 @@ - #include <linux/stat.h> - #include <linux/fs.h> - --#include <asm/uaccess.h> -+#include <linux/uaccess.h> - - #include "vmblockInt.h" - #include "block.h" -@@ -208,9 +208,17 @@ SetupProcDevice(void) - VMBlockSetProcEntryOwner(controlProcMountpoint); - - /* Create /proc/fs/vmblock/dev */ -+ // create_proc_entry deprecated in 3.10 -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+ controlProcEntry = proc_create(VMBLOCK_CONTROL_DEVNAME, -+ VMBLOCK_CONTROL_MODE, -+ controlProcDirEntry, -+ &ControlFileOps); -+#else - controlProcEntry = create_proc_entry(VMBLOCK_CONTROL_DEVNAME, - VMBLOCK_CONTROL_MODE, - controlProcDirEntry); -+#endif - if (!controlProcEntry) { - Warning("SetupProcDevice: could not create " VMBLOCK_DEVICE "\n"); - remove_proc_entry(VMBLOCK_CONTROL_MOUNTPOINT, controlProcDirEntry); -@@ -218,7 +226,9 @@ SetupProcDevice(void) - return -EINVAL; - } - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) //Maybe 3.14? 3.13? - controlProcEntry->proc_fops = &ControlFileOps; -+#endif - return 0; - } - -@@ -272,17 +282,50 @@ CleanupProcDevice(void) - *---------------------------------------------------------------------------- - */ - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0) -+/* copy-paste from Lustre FS by pavlinux */ -+static inline char *ll_getname(const char __user *filename) -+{ -+ int ret = 0, len; -+ char *tmp = __getname(); -+ -+ if (!tmp) -+ return ERR_PTR(-ENOMEM); -+ -+ len = strncpy_from_user(tmp, filename, PATH_MAX); -+ if (len == 0) -+ ret = -ENOENT; -+ else if (len > PATH_MAX) -+ ret = -ENAMETOOLONG; -+ -+ if (ret) { -+ __putname(tmp); -+ tmp = ERR_PTR(ret); -+ } -+ return tmp; -+}; -+#endif -+ - static int - ExecuteBlockOp(const char __user *buf, // IN: buffer with name - const os_blocker_id_t blocker, // IN: blocker ID (file) - int (*blockOp)(const char *filename, // IN: block operation - const os_blocker_id_t blocker)) - { -- char *name; -+ struct filename *fn = NULL; -+ char *name = (char *)fn->name; - int i; - int retval; - -- name = getname(buf); -+ // Not sure what changed in 3.13 to neccessitate this. -+ // Gentoo uses __getname(), though. -+ // https://github.com/gentoo/vmware/blob/master/app-emulation/vmware-modules/files/308-3.10-02-control.patch#L36 -+ // ~MK -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0) -+ name = (char *)getname(buf); -+#else -+ name = (char *)ll_getname(buf); -+#endif - if (IS_ERR(name)) { - return PTR_ERR(name); - } -@@ -293,7 +336,13 @@ ExecuteBlockOp(const char __user *buf, // IN: buffer with name - - retval = i < 0 ? -EINVAL : blockOp(name, blocker); - -- putname(name); -+ // I'm not sure what this does, but you seem to know what you're doing ~MK -+ if (fn->name != fn->iname) { /* add by pavlinux */ -+ __putname(fn->name); -+ kvfree(fn); -+ } else { -+ __putname(fn); -+ } - - return retval; - } -diff --git a/vmblock-only/linux/dentry.c b/vmblock-only/linux/dentry.c -index 05ea95a..1245358 100644 ---- a/vmblock-only/linux/dentry.c -+++ b/vmblock-only/linux/dentry.c -@@ -32,7 +32,13 @@ - #include "block.h" - - --static int DentryOpRevalidate(struct dentry *dentry, struct nameidata *nd); -+// From what I can tell, this should've always been an unsigned int? -+static int DentryOpRevalidate(struct dentry *dentry, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) // Maybe 3.14 or 3.13? -+ struct nameidata *nd); -+#else -+ unsigned int flags); -+#endif - - struct dentry_operations LinkDentryOps = { - .d_revalidate = DentryOpRevalidate, -@@ -60,7 +66,11 @@ struct dentry_operations LinkDentryOps = { - - static int - DentryOpRevalidate(struct dentry *dentry, // IN: dentry revalidating -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) - struct nameidata *nd) // IN: lookup flags & intent -+#else -+ unsigned int flags) // IN: lookup flags & intent -+#endif - { - VMBlockInodeInfo *iinfo; - struct nameidata actualNd; -@@ -101,7 +111,11 @@ DentryOpRevalidate(struct dentry *dentry, // IN: dentry revalidating - if (actualDentry && - actualDentry->d_op && - actualDentry->d_op->d_revalidate) { -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) -+ return actualDentry->d_op->d_revalidate(actualDentry, flags); -+#else - return actualDentry->d_op->d_revalidate(actualDentry, nd); -+#endif - } - - if (compat_path_lookup(iinfo->name, 0, &actualNd)) { -diff --git a/vmblock-only/linux/file.c b/vmblock-only/linux/file.c -index d7ac1f6..c5e6604 100644 ---- a/vmblock-only/linux/file.c -+++ b/vmblock-only/linux/file.c -@@ -39,6 +39,7 @@ typedef ino_t inode_num_t; - #endif - - /* Specifically for our filldir_t callback */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) - typedef struct FilldirInfo { - filldir_t filldir; - void *dirent; -@@ -76,6 +77,7 @@ Filldir(void *buf, // IN: Dirent buffer passed from FileOpReaddir - /* Specify DT_LNK regardless */ - return info->filldir(info->dirent, name, namelen, offset, ino, DT_LNK); - } -+#endif - - - /* File operations */ -@@ -132,7 +134,12 @@ FileOpOpen(struct inode *inode, // IN - * and that would try to acquire the inode's semaphore; if the two inodes - * are the same we'll deadlock. - */ -+ // f_dentry is defined as f_path.dentry until 3.19 -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,19,0) - if (actualFile->f_dentry && inode == actualFile->f_dentry->d_inode) { -+#else -+ if (actualFile->f_path.dentry && inode == actualFile->f_path.dentry->d_inode) { -+#endif - Warning("FileOpOpen: identical inode encountered, open cannot succeed.\n"); - if (filp_close(actualFile, current->files) < 0) { - Warning("FileOpOpen: unable to close opened file.\n"); -@@ -164,13 +171,20 @@ FileOpOpen(struct inode *inode, // IN - *---------------------------------------------------------------------------- - */ - -+// pavlinux's patch completely removes this bit for kernels older than 3.13 - static int - FileOpReaddir(struct file *file, // IN -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) - void *dirent, // IN - filldir_t filldir) // IN -+#else -+ struct dir_context* ctx) //IN -+#endif - { - int ret; -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) - FilldirInfo info; -+#endif - struct file *actualFile; - - if (!file) { -@@ -184,12 +198,20 @@ FileOpReaddir(struct file *file, // IN - return -EINVAL; - } - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) - info.filldir = filldir; - info.dirent = dirent; - - actualFile->f_pos = file->f_pos; - ret = vfs_readdir(actualFile, Filldir, &info); - file->f_pos = actualFile->f_pos; -+#else -+ /* Ricky Wong Yung Fei: -+ * Manipulation of pos is now handled internally by iterate_dir(). -+ */ -+ ret = iterate_dir(actualFile, ctx); -+ file->f_pos = actualFile->f_pos; -+#endif - - return ret; - } -@@ -236,8 +258,15 @@ FileOpRelease(struct inode *inode, // IN - } - - -+// pavlinux's patch drops FileOpReaddr for < 3.13 -+// pavlinux's patch sets .owner = THIS_MODULE and .llseek = no_llseek - struct file_operations RootFileOps = { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) - .readdir = FileOpReaddir, -+#else -+ .iterate = FileOpReaddir, -+#endif -+ .owner = THIS_MODULE, - .open = FileOpOpen, - .release = FileOpRelease, - }; -diff --git a/vmblock-only/linux/inode.c b/vmblock-only/linux/inode.c -index 098c94c..7aed6e7 100644 ---- a/vmblock-only/linux/inode.c -+++ b/vmblock-only/linux/inode.c -@@ -28,20 +28,32 @@ - #include <linux/fs.h> - #include <linux/time.h> - #include <linux/namei.h> -+#include <linux/cred.h> - - #include "vmblockInt.h" - #include "filesystem.h" - #include "block.h" - - - /* Inode operations */ -+// Again, it looks like last arg should've always been unsigned int ~MK - static struct dentry *InodeOpLookup(struct inode *dir, -- struct dentry *dentry, struct nameidata *nd); --static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen); --#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) --static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); -+ struct dentry *dentry, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) // Maybe 3.12 or 3.13? -+ struct nameidata *nd); - #else -+ unsigned int flags); -+#endif -+static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 13) - static int InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) -+static const char *InodeOpGetLink(struct dentry *dentry, struct inode *inode, -+ struct delayed_call *done); -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) -+static const char *InodeOpFollowlink(struct dentry *dentry, void **cookie); -+#else -+static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); - #endif - - -@@ -49,9 +60,13 @@ struct inode_operations RootInodeOps = { - .lookup = InodeOpLookup, - }; - --static struct inode_operations LinkInodeOps = { -+struct inode_operations LinkInodeOps = { - .readlink = InodeOpReadlink, -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) -+ .get_link = InodeOpGetLink, -+#else - .follow_link = InodeOpFollowlink, -+#endif - }; - - -@@ -75,7 +90,11 @@ static struct inode_operations LinkInodeOps = { - static struct dentry * - InodeOpLookup(struct inode *dir, // IN: parent directory's inode - struct dentry *dentry, // IN: dentry to lookup -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) - struct nameidata *nd) // IN: lookup intent and information -+#else -+ unsigned int flags) // IN: lookup intent and information -+#endif - { - char *filename; - struct inode *inode; -@@ -135,7 +154,16 @@ InodeOpLookup(struct inode *dir, // IN: parent directory's inode - inode->i_size = INODE_TO_IINFO(inode)->nameLen; - inode->i_version = 1; -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) - inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; -+#else -+ inode->i_atime = inode->i_mtime = inode->i_ctime = current_kernel_time(); -+#endif -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) - inode->i_uid = inode->i_gid = 0; -+#else -+ inode->i_gid = make_kgid(current_user_ns(), 0); -+ inode->i_uid = make_kuid(current_user_ns(), 0); -+#endif - inode->i_op = &LinkInodeOps; - - d_add(dentry, inode); -@@ -176,8 +200,15 @@ InodeOpReadlink(struct dentry *dentry, // IN : dentry of symlink - if (!iinfo) { - return -EINVAL; - } -- -+#if LINUX_VERSION_CODE <= KERNEL_VERSION(3, 14, 99) - return vfs_readlink(dentry, buffer, buflen, iinfo->name); -+#elif LINUX_VERSION_CODE <= KERNEL_VERSION(4, 6, 99) -+ return readlink_copy(buffer, buflen, iinfo->name); -+#elif LINUX_VERSION_CODE <= KERNEL_VERSION(4, 9, 99) -+ return generic_readlink(dentry, buffer, buflen); -+#else -+ return vfs_readlink(dentry, buffer, buflen); -+#endif - } - - -@@ -198,30 +229,58 @@ InodeOpReadlink(struct dentry *dentry, // IN : dentry of symlink - *---------------------------------------------------------------------------- - */ - --#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) --static void * -+static -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 13) -+int -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) -+const char * - #else --static int -+void * - #endif -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) -+InodeOpGetLink(struct dentry *dentry, struct inode *inode, -+ struct delayed_call *done) -+#else - InodeOpFollowlink(struct dentry *dentry, // IN : dentry of symlink -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) -+ void **cookie) -+#else - struct nameidata *nd) // OUT: stores result -+#endif -+#endif - { - int ret; - VMBlockInodeInfo *iinfo; - - if (!dentry) { -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) -+ ret = -ECHILD; -+#else - Warning("InodeOpReadlink: invalid args from kernel\n"); - ret = -EINVAL; -+#endif - goto out; - } - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) -+ iinfo = INODE_TO_IINFO(inode); -+#else - iinfo = INODE_TO_IINFO(dentry->d_inode); -+#endif - if (!iinfo) { - ret = -EINVAL; - goto out; - } - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 12, 0) - ret = vfs_follow_link(nd, iinfo->name); -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) -+ return (char *)(iinfo->name); -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) -+ return *cookie = (char *)(iinfo->name); -+#else -+ nd_set_link(nd, iinfo->name); -+#endif - - out: - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) -diff --git a/vmblock-only/shared/compat_namei.h b/vmblock-only/shared/compat_namei.h -index f82dd49..426d40b 100644 ---- a/vmblock-only/shared/compat_namei.h -+++ b/vmblock-only/shared/compat_namei.h -@@ -45,4 +45,20 @@ - #define compat_path_lookup(name, flags, nd) path_lookup(name, flags, nd) - #endif - -+/* nameidata struct for 4.2+ */ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0) -+struct nameidata { -+ struct path path; -+ struct qstr last; -+ struct path root; -+ struct inode *inode; /* path.dentry.d_inode */ -+ unsigned int flags; -+ unsigned seq, m_seq; -+ int last_type; -+ unsigned depth; -+ struct file *base; -+ char *saved_names[MAX_NESTED_LINKS + 1]; -+}; -+#endif -+ - #endif /* __COMPAT_NAMEI_H__ */ diff --git a/app-emulation/vmware-modules/files/329-vmci.patch b/app-emulation/vmware-modules/files/329-vmci.patch deleted file mode 100644 index 764f858..0000000 --- a/app-emulation/vmware-modules/files/329-vmci.patch +++ /dev/null @@ -1,294 +0,0 @@ -diff --git a/vmci-only/Makefile b/vmci-only/Makefile -index c630705..18357e5 100644 ---- a/vmci-only/Makefile -+++ b/vmci-only/Makefile -@@ -43,7 +43,11 @@ INCLUDE += -I$(SRCROOT)/shared - endif - - -+ifdef KVERSION -+VM_UNAME = $(KVERSION) -+else - VM_UNAME = $(shell uname -r) -+endif - - # Header directory for the running kernel - ifdef LINUXINCLUDE -diff --git a/vmci-only/Makefile.kernel b/vmci-only/Makefile.kernel -index 8e6e7d0..28eb503 100644 ---- a/vmci-only/Makefile.kernel -+++ b/vmci-only/Makefile.kernel -@@ -21,7 +21,7 @@ CC_OPTS += -DVMCI - - INCLUDE += -I$(SRCROOT)/shared -I$(SRCROOT)/common -I$(SRCROOT)/linux - --EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) -+EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) - - obj-m += $(DRIVER).o - -diff --git a/vmci-only/linux/driver.c b/vmci-only/linux/driver.c -index f676166..9e42f3f 100644 ---- a/vmci-only/linux/driver.c -+++ b/vmci-only/linux/driver.c -@@ -26,6 +26,7 @@ - - #include <linux/file.h> - #include <linux/fs.h> -+#include <linux/vmalloc.h> - #include <linux/init.h> - #if defined(__x86_64__) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12) - # include <linux/ioctl32.h> -@@ -1466,12 +1467,19 @@ VMCIUserVALockPage(VA addr) // IN: - int retval; - - down_read(¤t->mm->mmap_sem); --#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) -- retval = get_user_pages(addr, 1, 1, 0, &page, NULL); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) -+ retval = get_user_pages(addr, - #else - retval = get_user_pages(current, current->mm, addr, -- 1, 1, 0, &page, NULL); - #endif -+ 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) { -@@ -1686,7 +1694,11 @@ vmci_guest_init(void) - /* This should be last to make sure we are done initializing. */ - retval = pci_register_driver(&vmci_driver); - if (retval < 0) { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) - vfree(data_buffer); -+#else -+ kvfree(data_buffer); -+#endif - data_buffer = NULL; - return retval; - } -@@ -1722,12 +1734,25 @@ - vmci_dev.msix_entries[i].vector = i; - } - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) - result = pci_enable_msix(pdev, vmci_dev.msix_entries, VMCI_MAX_INTRS); - if (!result) { - vmci_dev.exclusive_vectors = TRUE; - } else if (result > 0) { - result = pci_enable_msix(pdev, vmci_dev.msix_entries, 1); - } -+#else -+ result = pci_enable_msix_range(pdev, vmci_dev.msix_entries, VMCI_MAX_INTRS, -+ VMCI_MAX_INTRS); -+ if (result > 0) { -+ vmci_dev.exclusive_vectors = TRUE; -+ } else if (result == -ENOSPC) { -+ result = pci_enable_msix_range(pdev, vmci_dev.msix_entries, 1, 1); -+ } -+ -+ if (result > 0) -+ result = 0; -+#endif - return result; - } - -@@ -2480,7 +2505,11 @@ vmci_exit(void) - - if (guestDeviceInit) { - pci_unregister_driver(&vmci_driver); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) - vfree(data_buffer); -+#else -+ kvfree(data_buffer); -+#endif - data_buffer = NULL; - guestDeviceInit = FALSE; - } -@@ -2490,7 +2519,7 @@ vmci_exit(void) - - VMCI_HostCleanup(); - -- retval = misc_deregister(&linuxState.misc); -+ retval = compat_misc_deregister(&linuxState.misc); - if (retval) { - Warning(LGPFX "Module %s: error unregistering\n", VMCI_MODULE_NAME); - } else { -diff --git a/vmci-only/linux/vmciKernelIf.c b/vmci-only/linux/vmciKernelIf.c -index 3fba8b6..1836442 100644 ---- a/vmci-only/linux/vmciKernelIf.c -+++ b/vmci-only/linux/vmciKernelIf.c -@@ -40,6 +40,10 @@ - #include <linux/socket.h> /* For memcpy_{to,from}iovec(). */ - #include <linux/vmalloc.h> - #include <linux/wait.h> -+#include <linux/skbuff.h> -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 99) -+#include <linux/sched/signal.h> -+#endif - - #include "compat_highmem.h" - #include "compat_interrupt.h" -@@ -1198,16 +1199,29 @@ __VMCIMemcpyToQueue(VMCIQueue *queue, // OUT: - } - - if (isIovec) { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - struct iovec *iov = (struct iovec *)src; -+#else -+ struct msghdr *msg = (struct msghdr *)src; -+#endif - int err; - - /* The iovec will track bytesCopied internally. */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - err = memcpy_fromiovec((uint8 *)va + pageOffset, iov, toCopy); -+#else -+ err = memcpy_from_msg((uint8 *)va + pageOffset, msg, toCopy); -+#endif - if (err != 0) { - if (kernelIf->host) { - kunmap(kernelIf->u.h.page[pageIndex]); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - } - return VMCI_ERROR_INVALID_ARGS; -+#else -+ return VMCI_ERROR_INVALID_ARGS; -+ } -+#endif - } - } else { - memcpy((uint8 *)va + pageOffset, (uint8 *)src + bytesCopied, toCopy); -@@ -1273,11 +1287,19 @@ __VMCIMemcpyFromQueue(void *dest, // OUT: - } - - if (isIovec) { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - struct iovec *iov = (struct iovec *)dest; -+#else -+ struct msghdr *msg = (struct msghdr *)dest; -+#endif - int err; - - /* The iovec will track bytesCopied internally. */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - err = memcpy_toiovec(iov, (uint8 *)va + pageOffset, toCopy); -+#else -+ err = memcpy_to_msg(msg, (uint8 *)va + pageOffset, toCopy); -+#endif - if (err != 0) { - if (kernelIf->host) { - kunmap(kernelIf->u.h.page[pageIndex]); -@@ -1834,7 +1856,11 @@ VMCIReleasePages(struct page **pages, // IN - 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; - } - } -@@ -2048,21 +2074,22 @@ VMCIHost_GetUserMemory(VA64 produceUVA, // IN - int err = VMCI_SUCCESS; - - down_write(¤t->mm->mmap_sem); --#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) - 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, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) - 1, 0, -+#else -+ FOLL_WRITE, -+#endif - produceQ->kernelIf->u.h.headerPage, - NULL); --#endif -+ - if (retval < produceQ->kernelIf->numPages) { - Log("get_user_pages(produce) failed (retval=%d)\n", retval); - VMCIReleasePages(produceQ->kernelIf->u.h.headerPage, retval, FALSE); -@@ -2070,11 +2097,19 @@ VMCIHost_GetUserMemory(VA64 produceUVA, // IN - 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, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) - 1, 0, -+#else -+ FOLL_WRITE, -+#endif - consumeQ->kernelIf->u.h.headerPage, - NULL); - if (retval < consumeQ->kernelIf->numPages) { -diff --git a/vmci-only/shared/compat_module.h b/vmci-only/shared/compat_module.h -index 2af7372..729aedc 100644 ---- a/vmci-only/shared/compat_module.h -+++ b/vmci-only/shared/compat_module.h -@@ -80,4 +80,13 @@ static const char __module_cat(tag, __LINE__)[] \ - typedef int compat_mod_param_bool; - #endif - -+/* -+ * Linux kernel >= 4.2.99 does not return anything from misc_deregister -+ */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 99) -+#define compat_misc_deregister(misc) misc_deregister(misc) -+#else -+#define compat_misc_deregister(misc) ({misc_deregister(misc);0;}) -+#endif -+ - #endif /* __COMPAT_MODULE_H__ */ -diff --git a/vmci-only/shared/vm_device_version.h b/vmci-only/shared/vm_device_version.h -index e2cb477..3dd7097 100644 ---- a/vmci-only/shared/vm_device_version.h -+++ b/vmci-only/shared/vm_device_version.h -@@ -53,7 +53,9 @@ - * VMware HD Audio codec - * VMware HD Audio controller - */ -+#ifndef PCI_VENDOR_ID_VMWARE - #define PCI_VENDOR_ID_VMWARE 0x15AD -+#endif - #define PCI_DEVICE_ID_VMWARE_SVGA2 0x0405 - #define PCI_DEVICE_ID_VMWARE_SVGA 0x0710 - #define PCI_DEVICE_ID_VMWARE_VGA 0x0711 -diff --git a/vmci-only/shared/vmci_kernel_if.h b/vmci-only/shared/vmci_kernel_if.h -index 9def671..082fe59 100644 ---- a/vmci-only/shared/vmci_kernel_if.h -+++ b/vmci-only/shared/vmci_kernel_if.h -@@ -100,7 +100,7 @@ - typedef Semaphore VMCIEvent; - typedef Semaphore VMCIMutex; - typedef World_ID VMCIHostVmID; -- typedef uint32 VMCIHostUser; -+ typedef uint32_t VMCIHostUser; - typedef PPN *VMCIQPGuestMem; - #elif defined(__linux__) - typedef spinlock_t VMCILock; diff --git a/app-emulation/vmware-modules/files/329-vsock.patch b/app-emulation/vmware-modules/files/329-vsock.patch deleted file mode 100644 index d77402a..0000000 --- a/app-emulation/vmware-modules/files/329-vsock.patch +++ /dev/null @@ -1,266 +0,0 @@ -diff --git a/vsock-only/Makefile b/vsock-only/Makefile -index 5d92e9b..7d315e8 100644 ---- a/vsock-only/Makefile -+++ b/vsock-only/Makefile -@@ -42,8 +42,11 @@ AUTOCONF_DIR := $(SRCROOT)/shared/autoconf - INCLUDE += -I$(SRCROOT)/shared - endif - -- -+ifdef KVERSION -+VM_UNAME = $(KVERSION) -+else - VM_UNAME = $(shell uname -r) -+endif - - # Header directory for the running kernel - ifdef LINUXINCLUDE -diff --git a/vsock-only/Makefile.kernel b/vsock-only/Makefile.kernel -index 5218df2..374cc1f 100644 ---- a/vsock-only/Makefile.kernel -+++ b/vsock-only/Makefile.kernel -@@ -25,7 +25,7 @@ INCLUDE += -I$(SRCROOT)/include - INCLUDE += -I$(SRCROOT)/linux - INCLUDE += -I$(SRCROOT)/common - --EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) -+EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) - EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/netcreate_num_params.c, -DVMW_NETCREATE_KERNARG, ) - - -diff --git a/vsock-only/linux/af_vsock.c b/vsock-only/linux/af_vsock.c -index bde1497..9f8f843 100644 ---- a/vsock-only/linux/af_vsock.c -+++ b/vsock-only/linux/af_vsock.c -@@ -113,6 +113,9 @@ - asmlinkage __attribute__((weak)) long - sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg); - #endif -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 99) -+#include <linux/sched/signal.h> -+#endif - - #include "compat_cred.h" - #include "compat_module.h" -@@ -213,7 +216,11 @@ - struct sockaddr *addr, int addrLen, int flags); - static int VSockVmciStreamConnect(struct socket *sock, - struct sockaddr *addr, int addrLen, int flags); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) - static int VSockVmciAccept(struct socket *sock, struct socket *newsock, int flags); -+#else -+static int VSockVmciAccept(struct socket *sock, struct socket *newsock, int flags, bool kern); -+#endif - static int VSockVmciGetname(struct socket *sock, - struct sockaddr *addr, int *addrLen, int peer); - static unsigned int VSockVmciPoll(struct file *file, -@@ -233,13 +240,29 @@ static int VSockVmciStreamSetsockopt(struct socket *sock, int level, int optname - static int VSockVmciStreamGetsockopt(struct socket *sock, int level, int optname, - char __user *optval, int __user * optlen); - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 99) - static int VSockVmciDgramSendmsg(struct kiocb *kiocb, -+#else -+static int VSockVmciDgramSendmsg( -+#endif - struct socket *sock, struct msghdr *msg, size_t len); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 99) - static int VSockVmciDgramRecvmsg(struct kiocb *kiocb, struct socket *sock, -+#else -+static int VSockVmciDgramRecvmsg(struct socket *sock, -+#endif - struct msghdr *msg, size_t len, int flags); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 99) - static int VSockVmciStreamSendmsg(struct kiocb *kiocb, -+#else -+static int VSockVmciStreamSendmsg( -+#endif - struct socket *sock, struct msghdr *msg, size_t len); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 99) - static int VSockVmciStreamRecvmsg(struct kiocb *kiocb, struct socket *sock, -+#else -+static int VSockVmciStreamRecvmsg(struct socket *sock, -+#endif - struct msghdr *msg, size_t len, int flags); - - static int VSockVmciCreate( -@@ -2872,11 +2895,18 @@ __VSockVmciCreate(struct net *net, // IN: Network namespace - * From 2.6.9 to until 2.6.12 sk_alloc() used a cache in - * the protocol structure, but you still had to specify the size and cache - * yourself. -- * Most recently (in 2.6.24), sk_alloc() was changed to expect the -+ * In 2.6.24, sk_alloc() was changed to expect the - * network namespace, and the option to zero the sock was dropped. - * -+ * In 4.2, another parameter was added to sk_alloc() allowing you to specify -+ * whether or not the socket is to be a kernel socket. Previously, we passed -+ * 1 to this new parameter, but following Gentoo's lead -+ * ( https://github.com/gentoo/vmware/blob/master/app-emulation/vmware-modules/files/308-4.02-01-sk_alloc.patch#L19 ) -+ * we have switched to passing 0. - */ --#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12) -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) -+ sk = sk_alloc(net, vsockVmciFamilyOps.family, priority, &vsockVmciProto, 0); -+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12) - sk = sk_alloc(vsockVmciFamilyOps.family, priority, - vsockVmciProto.slab_obj_size, vsockVmciProto.slab); - #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24) -@@ -3825,7 +3855,12 @@ - static int - VSockVmciAccept(struct socket *sock, // IN - struct socket *newsock, // IN/OUT -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) - int flags) // IN -+#else -+ int flags, // IN -+ bool kern) -+#endif - { - struct sock *listener; - int err; -@@ -4260,7 +4295,11 @@ VSockVmciShutdown(struct socket *sock, // IN - */ - - static int -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 99) - VSockVmciDgramSendmsg(struct kiocb *kiocb, // UNUSED -+#else -+VSockVmciDgramSendmsg( -+#endif - struct socket *sock, // IN: socket to send on - struct msghdr *msg, // IN: message to send - size_t len) // IN: length of message -@@ -4352,7 +4391,11 @@ VSockVmciDgramSendmsg(struct kiocb *kiocb, // UNUSED - goto out; - } - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - memcpy_fromiovec(VMCI_DG_PAYLOAD(dg), msg->msg_iov, len); -+#else -+ memcpy_from_msg(VMCI_DG_PAYLOAD(dg), msg, len); -+#endif - - dg->dst = VMCI_MAKE_HANDLE(remoteAddr->svm_cid, remoteAddr->svm_port); - dg->src = VMCI_MAKE_HANDLE(vsk->localAddr.svm_cid, vsk->localAddr.svm_port); -@@ -4590,7 +4633,11 @@ VSockVmciStreamGetsockopt(struct socket *sock, // IN - */ - - static int -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 99) - VSockVmciStreamSendmsg(struct kiocb *kiocb, // UNUSED -+#else -+VSockVmciStreamSendmsg( -+#endif - struct socket *sock, // IN: socket to send on - struct msghdr *msg, // IN: message to send - size_t len) // IN: length of message -@@ -4712,7 +4759,11 @@ VSockVmciStreamSendmsg(struct kiocb *kiocb, // UNUSED - * able to send. - */ - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - written = vmci_qpair_enquev(vsk->qpair, msg->msg_iov, -+#else -+ written = vmci_qpair_enquev(vsk->qpair, &msg->msg_iter.iov, -+#endif - len - totalWritten, 0); - if (written < 0) { - err = -ENOMEM; -@@ -4759,7 +4810,11 @@ out: - */ - - static int -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 99) - VSockVmciDgramRecvmsg(struct kiocb *kiocb, // UNUSED -+#else -+VSockVmciDgramRecvmsg( -+#endif - struct socket *sock, // IN: socket to receive from - struct msghdr *msg, // IN/OUT: message to receive into - size_t len, // IN: length of receive buffer -@@ -4809,7 +4864,11 @@ VSockVmciDgramRecvmsg(struct kiocb *kiocb, // UNUSED - } - - /* Place the datagram payload in the user's iovec. */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - err = skb_copy_datagram_iovec(skb, sizeof *dg, msg->msg_iov, payloadLen); -+#else -+ err = skb_copy_datagram_iter(skb, sizeof *dg, &msg->msg_iter, payloadLen); -+#endif - if (err) { - goto out; - } -@@ -4850,7 +4909,11 @@ out: - */ - - static int -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 99) - VSockVmciStreamRecvmsg(struct kiocb *kiocb, // UNUSED -+#else -+VSockVmciStreamRecvmsg( -+#endif - struct socket *sock, // IN: socket to receive from - struct msghdr *msg, // IN/OUT: message to receive into - size_t len, // IN: length of receive buffer -@@ -4955,9 +5018,17 @@ VSockVmciStreamRecvmsg(struct kiocb *kiocb, // UNUSED - } - - if (flags & MSG_PEEK) { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - read = vmci_qpair_peekv(vsk->qpair, msg->msg_iov, len - copied, 0); -+#else -+ read = vmci_qpair_peekv(vsk->qpair, &msg->msg_iter.iov, len - copied, 0); -+#endif - } else { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - read = vmci_qpair_dequev(vsk->qpair, msg->msg_iov, len - copied, 0); -+#else -+ read = vmci_qpair_dequev(vsk->qpair, &msg->msg_iter.iov, len - copied, 0); -+#endif - } - - if (read < 0) { -diff --git a/vsock-only/linux/notify.c b/vsock-only/linux/notify.c -index 5b1e134..82d8738 100644 ---- a/vsock-only/linux/notify.c -+++ b/vsock-only/linux/notify.c -@@ -516,7 +516,11 @@ VSockVmciHandleWrote(struct sock *sk, // IN - PKT_FIELD(vsk, sentWaitingRead) = FALSE; - #endif - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) - sk->sk_data_ready(sk, 0); -+#else -+ sk->sk_data_ready(sk); -+#endif - } - - -diff --git a/vsock-only/linux/notifyQState.c b/vsock-only/linux/notifyQState.c -index 464454b..7933be7 100644 ---- a/vsock-only/linux/notifyQState.c -+++ b/vsock-only/linux/notifyQState.c -@@ -164,7 +164,11 @@ VSockVmciHandleWrote(struct sock *sk, // IN - struct sockaddr_vm *dst, // IN: unused - struct sockaddr_vm *src) // IN: unused - { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) - sk->sk_data_ready(sk, 0); -+#else -+ sk->sk_data_ready(sk); -+#endif - } - - -@@ -566,7 +570,11 @@ VSockVmciNotifyPktRecvPostDequeue(struct sock *sk, // IN - } - - /* See the comment in VSockVmciNotifyPktSendPostEnqueue */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) - sk->sk_data_ready(sk, 0); -+#else -+ sk->sk_data_ready(sk); -+#endif - } - - return err; diff --git a/app-emulation/vmware-modules/vmware-modules-329.1.5.ebuild b/app-emulation/vmware-modules/vmware-modules-329.1.5-r1.ebuild index 6329818..41c32e9 100644 --- a/app-emulation/vmware-modules/vmware-modules-329.1.5.ebuild +++ b/app-emulation/vmware-modules/vmware-modules-329.1.5-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 @@ -58,7 +58,7 @@ src_unpack() { } src_prepare() { - # from https://github.com/mkubecek/vmware-host-modules/tree/workstation-14.1.1 + # from https://github.com/mkubecek/vmware-host-modules/tree/workstation-14.1.5 kernel_is ge 4 9 0 && epatch "${FILESDIR}/329-4.09-00-vmnet-use-standard-definition-of-PCI_VENDOR_ID_VMWAR.patch" kernel_is ge 4 10 0 && epatch "${FILESDIR}/329-4.10-00-vmnet-use-standard-definition-of-PCI_VENDOR_ID_VMWAR.patch" kernel_is ge 4 12 0 && epatch "${FILESDIR}/329-4.12-00-vmmon-use-standard-definition-of-MSR_MISC_FEATURES_E.patch" @@ -68,6 +68,10 @@ src_prepare() { epatch "${FILESDIR}/329-01-vmmon-fix-always_inline-attribute-usage.patch" epatch "${FILESDIR}/329-02-vmmon-fix-indirect-call-with-retpoline-build.patch" epatch "${FILESDIR}/329-03-vmmon-check-presence-of-file_operations-poll.patch" + epatch "${FILESDIR}/329-04-modules-replace-SUBDIRS-with-M.patch" + epatch "${FILESDIR}/329-05-vmmon-totalram_pages-is-a-function-since-5.0.patch" + epatch "${FILESDIR}/329-06-vmmon-bring-back-the-do_gettimeofday-helper.patch" + epatch "${FILESDIR}/329-07-modules-handle-access_ok-with-two-arguments.patch" # decouple the kernel include dir from the running kernel version: https://github.com/stefantalpalaru/gentoo-overlay/issues/17 sed -i -e "s%HEADER_DIR = /lib/modules/\$(VM_UNAME)/build/include%HEADER_DIR = ${KERNEL_DIR}/include%" */Makefile || die "sed failed" diff --git a/app-emulation/vmware-modules/vmware-modules-330.0.2.ebuild b/app-emulation/vmware-modules/vmware-modules-330.0.2-r1.ebuild index 3bdd988..ade9af8 100644 --- a/app-emulation/vmware-modules/vmware-modules-330.0.2.ebuild +++ b/app-emulation/vmware-modules/vmware-modules-330.0.2-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 @@ -58,7 +58,7 @@ src_unpack() { } src_prepare() { - # from https://github.com/mkubecek/vmware-host-modules/tree/workstation-14.1.1 + # from https://github.com/mkubecek/vmware-host-modules/tree/workstation-15.0.2 kernel_is ge 4 9 0 && epatch "${FILESDIR}/329-4.09-00-vmnet-use-standard-definition-of-PCI_VENDOR_ID_VMWAR.patch" kernel_is ge 4 10 0 && epatch "${FILESDIR}/329-4.10-00-vmnet-use-standard-definition-of-PCI_VENDOR_ID_VMWAR.patch" kernel_is ge 4 12 0 && epatch "${FILESDIR}/329-4.12-00-vmmon-use-standard-definition-of-MSR_MISC_FEATURES_E.patch" @@ -68,6 +68,10 @@ src_prepare() { epatch "${FILESDIR}/329-01-vmmon-fix-always_inline-attribute-usage.patch" epatch "${FILESDIR}/329-02-vmmon-fix-indirect-call-with-retpoline-build.patch" epatch "${FILESDIR}/329-03-vmmon-check-presence-of-file_operations-poll.patch" + epatch "${FILESDIR}/329-04-modules-replace-SUBDIRS-with-M.patch" + epatch "${FILESDIR}/329-05-vmmon-totalram_pages-is-a-function-since-5.0.patch" + epatch "${FILESDIR}/329-06-vmmon-bring-back-the-do_gettimeofday-helper.patch" + epatch "${FILESDIR}/329-07-modules-handle-access_ok-with-two-arguments.patch" # decouple the kernel include dir from the running kernel version: https://github.com/stefantalpalaru/gentoo-overlay/issues/17 sed -i -e "s%HEADER_DIR = /lib/modules/\$(VM_UNAME)/build/include%HEADER_DIR = ${KERNEL_DIR}/include%" */Makefile || die "sed failed" diff --git a/app-emulation/vmware-workstation/Manifest b/app-emulation/vmware-workstation/Manifest index f757b9f..aec8b36 100644 --- a/app-emulation/vmware-workstation/Manifest +++ b/app-emulation/vmware-workstation/Manifest @@ -11,6 +11,6 @@ DIST com.vmware.fusion.tools.darwinPre15-14.1.5.10950780.zip.tar 2478080 BLAKE2B DIST com.vmware.fusion.tools.darwinPre15-15.0.2.10952284.zip.tar 2478080 BLAKE2B 661a53816a33de87305a9d61040ba742c97ff3885b2004ea05f9d7b5a7d5862185e82e1cefe6aa505c89ac3d487574514258719148c4d9f58d172c40f47c9cd7 SHA512 b7132b9ed302de2ce3b39d63b8eaea7d82f7e1a8cb66f618fa0247119746000986b7014bfd1772e27df2e6941e1000fd6143fcf9fdd2bd9b7164b01a9bd2e8a0 DIST unlocker-3.0.2.tar.gz 15984801 BLAKE2B e157ed24ad6cea1ab16dd5fc11935b7cdbb3fb0a1e0a9c059eb100f0c57508b749884111b93a9f272ad2c5a9ecd4fadb177ccac47d7688665c5fa8f100fcd2b1 SHA512 83a390562761791531574c05d2a5caacd936b45b32f26a1e5ba953ce32e27af29cb3ac0984c552c2eb9cfdf033d4b95fae1c33a70f2b169563d74d1ea188dacf DIST vmware-systemd-gentoo-02.tgz 14064 BLAKE2B 24ac2c2f295130f4aadad867ec88d652bd292cc60e6b471bb2e01069fe01d84dac3d8b0ca7690ebf218d663adfe0c1dc889d3f4f53cf3178b68291461260748b SHA512 3a382bfd5f1eb2b218d8012588ea55c1f22786dba35a1fc0fdfdb4e40b05e0e735ed09c6961684f6442e863c3ed72024ce01f19113bbd9ca47c32e3f43c55f42 -EBUILD vmware-workstation-14.1.5.10950780.ebuild 21229 BLAKE2B 91a655b414a893d78cb94308d714c30c21773d1e9ecc85049c15d3bf0968c658e47dfa55aa52b3a1834c9bece1340be482e73a37342ae89814a67180e2ac62be SHA512 a5ab74213cc505f4676d419bf6a8eefc242445f834e4c9c4eeced1fb94bac54ccd23ed177f4cdea2b62648983f0cef007cfe9c416d45e2ebb12e86fbc302f36a -EBUILD vmware-workstation-15.0.2.10952284.ebuild 21229 BLAKE2B 883e4c67e3c75f3777830fcb28ccfde4f6a4cfc5e5219baa7cc5031775575cdf47631d5fab3f16200a8283fb502268ba863da4019a51154243cb3d95a1f0059e SHA512 fab45e76e929d23115a5f177e91964c076015868ed68d4ed804087480db259645cc4a041e94285db8967a675e251e66a8fa67c1a5ef92ffbe9c8da6e3c6bbbc2 +EBUILD vmware-workstation-14.1.5.10950780-r3.ebuild 21438 BLAKE2B df7f0bcc200bbca4741182ff6b4965c377cc977b23a35fc4ac9968c9eafb9e2f1f063b764c8cc14fee3866d15dfd81171867b09d56aa953b2c25a8d4053268a8 SHA512 b631f5a694e649771be1b704bb2e4138f96e2e05510f47783b8cf4118a569943586aaca145993528f0194004342af0130ab546e4d128cb7b3a1a81fecb3ff49e +EBUILD vmware-workstation-15.0.2.10952284-r3.ebuild 21438 BLAKE2B 2f5ae1961568266cba5fd356fd43ac34e99c1fa21c23a3b914061409ef1da6fe36c43ae2376d3d19e30a41bf0feaf6780947de35bc846fdf1af4ba8d68f7b565 SHA512 7774b3a0f382279364be34f17a7bb821ef9fcfa82a4141c43a80708d4e57bada98866b68268c849091025956a8b617bd11b631ca06596ad4af9051c73609086d MISC metadata.xml 2031 BLAKE2B 00e17d5cc895b1d1c12263653b9824fb3340e4a8ea7bfb44f878ab7c3b59db2238d71a8b4daedd2b7307206c6aba9dbf7ab7410f845cb9a6362fda41b11c06fd SHA512 1c1ed18e2cd0c2112c2e6dfeded9a3bc9c9d554d926e411c2c49d90c36c17941996c9d0ff62a3ab6f8df8ad0cd22b6a72d1889a4017dffae8a27f974ac8a7212 diff --git a/app-emulation/vmware-workstation/contrib/vmware-workstation-0-various-automation-hacks.patch b/app-emulation/vmware-workstation/contrib/vmware-workstation-0-various-automation-hacks.patch new file mode 100644 index 0000000..6aad943 --- /dev/null +++ b/app-emulation/vmware-workstation/contrib/vmware-workstation-0-various-automation-hacks.patch @@ -0,0 +1,95 @@ +Date: Tue Jan 1 04:50:30 2019 -0800 + + vmware-workstation: crude vmware-installer fixing attempt + + Just enough to get the various automation things to actually + work in the client, on my box. No idea if this is maintainable + or what... feels gross since I have no idea how any of this crap + actually works. + from Arch. + + Probably totally broken without vendored libs. Not upstream ready. + + also, needs bin/vmrun first in ${PATH}: + + #!/bin/bash + tree=/opt/vmware + stutter=vmware/lib + libstutter() { + echo "lib${1}.so.1.0.2" + } + libpath() { + echo "${tree}/${stutter}/${stutter}/$(libstutter "${1}")" + } + export LD_LIBRARY_PATH="$(libpath ssl):$(libpath crypto)${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}" + exec /opt/vmware/bin/vmrun "$@" + + Maybe something like that needs to go in place of /opt/vmware/bin/vmrun? + +--- + .../vmware-workstation/files/vmware-server-15.0.rc | 6 +++++- + .../vmware-workstation-15.0.2.10952284-r2.ebuild | 19 ++++++++++++++++--- + 2 files changed, 21 insertions(+), 4 deletions(-) + +diff --git a/app-emulation/vmware-workstation/files/vmware-server-15.0.rc b/app-emulation/vmware-workstation/files/vmware-server-15.0.rc +index 8f9b7dd..20b6b80 100644 +--- a/app-emulation/vmware-workstation/files/vmware-server-15.0.rc ++++ b/app-emulation/vmware-workstation/files/vmware-server-15.0.rc +@@ -47,6 +47,10 @@ stop() { + --pidfile /var/run/vmware/vmware-hostd.PID + eend $? + ebegin Stopping VMware Authentication Daemon +- killall --wait vmware-authdlauncher ++ local needkill=1 ++ killall -0 vmware-authdlauncher &>/dev/null || needkill=0 ++ if [[ needkill -eq 1 ]]; then ++ kill -HUP --wait $(pidof vmware-authdlauncher) ++ fi + eend $? + } +diff --git a/app-emulation/vmware-workstation/vmware-workstation-15.0.2.10952284-r2.ebuild b/app-emulation/vmware-workstation/vmware-workstation-15.0.2.10952284-r2.ebuild +index c279020..ceb328b 100644 +--- a/app-emulation/vmware-workstation/vmware-workstation-15.0.2.10952284-r2.ebuild ++++ b/app-emulation/vmware-workstation/vmware-workstation-15.0.2.10952284-r2.ebuild +@@ -346,10 +346,22 @@ src_install() { + rm -rf "${D}${VM_INSTALL_DIR}"/lib/vmware/*.so + + # install the installer +- insinto "${VM_INSTALL_DIR}"/lib/vmware-installer/$vmware_installer_version +- doins vmware-installer/{vmis,vmis-launcher,vmware-installer,vmware-installer.py} + insinto /etc/vmware-installer + doins vmware-installer/bootstrap ++ sed -e "s|@@VERSION@@|${vmware_installer_version}|" \ ++ -e "s|@@VMWARE_INSTALLER@@|/opt/vmware/lib/vmware-installer/${vmware_installer_version}|" \ ++ -i "${D%/}"/etc/vmware-installer/bootstrap || die ++ ++ exeinto "${VM_INSTALL_DIR}"/lib/vmware-installer/${vmware_installer_version} ++ doexe vmware-installer/{vmware-installer,vmis-launcher} ++ ++ insinto "${VM_INSTALL_DIR}"/lib/vmware-installer/${vmware_installer_version} ++ doins vmware-installer/vmware-installer.py ++ doins -r vmware-installer/{artwork,.installer,vmis} ++ if use bundled-libs ; then ++ doins -r vmware-installer/{python,sopython} ++ doins -r vmware-installer/lib ++ fi + + # workaround for hardcoded search paths needed during shared objects loading + if ! use bundled-libs ; then +@@ -382,7 +394,7 @@ src_install() { + doexe */vmware-config + + # pam +- pamd_mimic_system vmware-authd auth account ++ pamd_mimic_system vmware-authd auth account password session + + # fuse + insinto /etc/modprobe.d +@@ -471,6 +483,7 @@ src_install() { + dosym "${VM_INSTALL_DIR}"/lib/vmware/bin/vmplayer "${VM_INSTALL_DIR}"/bin/vmplayer + dosym "${VM_INSTALL_DIR}"/lib/vmware/bin/vmware "${VM_INSTALL_DIR}"/bin/vmware + dosym "${VM_INSTALL_DIR}"/lib/vmware/icu /etc/vmware/icu ++ dosym "${VM_INSTALL_DIR}"/lib/vmware-installer/${vmware_installer_version}/vmware-installer "${VM_INSTALL_DIR}"/bin/vmware-installer + + # fix permissions + fperms 0755 "${VM_INSTALL_DIR}"/lib/vmware/bin/{appLoader,fusermount,mkisofs,vmware-remotemks} diff --git a/app-emulation/vmware-workstation/contrib/vmware-workstation-1-wierd-symlinks.patch b/app-emulation/vmware-workstation/contrib/vmware-workstation-1-wierd-symlinks.patch new file mode 100644 index 0000000..b5c2958 --- /dev/null +++ b/app-emulation/vmware-workstation/contrib/vmware-workstation-1-wierd-symlinks.patch @@ -0,0 +1,32 @@ +Date: Wed Jan 2 15:11:27 2019 -0800 + + add wierd bin/vmware-netcfg & lib/libcrypto.so.1.0.2-x86-64 symlinks +--- + .../vmware-workstation/vmware-workstation-15.0.2.10952284-r2.ebuild | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/app-emulation/vmware-workstation/vmware-workstation-15.0.2.10952284-r2.ebuild b/app-emulation/vmware-workstation/vmware-workstation-15.0.2.10952284-r2.ebuild +index ceb328b..89c24b1 100644 +--- a/app-emulation/vmware-workstation/vmware-workstation-15.0.2.10952284-r2.ebuild ++++ b/app-emulation/vmware-workstation/vmware-workstation-15.0.2.10952284-r2.ebuild +@@ -345,6 +345,11 @@ src_install() { + doins -r */lib/* vmware-vmx/roms + rm -rf "${D}${VM_INSTALL_DIR}"/lib/vmware/*.so + ++ # it wants this for whatever reason... fine, but what if ! use bundled-libs, still needed? ++ if use bundled-libs; then ++ dosym "libcrypto.so.1.0.2" "${VM_INSTALL_DIR}"/lib/vmware/lib/libcrypto.so.1.0.2-x86-64 ++ fi ++ + # install the installer + insinto /etc/vmware-installer + doins vmware-installer/bootstrap +@@ -482,6 +487,7 @@ src_install() { + done + dosym "${VM_INSTALL_DIR}"/lib/vmware/bin/vmplayer "${VM_INSTALL_DIR}"/bin/vmplayer + dosym "${VM_INSTALL_DIR}"/lib/vmware/bin/vmware "${VM_INSTALL_DIR}"/bin/vmware ++ dosym "${VM_INSTALL_DIR}"/lib/vmware/bin/vmware-netcfg "${VM_INSTALL_DIR}"/bin/vmware-netcfg + dosym "${VM_INSTALL_DIR}"/lib/vmware/icu /etc/vmware/icu + dosym "${VM_INSTALL_DIR}"/lib/vmware-installer/${vmware_installer_version}/vmware-installer "${VM_INSTALL_DIR}"/bin/vmware-installer + + diff --git a/app-emulation/vmware-workstation/contrib/vmware-workstation-2-more-symlinks.patch b/app-emulation/vmware-workstation/contrib/vmware-workstation-2-more-symlinks.patch new file mode 100644 index 0000000..8798d3e --- /dev/null +++ b/app-emulation/vmware-workstation/contrib/vmware-workstation-2-more-symlinks.patch @@ -0,0 +1,27 @@ +Date: Fri Jan 4 04:07:29 2019 -0800 + + Add a couple more symlinks and stuff for block-device mounting +--- + .../vmware-workstation/vmware-workstation-15.0.2.10952284-r2.ebuild | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/app-emulation/vmware-workstation/vmware-workstation-15.0.2.10952284-r2.ebuild b/app-emulation/vmware-workstation/vmware-workstation-15.0.2.10952284-r2.ebuild +index 89c24b1..5e83794 100644 +--- a/app-emulation/vmware-workstation/vmware-workstation-15.0.2.10952284-r2.ebuild ++++ b/app-emulation/vmware-workstation/vmware-workstation-15.0.2.10952284-r2.ebuild +@@ -482,12 +482,13 @@ src_install() { + + # create symlinks for the various tools + local tool ; for tool in thnuclnt vmware vmplayer{,-daemon} licenseTool vmamqpd \ +- vmware-{app-control,enter-serial,gksu,fuseUI,hostd,modconfig{,-console},netcfg,tray,unity-helper,vim-cmd,vmblock-fuse,vprobe,wssc-adminTool,zenity} ; do ++ vmware-{app-control,enter-serial,gksu,fuseUI,hostd,modconfig{,-console},netcfg,tray,unity-helper,vim-cmd,vmblock-fuse,vmware-fuseUI,vprobe,wssc-adminTool,zenity} ; do + dosym appLoader "${VM_INSTALL_DIR}"/lib/vmware/bin/"${tool}" + done + dosym "${VM_INSTALL_DIR}"/lib/vmware/bin/vmplayer "${VM_INSTALL_DIR}"/bin/vmplayer + dosym "${VM_INSTALL_DIR}"/lib/vmware/bin/vmware "${VM_INSTALL_DIR}"/bin/vmware + dosym "${VM_INSTALL_DIR}"/lib/vmware/bin/vmware-netcfg "${VM_INSTALL_DIR}"/bin/vmware-netcfg ++ dosym "${VM_INSTALL_DIR}"/lib/vmware/bin/vmware-fuseUI "${VM_INSTALL_DIR}"/bin/vmware-fuseUI + dosym "${VM_INSTALL_DIR}"/lib/vmware/icu /etc/vmware/icu + dosym "${VM_INSTALL_DIR}"/lib/vmware-installer/${vmware_installer_version}/vmware-installer "${VM_INSTALL_DIR}"/bin/vmware-installer + + diff --git a/app-emulation/vmware-workstation/vmware-workstation-14.1.5.10950780.ebuild b/app-emulation/vmware-workstation/vmware-workstation-14.1.5.10950780-r3.ebuild index 5c510df..8a05848 100644 --- a/app-emulation/vmware-workstation/vmware-workstation-14.1.5.10950780.ebuild +++ b/app-emulation/vmware-workstation/vmware-workstation-14.1.5.10950780-r3.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 @@ -39,7 +39,7 @@ REQUIRED_USE=" vmware-tools-darwin? ( macos-guests ) vmware-tools-darwinPre15? ( macos-guests ) " -RESTRICT="mirror strip" +RESTRICT="mirror preserve-libs strip" BUNDLED_LIBS_DIR=/opt/vmware/lib/vmware/lib @@ -180,6 +180,7 @@ RDEPEND=" dev-libs/icu dev-libs/json-c dev-libs/nettle:0/6.2 + <gnome-base/dconf-0.30.1 gnome-base/gconf gnome-base/libgnome-keyring media-gfx/graphite2 @@ -226,6 +227,11 @@ QA_WX_LOAD="opt/vmware/lib/vmware/tools-upgraders/vmware-tools-upgrader-32 opt/v # adding "opt/vmware/lib/vmware/lib/libvmware-gksu.so/libvmware-gksu.so" to QA_WX_LOAD doesn't work src_unpack() { + if has usersandbox $FEATURES ; then + ewarn "You are emerging ${P} with 'usersandbox' enabled." \ + "If unpacking fails, try emerging with 'FEATURES=-usersandbox'!" + fi + for a in ${A}; do if [ ${a##*.} == 'bundle' ]; then cp "${DISTDIR}/${a}" "${WORKDIR}" diff --git a/app-emulation/vmware-workstation/vmware-workstation-15.0.2.10952284.ebuild b/app-emulation/vmware-workstation/vmware-workstation-15.0.2.10952284-r3.ebuild index 6352b01..9ebe259 100644 --- a/app-emulation/vmware-workstation/vmware-workstation-15.0.2.10952284.ebuild +++ b/app-emulation/vmware-workstation/vmware-workstation-15.0.2.10952284-r3.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 @@ -39,7 +39,7 @@ REQUIRED_USE=" vmware-tools-darwin? ( macos-guests ) vmware-tools-darwinPre15? ( macos-guests ) " -RESTRICT="mirror strip" +RESTRICT="mirror preserve-libs strip" BUNDLED_LIBS_DIR=/opt/vmware/lib/vmware/lib @@ -180,6 +180,7 @@ RDEPEND=" dev-libs/icu dev-libs/json-c dev-libs/nettle:0/6.2 + <gnome-base/dconf-0.30.1 gnome-base/gconf gnome-base/libgnome-keyring media-gfx/graphite2 @@ -226,6 +227,11 @@ QA_WX_LOAD="opt/vmware/lib/vmware/tools-upgraders/vmware-tools-upgrader-32 opt/v # adding "opt/vmware/lib/vmware/lib/libvmware-gksu.so/libvmware-gksu.so" to QA_WX_LOAD doesn't work src_unpack() { + if has usersandbox $FEATURES ; then + ewarn "You are emerging ${P} with 'usersandbox' enabled." \ + "If unpacking fails, try emerging with 'FEATURES=-usersandbox'!" + fi + for a in ${A}; do if [ ${a##*.} == 'bundle' ]; then cp "${DISTDIR}/${a}" "${WORKDIR}" |