On 14.11.19 14:16, Jeff Webb wrote:
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Thursday, November 14, 2019 1:50 AM, Jan Kiszka <jan.kis...@siemens.com>
wrote:
On 14.11.19 06:05, Jeff Webb via Xenomai wrote:
I would like to revive this thread from several months ago:
https://xenomai.org/pipermail/xenomai/2019-March/040498.html
The issue is that on some hardware (a specific rack-mount PC with a PICMG
daughtercard on a backplane containing PCI and PCIe slots) I get an INTR-REMAP
error when trying to receive legacy (not MSI) interrupts from a custom
FPGA-based PCI card using a UDD driver. The card did work properly in one out
of the five PCI slots on that machine, but UDD interrupts did not work in the
other four slots.
Please review the original thread for more details about the specific error.
Here are a few more tidbits I have gathered:
- The UDD driver / userspace code works fine on the other hardware
- The UDD driver / userspace code works fine in one PCI slot out of five on
this hardware.
- With another backplane model, but same processor card, the problem occurs
in all four of the PCI slots.
- An almost identical pure-linux UIO version of the driver / userspace code
works in all the cases I tested, even when the UDD version fails, and even with
the same xenomai-patched kernel used for UDD testing.
In one of the previous posts in this thread a few months ago, Per Öberg
mentioned experiencing something similar. Based on the information that was
shared, I tried my code with linux version 4.9.38, but it still failed. This
prompted me to try other linux / ipipe / xenomai combinations. These are my
findings:
Interrupts work:
xenomai-2.6.5 ipipe-core-3.18.20-x86-7.patch (2016-07-05)
xenomai-3.0.9+ ipipe-core-3.18.20-x86-7.patch (2016-07-05)
xenomai-3.0.9+ ipipe-core-4.1.18-x86-9.patch (2017-05-25)
INTR-REMAP error:
xenomai-3.0.9+ ipipe-core-4.4.43-x86-6.patch (2017-02-25)
xenomai-3.0.9+ ipipe-core-4.4.43-x86-7.patch (2017-05-25)
xenomai-3.0.9+ ipipe-core-4.4.43-x86-8.patch (2017-06-14)
xenomai-3.1-rc3 ipipe-core-4.4.196-cip38-x86-19.patch (2019-11-04)
xenomai-3.0.9+ ipipe-core-4.9.38-x86-4.patch (2017-10-03)
xenomai-3.0.9 ipipe-core-4.14.132-x86-6.patch (2019-07-03)
The Xenomai 2.6.5 version of course does not use UDD, but uses the old
pthread_intr_* userspace functions.
Hopefully this additional information can shed a little light on the matter.
This sounds like some RT interrupt enabling issue related to the IOAPIC
in the x86 I-pipe patch. Please also test 4.19.
Ok, I will do this.
Are you using UDD_IRQ_CUSTOM or do you leave the interrupt registration
to the UDD core?
I just tell UDD the IRQ number and let it register the interrupt.
And please share your kernel config.
I attached one to my original post earlier this year -- you should be able to
download it from the link in the mailing list archive. Let me know if you need
something different. I started with the standard Ubuntu desktop kernel config
and tweaked options from there, so there is a lot of stuff enabled, obviously.
BTW, interrupt remapping issues can be worked around by disabling the
interrupt remapping feature (e.g. "intremap=off"). But that does not
solve the unterlying issue, of course.
I can't remember if I tried this or not. I will give it a go. Obviously, it
would be good to get this fixed in the patch, though.
I've reproduced some problem with INTx/IOAPIC and intremap=on on 4.4 in
KVM. When we are lucky, it's the same as yours. Will debug that tomorrow.
Jan
--
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux