VMware Communities
Noel
Expert
Expert

VMware Workstation 7.1.3 Linux kernel 2.6.37 (and 2.6.36) patch

UPDATE: These patches are obsoleted by Workstatioin 7.1.4, for which only a BKL-less kernel needs any patch (to vmnet).


Attached is the patch for VMware Workstation 7.1.3 on Linux Kernel 2.6.37.  Tested against Ubuntu Natty 11.04 2.6.37-2-generic.

The patch also includes the necessary change for 2.6.36, and should work with both kernels, since the 2.6.37 change is protected by a version check.  The plain 2.6.36 patch, which does not support 2.6.37 is available here.

List of changes:

  • define VMW_HAVE_UNLOCKED_IOCTL in vmmon's driver.c as required for 2.6.36

  • the semaphore patch for 2.6.37, applied only to those modules that actually need it: vmci, vmnet, and vsock.

[UPDATE: The attached patch is updated to work through 2.6.37-11]

Updated to reflect Workstation 7.1.4.

0 Kudos
109 Replies
UnderXP
Contributor
Contributor

Hi, I tried to apply vmware-7.1.3-2.6.37-6-generic.patch to kernel 2.6.37-9-generic but don't work. Can anyone update the patch? Thanks!!!!

0 Kudos
martyfelker
Enthusiast
Enthusiast

I have the exact same problem myself under Ubuntu Natty x64 (fully upgraded to 2.6.37-9 I believe)). Since I can't code at this level and mostly use other people code I will be patient until the excellent developers on this site get around to this (and I'm not pushing what is unpaid labor). VMware has no reason to tackle this at the moment because I doubt any meaningful production is done on a alpha. One could always regress to 2.6.35 or 26.36 of course - they defintely work. Since Natty should probably not be used for production (it's 5 months out) if you need Natty right now you might consider installing 10.10 and then a distribution upgrade (update-manager -d). I've done this with no apparent problems. Then boot in the earlier version of the kernel and install WS on that . Even Debian Squeeze (v 6.) will only be shipping with kernel 2.6.32.

Marty

Marty Felker
0 Kudos
UnderXP
Contributor
Contributor

I'm using Linux Mint 10 x64 (based in Ubuntu 10.10) with Kernel 2.6.37-9-generic

0 Kudos
UnderXP
Contributor
Contributor

Please, I need the patch for kernel 2.6.37.9-generic 64 bits !!!!!!

0 Kudos
martyfelker
Enthusiast
Enthusiast

This is a moving target. AT the moment l am running Ubuntu natty 64-bit on the newsest kernel 2.6.37-10. I seems to me that what is need coding that will not be tied to the kernel of day (as SUSE describes it0. I have no idea how difficult it is but somebody might address this challenge. I have the Windows version of WS 7.1.3 64-bit while I wait and Virtualbox runs on all platforms. Of course you get what you pay for and VMwaRe has significant enchantments over Virtualbox. I don't know if anybody connected with VMware is reading these threads but I'm guessing a new version of WS wouldn't be released with this criteria in mind until other enchantments that can apply to the Windows version appear in the same release?

Marty

Marty Felker
0 Kudos
UnderXP
Contributor
Contributor

I understand you. Natty will have kernel 2.6.38 when arrive, then update the patch for each kernel .1 .2 .3 update is a big pain. VirtualBox don't have all the options and performance that Vmware bring today.

0 Kudos
martyfelker
Enthusiast
Enthusiast

Virtualbox is getting better but of course its not up to the capabilities of VM WS. Obviously I don't know a thing about VMware code (Virtualbox has an open source version) but patches for kernels should be produced by VMware developers I should think.I am learning to be patient and will await for the evolution of OS' taht aRe still in beta at best - more likely alpha.

Marty

Marty Felker
0 Kudos
Noel
Expert
Expert

Has anyone (else) tried the updated patch, yet?

0 Kudos
UnderXP
Contributor
Contributor

Thanks for update your patch, i will download 2.6.37-11 64 bits and test the patch next Monday.

0 Kudos
zwierbel
Enthusiast
Enthusiast

vmware-7.1.3-2.6.37-9-generic.patch is working fine with Debian 2.6.37-rc5 😄

Thanks a lot!

0 Kudos
martyfelker
Enthusiast
Enthusiast

This patch does work as you said (Natty x64 kernel 2.6.37-10)  Two minor quibbles

1) Shell script needs to be edited merely to point at the rigaht patcvh name.

2)  There wer emessages during the comple - "No protocal slpecified - occured in groups of 4.  Don't know if you want to correct this?  perhaps related to gcc version?  Haven't the faintaesst.

Thanks once more for your time and effodrt!

Marty

Marty Felker
0 Kudos
Pierrot20111014
Contributor
Contributor

I'm a new user of this Community and I need to use/try your patch with my kernel 2.6.36.2 on mandriva  (My vmware workstation was working perfectly until the last upgrade of my kernel... now I have : Unable to build kernel module). Could you explain me how to use and install your patch?

0 Kudos
matthewls
Enthusiast
Enthusiast

Dear Noel and Birdie,

Another big thanks. Just for kicks I installed the latest 2.6.37rc8 kernel in ubuntu 10.10. WS 7.1.3 compiled and runs great.

Do you find the 2.6.37 kernel a bit faster than 2.6.36, or is this just another placebo...?

Cheers and Happy New Year!

MS

0 Kudos
dibl
Enthusiast
Enthusiast

This feels like a PEBKAC problem, but I'm stumped.  I previously had no problem patching 2.6.36 and previous kernels.

root@aptosidbox:/tmp# uname -r
2.6.37-0.slh.1-aptosid-amd64
root@aptosidbox:/tmp# sh patch-modules_v61.sh
You must be root to run this script. Exiting
root@aptosidbox:/tmp# whoami
root
root@aptosidbox:/tmp# sh ./patch-modules_v61.sh
You must be root to run this script. Exiting
root@aptosidbox:/tmp#
I see the UID check in the patch script.  Why am I not seen as root?
:smileyconfused:
After commenting out the UID check, and running it, I get the error:
Hunk #1 FAILED at 153.
Hunk #2 FAILED at 400.
2 out of 2 hunks FAILED -- saving rejects to file vmmon-only/linux/iommu.c.rej
I tried commenting out those two sections of the script, and running it, but then it fails elsewhere (28 and 41) and still does not do the patching.
0 Kudos
Bitfire20111014
Contributor
Contributor

I had patched 7.1.3 for 2.6.37 in my Fedora 14 , but it doesn't work.

The output as follow:

[root@Frank vmware_713_kernel_2.6.37_patched]# ./patch-modules_v62.sh
patching file vmci-only/include/compat_semaphore.h
Reversed (or previously applied) patch detected!  Assume -R? [n] y
patching file vmnet-only/compat_semaphore.h
Hunk #1 FAILED at 28.
Hunk #2 FAILED at 41.
2 out of 2 hunks FAILED -- saving rejects to file vmnet-only/compat_semaphore.h.rej
patching file vsock-only/shared/compat_semaphore.h
patching file vmmon-only/linux/iommu.c
Reversed (or previously applied) patch detected!  Assume -R? [n] y
patching file vmmon-only/linux/driver.c
Hunk #2 FAILED at 170.
1 out of 2 hunks FAILED -- saving rejects to file vmmon-only/linux/driver.c.rej
[root@Frank vmware_713_kernel_2.6.37_patched]#

I think maybe the release 2.6.37 had patched compat_semaphore.h

so, I had modify the patch file and the script shell.

It's fine for me now !

Thanks.

Put my patch and script ,  Thank you and Artem S. Tashkinov

0 Kudos
dibl
Enthusiast
Enthusiast

Thanks.  There must be some difference in the way Debian and Fedora records the version information.  Here it fails on the version check:

root@aptosidbox:/tmp# sh VMware-Workstation-Full-7.1.3-324285.x86_64.bundle
Extracting VMware Installer...done.
{ gui installer runs }
root@aptosidbox:/tmp# sh patch-modules_2.6.37.sh
[: 26: workstation7.1.3: unexpected operator
[: 27: workstation7.1.3: unexpected operator
Sorry, this script is only for VMWare WorkStation 7.1.3 or VMWare Player 3.1.3. Exiting
0 Kudos
Noel
Expert
Expert

You can't re-patch.  The patch requires a clean copy of the VMware modules sources.

0 Kudos
dibl
Enthusiast
Enthusiast

Thanks Noel.  But, I removed (uninstalled) VMware Workstation, then rebooted and installed it clean, and immediately applied the patch, as shown.  So the module sources should have been clean and original, no?

0 Kudos
rgadsdon
Enthusiast
Enthusiast

The Workstation 7.1.3 2.6.37 patch fails with kernel.org version 2.6.37 (final):

make[1]: Entering directory `/usr/src/linux-2.6.37'
  CC [M]  /tmp/vmware-root/modules/vmci-only/linux/driver.o
/tmp/vmware-root/modules/vmci-only/linux/driver.c: In function ‘LinuxDriver_Open’:
/tmp/vmware-root/modules/vmci-only/linux/driver.c:375:4: error: implicit declaration of function ‘init_MUTEX’
make[2]: *** [/tmp/vmware-root/modules/vmci-only/linux/driver.o] Error 1
make[1]: *** [_module_/tmp/vmware-root/modules/vmci-only] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.37'
make: *** [vmci.ko] Error 2
make: Leaving directory `/tmp/vmware-root/modules/vmci-only'
Unable to install vmci

0 Kudos
Noel
Expert
Expert

rgadsdon wrote:

The Workstation 7.1.3 2.6.37 patch fails with kernel.org version 2.6.37 (final):

make[1]: Entering directory `/usr/src/linux-2.6.37'
  CC [M]  /tmp/vmware-root/modules/vmci-only/linux/driver.o
/tmp/vmware-root/modules/vmci-only/linux/driver.c: In function ‘LinuxDriver_Open’:
/tmp/vmware-root/modules/vmci-only/linux/driver.c:375:4: error: implicit declaration of function ‘init_MUTEX
make[2]: *** [/tmp/vmware-root/modules/vmci-only/linux/driver.o] Error 1
make[1]: *** [_module_/tmp/vmware-root/modules/vmci-only] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.37'
make: *** [vmci.ko] Error 2
make: Leaving directory `/tmp/vmware-root/modules/vmci-only'
Unable to install vmci

You've got something wrong.  The patch should have modified compat_semaphore.h in vmci-only to include:

#if (defined CONFIG_PREEMPT_RT && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)) || LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
   /*
    * The -rt patch series changes the name of semaphore/mutex initialization
    * routines (across the entire kernel).  Probably to identify locations that
    * need to be audited for spinlock vs. true semaphore.  We always assumed
    * true semaphore, so just apply the rename.
    *
    * The -rt patchset added the rename between 2.6.29-rt and 2.6.31-rt.
    */
   #ifndef DECLARE_MUTEX
      #define DECLARE_MUTEX(_m)  DEFINE_SEMAPHORE(_m)
   #endif
   #ifndef init_MUTEX
      #define init_MUTEX(_m) sema_init(_m,1)
   #endif
#endif

0 Kudos