VMware – Simple Fixes for Kernel 6.15-rc..
With clues from the NVIDIA patches in the previous article, I have managed to find/create patches for vmmon and vmnet..
vmmon failed with:
………………
common/crosspage.c:50:13: fatal error: driver-config.h: No such file or directory
50 | # include “driver-config.h”
| ^~~~~~~~~~~~~~~~~
compilation terminated.
common/moduleloop.c:30:13: fatal error: driver-config.h: No such file or directory
30 | # include “driver-config.h”
| ^~~~~~~~~~~~~~~~~
compilation terminated.
make[4]: *** [/usr/src/linux-6.15-rc2/scripts/Makefile.build:203: linux/hostif.o] Error 1
make[4]: *** Waiting for unfinished jobs….
common/sharedAreaVmmon.c:27:13: fatal error: driver-config.h: No such file or directory
27 | # include “driver-config.h”
| ^~~~~~~~~~~~~~~~~
compilation terminated.
common/statVarsVmmon.c:27:13: fatal error: driver-config.h: No such file or directory
27 | # include “driver-config.h”
| ^~~~~~~~~~~~~~~~~
compilation terminated.
make[4]: *** [/usr/src/linux-6.15-rc2/scripts/Makefile.build:203: linux/driver.o] Error 1
make[4]: *** [/usr/src/linux-6.15-rc2/scripts/Makefile.build:203: linux/driverLog.o] Error 1
make[4]: *** [/usr/src/linux-6.15-rc2/scripts/Makefile.build:203: common/apic.o] Error 1
make[4]: *** [/usr/src/linux-6.15-rc2/scripts/Makefile.build:203: common/comport.o] Error 1
make[4]: *** [/usr/src/linux-6.15-rc2/scripts/Makefile.build:203: common/cpuid.o] Error 1
make[4]: *** [/usr/src/linux-6.15-rc2/scripts/Makefile.build:203: common/crosspage.o] Error 1
make[4]: *** [/usr/src/linux-6.15-rc2/scripts/Makefile.build:203: common/memtrack.o] Error 1
make[4]: *** [/usr/src/linux-6.15-rc2/scripts/Makefile.build:203: common/moduleloop.o] Error 1
make[4]: *** [/usr/src/linux-6.15-rc2/scripts/Makefile.build:203: common/phystrack.o] Error 1
make[4]: *** [/usr/src/linux-6.15-rc2/scripts/Makefile.build:203: common/sharedAreaVmmon.o] Error 1
make[4]: *** [/usr/src/linux-6.15-rc2/scripts/Makefile.build:203: common/statVarsVmmon.o] Error 1
make[3]: *** [/usr/src/linux-6.15-rc2/Makefile:2006: .] Error 2
make[2]: *** [/usr/src/linux-6.15-rc2/Makefile:248: __sub-make] Error 2
The fix was relatively simple, with replacement of EXTRA_CFLAGS by ccflags-y and del_timer_sync by timer_delete_sync, but the vmnet error was more subtle:
……………….
vmnet.o: error: objtool: init_module(): Magic init_module() function name is deprecated, use module_init(fn) instead
make[4]: *** [/usr/src/linux-6.15-rc2/scripts/Makefile.build:408: vmnet.o] Error 255
……………
Fortunately, there was already a suitable patch for this, from archlinux, at https://aur.archlinux.org/cgit/aur.git/tree/vmnet.patch?h=vmware-workstation
With both patches applied, VMware vmmon and vmnet now compile and load/run OK with Kernel 6.15-rc2.. (tested with KDE/Plasma and VMware guest Win10)
Robert Gadsdon. April 20th 2025..
That patch doesn’t seem to allow me to compile vmmod. against Linux-6.15
make[2]: Entering directory ‘/usr/src/vm-host-modules/vmmon-only’
CC [M] linux/driver.o
linux/driver.c:21:10: fatal error: driver-config.h: No such file or directory
21 | #include “driver-config.h”
It seems to relate to vmnet
Can you explain a little more? Following your instructions couldn’t solve the problem. Thanks in advance.
For people having this issue, what I did was:
cd into vmware-host-modules-tmp-workstation-17.5.2-k6.9.1 or whatever you are using
# Check for EXTRA_CFLAGS in Makefiles
grep -rn “EXTRA_CFLAGS” . –include=”Makefile*”
# Replace EXTRA_CFLAGS with ccflags-y
find . -name “Makefile*” -exec sed -i ‘s/EXTRA_CFLAGS/ccflags-y/g’ {} \;
# Check for del_timer_sync usage
grep -rn “del_timer_sync” . –include=”*.c” –include=”*.h”
# Replace del_timer_sync with timer_delete_sync
find . -name “*.c” -o -name “*.h” | xargs sed -i ‘s/del_timer_sync/timer_delete_sync/g’
Hope this helps to someone..
THANKS betrion, this made all the difference!
Just a reminder and FYI for others that for web text such as the above:
“Quotes” are screwed up.
“Double dashes” were very likely converted to an “emdash” (2014) or endash (2013)
The above pasted patch will not work if simply copied because it will copy as:
# Check for EXTRA_CFLAGS in Makefiles
grep -rn \u201cEXTRA_CFLAGS\u201d . \u2013include=\u201dMakefile*\u201d
# Replace EXTRA_CFLAGS with ccflags-y
find . -name \u201cMakefile*\u201d -exec sed -i \u2018s/EXTRA_CFLAGS/ccflags-y/g\u2019 {} \;
# Check for del_timer_sync usage
grep -rn \u201cdel_timer_sync\u201d . \u2013include=\u201d*.c\u201d \u2013include=\u201d*.h\u201d
# Replace del_timer_sync with timer_delete_sync
find . -name \u201c*.c\u201d -o -name \u201c*.h\u201d | xargs sed -i \u2018s/del_timer_sync/timer_delete_sync/g\u2019
The corrected characters are (To Be Seen after posting, may not work?):
************************
cd into vmware-host-modules-tmp-workstation-17.5.2-k6.9.1 or whatever you are using
# Check for EXTRA_CFLAGS in Makefiles
grep -rn “EXTRA_CFLAGS” . –include=”Makefile*”
# Replace EXTRA_CFLAGS with ccflags-y
find . -name “Makefile*” -exec sed -i ‘s/EXTRA_CFLAGS/ccflags-y/g’ {} \;
# Check for del_timer_sync usage
grep -rn “del_timer_sync” . –include=”*.c” –include=”*.h”
# Replace del_timer_sync with timer_delete_sync
find . -name “*.c” -o -name “*.h” | xargs sed -i ‘s/del_timer_sync/timer_delete_sync/g’
Hope this helps to someone..
The re-post above exhibits the same munged formatting.
Manually correct it.
Does anyone have ANY idea on how to patch the VMware Workstation 17.0.2 modules to work on kernel 6.15? I use 17.0.2 because it’s the last version that’ll run on my hardware (my PC doesn’t support XSAVE).
Does anyone have ANY patches for kernel 6.15 on VMware Workstation 17.0.2? I use that version as it’s the last version before XSAVE is a hard requirement. Preferably they’d be in vmmon.patch and vmnet.patch, so I can plug them into a modified vmware-workstation AUR package I have.
Hi, same issue here, the fix is not working.
I replace EXTRA_CFLAGS in Makefile.kernel :
EXTRA_CFLAGS := $(ccflags-y)
But still the same error with missing “driver-config.h”.
Is there a VMware workstation support group since Broadcast no longer supports this software.
I am on Fedora 42 and I did get VMware workstation to compile and run. However, there is no network connection. Vmmon works. I unbundled the 17.6.3. It asked for c++14. I am on c++20. I then complied vmmon and vmnet
manually. Both were where added to the kernel.
All looked good except there was no /dev/nmnet* entries.
I opened a virtual machine and create a /dev/vmnet2. This resulted in vmnet0, 1 and 8 appearing. I then deleted /dev/vmnet2.
Restarted VMware workstation, still no network.
Apologies for delay in dealing with comments etc… Urgent medicals issues intervened…
See: https://github.com/mkubecek/vmware-host-modules/issues
RG.
I am running Fedora 42 and had no problems with Workstation 17.6.3 under kernel 16.15.10 .
vmmon and vmnet modules from the original sources copiled, loaded, and run OK.
vmnet1 (host-only) and vmnet8 (NAT) both work on Fedora 42 and various Windoze 10 and 11 clients.
But now with the recent update to Fedora 42 kernel 16.6.3 on the host, vmmon fails to compile,
with an error on rdmsrl_safe(). I’ll be working on a fix (if succesful, I’ll post it to
https://github.com/mkubecek/vmware-host-modules/issues).
Mea culpa (that’s Latin for “oops”).
I had actually applied a couple of patches (I hope they gets through the formatter OK).
(The driver.c change should probably be #if’d for a kernel version.)
— vmmon-only.orig/Makefile.kernel.orig 2025-02-20 03:42:31.000000000 -0800
+++ vmmon-only.orig/Makefile.kernel 2025-07-10 02:50:48.742942824 -0700
@@ -22,6 +22,7 @@ CC_OPTS += -DVMMON -DVMCORE
INCLUDE := -I$(SRCROOT)/include -I$(SRCROOT)/include/x86 -I$(SRCROOT)/common -I$(SRCROOT)/linux
EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE)
+ccflags-y := $(CC_OPTS) $(INCLUDE)
obj-m += $(DRIVER).o
— vmmon-only.orig/linux/driver.c.orig 2025-02-20 03:42:31.000000000 -0800
+++ vmmon-only.orig/linux/driver.c 2025-07-10 02:50:48.742999365 -0700
@@ -346,7 +346,7 @@ LinuxDriverExit(void)
Log(“Module %s: unloaded\n”, vmmon_miscdev.name);
– del_timer_sync(&tscTimer);
+ timer_delete_sync(&tscTimer);
Vmx86_CleanupHVIOBitmap();
Task_Terminate();