I'm having problems using MSI interrupts in Xenomai.
When using normal PCI interrupts, my PCI card + RTDM driver work
flawlessly. However, I noticed the following while trying to enable MSI
(by having Linux do all the administrative register-fill-ins using
1. The kernel is compiled for MSI. (PCI_CONFIG_MSI=yes)
2. My card correctly advertises the MSI capability (checked with 'lspci -v').
3. I do get a new IRQ number in the pci_dev struct (217 instead of 193) after invoking pci_enable_msi().
4. After pci_enable_smi(), 'lspci -v' correctly indicates that Message Signalled Interrupts are now enabled (Enable+).
5. I can register the new IRQ with rtdm_request_irq(). Return value is 0.
6. The IRQ number appears in /proc/xenomai/irq.
7. I can enable the new IRQ with rtdm_irq_enable(). Return value is 0.
8. I can disable the new IRQ with rtdm_irq_disable(). Return value is 0.
9. I can unregister the new IRQ with rtdm_irq_free(). Return value is 0.
10. I'm able to do pci_disable_pci() successfully.
If I actually enable the card interrupt, it goes wrong after 7 after
arrival of the first interrupt. The ISR is executed (checked that),
which checks if the card was actually interrupting and, if so, returns
with RTDM_IRQ_ENABLE. After that, the machine is absolutely dead
Any hints, suggestions or things I may check ?
- [Xenomai-core] Handling PCI MSI interrupts Jeroen Van den Keybus
- Re: [Xenomai-core] Handling PCI MSI interrupts Philippe Gerum
- Re: [Xenomai-core] Handling PCI MSI interru... Jeroen Van den Keybus
- Re: [Xenomai-core] Handling PCI MSI int... Jan Kiszka
- Re: [Xenomai-core] Handling PCI MSI... Philippe Gerum