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)
0 Kudos
15 Replies
mkubecek
Enthusiast
Enthusiast

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
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.

0 Kudos
mkubecek
Enthusiast
Enthusiast

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

0 Kudos
mkubecek
Enthusiast
Enthusiast

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

 

0 Kudos
mkubecek
Enthusiast
Enthusiast

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.

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
0 Kudos
MarkLG
Contributor
Contributor

Works for me also. Thanks.

0 Kudos
captcook
Contributor
Contributor

This works great for me thanks!

0 Kudos
Pitke
Contributor
Contributor

Thank you!

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

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?