vmware-specific-specific 5.5.x and kernel 2.6.32
Posted on December 4th, 2009
You can follow any responses to this entry through the RSS 2.0 feed.
Just a small fix to the previous patch was necessary for this one to work.
Remember that you do need to patch your kernel for this to work properly.
See the README inside the archive.
vmware-update-2.6.32-5.5.9.tar.bz2
Edit: there is a more complete patch here for vmware server 2.0.2, i haven’t tested it.
December 4th, 2009 at 9:36 pm
works like a charm – thanks again!
>>>Alois
December 29th, 2009 at 6:08 pm
Works also great with VMware Server 1.0.10 (and 2.6.32.2)! Just what I was looking for!
Thanx!
January 3rd, 2010 at 7:20 pm
fedora core 12 doesn’t have init_task.c in the source-devel so the patch doesn’t work. Is there another kernel-devel distro I should be using?
January 11th, 2010 at 3:21 am
I released a patch for VMware Server 2.0.2 that properly add support for newer versions of the Linux kernel:
http://risesecurity.org/2010/01/10/vmware-server-2-0-2-update-patch/
January 21st, 2010 at 4:12 am
Ok, so I took Ramon’s patch and stole all the good bits to make server 1.0.10 compile for 2.6.31 on fedora 12, however when a guest is started, my system (core2 quad 3.0G) slows to almost stopped. I’ve tried several variations of his fixes vs Kang’s fixes + Ramons init_mm fix, etc. All seem to give the same result. I’m stumped. Any ideas on what to try next welcome. I would prefer to stick with version 1 for the console.
March 9th, 2010 at 2:22 pm
Updating what I did for 2.6.31 – no need to recompile host kernel!
#!/bin/sh
cd /usr/lib/vmware/modules/source
cp vmmon.tar vmmon.2.6.32.save.tar
cp vmnet.tar vmnet.2.6.32.save.tar
tar xf vmmon.tar
tar xf vmnet.tar
cat %3C%3C HERE | patch -p1
diff -Naur ./vmmon-only.old/include/compat_pgtable.h ./vmmon-only/include/compat_pgtable.h
— ./vmmon-only.old/include/compat_pgtable.h 2007-07-22 07:21:17.000000000 -0400
+++ ./vmmon-only/include/compat_pgtable.h 2010-02-02 15:54:55.000000000 -0500
@@ -72,7 +72,7 @@
#endif
-#ifdef pgd_offset_k
+#if (LINUX_VERSION_CODE %3C KERNEL_VERSION(2, 6, 25)) && defined(pgd_offset_k)
# define compat_pgd_offset_k(mm, address) pgd_offset_k(address)
#else
# define compat_pgd_offset_k(mm, address) pgd_offset(mm, address)
diff -Naur ./vmmon-only.old/include/pgtbl.h ./vmmon-only/include/pgtbl.h
— ./vmmon-only.old/include/pgtbl.h 2007-07-22 07:21:17.000000000 -0400
+++ ./vmmon-only/include/pgtbl.h 2010-03-09 06:44:56.000000000 -0500
@@ -7,7 +7,6 @@
#include “compat_spinlock.h”
#include “compat_page.h”
-
/*
*—————————————————————————–
*
diff -Naur ./vmmon-only.old/include/vmci_kernel_defs.h ./vmmon-only/include/vmci_kernel_defs.h
— ./vmmon-only.old/include/vmci_kernel_defs.h 2007-05-02 00:08:21.000000000 -0400
+++ ./vmmon-only/include/vmci_kernel_defs.h 2010-03-09 06:53:14.000000000 -0500
@@ -27,6 +27,7 @@
#include “compat_interrupt.h”
#include “compat_spinlock.h”
#include “compat_slab.h”
+#include “compat_sched.h”
#endif // linux
#ifdef __APPLE__
diff -Naur ./vmmon-only.old/linux/hostif.c ./vmmon-only/linux/hostif.c
— ./vmmon-only.old/linux/hostif.c 2009-04-21 10:47:54.000000000 -0400
+++ ./vmmon-only/linux/hostif.c 2010-02-02 15:56:33.000000000 -0500
@@ -564,6 +564,7 @@
static void
DoClearNXBit(VA vaddr)
{
+#if LINUX_VERSION_CODE %3C KERNEL_VERSION(2, 6, 25)
int ptemap;
pgd_t *pgd = pgd_offset_k(vaddr);
pmd_t *pmd = pmd_offset_map(pgd, vaddr);
@@ -574,6 +575,10 @@
} else {
pte = pte_offset_map(pmd, vaddr);
}
+#else /* >= 2.6.25 */
+ int level;
+ pte_t *pte = lookup_address(vaddr & PAGE_MASK, &level);
+#endif /* linux version */
if (pte_val(*pte) & _PAGE_NX) {
/* pte_val() is not lvalue on x86 PAE */
#ifdef CONFIG_X86_PAE
HERE
cat << HERE | patch -p1
diff -Naur ./vmnet-only.old/compat_pgtable.h ./vmnet-only/compat_pgtable.h
— ./vmnet-only.old/compat_pgtable.h 2007-11-28 05:25:06.000000000 -0500
+++ ./vmnet-only/compat_pgtable.h 2010-02-02 15:58:37.000000000 -0500
@@ -76,7 +76,7 @@
#endif
-#ifdef pgd_offset_k
+#if (LINUX_VERSION_CODE %3C KERNEL_VERSION(2, 6, 25)) && defined(pgd_offset_k)
# define compat_pgd_offset_k(mm, address) pgd_offset_k(address)
#else
# define compat_pgd_offset_k(mm, address) pgd_offset(mm, address)
HERE
tar cf vmmon.tar ./vmmon-only
tar cf vmnet.tar ./vmnet-only
NOTE: I replaced %3C with %253C so the tag stripper wouldn’t rip out pieces of the script.