I´m also investigating why MSI also doesn´t work under RTDM. It´s merely a coincidence that the above bug (MSI interrupts from Linux devices getting blocked) emerged and produced exactly the same behaviour (system hanging).

It turns out not to be coincidential. rtdm_irq_request() (through passing iack=NULL to virtualize_irq()) uses the default Linux driver as an acknowledgement routine for that interrupt. So fixing regular Linux interrupts also fixed RTDM operation.

I'll have to sleep over the best solution in msi.c . For now, I have implemented an __ack_APIC_irq() in an routine ack_msi_irq_wo_maskbit(). How do I make a patch for that ?

As for the bitmasked varieties, I need to be careful here. First I'll have a look at the details of MSI with maskbits. Some of this stuff has actually been devised to allow deferral of IRQ acknowledgement. I wouldn't want to break that feature.

Anyway, with this simple fix, I'm finally able to use my Dell GX270 without IRQ sharing for the first time :-) .


Reply via email to