VMware – Still No Solution for Kernel 6.5..
Updated to Kernel 6.5-rc5, and – as expected – vmmon still fails to compile:
CC [M] /tmp/modconfig-s9HCQR/vmmon-only/bootstrap/vmmblob.o
LD [M] /tmp/modconfig-s9HCQR/vmmon-only/vmmon.o
MODPOST /tmp/modconfig-s9HCQR/vmmon-only/Module.symvers
ERROR: modpost: "__pte_offset_map" [/tmp/modconfig-s9HCQR/vmmon-only/vmmon.ko] undefined!
make[3]: *** [scripts/Makefile.modpost:144: /tmp/modconfig-s9HCQR/vmmon-only/Module.symvers] Error 1
make[2]: *** [/usr/src/linux-6.5-rc5/Makefile:1984: modpost] Error 2
make[1]: *** [Makefile:234: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-6.5-rc5'
make: *** [Makefile:117: vmmon.ko] Error 2
I did find a post relating to this on the kernel dev mailing list, where a request relating to this problem with other code (Android..?) from one of the Linaro devs got a rather smart rebuttal – along the lines of ‘explain why you are doing this’…
As a result, the dev posted a series of patches to fix the problem, but this simply consisted of reverting all the appropriate kernel 6.5-rc changes – which is not a solution!
As I have been testing the 2023 Tech Preview of VMware, I took the liberty of posting the issue in their forum, in the hope of getting some sort of response, as the same error occurs with that pre-release of VMware….
Robert Gadsdon. August 6th 2023.
Try this … I’ve using it for a while …
— vmware/vmmon-only/include/pgtbl.h 2023-06-30 08:04:13.247729900 +0800
+++ vmware/vmmon-only/include/pgtbl.h 2023-06-30 08:05:41.717728599 +0800
@@ -91,7 +91,7 @@
} else {
pte_t *pte;
– pte = pte_offset_map(pmd, addr);
+ pte = pte_offset_kernel(pmd, addr);
if (pte_present(*pte) == 0) {
pte_unmap(pte);
return INVALID_MPN;
— vmware/vmnet-only/bridge.c 2023-06-30 09:13:50.917668443 +0800
+++ vmware/vmnet-only/bridge.c 2023-06-30 09:14:05.747668224 +0800
@@ -44,6 +44,7 @@
#include
#include
#include
+#include
#ifdef CONFIG_NET_RADIO
# include
Thanks. The vmnet part of the patch seems to be missing some text, but I’ll try the vmmon one – and vmnet with the existing temp patchset seemed to be OK..
RG.
Don’t know why it got cut-off … here’s the missing part …
— vmware/vmnet-only/bridge.c 2023-06-30 09:13:50.917668443 +0800
+++ vmware/vmnet-only/bridge.c 2023-06-30 09:14:05.747668224 +0800
@@ -44,6 +44,7 @@
#include
#include
#include
+#include
#ifdef CONFIG_NET_RADIO
# include
It’s missing again … the +#include < net/gso.h >
Ok, this website is stripping off the < and > if there’s a “+” in at the beginning …
So, here’s the complete patch ..
— vmware/vmmon-only/include/pgtbl.h 2023-06-30 08:04:13.247729900 +0800
+++ vmware/vmmon-only/include/pgtbl.h 2023-06-30 08:05:41.717728599 +0800
@@ -91,7 +91,7 @@
} else {
pte_t *pte;
– pte = pte_offset_map(pmd, addr);
+ pte = pte_offset_kernel(pmd, addr);
if (pte_present(*pte) == 0) {
pte_unmap(pte);
return INVALID_MPN;
— vmware/vmnet-only/bridge.c 2023-06-30 09:13:50.917668443 +0800
+++ vmware/vmnet-only/bridge.c 2023-06-30 09:14:05.747668224 +0800
@@ -44,6 +44,7 @@
#include
#include
#include
+#include <net/gso.h>
#ifdef CONFIG_NET_RADIO
# include
Thank you, made changes to vmmon and vmnet and installed. Everything working.
I’ve uploaded the patch to … https://github.com/jeffersonchua/linux-6.5.0/blob/main/patch-17.0.2-6.5.0
Here’s the HTML version to add back the and “”
— vmware/vmmon-only/include/pgtbl.h 2023-06-30 08:04:13.247729900 +0800
+++ vmware/vmmon-only/include/pgtbl.h 2023-06-30 08:05:41.717728599 +0800
@@ -91,7 +91,7 @@
} else {
pte_t *pte;
–\tpte = pte_offset_map(pmd, addr);
+\tpte = pte_offset_kernel(pmd, addr);
\tif (pte_present(*pte) == 0) {
\t\tpte_unmap(pte);
\t\treturn INVALID_MPN;
— vmware/vmnet-only/bridge.c 2023-06-30 09:13:50.917668443 +0800
+++ vmware/vmnet-only/bridge.c 2023-06-30 09:14:05.747668224 +0800
@@ -44,6 +44,7 @@
#include
#include
#include
+#include
#ifdef CONFIG_NET_RADIO
# include
Hey, all!
Glad to have found this thread, as I’m running into the same issue (here in October) with kernel 6.5.
I took the patch provided (thank you!) and compiled the sources found in /usr/lib/vmware/modules/source/vmmon.tar and vmnet.tar. However, I can’t figure out how to get my kernel to actually load them, or for that matter, VMWare to stop attempting to compile the modules when I open it.
Any help you all could provide on how to use this patch would be greatly appreciated.
So, following David’s comment here, cd into /usr/lib/vmware/modules/source/, untar vmmon.tar and vmnet.tar:
~# cd /usr/lib/vmware/modules/source/
/usr/lib/vmware/modules/source# tar xpf vmmon.tar
/usr/lib/vmware/modules/source# tar xpf vmnet.tar
Modify manually vmmon-only/include/pgtbl.h and vmnet-only/bridge.c with the data in the patch, i.e.:
# vi vmmon-only/include/pgtbl.h, line 94, replace “pte = pte_offset_map(pmd, addr);” with “pte = pte_offset_kernel(pmd, addr);”
94 pte = pte_offset_kernel(pmd, addr);
# vi vmnet-only/bridge.c, add this after line 46:
47 #include
Delete the tar files (or rename them or move them elsewhere), then retar the two directories:
/usr/lib/vmware/modules/source# tar cpf vmmon.tar vmmon-only/
/usr/lib/vmware/modules/source# tar cpf vmnet.tar vmnet-only/
Start VMWare and you should be good to go.
So, following David’s comment here, cd into /usr/lib/vmware/modules/source/, untar vmmon.tar and vmnet.tar:
13:41:46|root:/usr/lib/vmware/modules/source# tar xpf vmmon.tar
13:41:46|root:/usr/lib/vmware/modules/source# tar xpf vmnet.tar
Modify manually vmmon-only/include/pgtbl.h and vmnet-only/bridge.c with the date in the patch, i.e.:
# vi vmmon-only/include/pgtbl.h, line 94, replace “pte = pte_offset_map(pmd, addr);” with “pte = pte_offset_kernel(pmd, addr);”
94 pte = pte_offset_kernel(pmd, addr);
# vi vmnet-only/bridge.c, add this after line 46:
47 #include
Delete the tar files (or rename them or move them elsewhere), then retar the two directories:
/usr/lib/vmware/modules/source# tar cpf vmmon.tar vmmon-only/
/usr/lib/vmware/modules/source# tar cpf vmnet.tar vmnet-only/
Start VMWare and you should be good to go.
Sorry, typo:
“Modify manually vmmon-only/include/pgtbl.h and vmnet-only/bridge.c with the *date* in the patch, i.e.:”
should read
“Modify manually vmmon-only/include/pgtbl.h and vmnet-only/bridge.c with the *data* in the patch, i.e.:”
So, following David’s comment here, cd into /usr/lib/vmware/modules/source/, untar vmmon.tar and vmnet.tar:
~# cd /usr/lib/vmware/modules/source/
/usr/lib/vmware/modules/source# tar xpf vmmon.tar
/usr/lib/vmware/modules/source# tar xpf vmnet.tar
Modify manually vmmon-only/include/pgtbl.h and vmnet-only/bridge.c with the data in the patch, i.e.:
# vi vmmon-only/include/pgtbl.h, line 94, replace “pte = pte_offset_map(pmd, addr);” with “pte = pte_offset_kernel(pmd, addr);”
94 pte = pte_offset_kernel(pmd, addr);
# vi vmnet-only/bridge.c, add this after line 46:
47 #include
Delete the tar files (or rename them or move them elsewhere), then retar the two directories:
/usr/lib/vmware/modules/source# tar cpf vmmon.tar vmmon-only/
/usr/lib/vmware/modules/source# tar cpf vmnet.tar vmnet-only/
Start VMWare and you should be good to go.
Tested with RHEL 9.4. bridge.c should be:
47: #include
It works after this change.
Sorry, now I see the problem. The web page filters out < and > This should work:
#include <net/gso.h>