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

Kulfy
  • 17,416
  • 26
  • 64
  • 103

3 Answers3

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!

  • 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 07: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 03 '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.

N0rbert
  • 97,162
  • 34
  • 239
  • 423
ubfan1
  • 17,041
  • 4
  • 39
  • 47
  • 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](https://askubuntu.com/a/1126693/66509)). Too many faulty kernel upgrades - the 139, 140, 141 [break USB safely remove](https://askubuntu.com/a/1099415/66509), 142 breaks [TTY login](https://askubuntu.com/a/1119643/66509), this 143 [breaks at least Nvidia and VirtualBox](http://changelogs.ubuntu.com/changelogs/pool/main/l/linux-meta/linux-meta_4.4.0.143.151/changelog). 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
  • very helpful message from Nvidia on kernel update 4.4.0-143 https://devtalk.nvidia.com/default/topic/1048594/problem-driver-ubuntu-kernel-4-4-0-143/ – smile-on Apr 10 '19 at 02:41
  • as of nvidia driver options: kernel build was fixed in 418.30 [beta release] https://devtalk.nvidia.com/default/topic/1046879/announcements-and-news/linux-solaris-and-freebsd-driver-418-30-beta-release-long-lived-branch-release-/ – smile-on Apr 10 '19 at 03:09