VMware Communities
masafumiohta
Contributor
Contributor

VMware Workstation Pro 16.1.0 doesnt complie vmmon and vmnet on CentOS Fusion 8(kernel 4.18.0-257)


I have updated from CentOS 8 to CentOS 8 stream, but I cannot compile vmmon and vmnet so VMware Workstation won't work.

Checking the message it is caused by totalram_pages

2020-12-12T10:59:17.345+09:00| host-4007| I005: /tmp/modconfig-Bn63vh/vmmon-only/linux/hostif.c: 関数 ‘HostIF_EstimateLockedPageLimit’ 内:
2020-12-12T10:59:17.345+09:00| host-4007| I005: /tmp/modconfig-Bn63vh/vmmon-only/linux/hostif.c:1683:25: エラー: ‘totalram_pages’ が異なる種類のシンボルとして再宣言されました
2020-12-12T10:59:17.345+09:00| host-4007| I005: extern unsigned long totalram_pages;
2020-12-12T10:59:17.345+09:00| host-4007| I005: ^~~~~~~~~~~~~~
2020-12-12T10:59:17.345+09:00| host-4007| I005: In file included from ./include/drm-backport/linux/mm.h:12,
2020-12-12T10:59:17.345+09:00| host-4007| I005: from /tmp/modconfig-Bn63vh/vmmon-only/linux/hostif.c:42:
2020-12-12T10:59:17.345+09:00| host-4007| I005: ./include/linux/mm.h:56:29: 備考: 前の ‘totalram_pages’ の宣言はここです
2020-12-12T10:59:17.345+09:00| host-4007| I005: static inline unsigned long totalram_pages(void)
2020-12-12T10:59:17.345+09:00| host-4007| I005: ^~~~~~~~~~~~~~
2020-12-12T10:59:17.345+09:00| host-4007| I005: make[2]: *** [scripts/Makefile.build:315: /tmp/modconfig-Bn63vh/vmmon-only/linux/hostif.o] エラー 1

Checking the 16.1.0 patch by mkubecek, it is same....

/home/may/vmware-host-modules-w16.1.0/vmmon-only/linux/hostif.c: In function 'HostIF_EstimateLockedPageLimit':
/home/may/vmware-host-modules-w16.1.0/vmmon-only/linux/hostif.c:1683:25: error: 'totalram_pages' redeclared as different kind of symbol
extern unsigned long totalram_pages;
^~~~~~~~~~~~~~
In file included from ./include/drm-backport/linux/mm.h:12,
from /home/may/vmware-host-modules-w16.1.0/vmmon-only/linux/hostif.c:42:
./include/linux/mm.h:56:29: note: previous definition of 'totalram_pages' was here
static inline unsigned long totalram_pages(void)
^~~~~~~~~~~~~~
make[3]: *** [scripts/Makefile.build:316: /home/may/vmware-host-modules-w16.1.0/vmmon-only/linux/hostif.o] Error 1
make[2]: *** [Makefile:1545: _module_/home/may/vmware-host-modules-w16.1.0/vmmon-only] Error 2
make[2]: Leaving directory '/usr/src/kernels/4.18.0-257.el8.x86_64'
make[1]: *** [Makefile:117: vmmon.ko] Error 2
make[1]: Leaving directory '/home/may/vmware-host-modules-w16.1.0/vmmon-only'
make: *** [Makefile:21: vmmon-only] Error 2

if any ideas/thoughts/advice please let me know.

Masafumi Ohta mail to colon masafumi atmark pid zero dot orgdomain (to prevent from spam sorry) https://masafumi.me
Labels (1)
Reply
0 Kudos
26 Replies
mkubecek
Hot Shot
Hot Shot

Looks like CentOS 8 backported mainline commit ca79b0c211af ("mm: convert totalram_pages and totalhigh_pages variables to atomic") so that totalram_pages is a function even if kernel version is lower than 5.0. You might try changing the version check at the beginning of HostIF_EstimateLockedPageLimit() to something like

#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0)) && \
    !(defined(RHEL_RELEASE_CODE) && \
      (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(8, 0)))
   extern unsigned long totalram_pages;
   PageCnt totalPhysicalPages = totalram_pages;
#else
   PageCnt totalPhysicalPages = totalram_pages();
#endif
masafumiohta
Contributor
Contributor

Thanks mkubecek, it works fine by adding your patch

make; make install; reboot the system; start-up from latest 4.18.0-257 for Cent Stream 8

https://www.mediafire.com/file/8aewukx843253ym/vmware-host-modules-w16.1.0_centos8stream.tar.gz/file

Thanks kind,

Masafumi Ohta mail to colon masafumi atmark pid zero dot orgdomain (to prevent from spam sorry) https://masafumi.me
Reply
0 Kudos
haboko
Contributor
Contributor

Thank you very much,

however, I wondering why I didn't get this patch through the git pull?
by the way, it seems to be the same problem with vmware 15.5.7.

thank you again.

Reply
0 Kudos
mkubecek
Hot Shot
Hot Shot

I didn't include the patch in my repository yet because I will need to check which RHEL/CentOS versions need the exception.

Reply
0 Kudos
mkubecek
Hot Shot
Hot Shot

I added the patch to all relevant branches today but as I don't know which versions of RHEL / CentOS have the backport, there might be some problems so please report if something does not work as expected.

Robert-Wagner
Contributor
Contributor

Thank you very much @mkubecek 

There is still a problem (4.18.0-305.el8.x86_64). Any fix on this issue as well? 

I couldn't find the patch for RHEL/CentOS in your GitHub repository. Could someone port this patch into the last 16.1.2 (VMware-Workstation-Full-16.1.2-17966106.x86_64.bundle) release? 

/home/xxx/Downloads/vmware-host-modules-w16.1.0_centos8stream/vmware-host-modules-w16.1.0/vmmon-only/linux/hostif.c:1716:42: Fehler: »NR_SLAB_UNRECLAIMABLE« nicht deklariert (erstmalige Verwendung in dieser Funktion); meinten Sie »NR_SLAB_UNRECLAIMABLE_B«?
    lockedPages += global_node_page_state(NR_SLAB_UNRECLAIMABLE);
                                          ^~~~~~~~~~~~~~~~~~~~~
                                          NR_SLAB_UNRECLAIMABLE_B

 

Reply
0 Kudos
mkubecek
Hot Shot
Hot Shot

Please try current workstation-16.1.2 branch (commit 9dca32a8d8c8). This should address both this other problem with RHEL/CentOS >= 8.4 and the fact that that RHEL/CentOS <= 8.3 do not have the page accounting backports. I would like someone to make sure on an actual RHEL/CentOS that there are no other issues before I apply the same to other branches.

MarkLG
Contributor
Contributor

16.1.2 build 17966106 cannot build the modules on RHEL 8.4. kernel 4.18.0-305.el8.x86_64.

Reply
0 Kudos
Robert-Wagner
Contributor
Contributor

Hi @mkubecek

after downloading branch workstation-16-1-2 (make && sudo make install && sudo reboot) everything works great and as expected! 
Many thanks again!


P.S: 
System is as following:  

Red Hat Enterprise Linux release 8.4 (Ootpa)
4.18.0-305.el8.x86_64

 

masafumiohta
Contributor
Contributor

hi @mkubecek just build on my CentOS stream 8, I got the error, though just modified ‘NR_SLAB_UNRECLAIMABLE with NR_SLAB_UNRECLAIMABLE_B’ following the compiling instruction, it works. 

[may@may-centos vmware-host-modules-workstation-16.1.2]$ make
make -C vmmon-only
make[1]: ディレクトリ '/home/may/tmp/vmware-host-modules-workstation-16.1.2/vmmon-only' に入ります
Using kernel build system.
make -C /lib/modules/4.18.0-301.1.el8.x86_64/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[2]: ディレクトリ '/usr/src/kernels/4.18.0-301.1.el8.x86_64' に入ります
CC [M] /home/may/tmp/vmware-host-modules-workstation-16.1.2/vmmon-only/linux/driver.o
CC [M] /home/may/tmp/vmware-host-modules-workstation-16.1.2/vmmon-only/linux/hostif.o
/home/may/tmp/vmware-host-modules-workstation-16.1.2/vmmon-only/linux/hostif.c: 関数 ‘HostIF_EstimateLockedPageLimit’ 内:
/home/may/tmp/vmware-host-modules-workstation-16.1.2/vmmon-only/linux/hostif.c:1727:42: エラー: ‘NR_SLAB_UNRECLAIMABLE’ undeclared (first use in this function); did you mean ‘NR_SLAB_UNRECLAIMABLE_B’?
lockedPages += global_node_page_state(NR_SLAB_UNRECLAIMABLE);
^~~~~~~~~~~~~~~~~~~~~
NR_SLAB_UNRECLAIMABLE_B
/home/may/tmp/vmware-host-modules-workstation-16.1.2/vmmon-only/linux/hostif.c:1727:42: 備考: 未宣言の識別子は出現した各関数内で一回のみ報告されます
make[3]: *** [scripts/Makefile.build:316: /home/may/tmp/vmware-host-modules-workstation-16.1.2/vmmon-only/linux/hostif.o] エラー 1
make[2]: *** [Makefile:1563: _module_/home/may/tmp/vmware-host-modules-workstation-16.1.2/vmmon-only] エラー 2
make[2]: ディレクトリ '/usr/src/kernels/4.18.0-301.1.el8.x86_64' から出ます
make[1]: *** [Makefile:117: vmmon.ko] エラー 2
make[1]: ディレクトリ '/home/may/tmp/vmware-host-modules-workstation-16.1.2/vmmon-only' から出ます
make: *** [Makefile:21: vmmon-only] エラー 2

Masafumi Ohta mail to colon masafumi atmark pid zero dot orgdomain (to prevent from spam sorry) https://masafumi.me
Reply
0 Kudos
MarkLG
Contributor
Contributor

Works for me also. Thanks.

Reply
0 Kudos
captcook
Contributor
Contributor

This works great for me thanks!

Reply
0 Kudos
Pitke
Contributor
Contributor

Thank you!

Reply
0 Kudos
asef23
Contributor
Contributor

Nice, This is work for me guy's. VMWare Workstation Pro 16.1.2 build-17966106 run on Kernel 4.18.0-305.el8.x86_64

Reply
0 Kudos
VMWCust8000
Contributor
Contributor

Having the issue on RHEL8 but company policy does not allow download of "patches" from github.  Is there an eta when this fix will be applied to the VMWare provided installer?

rohor
Contributor
Contributor

kernel: 4.18.0-331.el8.x86_64 o 4.18.0-326.el8.x86_64
workstation: 16.1.2

https://www.mediafire.com/folder/8xr9c6tw86f2g/workstation_16.1.2_Centos8

En el directorio, subi las modificacione sobre los originales y sobre el de github.
según recuerdo. Espero te funcionen.

Reply
0 Kudos
gurutech1
Contributor
Contributor

Dumb question, but how do I get these files to overwrite the ones from the original installer?

 

Nevermind... found my answer....   Make // Make Install, then run....

Reply
0 Kudos
ryno9100
Contributor
Contributor

Newbie to Redhat and Linux in general here. Still learning a lot.

Can anyone explain to me what I need to do to get this patch working on my machines? I have lots of developers relying on RHEL8 and Workstation, and our main Linux guy is now gone. I understand using git to pull the files, but the make; make install is beyond my current knowledge. Thanks in advance.

 

Scratch this... I did myself a favor and read the INSTALL file. Lol

Scra

Reply
0 Kudos
MarkLG
Contributor
Contributor

Has this fix been incorporated into 16.2.0? There is no mention in the release notes I can see.

Reply
0 Kudos