[patch] Support for kernel 6.0.2 (Parallel Tools 18.0.2.53077)

Discussion in 'Linux Virtual Machine' started by (GalaxyMaster), Oct 16, 2022.

  1. (GalaxyMaster)

    (GalaxyMaster) Hunter

    Messages:
    119
    Hi, everyone!

    You guessed it, I updated my Arch Linux and got a new kernel which is not compatible with the latest Parallels Tools. Attached is a patch to the tools, so the modules compile against kernel v6.
     

    Attached Files:

    BlueDeviL, DogukanC and ChristianW8 like this.
  2. Mark Fine

    Mark Fine Pro

    Messages:
    482
    Thanks for being ahead of the game.
     
    (GalaxyMaster) likes this.
  3. ChristianW8

    ChristianW8 Member

    Messages:
    21
    Thanks a lot @GalaxyMaster!
     
  4. ChristianW8

    ChristianW8 Member

    Messages:
    21
    @GalaxyMaster, I tried your patch which might work but I get a lot of other errors. Could you have a look what could it be?
    I use Suse aarch64 and get following errors:
    In file included from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:23:
    /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h: In function 'tg_out':
    /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h:179:14: warning: assignment to 'long unsigned int' from 'void *' makes integer from pointer without a cast [-Wint-conversion]
    179 | port += dev->base_addr;
    | ^~
    /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h:183:24: warning: passing argument 2 of 'iowrite64' makes pointer from integer without a cast [-Wint-conversion]
    183 | iowrite64(val, port);
    | ^~~~
    | |
    | long unsigned int
    In file included from /usr/src/linux-6.0.2-1/arch/arm64/include/asm/io.h:163,
    from /usr/src/linux-6.0.2-1/include/linux/io.h:13,
    from /usr/src/linux-6.0.2-1/include/linux/irq.h:20,
    from /usr/src/linux-6.0.2-1/include/asm-generic/hardirq.h:17,
    from /usr/src/linux-6.0.2-1/arch/arm64/include/asm/hardirq.h:17,
    from /usr/src/linux-6.0.2-1/include/linux/hardirq.h:11,
    from /usr/src/linux-6.0.2-1/include/linux/interrupt.h:11,
    from /usr/src/linux-6.0.2-1/include/linux/pci.h:38,
    from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:7:
    /usr/src/linux-6.0.2-1/include/asm-generic/io.h:852:64: note: expected 'volatile void *' but argument is of type 'long unsigned int'
    852 | static inline void iowrite64(u64 value, volatile void __iomem *addr)
    | ~~~~~~~~~~~~~~~~~~~~~~~^~~~
    In file included from /usr/src/linux-6.0.2-1/include/asm-generic/bug.h:22,
    from /usr/src/linux-6.0.2-1/arch/arm64/include/asm/bug.h:26,
    from /usr/src/linux-6.0.2-1/include/linux/bug.h:5,
    from /usr/src/linux-6.0.2-1/arch/arm64/include/asm/cpufeature.h:19,
    from /usr/src/linux-6.0.2-1/arch/arm64/include/asm/hwcap.h:9,
    from /usr/src/linux-6.0.2-1/arch/arm64/include/asm/arch_timer.h:12,
    from /usr/src/linux-6.0.2-1/arch/arm64/include/asm/timex.h:8,
    from /usr/src/linux-6.0.2-1/include/linux/timex.h:67,
    from /usr/src/linux-6.0.2-1/include/linux/time32.h:13,
    from /usr/src/linux-6.0.2-1/include/linux/time.h:60,
    from /usr/src/linux-6.0.2-1/arch/arm64/include/asm/stat.h:12,
    from /usr/src/linux-6.0.2-1/include/linux/stat.h:6,
    from /usr/src/linux-6.0.2-1/include/linux/module.h:13,
    from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:5:
    /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c: In function 'prl_tg_probe_common':
    /usr/src/linux-6.0.2-1/include/linux/kern_levels.h:5:25: warning: format '%lx' expects argument of type 'long unsigned int', but argument 3 has type 'void *' [-Wformat=]
    5 | #define KERN_SOH "\001" /* ASCII Start Of Header */
    | ^~~~~~
    /usr/src/linux-6.0.2-1/include/linux/printk.h:436:25: note: in definition of macro 'printk_index_wrap'
    436 | _p_func(_fmt, ##__VA_ARGS__); \
    | ^~~~
    /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:524:9: note: in expansion of macro 'printk'
    524 | printk(KERN_INFO "detected %s, base addr %08lx, IRQ %d\n",
    | ^~~~~~
    /usr/src/linux-6.0.2-1/include/linux/kern_levels.h:14:25: note: in expansion of macro 'KERN_SOH'
    14 | #define KERN_INFO KERN_SOH "6" /* informational */
    | ^~~~~~~~
    /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:524:16: note: in expansion of macro 'KERN_INFO'
    524 | printk(KERN_INFO "detected %s, base addr %08lx, IRQ %d\n",
    | ^~~~~~~~~
    /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c: In function 'prl_tg_init_module':
    /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:650:13: warning: unused variable 'rc' [-Wunused-variable]
    650 | int rc;
    | ^~
    In file included from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_call.c:11:
    /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h: In function 'tg_out':
    /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h:179:14: warning: assignment to 'long unsigned int' from 'void *' makes integer from pointer without a cast [-Wint-conversion]
    179 | port += dev->base_addr;
    | ^~
    /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h:183:24: warning: passing argument 2 of 'iowrite64' makes pointer from integer without a cast [-Wint-conversion]
    183 | iowrite64(val, port);
    | ^~~~
    | |
    | long unsigned int
    In file included from /usr/src/linux-6.0.2-1/arch/arm64/include/asm/io.h:163,
    from /usr/src/linux-6.0.2-1/include/linux/io.h:13,
    from /usr/src/linux-6.0.2-1/include/linux/irq.h:20,
    from /usr/src/linux-6.0.2-1/include/asm-generic/hardirq.h:17,
    from /usr/src/linux-6.0.2-1/arch/arm64/include/asm/hardirq.h:17,
    from /usr/src/linux-6.0.2-1/include/linux/hardirq.h:11,
    from /usr/src/linux-6.0.2-1/include/linux/interrupt.h:11,
    from /usr/src/linux-6.0.2-1/include/linux/pci.h:38,
    from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_call.c:7:
    /usr/src/linux-6.0.2-1/include/asm-generic/io.h:852:64: note: expected 'volatile void *' but argument is of type 'long unsigned int'
    852 | static inline void iowrite64(u64 value, volatile void __iomem *addr)
    | ~~~~~~~~~~~~~~~~~~~~~~~^~~~
    ld: warning: -z relro ignored
    ld: warning: -z relro ignored
    Skipping BTF generation for /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prl_tg.ko due to unavailability of vmlinux
    warning: the compiler differs from the one used to build the kernel
    The kernel was built by: gcc (SUSE Linux) 12.2.1 20220830 [revision e927d1cf141f221c5a32574bde0913307e140984]
    You are using: cc (SUSE Linux) 12.2.1 20220830 [revision e927d1cf141f221c5a32574bde0913307e140984]
    /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c:958:10: error: 'const struct address_space_operations' has no member named 'readpage'
    958 | .readpage = prlfs_readpage,
    | ^~~~~~~~
    /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c:958:35: error: initialization of 'int (*)(struct page *, struct writeback_control *)' from incompatible pointer type 'int (*)(struct file *, struct page *)' [-Werror=incompatible-pointer-types]
    958 | .readpage = prlfs_readpage,
    | ^~~~~~~~~~~~~~
    /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c:958:35: note: (near initialization for 'prlfs_aops.writepage')
    cc1: some warnings being treated as errors
    make[3]: *** [/usr/src/linux-6.0.2-1/scripts/Makefile.build:250: /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.o] Error 1
    make[2]: *** [../../../linux-6.0.2-1/Makefile:1866: /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs] Error 2
    make[1]: *** [Makefile:36: all] Error 2
    make: *** [Makefile.kmods:49: compile] Error 2
    Error: could not build kernel modules
    modprobe: FATAL: Module prl_tg not found in directory /lib/modules/6.0.2-1-default
    modprobe: FATAL: Module prl_tg not found in directory /lib/modules/6.0.2-1-default
    Error: failed to upgrade Parallels Guest Tools!
     
  5. ChristianW8

    ChristianW8 Member

    Messages:
    21
    actually the only line I need to fix is:
    /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c:958:10: error: 'const struct address_space_operations' has no member named 'readpage'

    What can I do here?
     
  6. MichaelR82

    MichaelR82 Bit poster

    Messages:
    1
    I avoidhaving kernel updates on my guest OS at the moment, by choosing to remain on 5.19.8, as that 5.18 - 19, which was the last version reported on the Arch Linux info page for parallels, as being supported. The technique for avoiding kernel upgrades is quite easy in arch linux using pacman
    In the the /etc/pacman.conf (for aarch64 guest)
    # Pacman won't upgrade packages in the IgnorePkg and IgnoreGroup
    IgnorePkg = linux-aarch6 linux-aarch64-headers 4 linux-eos-arm-headers

    The linux-eos-arm-headers comes from having the Endeavour OS add-ons to Arch linux for aarch64.
     
  7. (GalaxyMaster)

    (GalaxyMaster) Hunter

    Messages:
    119
    The kernel interface seems have been changed, so I would look at the commits touching that space and see how kernel devs updated the related pieces. Unfortunately, I am running an Intel-based Mac, so I did not encounter this particular issue and I don't have a habit to provide advice that I cannot verify myself.
     
    Mark Fine likes this.
  8. BlueDeviL

    BlueDeviL Bit poster

    Messages:
    4
    Thank you GalaxyMaster
    Your diff file also works on 18.0.1
    BTW, I use arch..
     
  9. DogukanC

    DogukanC Bit poster

    Messages:
    3
    I can confirm that the patch also works for Version 18.0.3 (53079)
     
    Mark Fine likes this.
  10. DogukanC

    DogukanC Bit poster

    Messages:
    3
    Just an update, Parallels Desktop 18.1.0 (and its parallel-tool of course) doesn't require the patch on kernel 6.0.2
     
    (GalaxyMaster) likes this.
  11. AlejandroA7

    AlejandroA7 Bit poster

    Messages:
    1
    Hi guys.

    I can not install parallels tools in Parrot OS with kernel 6.1. How can I fix this issue?? How could I install this patch mentioned by GalaxyMonster?
     
    刘一谦 and NicolasN2 like this.
  12. RobJ6

    RobJ6 Bit poster

    Messages:
    3
    Will this work with parallels 17 and 6.4 image?
     
  13. (GalaxyMaster)

    (GalaxyMaster) Hunter

    Messages:
    119
    Parallels lost me as a customer in January this year (I switched over to UTM and it covers 90% of what I want for free), so I do not know what the status of 6.4 and prl_* drivers. I just got tired of fighting bad support from a product that is supposed to make my life easier. Since January I had no single occurence when I needed to patch or install anything on the guest system to support my current virtualisation solution and I think it is how it should be.
     
    borari likes this.

Share This Page