Felix Frey
2018-11-02 16:02:00 UTC
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
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