Hi,
Had the same issue. (ERROR: modpost: "irq_to_desc" [/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prl_tg.ko] undefined!)
After a few hours of digging into it I found a solution. It seems that the symbol irq_to_desc is not anymore exported from the kernel. I managed to change the code to use irq_get_irq_data instead.
Relevant code:
kmods/prl_mod/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_compat.h L118-126
	Code:
	//extern struct irq_desc *irq_to_desc(unsigned int irq);
#include <asm/irq.h>
#define prl_for_each_irq_desc(irq, irq_data)                        \
    for (irq = 0, irq_data = irq_get_irq_data(irq); irq < NR_IRQS;        \
         irq++, irq_data = irq_get_irq_data(irq))                        \
        if (!irq_data)                                                \
            ;                                                    \
        else
#else
 kmods/prl_mod/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c L420
	Code:
	struct irq_data *irq_data;
 kmods/prl_mod/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c L460-468
	Code:
	    prl_for_each_irq_desc(desc_idx, irq_data) {
        if (irq_count >= regs.a2)
            break;
        if (!irq_data)
            continue;
        if (irq_data->hwirq == regs.a1 + irq_count)
            dev->irqs[irq_count++] = desc_idx;
    }
 kmods/prl_mod/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c L736 
	Code:
	MODULE_LICENSE("GPL");
 The only problem is that that symbol is only exported for GPL licensed code... so I edited the license also to get it to compile...