5

Vmware no longer compiles against 4.4.0-143-generic, 4.4.0-142-generic is the latest working kernel with VMware Workstation 12.5.9

4

Here I found better way how to "update" vmware to work with my linux. It seems that one parameter was removed from get_user_pages, so just remove 0 from parameters and everything will be ok.

Do following under root user:

# cd /usr/lib/vmware/modules/source
# cp vmnet.tar vmnet.tar.bak
# cp vmmon.tar vmmon.tar.bak
# tar xf vmnet.tar
# tar xf vmmon.tar
# vi vmnet-only/userif.c

find:
   retval = get_user_pages(current, current->mm, addr,
                           1, 1, 0, &page, NULL);


change to:
   retval = get_user_pages(current, current->mm, addr,
                           1, 1, &page, NULL);


# vi vmmon-only/linux/hostif.c

find:
   retval = get_user_pages(current, current->mm, (unsigned long)uvAddr,
                           numPages, 0, 0, ppages, NULL);

change to:
   retval = get_user_pages(current, current->mm, (unsigned long)uvAddr,
                           numPages, 0, ppages, NULL);

# rm vmnet.tar ; tar cf vmnet.tar vmnet-only
# rm vmmon.tar ; tar cf vmmon.tar vmmon-only
# vmware-modconfig --console --install-all

Enjoy!

|improve this answer|||||
  • 1
    Mate, you're a life saver! Many thanks. PS. For those following the instructions -- yes there would be an #ifdef and yes it is not triggered properly ) – ジョージ Apr 17 '19 at 7:00
  • This worked for me. @srini durand (OP) if it works for you, too, please consider to mark it as answer to your question! – variona May 3 '19 at 11:20
  • Thanks. This should definitely be the answer to the question.Also works for 4.4.0-148 (Ubuntu 14.04 -- out of support now) and vmware player 7.1 – sergtech Nov 18 '19 at 21:17
1

Time to upgrade your vmware. The kernel change which finally hit the Ubuntu 4.4.0-143 kernel should have a working driver in the latest Vmware products. Nvidia drivers also have this problem, which new drivers fix. Other old drivers (anything using the get_user_pages() fucntion) need a rewrite, but the big vendors like Vmware have had since Jan. to get a working driver for Ubuntu ... 4.4.


For a more complete answer for people without the option of getting a new driver to fix the issue see Why do tuner card drivers fail to build after kernel update to 4.4.0-143-generic?
Freezing the kernel you use at a previous version forgoes subsequent security patches. N0rbert is more optimistic than I am that another 4.4 kernel release will be available to fix this problem. You might also solve your problem by upgrading releases to a later kernel with (still) working Vmware drivers. 16.04 still has years of support, with HWE kernel updates available, but 14.04 running the Xenial HWE only has a month of support left, so people in that situation might better concenrate their efforts on selecting an OS release upgrade.

|improve this answer|||||
  • 1
    Absolutely wrong ideas. Kernel should not break userspace in any way! – N0rbert Mar 18 '19 at 21:19
  • @N0rbert Don't shoot the messenger! I totally agree with you about changing APIs on Long Term Support kernels, but that's what happened in Jan. with 4.4-168 and that change finally worked it's way down to Ubuntu's 4.4.0-143. – ubfan1 Mar 18 '19 at 21:38
  • For me it seems that kernel downgrade would be better solution (like in similar topic about virtualbox). Too many faulty kernel upgrades - the 139, 140, 141 break USB safely remove, 142 breaks TTY login, this 143 breaks at least Nvidia and VirtualBox. It becomes very annoying ;( . I'll stay on 138 until new kernels will become comprehensively tested. – N0rbert Mar 18 '19 at 21:44
0

Vmware no longer works on ubuntu 16.04 LTS. When compile modules by hand:

vmware-modconfig --console --install-all

produces following error:

/tmp/modconfig-AVZerP/vmnet-only/userif.c:124:13: error: too many arguments to function ‘get_user_pages’

Temporary solution is hold shift key during system startup and select 4.4.0-142 kernel version. It will help.

But after time 4.4.0-142 version disappears from list and then use following to get it back:

sudo apt-get install linux-image-4.4.0-142-generic linux-image-extra-4.4.0-142-generic linux-headers-4.4.0-142 linux-headers-4.4.0-142-generic
|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.