The error message:
Using VMware-Player-3.1.0-261024.XXXX.bundle from here: https://www.vmware.com/products/player/
Within the vmmon sources, the iommu.c file has function calls to iommu_map_range and iommu_unmap_range. After some poking around I figured these calls need the ‘_range’ suffix removed. Update: these kernel changes are documented here.
After installing VMware, the following commands patches the vmmon sources:
tar xvf /usr/lib/vmware/modules/source/vmmon.tar -C /tmp
perl -pi -e 's,_range,,' vmmon-only/linux/iommu.c
tar cvf /usr/lib/vmware/modules/source/vmmon.tar vmmon-only
The recompiling on each load is likely something to do with the “vsock” kernel module. The default installation enables it.
The vmware start-up output looks like this:
~# service vmware start
Starting VMware services:
VMware USB Arbitrator done
Virtual machine monitor done
Virtual machine communication interface done
VM communication interface socket family failed
Blocking file system done
Virtual ethernet done
Shared Memory Available done
The module failing to load is most likely causing the need to recompile. Also confirmed during the (re)compilation:
ERROR: modinfo: could not find module vsock
The easiest workaround I came up with is to disable the vsock module:
~# mcedit /etc/vmware/config
And change the vsock configuration line to:
VSOCK_CONFED = "no"