Package Details: vmware-patch 12.0.0-4

Git Clone URL: https://aur.archlinux.org/vmware-patch.git (read-only)
Package Base: vmware-patch
Description: A post-install configuration solution for VMware Workstation (Pro) and Player (Plus and Pro)
Upstream URL: https://wiki.archlinux.org/index.php/VMware#Configuration
Licenses: GPL
Submitter: oliv
Maintainer: Det
Last Packager: Det
Votes: 179
Popularity: 1.751696
First Submitted: 2011-01-31 12:49
Last Updated: 2015-10-13 20:22

Required by (0)

Sources (24)

  • common-functions.sh
  • vmblock-11.1.2-4.2.patch
  • vmci-10.0.4-3.14.patch
  • vmci-10.0.6-3.19.patch
  • vmci-10.0.6-4.0.patch
  • vmci-12.0.0-4.2.patch
  • vmmon-10.0.4-3.14.patch
  • vmmon-10.0.5-3.14.patch
  • vmmon-11.1.2-4.2.patch
  • vmnet-10.0.1-3.13.patch
  • vmnet-10.0.4-3.14.patch
  • vmnet-10.0.6-3.17.patch
  • vmnet-11.1.0-3.19.patch
  • vmnet-11.1.2-4.2.patch
  • vmware-patch.sh
  • vmware-unpatch.sh
  • vmware-usbarbitrator.service
  • vmware-workstation.service
  • vmware.service
  • vsock-10.0.4-3.14.patch
  • vsock-10.0.6-3.15.patch
  • vsock-10.0.6-3.19.patch
  • vsock-10.0.6-4.1.patch
  • vsock-11.1.2-4.2.patch

Latest Comments

kupiakos commented on 2016-05-09 18:14

You can't automatically build VMWare with GCC 6 at the moment.

See https://communities.vmware.com/thread/509702?start=30&tstart=0 on how to build the modules manually.

miau9202 commented on 2016-05-08 18:20

https://communities.vmware.com/thread/516751?start=0&tstart=0

this will fix vmnet compile error.

n17ikh commented on 2016-04-25 20:55

I did have to massage vmware-patch a bit to get Workstation 12.0.0 to build on kernel 4.5.0-1. I had to apply the patch detailed in ochiman's comment below; and I had trouble actually getting vmware to start (it would silently error out); I had to modify the library path:

echo /usr/lib/vmware/lib/libglibmm-2.4.so.1 | sudo tee /etc/ld.so.conf.d/vmware_workstation.conf
sudo ldconfig

jhsnyder666 commented on 2016-03-31 19:01

Doesn't seem to be a problem most people have, but Workstation 12 with NAT'd win7 guest, and if your host is on a network with a named domain rather than default localdomain (e.g. myveryowndomain vs localdomain) guest DNS is broken.

This seems to be because VMware actively attaches .localdomain to DNS resolution requests by default, so www.yahoo.com becomes www.yahoo.com.localdomain.

See e.g. https://communities.vmware.com/thread/527800

A hack that mostly works is to set the DNS server to something external to VMware ... I pointed guest DNS to my network router.

Seems like you'd want the domainname in /etc/vmware/vmnet8/dhcpd/dhcpd.conf to be either empty or set to the local network name, but the file warns against edits.

Det commented on 2016-02-21 13:31

You'd get the .service's and a cleanup of the previous modules.

Other than that, nothing. I haven't updated it in a while, and apparently neither the older VMwares nor the latest one (12) has needed any kind of additional patching.

rakotomandimby commented on 2015-12-15 18:02

I must have missed something, because Workstation 12 Pro (12.0.1 build-3160714) and kernel 4.2.5-1-ARCH, "vmware-modconfig --console --install-all" builds fine without this patch...
What is the point?

bobpaul commented on 2015-12-15 17:33

Because AUR comments eat whitespace, I re-created the patches per ochiman's instructions for Linux-4.3.2 and uploaded to pastbin: http://pastebin.com/bjLKfTyd

ochiman commented on 2015-12-07 00:13

To fix for kernel 4.3
use this patch > https://forums.gentoo.org/viewtopic-p-7841590.html?sid=3e09a55c4253da422e6c75915af3055a

i add to /usr/lib/vmware/modules/patches/vmci-12.0.0-4.2.patch
and /usr/lib/vmware/modules/patches/vmmon-12.0.0-4.2.patch

run vmware-patch

now vmware is starting

credits to agix from gentoo forum

-----------------------------------------------------

[ochi@ochinote patches]$ cat vmmon-12.0.0-4.2.patch
--- vmmon-only/linux/driver.c 2015-11-23 14:12:17.329780992 +0200
+++ vmmon-only/linux/driver.c 2015-11-23 14:18:46.159776291 +0200
@@ -400,9 +400,7 @@
#ifdef VMX86_DEVEL
unregister_chrdev(linuxState.major, linuxState.deviceName);
#else
- if (misc_deregister(&linuxState.misc)) {
- Warning("Module %s: error unregistering\n", linuxState.deviceName);
- }
+ misc_deregister(&linuxState.misc);
#endif

Log("Module %s: unloaded\n", linuxState.deviceName);

------------------------------------------------------------
[ochi@ochinote patches]$ cat vmci-12.0.0-4.2.patch
diff -ur a/vmci-only/linux/driver.c b/vmci-only/linux/driver.c
--- vmci-only/linux/driver.c 2015-05-31 16:01:25.000000000 +0300
+++ vmci-only/linux/driver.c 2015-08-08 00:42:47.000000000 +0300
@@ -26,13 +26,16 @@

#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>
/* Use weak: not all kernels export sys_ioctl for use by modules */
asmlinkage __attribute__((weak)) long
sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg);
#endif
+
#include <linux/miscdevice.h>
#include <linux/moduleparam.h>
#include <linux/poll.h>
@@ -713,7 +716,7 @@

case IOCTL_VMCI_INIT_CONTEXT: {
VMCIInitBlock initBlock;
- VMCIHostUser user;
+ uid_t user;

retval = copy_from_user(&initBlock, (void *)ioarg, sizeof initBlock);
if (retval != 0) {
@@ -735,7 +738,11 @@
goto init_release;
}

+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
user = current_uid();
+#else
+ user = from_kuid(&init_user_ns, current_uid());
+#endif
retval = VMCIContext_InitContext(initBlock.cid, initBlock.flags,
0 /* Unused */, vmciLinux->userVersion,
&user, &vmciLinux->context);
@@ -1683,7 +1690,7 @@
/* This should be last to make sure we are done initializing. */
retval = pci_register_driver(&vmci_driver);
if (retval < 0) {
- vfree(data_buffer);
+ kvfree(data_buffer);
data_buffer = NULL;
return retval;
}
@@ -2470,7 +2477,7 @@

if (guestDeviceInit) {
pci_unregister_driver(&vmci_driver);
- vfree(data_buffer);
+ kvfree(data_buffer);
guestDeviceInit = FALSE;
}

diff -ur a/vmci-only/linux/vmciKernelIf.c b/vmci-only/linux/vmciKernelIf.c
--- vmci-only/linux/vmciKernelIf.c 2015-05-31 16:01:25.000000000 +0300
+++ vmci-only/linux/vmciKernelIf.c 2015-02-24 03:58:06.000000000 +0300
@@ -40,6 +40,7 @@
#include <linux/socket.h> /* For memcpy_{to,from}iovec(). */
#include <linux/vmalloc.h>
#include <linux/wait.h>
+#include <linux/skbuff.h>

#include "compat_highmem.h"
#include "compat_interrupt.h"
@@ -1196,21 +1197,21 @@
} else {
toCopy = size - bytesCopied;
}
-
+ /* Code cloned from kernels drivers/misc/vmw_vmci/vmci_queue_pair.c */
if (isIovec) {
- struct iovec *iov = (struct iovec *)src;
- int err;
+ struct msghdr *msg = (struct msghdr *)src;
+ int err;

- /* The iovec will track bytesCopied internally. */
- err = memcpy_fromiovec((uint8 *)va + pageOffset, iov, toCopy);
- if (err != 0) {
- if (kernelIf->host) {
- kunmap(kernelIf->u.h.page[pageIndex]);
+ /* The iovec will track bytes_copied internally. */
+ err = memcpy_from_msg((u8 *)va + pageOffset, msg, toCopy);
+ if (err != 0) {
+ if (kernelIf->host)
+ kunmap(kernelIf->u.h.page[pageIndex]);
+ return VMCI_ERROR_INVALID_ARGS;
}
- return VMCI_ERROR_INVALID_ARGS;
- }
- } else {
- memcpy((uint8 *)va + pageOffset, (uint8 *)src + bytesCopied, toCopy);
+ } else {
+ memcpy((u8 *)va + pageOffset,
+ (u8 *)src + bytesCopied, toCopy);
}

bytesCopied += toCopy;
@@ -1273,11 +1274,11 @@
}

if (isIovec) {
- struct iovec *iov = (struct iovec *)dest;
+ struct msghdr *msg = (struct msghdr *)dest;
int err;

/* The iovec will track bytesCopied internally. */
- err = memcpy_toiovec(iov, (uint8 *)va + pageOffset, toCopy);
+ err = memcpy_to_msg(msg, (uint8 *)va + pageOffset, toCopy);
if (err != 0) {
if (kernelIf->host) {
kunmap(kernelIf->u.h.page[pageIndex]);
diff -ur a/vmci-only/shared/vm_device_version.h b/vmci-only/shared/vm_device_version.h
--- vmci-only/shared/vm_device_version.h 2015-05-31 16:01:26.000000000 +0300
+++ vmci-only/shared/vm_device_version.h 2015-02-24 03:58:06.000000000 +0300
@@ -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
--- vmci-only/linux/driver.c 2015-11-23 14:35:55.339763849 +0200
+++ vmci-only/linux/driver.c 2015-11-23 14:38:57.439761647 +0200
@@ -2484,12 +2484,7 @@

VMCI_HostCleanup();

- retval = misc_deregister(&linuxState.misc);
- if (retval) {
- Warning(LGPFX "Module %s: error unregistering\n", VMCI_MODULE_NAME);
- } else {
- Log(LGPFX"Module %s: unloaded\n", VMCI_MODULE_NAME);
- }
+ misc_deregister(&linuxState.misc);

hostDeviceInit = FALSE;
}

-------------------------------------------------------------------

reeling commented on 2015-12-03 15:00

I think there might be a new patch needed for the 4.2.5 kernel and VMware 12.

Kernel: 4.2.5-1
VMware Workstation 12.0.1 build-3160714


When I run this it says no patches required but then it errors with no clear reason. I tried compiling the modules manually using dkms according to the wiki https://wiki.archlinux.org/index.php/VMware#Using_DKMS_to_manage_the_modules. It errors. The full trace, as reported by dkms, is here http://pastebin.com/qbPUm9CA. I believe this is the relevant section

/tmp/modconfig-MdnX6F/vmnet-only/vmnetInt.h:84:40: error: too few arguments to function ‘sk_alloc’
# define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
^
/tmp/modconfig-MdnX6F/vmnet-only/bridge.c:952:17: note: in expansion of macro ‘compat_sk_alloc’
bridge->sk = compat_sk_alloc(bridge, GFP_ATOMIC);
^
In file included from /tmp/modconfig-MdnX6F/vmnet-only/compat_sock.h:23:0,
from /tmp/modconfig-MdnX6F/vmnet-only/bridge.c:35:
include/net/sock.h:1523:14: note: declared here
struct sock *sk_alloc(struct net *net, int family, gfp_t priority,
^
scripts/Makefile.build:258: recipe for target '/tmp/modconfig-MdnX6F/vmnet-only/bridge.o' failed


Det commented on 2015-10-10 08:22

You sohuld mention that in https://aur.archlinux.org/packages/ncurses5-compat-libs/, not here.

All comments