Parallel Tools Fail to Install, amd64, Kernel 3.3.0

KirkR

Bit poster
I have been able to install Parallel Tools in the past.
Any help on this would be greatly appreciated:
Code:
# uname -a
Linux frigg-gentoo 3.3.0-gentoo #1 SMP Sun Apr 1 07:44:35 WST 2012 x86_64 Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz GenuineIntel GNU/Linux
I have symlinked /usr/lib to /usr/lib64 -
Code:
# ll /usr/lib
lrwxrwxrwx 1 root root 10 Apr  1 10:54 /usr/lib -> /usr/lib64
I am using xorg-server 1.11.4
If anyone knows what has to happen for the tools to install, please post here. Thank you.
Kirk Holz

Here's the error log:
Code:
Sun Apr  1 10:56:25 WST 2012
Start installation or upgrade of Guest Tools
Installed Guest Tools were not found
Perform installation into the /usr/lib/parallels-tools directory
cat: /usr/lib/parallels-tools/kmods/../version: No such file or directory
Start installation of prl_eth kernel module
make: Entering directory `/usr/lib64/parallels-tools/kmods'
cd prl_eth/pvmnet && make
make[1]: Entering directory `/usr/lib64/parallels-tools/kmods/prl_eth/pvmnet'
make -C /lib/modules/3.3.0-gentoo/build M=/usr/lib64/parallels-tools/kmods/prl_eth/pvmnet
make[2]: Entering directory `/usr/src/linux-3.3.0-gentoo'
  LD      /usr/lib64/parallels-tools/kmods/prl_eth/pvmnet/built-in.o
  CC [M]  /usr/lib64/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.o
/usr/lib64/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.c:199:2: error: unknown field ‘get_tx_csum’ specified in initializer
/usr/lib64/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.c:199:28: error: ‘ethtool_op_get_tx_csum’ undeclared here (not in a function)
/usr/lib64/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.c:200:2: error: unknown field ‘get_sg’ specified in initializer
/usr/lib64/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.c:200:28: error: ‘ethtool_op_get_sg’ undeclared here (not in a function)
make[3]: *** [/usr/lib64/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.o] Error 1
make[2]: *** [_module_/usr/lib64/parallels-tools/kmods/prl_eth/pvmnet] Error 2
make[2]: Leaving directory `/usr/src/linux-3.3.0-gentoo'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/lib64/parallels-tools/kmods/prl_eth/pvmnet'
make: *** [all] Error 2
make: Leaving directory `/usr/lib64/parallels-tools/kmods'
Error: could not build kernel modules
Error: failed to install kernel modules
 
Last edited:
It looks like Linux 3.3 removed / moved a couple of the members in the ethtool_ops structure: get_tx_csum and get_sg.

You have two choices:

1) Wait until Parallels officially supports Linux 3.3
2) Patch the pvmnet.c code yourself to comment out the setting of those two fields (lines 199 and 200).
 
Hi,

We will have to wait for official support, there are still more compilation errors after this one. Looks like kernel 3.3 changed quite a lot of things. I guess it's usual...
 
These fields in ethtool_ops became deprecated about a year ago
Also deprecated sysdev device framework was removed by Linus himself in favor of regular device drivers because now there is no driver in kernel using it
Except parallels tools :) .... so slow :)

With some edits to parallels kmods and installation procedure it works
but apparently does not survive sleep/resume, network fails and some networking operations hang
Works well if host does not sleep
 
Last edited:
Do you have any patch available with these edits you're talking about ?

Maybe if the Parallels Tools development model was more open, these problems could be adressed earlier...
 
Well, it's dirty hack, it just makes installer not to build prl_pv kmod and removes those deprecated lines in prl_vmnet

Here is installer patch

To patch kmods you need to unpack kmods/prl_mod.tar.gz, apply this patch and pack it again

Or leave it unpacked and change installer script not to unpack this archive

I'd better stick on 3.2 kernel and wait for official parallels tools
 
I've tried Your patch but it does not seem to help.
But I've managed to patch up my own solution.

Edit the file: kmods/prl_eth/pvmnet/pvmnet.c
Change in line 391,
from:
.ndo_set_multicast_list = pvmnet_set_multicast_list,
to:
.ndo_set_rx_mode = pvmnet_set_multicast_list,

Repack the prl_mod.tar.gz and launch the installer.
The install should pass just fine.

EDIT: Tested on Ubuntu 12.04
EDIT2: In my case the error was:
/usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.c:389:4: error: unknown field 'ndo_set_multicast_list' specified in initializer
/usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.c:389:4: warning: initialization from incompatible pointer type [enabled by default]
/usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.c:389:4: warning: (near initialization for 'pvmnet_netdev_ops.ndo_open') [enabled by default]
 
Last edited:
I've created a set of two patches for pv_main.c and pvmnet.c
This patch adds if/else rules for the 3.2 and the 3.3 kernels.
I've removed those two conflicting lines from pvmnet.c.
In the pv_main.c I've replaced the include of sysdev.h with device.h and modified the lines to not use the old sysdev structure (only for the 3.3 Kernel).
If someone can verify if I added the changes correctly I would be grateful (I know it compiles but some parts of logic still remain a little bit unclear). Use at Your own risk :)

Patch pvmnet.c
Patch pv_main.c
 
Hello, unfortunately I can not install the parallels Tools, although I have applied all of the patches. Could put iso working with everything done already? Arch Linux system is 3.10.7-1. Thank you.
 
Hmm, already two years passed since those patches ...
People, just upgrade PD. Parallel Tools are working fine OOB for a long time already
 
Back
Top