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...