[PATCH] recent kernel 4.4 upgrade broke vmware workstation

This forum is dedicated to advanced help and support :

Ask here your questions about advanced usage of Mageia. For example you may post here all your questions about network and automated installs, complex server configurations, kernel tuning, creating your own Mageia mirrors, and all tasks likely to be touchy even for skilled users.

[PATCH] recent kernel 4.4 upgrade broke vmware workstation

Postby jiml8 » Jun 16th, '16, 23:33

The recent upgrade to Kernel 4.4 broke vmware workstation 11 rather badly. In fact, I regret doing the update now because I really did not have the time to fix it.

However, needs must, and I did patch vmware workstation 11 to run with this latest kernel although it took a few hours. When I get around to it, I will probably construct and post a patch file so that others can do this also.

Until that time, contact me directly if you upgrade and your workstation installation won't compile correctly, and I can send you the patched kernel module files (the tar files found in /lib/vmware/modules/source). Patches will also work with vmware player.

I was quite surprised when I went looking and could not find a built and working patchfile already available someplace. I found bits and pieces, but part of it I had to sort out for myself. Very strange.
Last edited by doktor5000 on Jun 17th, '16, 16:13, edited 1 time in total.
Reason: adjusted thread title
jiml8
 
Posts: 1253
Joined: Jul 7th, '13, 18:09

Re: recent upgrade and vmware workstation

Postby jiml8 » Jun 17th, '16, 01:49

here is the patchfile to patch vmware workstation 11.1 to work with Linux kernel 4.4.

Code: Select all
diff -rupN orig/vmci-only/linux/driver.c new/vmci-only/linux/driver.c
--- orig/vmci-only/linux/driver.c       2014-11-20 17:29:15.000000000 -0700
+++ new/vmci-only/linux/driver.c        2016-06-16 13:41:59.000000000 -0700
@@ -27,6 +27,9 @@
 #include <linux/file.h>
 #include <linux/fs.h>
 #include <linux/init.h>
+#include <linux/vmalloc.h>
+#include <linux/uio.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 */
@@ -2466,7 +2469,6 @@ vmci_init(void)
 static void __exit
 vmci_exit(void)
 {
-   int retval;
 
    if (guestDeviceInit) {
       pci_unregister_driver(&vmci_driver);
@@ -2479,12 +2481,7 @@ vmci_exit(void)
 
       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;
    }
diff -rupN orig/vmci-only/linux/vmciKernelIf.c new/vmci-only/linux/vmciKernelIf.c
--- orig/vmci-only/linux/vmciKernelIf.c 2014-11-20 17:29:15.000000000 -0700
+++ new/vmci-only/linux/vmciKernelIf.c  2016-06-16 14:22:13.000000000 -0700
@@ -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"
@@ -1198,11 +1199,13 @@ __VMCIMemcpyToQueue(VMCIQueue *queue,
       }
 
       if (isIovec) {
-         struct iovec *iov = (struct iovec *)src;
+       //struct iovec *iov = (struct iovec *)src;
+       struct msghdr *msg = src;
          int err;
 
          /* The iovec will track bytesCopied internally. */
-         err = memcpy_fromiovec((uint8 *)va + pageOffset, iov, toCopy);
+         //err = memcpy_fromiovec((uint8 *)va + pageOffset, iov, toCopy);
+        err = memcpy_from_msg((uint8 *)va + pageOffset, msg, toCopy);
          if (err != 0) {
             if (kernelIf->host) {
                kunmap(kernelIf->u.h.page[pageIndex]);
@@ -1273,11 +1276,13 @@ __VMCIMemcpyFromQueue(void *dest,
       }
 
       if (isIovec) {
-         struct iovec *iov = (struct iovec *)dest;
+       //struct iovec *iov = (struct iovec *)dest;
+        struct msghdr *msg = dest;
          int err;
 
          /* The iovec will track bytesCopied internally. */
-         err = memcpy_toiovec(iov, (uint8 *)va + pageOffset, toCopy);
+         //err = memcpy_toiovec(iov, (uint8 *)va + pageOffset, toCopy);
+        err = memcpy_to_msg((uint8 *)va + pageOffset, msg, toCopy);
          if (err != 0) {
             if (kernelIf->host) {
                kunmap(kernelIf->u.h.page[pageIndex]);
diff -rupN orig/vmmon-only/linux/driver.c new/vmmon-only/linux/driver.c
--- orig/vmmon-only/linux/driver.c      2014-11-20 18:13:55.000000000 -0700
+++ new/vmmon-only/linux/driver.c       2016-06-16 13:23:34.000000000 -0700
@@ -400,9 +400,7 @@ cleanup_module(void)
 #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);
diff -rupN orig/vmnet-only/driver.c new/vmnet-only/driver.c
--- orig/vmnet-only/driver.c    2014-11-20 18:13:56.000000000 -0700
+++ new/vmnet-only/driver.c     2015-08-03 16:28:44.000000000 -0700
@@ -1191,8 +1191,8 @@ VNetFileOpUnlockedIoctl(struct file    *
    struct inode *inode = NULL;
    long err;
 
-   if (filp && filp->f_dentry) {
-      inode = filp->f_dentry->d_inode;
+   if (filp && filp->f_path.dentry) {
+      inode = filp->f_path.dentry->d_inode;
    }
    err = VNetFileOpIoctl(inode, filp, iocmd, ioarg);
    return err;
diff -rupN orig/vmnet-only/userif.c new/vmnet-only/userif.c
--- orig/vmnet-only/userif.c    2014-11-20 18:13:56.000000000 -0700
+++ new/vmnet-only/userif.c     2015-08-03 16:32:14.000000000 -0700
@@ -523,7 +523,9 @@ VNetCopyDatagram(const struct sk_buff *s
       .iov_base = buf,
       .iov_len  = len,
    };
-   return skb_copy_datagram_iovec(skb, 0, &iov, len);
+   struct iov_iter to;
+   iov_iter_init(&to, READ, &iov, 1, len);
+   return skb_copy_datagram_iter(skb, 0, &to, len);
 }
 
 
diff -rupN orig/vmnet-only/vmnetInt.h new/vmnet-only/vmnetInt.h
--- orig/vmnet-only/vmnetInt.h  2014-11-20 18:13:55.000000000 -0700
+++ new/vmnet-only/vmnetInt.h   2016-06-16 13:29:37.000000000 -0700
@@ -78,8 +78,13 @@
 
 extern struct proto vmnet_proto;
 #ifdef VMW_NETDEV_HAS_NET
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 00)
 #   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
-                                                PF_NETLINK, _pri, &vmnet_proto)
+                                                 PF_NETLINK, _pri, &vmnet_proto, 1)
+#else
+#   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
+                                                 PF_NETLINK, _pri, &vmnet_proto)
+#endif
 #else
 #   define compat_sk_alloc(_bri, _pri) sk_alloc(PF_NETLINK, _pri, &vmnet_proto, 1)
 #endif


jiml8
 
Posts: 1253
Joined: Jul 7th, '13, 18:09

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

Postby doktor5000 » Jun 17th, '16, 16:14

Thanks for sharing, I adjusted the title slightly.
Cauldron is not for the faint of heart!
Caution: Hot, bubbling magic inside. May explode or cook your kittens!
----
Disclaimer: Beware of allergic reactions in answer to unconstructive complaint-type posts
User avatar
doktor5000
 
Posts: 17629
Joined: Jun 4th, '11, 10:10
Location: Leipzig, Germany

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

Postby jiml8 » Jun 17th, '16, 18:54

I also posted the patchfile on github.

https://github.com/jiml8/vmware-worksta ... -4.4.patch
jiml8
 
Posts: 1253
Joined: Jul 7th, '13, 18:09

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

Postby magfan » Jul 6th, '16, 14:41

@jiml8: How can I apply your patch file? To which directory do I have to go?
Just calling
Code: Select all
patch -p3 < ./Downloads/vmware-workstation-11.0-linux-kernel-4.4.patch-master/workstation11-kern4.4.patch
did not work.
magfan
 
Posts: 332
Joined: Apr 3rd, '12, 12:33

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

Postby doktor5000 » Jul 6th, '16, 18:28

In the directory where the file that should be patched (vmci-only/linux/driver.c) is located, run it with
-p1 so patch will strip away the first bit of the path in the patch ( new/vmci-only/linux/driver.c) , so e.g.

Code: Select all
patch -p1 < /home/magfan/Downloads/vmware-workstation-11.0-linux-kernel-4.4.patch-master/workstation11-kern4.4.patch
Cauldron is not for the faint of heart!
Caution: Hot, bubbling magic inside. May explode or cook your kittens!
----
Disclaimer: Beware of allergic reactions in answer to unconstructive complaint-type posts
User avatar
doktor5000
 
Posts: 17629
Joined: Jun 4th, '11, 10:10
Location: Leipzig, Germany

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

Postby jiml8 » Jul 6th, '16, 19:02

Go to the directory where the vmware files are kept. In Mageia, that is /lib/vmware/modules/source. Untar the tar files you find there, specifically vmci.tar, vmmon.tar, and vmnet.tar. Then run the patch and it should find the files to patch. After doing that, tar the directories vmmon-only, vmnet-only, and vmci-only to replace the tar files that are currently there. Then vmware workstation will compile.
jiml8
 
Posts: 1253
Joined: Jul 7th, '13, 18:09

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

Postby magfan » Jul 7th, '16, 08:53

Well, there is still something missing:
Code: Select all
# patch -p1 < /home/magfan/Downloads/vmware-workstation-11.0-linux-kernel-4.4.patch-master/workstation11-kern4.4.patch
patching file vmci-only/linux/driver.c
patching file vmci-only/linux/vmciKernelIf.c
patching file vmmon-only/linux/driver.c
patching file vmnet-only/driver.c
Hunk #1 FAILED at 1191.
1 out of 1 hunk FAILED -- saving rejects to file vmnet-only/driver.c.rej
patching file vmnet-only/userif.c
Hunk #1 FAILED at 523.
1 out of 1 hunk FAILED -- saving rejects to file vmnet-only/userif.c.rej
patching file vmnet-only/vmnetInt.h
# cat vmnet-only/driver.c.rej
--- vmnet-only/driver.c 2014-11-20 18:13:56.000000000 -0700
+++ vmnet-only/driver.c 2015-08-03 16:28:44.000000000 -0700
@@ -1191,8 +1191,8 @@ VNetFileOpUnlockedIoctl(struct file    *
    struct inode *inode = NULL;
    long err;
 
-   if (filp && filp->f_dentry) {
-      inode = filp->f_dentry->d_inode;
+   if (filp && filp->f_path.dentry) {
+      inode = filp->f_path.dentry->d_inode;
    }
    err = VNetFileOpIoctl(inode, filp, iocmd, ioarg);
    return err;
# cat vmnet-only/userif.c.rej
--- vmnet-only/userif.c 2014-11-20 18:13:56.000000000 -0700
+++ vmnet-only/userif.c 2015-08-03 16:32:14.000000000 -0700
@@ -523,7 +523,9 @@ VNetCopyDatagram(const struct sk_buff *s
       .iov_base = buf,
       .iov_len  = len,
    };
-   return skb_copy_datagram_iovec(skb, 0, &iov, len);
+   struct iov_iter to;
+   iov_iter_init(&to, READ, &iov, 1, len);
+   return skb_copy_datagram_iter(skb, 0, &to, len);
 }
 

# vmware-modconfig --console --install-all
Stopping vmware (via systemctl):                                                                              [  OK  ]
make: Entering directory '/tmp/modconfig-rXMHTk/vmmon-only'
Using kernel build system.
/usr/bin/make -C /lib/modules/4.4.13-server-1.mga5/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory '/usr/src/kernel-4.4.13-server-1.mga5'
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/linux/driver.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/linux/hostif.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/linux/driverLog.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/common/memtrack.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/common/apic.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/common/hashFunc.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/common/vmx86.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/common/cpuid.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/common/task.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/common/phystrack.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/vmcore/moduleloop.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/common/comport.o
/tmp/modconfig-rXMHTk/vmmon-only/linux/driver.c: In Funktion »cleanup_module«:
/tmp/modconfig-rXMHTk/vmmon-only/linux/driver.c:403:8: Fehler: void-Wert nicht ignoriert wie es sein sollte
    if (misc_deregister(&linuxState.misc)) {
        ^
Auf höchster Ebene:
/tmp/modconfig-rXMHTk/vmmon-only/linux/driver.c:1332:1: Warnung: always_inline könnte nicht als inline erzeugt werden [-Wattributes]
 LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min
 ^
scripts/Makefile.build:258: recipe for target '/tmp/modconfig-rXMHTk/vmmon-only/linux/driver.o' failed
make[2]: *** [/tmp/modconfig-rXMHTk/vmmon-only/linux/driver.o] Error 1
make[2]: *** Warte auf noch nicht beendete Prozesse...
Makefile:1378: recipe for target '_module_/tmp/modconfig-rXMHTk/vmmon-only' failed
make[1]: *** [_module_/tmp/modconfig-rXMHTk/vmmon-only] Error 2
make[1]: Leaving directory '/usr/src/kernel-4.4.13-server-1.mga5'
Makefile:120: recipe for target 'vmmon.ko' failed
make: *** [vmmon.ko] Error 2
make: Leaving directory '/tmp/modconfig-rXMHTk/vmmon-only'
make: Entering directory '/tmp/modconfig-rXMHTk/vmnet-only'
Using kernel build system.
/usr/bin/make -C /lib/modules/4.4.13-server-1.mga5/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory '/usr/src/kernel-4.4.13-server-1.mga5'
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/driver.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/hub.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/userif.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/netif.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/bridge.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/smac_compat.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/procfs.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/smac.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/vnetUserListener.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/vnetEvent.o
In file included from include/linux/pci.h:35:0,
                 from /tmp/modconfig-rXMHTk/vmnet-only/compat_netdevice.h:27,
                 from /tmp/modconfig-rXMHTk/vmnet-only/netif.c:43:
include/linux/pci_ids.h:2252:0: Warnung: »PCI_VENDOR_ID_VMWARE« redefiniert
 #define PCI_VENDOR_ID_VMWARE  0x15ad
 ^
In file included from /tmp/modconfig-rXMHTk/vmnet-only/net.h:38:0,
                 from /tmp/modconfig-rXMHTk/vmnet-only/vnetInt.h:26,
                 from /tmp/modconfig-rXMHTk/vmnet-only/netif.c:42:
/tmp/modconfig-rXMHTk/vmnet-only/vm_device_version.h:56:0: Anmerkung: dies ist die Stelle der vorherigen Definition
 #define PCI_VENDOR_ID_VMWARE                    0x15AD
 ^
In file included from /tmp/modconfig-rXMHTk/vmnet-only/net.h:38:0,
                 from /tmp/modconfig-rXMHTk/vmnet-only/vnetInt.h:26,
                 from /tmp/modconfig-rXMHTk/vmnet-only/bridge.c:52:
/tmp/modconfig-rXMHTk/vmnet-only/vm_device_version.h:56:0: Warnung: »PCI_VENDOR_ID_VMWARE« redefiniert
 #define PCI_VENDOR_ID_VMWARE                    0x15AD
 ^
In file included from include/linux/pci.h:35:0,
                 from /tmp/modconfig-rXMHTk/vmnet-only/compat_netdevice.h:27,
                 from /tmp/modconfig-rXMHTk/vmnet-only/bridge.c:51:
include/linux/pci_ids.h:2252:0: Anmerkung: dies ist die Stelle der vorherigen Definition
 #define PCI_VENDOR_ID_VMWARE  0x15ad
 ^
In file included from /tmp/modconfig-rXMHTk/vmnet-only/bridge.c:50:0:
/tmp/modconfig-rXMHTk/vmnet-only/bridge.c: In Funktion »VNetBridgeUp«:
/tmp/modconfig-rXMHTk/vmnet-only/vmnetInt.h:81:40: Fehler: Zu wenige Argumente für Funktion »sk_alloc«
 #   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
                                        ^
/tmp/modconfig-rXMHTk/vmnet-only/bridge.c:952:17: Anmerkung: bei Substitution des Makros »compat_sk_alloc«
    bridge->sk = compat_sk_alloc(bridge, GFP_ATOMIC);
                 ^
In file included from /tmp/modconfig-rXMHTk/vmnet-only/compat_sock.h:23:0,
                 from /tmp/modconfig-rXMHTk/vmnet-only/bridge.c:35:
include/net/sock.h:1511:14: Anmerkung: hier deklariert
 struct sock *sk_alloc(struct net *net, int family, gfp_t priority,
              ^
scripts/Makefile.build:258: recipe for target '/tmp/modconfig-rXMHTk/vmnet-only/bridge.o' failed
make[2]: *** [/tmp/modconfig-rXMHTk/vmnet-only/bridge.o] Error 1
make[2]: *** Warte auf noch nicht beendete Prozesse...
Makefile:1378: recipe for target '_module_/tmp/modconfig-rXMHTk/vmnet-only' failed
make[1]: *** [_module_/tmp/modconfig-rXMHTk/vmnet-only] Error 2
make[1]: Leaving directory '/usr/src/kernel-4.4.13-server-1.mga5'
Makefile:120: recipe for target 'vmnet.ko' failed
make: *** [vmnet.ko] Error 2
make: Leaving directory '/tmp/modconfig-rXMHTk/vmnet-only'
Unable to install all modules.  See log for details.

#


I am using vmware-workstation 11.1.2.2780323.
magfan
 
Posts: 332
Joined: Apr 3rd, '12, 12:33

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

Postby jiml8 » Jul 7th, '16, 18:42

The version of Workstation I have here is 11.0.0. I have not updated for technical reasons, and any comments I might have made about 11.1 are in error.

Also, I do not read German. However, I was able to sort out at least some of what is causing you trouble.

The patch to vmmon is in the patch file, but for some reason your vmmon-only/linux/driver.c file did not get patched.

Edit that file, and around line 403 change this code:
Code: Select all
if (misc_deregister(&linuxState.misc)) {
      Warning("Module %s: error unregistering\n", linuxState.deviceName);
   }

to this:
Code: Select all
misc_deregister(&linuxState.misc);

and your module will compile.

In vmnet, you had a similar problem; the patch code is in the patch file, but somehow did not take on your system.

In the file vmnet-only/vmnetInt.h find these lines:
Code: Select all
#ifdef VMW_NETDEV_HAS_NET
#   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
                                                PF_NETLINK, _pri, &vmnet_proto)
#else
#   define compat_sk_alloc(_bri, _pri) sk_alloc(PF_NETLINK, _pri, &vmnet_proto, 1)
#endif


and replace them with these lines:
Code: Select all
#ifdef VMW_NETDEV_HAS_NET
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 00)
#   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
                    PF_NETLINK, _pri, &vmnet_proto, 1)
#else
#   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
                    PF_NETLINK, _pri, &vmnet_proto)
#endif
#else
#   define compat_sk_alloc(_bri, _pri) sk_alloc(PF_NETLINK, _pri, &vmnet_proto, 1)
#endif


Then everything should compile.
jiml8
 
Posts: 1253
Joined: Jul 7th, '13, 18:09

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

Postby magfan » Jul 8th, '16, 15:08

This time I tried to apply the patch again with the option "--merge" and I got the following output:
Code: Select all
patching file vmci-only/linux/driver.c
patching file vmci-only/linux/vmciKernelIf.c
patching file vmmon-only/linux/driver.c
patching file vmnet-only/driver.c
Hunk #1 NOT MERGED at 1314-1320.
patching file vmnet-only/userif.c
Hunk #1 NOT MERGED at 526-536.
patching file vmnet-only/vmnetInt.h


The two places look like this (vmnet-only/driver.c):
Code: Select all
<<<<<<<
   if (jack2->numPorts) {
      VNetPortsChanged(jack1);
=======
   if (filp && filp->f_path.dentry) {
      inode = filp->f_path.dentry->d_inode;
>>>>>>>


and (vmnet-only/userif.c):
Code: Select all
<<<<<<<
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0)
   return skb_copy_datagram_iovec(skb, 0, &iov, len);
=======
   struct iov_iter to;
   iov_iter_init(&to, READ, &iov, 1, len);
   return skb_copy_datagram_iter(skb, 0, &to, len);
}


>>>>>>>


Du you have any idea about what I could do?
magfan
 
Posts: 332
Joined: Apr 3rd, '12, 12:33

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

Postby jiml8 » Jul 9th, '16, 03:52

Does it compile? If so, don't worry about it. Probably would mean that this particular portion of the patch was already patched in your code.
jiml8
 
Posts: 1253
Joined: Jul 7th, '13, 18:09

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

Postby magfan » Jul 11th, '16, 08:33

No, it does not compile:
Code: Select all
# vmware-modconfig --console --install-all
Stopping vmware (via systemctl):                                          [  OK  ]
make: Entering directory '/tmp/modconfig-paeKFD/vmmon-only'
Using kernel build system.
/usr/bin/make -C /lib/modules/4.4.13-server-1.mga5/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory '/usr/src/kernel-4.4.13-server-1.mga5'
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/linux/driver.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/linux/hostif.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/linux/driverLog.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/common/memtrack.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/common/apic.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/common/hashFunc.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/common/vmx86.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/common/task.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/common/cpuid.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/common/comport.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/common/phystrack.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/vmcore/moduleloop.o
/tmp/modconfig-paeKFD/vmmon-only/linux/driver.c: In Funktion »cleanup_module«:
/tmp/modconfig-paeKFD/vmmon-only/linux/driver.c:403:8: Fehler: void-Wert nicht ignoriert wie es sein sollte
    if (misc_deregister(&linuxState.misc)) {
        ^
Auf höchster Ebene:
/tmp/modconfig-paeKFD/vmmon-only/linux/driver.c:1332:1: Warnung: always_inline könnte nicht als inline erzeugt werden [-Wattributes]
 LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min
 ^                                                                                       
scripts/Makefile.build:258: recipe for target '/tmp/modconfig-paeKFD/vmmon-only/linux/driver.o' failed
make[2]: *** [/tmp/modconfig-paeKFD/vmmon-only/linux/driver.o] Error 1
make[2]: *** Warte auf noch nicht beendete Prozesse...
Makefile:1378: recipe for target '_module_/tmp/modconfig-paeKFD/vmmon-only' failed
make[1]: *** [_module_/tmp/modconfig-paeKFD/vmmon-only] Error 2
make[1]: Leaving directory '/usr/src/kernel-4.4.13-server-1.mga5'
Makefile:120: recipe for target 'vmmon.ko' failed
make: *** [vmmon.ko] Error 2
make: Leaving directory '/tmp/modconfig-paeKFD/vmmon-only'
make: Entering directory '/tmp/modconfig-paeKFD/vmnet-only'
Using kernel build system.
/usr/bin/make -C /lib/modules/4.4.13-server-1.mga5/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory '/usr/src/kernel-4.4.13-server-1.mga5'
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/driver.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/hub.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/userif.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/netif.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/bridge.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/procfs.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/smac_compat.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/smac.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/vnetEvent.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/vnetUserListener.o
In file included from include/linux/pci.h:35:0,
                 from /tmp/modconfig-paeKFD/vmnet-only/compat_netdevice.h:27,
                 from /tmp/modconfig-paeKFD/vmnet-only/netif.c:43:
include/linux/pci_ids.h:2252:0: Warnung: »PCI_VENDOR_ID_VMWARE« redefiniert
 #define PCI_VENDOR_ID_VMWARE  0x15ad
 ^
In file included from /tmp/modconfig-paeKFD/vmnet-only/net.h:38:0,
                 from /tmp/modconfig-paeKFD/vmnet-only/vnetInt.h:26,
                 from /tmp/modconfig-paeKFD/vmnet-only/netif.c:42:
/tmp/modconfig-paeKFD/vmnet-only/vm_device_version.h:56:0: Anmerkung: dies ist die Stelle der vorherigen Definition
 #define PCI_VENDOR_ID_VMWARE                    0x15AD
 ^
In file included from /tmp/modconfig-paeKFD/vmnet-only/net.h:38:0,
                 from /tmp/modconfig-paeKFD/vmnet-only/vnetInt.h:26,
                 from /tmp/modconfig-paeKFD/vmnet-only/bridge.c:52:
/tmp/modconfig-paeKFD/vmnet-only/vm_device_version.h:56:0: Warnung: »PCI_VENDOR_ID_VMWARE« redefiniert
 #define PCI_VENDOR_ID_VMWARE                    0x15AD
 ^
In file included from include/linux/pci.h:35:0,
                 from /tmp/modconfig-paeKFD/vmnet-only/compat_netdevice.h:27,
                 from /tmp/modconfig-paeKFD/vmnet-only/bridge.c:51:
include/linux/pci_ids.h:2252:0: Anmerkung: dies ist die Stelle der vorherigen Definition
 #define PCI_VENDOR_ID_VMWARE  0x15ad
 ^
In file included from /tmp/modconfig-paeKFD/vmnet-only/bridge.c:50:0:
/tmp/modconfig-paeKFD/vmnet-only/bridge.c: In Funktion »VNetBridgeUp«:
/tmp/modconfig-paeKFD/vmnet-only/vmnetInt.h:81:40: Fehler: Zu wenige Argumente für Funktion »sk_alloc«
 #   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
                                        ^
/tmp/modconfig-paeKFD/vmnet-only/bridge.c:952:17: Anmerkung: bei Substitution des Makros »compat_sk_alloc«
    bridge->sk = compat_sk_alloc(bridge, GFP_ATOMIC);
                 ^
In file included from /tmp/modconfig-paeKFD/vmnet-only/compat_sock.h:23:0,
                 from /tmp/modconfig-paeKFD/vmnet-only/bridge.c:35:
include/net/sock.h:1511:14: Anmerkung: hier deklariert
 struct sock *sk_alloc(struct net *net, int family, gfp_t priority,
              ^
scripts/Makefile.build:258: recipe for target '/tmp/modconfig-paeKFD/vmnet-only/bridge.o' failed
make[2]: *** [/tmp/modconfig-paeKFD/vmnet-only/bridge.o] Error 1
make[2]: *** Warte auf noch nicht beendete Prozesse...
Makefile:1378: recipe for target '_module_/tmp/modconfig-paeKFD/vmnet-only' failed
make[1]: *** [_module_/tmp/modconfig-paeKFD/vmnet-only] Error 2
make[1]: Leaving directory '/usr/src/kernel-4.4.13-server-1.mga5'
Makefile:120: recipe for target 'vmnet.ko' failed
make: *** [vmnet.ko] Error 2
make: Leaving directory '/tmp/modconfig-paeKFD/vmnet-only'
Unable to install all modules.  See log for details.

#


Two errors still remain:
Code: Select all
/tmp/modconfig-paeKFD/vmmon-only/linux/driver.c:403:8: Fehler: void-Wert nicht ignoriert wie es sein sollte (Error: void value not ignored like it should be)
/tmp/modconfig-paeKFD/vmnet-only/vmnetInt.h:81:40: Fehler: Zu wenige Argumente für Funktion »sk_alloc« (Error: not enough arguments for function »sk_alloc«)
magfan
 
Posts: 332
Joined: Apr 3rd, '12, 12:33

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

Postby magfan » Jul 18th, '16, 10:11

I could solve the problem by upgrading to VMware-Workstation 11.1.4 build-3848939. This version does not require any patch (yet).
magfan
 
Posts: 332
Joined: Apr 3rd, '12, 12:33

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

Postby jiml8 » Aug 9th, '16, 19:55

I was just patching another copy of vmware workstation, and I realized that a number of the files that have to be patched are set as read only in the tar archives. Obviously, to patch them, writing has to be enabled.
jiml8
 
Posts: 1253
Joined: Jul 7th, '13, 18:09


Return to Advanced support

Who is online

Users browsing this forum: Google [Bot] and 1 guest

cron