VMware – Possible Kernel 4.7 Fix for 12.1.1..

Thanks to g, from their comment on my previous article ( http://rglinuxtech.com/?p=1746 ), there may be a more correct vmnet fix than simply ‘commenting out the code’..    Replace dev->trans_start = jiffies with  netif_trans_update(dev) in netif.c

I have made this change, and VMware 12.1.1 is – so far – loading and running OK, as usual..

Robert Gadsdon.   May 30, 2016.


Comments

VMware – Possible Kernel 4.7 Fix for 12.1.1.. — 7 Comments

  1. Just updated and found my vmware broke, what a joke how they leave us stranded. I’m about to switch to virutal box if vmware can’t get their act together. I’ve made the changes you suggested but it’s not working..any ideas would be welcome.

    Linux localhost 4.7.0-1-ARCH #1 SMP PREEMPT Mon Aug 8 22:05:58 CEST 2016 x86_64 GNU/Linux

    VNetSend(&netIf->port.jack, skb);

    netIf->stats.tx_packets++;
    netif_trans_update(dev);
    return 0;
    }

    [root@localhost vmnet-only]# vmware-modconfig –console –install-all
    Stopping VMware services:
    VMware Authentication Daemon done
    VM communication interface socket family done
    Virtual machine communication interface done
    Virtual machine monitor done
    Blocking file system done
    make: Entering directory ‘/tmp/modconfig-fVhjg6/vmmon-only’
    Using kernel build system.
    /sbin/make -C /lib/modules/4.7.0-1-ARCH/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
    MODULEBUILDDIR= modules
    make[1]: Entering directory ‘/usr/lib/modules/4.7.0-1-ARCH/build’
    CC [M] /tmp/modconfig-fVhjg6/vmmon-only/linux/driverLog.o
    CC [M] /tmp/modconfig-fVhjg6/vmmon-only/linux/driver.o
    CC [M] /tmp/modconfig-fVhjg6/vmmon-only/linux/hostif.o
    CC [M] /tmp/modconfig-fVhjg6/vmmon-only/common/memtrack.o
    CC [M] /tmp/modconfig-fVhjg6/vmmon-only/common/apic.o
    CC [M] /tmp/modconfig-fVhjg6/vmmon-only/common/vmx86.o
    CC [M] /tmp/modconfig-fVhjg6/vmmon-only/common/cpuid.o
    CC [M] /tmp/modconfig-fVhjg6/vmmon-only/common/task.o
    CC [M] /tmp/modconfig-fVhjg6/vmmon-only/common/hashFunc.o
    CC [M] /tmp/modconfig-fVhjg6/vmmon-only/common/comport.o
    CC [M] /tmp/modconfig-fVhjg6/vmmon-only/common/phystrack.o
    CC [M] /tmp/modconfig-fVhjg6/vmmon-only/vmcore/moduleloop.o
    /tmp/modconfig-fVhjg6/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Free() falls through to next function PhysTrack_Add()
    /tmp/modconfig-fVhjg6/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Add() falls through to next function PhysTrack_Remove()
    /tmp/modconfig-fVhjg6/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Remove() falls through to next function PhysTrack_Test()
    /tmp/modconfig-fVhjg6/vmmon-only/common/task.o: warning: objtool: .text: unexpected end of section
    /tmp/modconfig-fVhjg6/vmmon-only/linux/driver.c:1283:1: warning: always_inline function might not be inlinable -Wattributes]
    LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max – TSC min
    ^~~~~~~~~~~~~~~~~~~~~~~
    LD [M] /tmp/modconfig-fVhjg6/vmmon-only/vmmon.o
    Building modules, stage 2.
    MODPOST 1 modules
    CC /tmp/modconfig-fVhjg6/vmmon-only/vmmon.mod.o
    LD [M] /tmp/modconfig-fVhjg6/vmmon-only/vmmon.ko
    make[1]: Leaving directory ‘/usr/lib/modules/4.7.0-1-ARCH/build’
    /sbin/make -C $PWD SRCROOT=$PWD/. \
    MODULEBUILDDIR= postbuild
    make[1]: Entering directory ‘/tmp/modconfig-fVhjg6/vmmon-only’
    make[1]: ‘postbuild’ is up to date.
    make[1]: Leaving directory ‘/tmp/modconfig-fVhjg6/vmmon-only’
    cp -f vmmon.ko ./../vmmon.o
    make: Leaving directory ‘/tmp/modconfig-fVhjg6/vmmon-only’
    make: Entering directory ‘/tmp/modconfig-fVhjg6/vmnet-only’
    Using kernel build system.
    /sbin/make -C /lib/modules/4.7.0-1-ARCH/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
    MODULEBUILDDIR= modules
    make[1]: Entering directory ‘/usr/lib/modules/4.7.0-1-ARCH/build’
    CC [M] /tmp/modconfig-fVhjg6/vmnet-only/driver.o
    CC [M] /tmp/modconfig-fVhjg6/vmnet-only/hub.o
    CC [M] /tmp/modconfig-fVhjg6/vmnet-only/userif.o
    CC [M] /tmp/modconfig-fVhjg6/vmnet-only/netif.o
    CC [M] /tmp/modconfig-fVhjg6/vmnet-only/bridge.o
    CC [M] /tmp/modconfig-fVhjg6/vmnet-only/procfs.o
    CC [M] /tmp/modconfig-fVhjg6/vmnet-only/smac_compat.o
    CC [M] /tmp/modconfig-fVhjg6/vmnet-only/smac.o
    CC [M] /tmp/modconfig-fVhjg6/vmnet-only/vnetEvent.o
    In file included from include/linux/pci.h:35:0,
    from /tmp/modconfig-fVhjg6/vmnet-only/compat_netdevice.h:27,
    from /tmp/modconfig-fVhjg6/vmnet-only/netif.c:43:
    include/linux/pci_ids.h:2253:0: warning: “PCI_VENDOR_ID_VMWARE” redefined
    #define PCI_VENDOR_ID_VMWARE 0x15ad

    In file included from /tmp/modconfig-fVhjg6/vmnet-only/net.h:38:0,
    from /tmp/modconfig-fVhjg6/vmnet-only/vnetInt.h:26,
    from /tmp/modconfig-fVhjg6/vmnet-only/netif.c:42:
    /tmp/modconfig-fVhjg6/vmnet-only/vm_device_version.h:56:0: note: this is the location of the previous definition
    #define PCI_VENDOR_ID_VMWARE 0x15AD

    CC [M] /tmp/modconfig-fVhjg6/vmnet-only/vnetUserListener.o
    /tmp/modconfig-fVhjg6/vmnet-only/netif.c: In function ‘VNetNetifStartXmit’:
    /tmp/modconfig-fVhjg6/vmnet-only/netif.c:468:7: error: ‘struct net_device’ has no member named ‘trans_start’; did you mean ‘mem_start’?
    dev->trans_start = jiffies;
    ^~
    make[2]: *** [scripts/Makefile.build:290: /tmp/modconfig-fVhjg6/vmnet-only/netif.o] Error 1
    make[2]: *** Waiting for unfinished jobs….
    In file included from /tmp/modconfig-fVhjg6/vmnet-only/net.h:38:0,
    from /tmp/modconfig-fVhjg6/vmnet-only/vnetInt.h:26,
    from /tmp/modconfig-fVhjg6/vmnet-only/bridge.c:52:
    /tmp/modconfig-fVhjg6/vmnet-only/vm_device_version.h:56:0: warning: “PCI_VENDOR_ID_VMWARE” redefined
    #define PCI_VENDOR_ID_VMWARE 0x15AD

    In file included from include/linux/pci.h:35:0,
    from /tmp/modconfig-fVhjg6/vmnet-only/compat_netdevice.h:27,
    from /tmp/modconfig-fVhjg6/vmnet-only/bridge.c:51:
    include/linux/pci_ids.h:2253:0: note: this is the location of the previous definition
    #define PCI_VENDOR_ID_VMWARE 0x15ad

    make[1]: *** [Makefile:1457: _module_/tmp/modconfig-fVhjg6/vmnet-only] Error 2
    make[1]: Leaving directory ‘/usr/lib/modules/4.7.0-1-ARCH/build’
    make: *** [Makefile:120: vmnet.ko] Error 2
    make: Leaving directory ‘/tmp/modconfig-fVhjg6/vmnet-only’
    Unable to install all modules. See log for details.

    [root@localhost vmnet-only]#

  2. Use the following patch on your patched 4.6 kernels, this is from the arch wiki.

    # Only for kernel 4.7 or later.

    sed -i -e ‘s/dev->trans_start = jiffies/netif_trans_update\(dev\)/g’ vmnet-only/netif.c

  3. Hi! After many blog entries and different posts… is there a single “source of truth” for all changes/patches that are needed to run VMWare Player with kernel 4.7? I’m sort of lost now…

  4. For those who were brought here by Google like me, the patch for vmware 12.5.2 would be the same, except
    Replace (d)->trans_start = jiffies;
    with netif_trans_update(d);
    in vmnet-only/compat_netdevice.h

Leave a Reply

Your email address will not be published. Required fields are marked *