VMware 12.1.1 and 4.7.0-1

VMware 12.1.1 and 4.7.0-1 [openSUSE Tumbleweed (20160730) (x86_64)]:

1. VMware Virtual ethernet module:

/usr/lib/vmware/modules/source/vmnet-only/netif.c: In function ‘VNetNetifStartXmit’:
/usr/lib/vmware/modules/source/vmnet-only/netif.c:468:7: error: ‘struct net_device’ has no member named ‘trans_start’; did you mean ‘mem_start’?
    dev->trans_start = jiffies;
       ^~

Robert Gadsdon’s solution was to remove that line entirely:
http://rglinuxtech.com/?p=1746

Also virtualbox developers did basically the same:
https://www.virtualbox.org/ticket/15444
https://www.virtualbox.org/changeset/61429/vbox

VMware and 4.6.1-1

Today while trying to compile kernel modules for VMware Workstation 12.1.1 + 4.6.1-1-default [openSUSE Tumbleweed (20160422) (x86_64)] I got two compilation errors:

1. VMware Virtual ethernet module:

/usr/lib/vmware/modules/source/vmnet-only/userif.c:116:13: error: too many arguments to function ‘get_user_pages’
    retval = get_user_pages(current, current->mm, addr,
             ^

2. VMware Virtual machine monitor:

/usr/lib/vmware/modules/source/vmmon-only/linux/hostif.c:1165:13: error: too many arguments to function ‘get_user_pages’
    retval = get_user_pages(current, current->mm, (unsigned long)uvAddr,
             ^

VMware Community member alexsandr1981 has the correct answer in the discussion, which is to replace every get_user_pages call with get_user_pages_remote calls.
After replacing the original tar, the compilation succeeded for me.

VMware and linux 4.0.5-3

Today on openSUSE Tumbleweed, the usual module recompilation with

vmware-modconfig --console --install-all

failed, with

Unable to parse gcc version

This is because the guys releasing Tumbleweed started compiling everything with gcc 5, even the kernel, which made the vmware-modconfig unhappy:

workstation:/tmp # uname -a
Linux workstation 4.0.5-3-desktop #1 SMP PREEMPT Thu Jun 18 15:11:06 UTC 2015 (56152db) x86_64 x86_64 x86_64 GNU/Linux
workstation:/tmp # cat /etc/os-release
NAME=openSUSE
VERSION="20150702 (Tumbleweed)"
VERSION_ID="20150702"
PRETTY_NAME="openSUSE 20150702 (Tumbleweed) (x86_64)"
ID=opensuse
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:opensuse:20150702"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://opensuse.org/"
ID_LIKE="suse"
workstation:/tmp # vmware --version
VMware Workstation 11.1.0 build-2496824
workstation:/tmp # tail -n 6 /tmp/vmware-root/vmware-14006.log
2015-07-07T22:43:30.926+02:00| modconfig| I120: Trying to find a suitable PBM set for kernel "4.0.5-3-desktop".
2015-07-07T22:43:30.926+02:00| modconfig| I120: No matching PBM set was found for kernel "4.0.5-3-desktop".
2015-07-07T22:43:30.926+02:00| modconfig| I120: Found compiler at "/usr/bin/gcc"
2015-07-07T22:43:30.929+02:00| modconfig| I120: Got gcc version "5".
2015-07-07T22:43:30.930+02:00| modconfig| I120: Unable to parse gcc version
2015-07-07T22:43:30.932+02:00| modconfig| I120: We are now shutdown. Ready to die!
workstation:/tmp #

Here is a remedy from rainerklier posted in this vmware community link.

cd /usr/lib/vmware/modules/source
tar -xf vmnet.tar
cd vmnet-only
make
cd ..
tar -xf vmmon.tar
cd vmmon-only
make
cd ..
cp vmmon.o /lib/modules/`uname -r`/misc/vmmon.ko
cp vmnet.o /lib/modules/`uname -r`/misc/vmnet.ko
depmod -a
/etc/init.d/vmware restart

VMware and linux 3.14.0-rc7

# vmware --version
VMware Workstation 10.0.1 build-1379776

#uname -a
Linux workstation 3.14.0-rc7-4-desktop #1 SMP PREEMPT Wed Mar 19 08:35:32 UTC 2014 (d1f1027) x86_64 x86_64 x86_64 GNU/Linux

# head -n1 /etc/SuSE-release
openSUSE 13.1 (x86_64)

#cd /usr/lib/vmware/modules/source/

#cp vmnet.tar vmnet.tar.original

#tar xvf vmnet.tar vmnet-only/filter.c
vmnet-only/filter.c

# patch vmnet-only/filter.c < /tmp/<a href="http://ferenc.homelinux.com/attachments/filter.c.diff">filter.c.diff</a>
patching file vmnet-only/filter.c

# tar -uvf vmnet.tar vmnet-only/filter.c
vmnet-only/filter.c

#rm -rf vmnet-only/

#vmware-modconfig --console --install-all

If something goes wrong then tail the logs:

tail -F /tmp/vmware-root/vmware-modconfig-16234.log

And don’t forget to validate kernel headers:

vmware-modconfig --console --validate-kernel-headers /usr/src/linux-3.14.0-rc7-4-obj/x86_64/desktop/include/

VMware and linux 3.8.0-4

Quick howto: Setting up Workstation 9.0.1 with kernel 3.8.0-4-desktop, on openSUSE 12.2 (x86_64).

First create the symlink:

mkdir -p /usr/src/linux-3.8.0-4-obj/x86_64/desktop/include/linux
cd /usr/src/linux-3.8.0-4-obj/x86_64/desktop/include/linux
ln -s /usr/src/linux-3.8.0-4-obj/x86_64/desktop/include/generated/uapi/linux/version.h

Then you have to apply the 3.8rc4 wmci patch, which will work just fine.
(You can get it from VMWare community page, or directly from here.)

cd /usr/lib/vmware/modules/source
cp vmci.tar vmci_tar_backup # this backup step is optional
tar -xf vmci.tar
cd vmci-only
patch -p1 < /home/ferenc/Downloads/vmware9.k3.8rc4.patch # Change this to your patch location cd .. tar -cf vmci.tar vmci-only/ [/code] And then you can recompile the kernel modules. [code lang="bash"] vmware-modconfig --console --install-all [/code]

vmware workstation 9.0.1 player 5.0.1 and linux 3.7.0-rc6

Like Robert Gadsdon, I also updated the kernel on my machine, which is running openSUSE 12.2. I got the binaries and the source from this repo.
The source structure is a tad different, so the magic trick that you need to do in order to get the kernel modules compile is this:

linux-3spa:~ # mkdir -p /usr/src/linux-3.7.0-rc6-2-obj/x86_64/desktop/include/linux/
linux-3spa:~ # ln -s /usr/src/linux-3.7.0-rc6-2-obj/x86_64/desktop/include/generated/uapi/linux/version.h /usr/src/linux-3.7.0-rc6-2-obj/x86_64/desktop/include/linux/version.h