Discussion:
[Rtai] Problem with MSI, IOMMU and rt-interrupt
Felix Frey
2018-11-02 16:02:00 UTC
Permalink
Hi,

I'm developing a rt-driver for a device which is connected per PCIe
and provides two MSI's.
For each of them I install a interrupt handler using rt_request_irq().
When the device throws a irq on MSI(0), everything works as expected.
However, when MSI(1) is thrown, then the handler doesn't get called, instead I see
the message below in the kernel logs:

Jan 15 23:41:20 (none) user.err kernel: [ 1568.741788] AMD-Vi: Event logged [
Jan 15 23:41:20 (none) user.warn kernel: [ 1568.741794] IO_PAGE_FAULT device=01:00.0 domain=0x0001 address=0x000000fdf8010000 flags=0x0008]

The MSI obviously has been trapped by the IOMMU.
Now the point is, when I register normal linux irq-handlers, then both MSI's work.
So I assume this is an RTAI issue.

By the way, disabling the IOMMU doesn't solve the problem because then the 2nd MSI
isn't visible at all.

Can anybody help?

Versions:
Kernel 4.9.80, RTAI 5.1
ARCH: x86-64, AMD G-Series, quad core

Regards, Felix
Alec Ari
2018-11-02 19:10:49 UTC
Permalink
Those page faults are fixed in 4.14. I was going to add 4.14 kernel support (4.14.78, latest) to RTAI once the IPIPE code for it is stabilized (which it is now, just recently.) In the mean time, disable IOMMU in both BIOS and kernel configuration.

Alec

Loading...