AnsweredAssumed Answered

defining and using MSI at Linux at B4860

Question asked by Itzik Chaimov on Jun 2, 2019
Latest reply on Jul 13, 2019 by Itzik Chaimov


We have an old Linux Kernel (3.8.13) build from SDK2.0 of the B4860 (QorIQ chipset) and have a PCIe MSI based EP which we would like to enable an MSI with it.


We should use the deprecated API of the PCI interrupt since new API of interrupt do not exists prior to 3.8.13 Kernel.

This mean that pci_enable_msi(*) was used to activate one IRQ MSI.

at Configuration Space (CS) this changes the LSBs MSI-Control Register from 0xA to 0xB (32 messages + enable - correct value).

As we see at CS the Message Address (Low and High) were not allocated - we don;t want to allocate it manually. Also the Message Data Register (16 bits) was not set as well (value: 0x0).

Also ,we have a Kernel running at  64 bit PPC linux OS but somehow the 64-bit Address Capable is OFF (means only 32 bit address vs. 64 bit data).


Regarding the Device Tree of our target: 

when typing:

# cat /proc/device-tree/compatible

we have:

fsl,B4860QDS configuration - is it enough for to implement the MSI on it?


How we should implement the MSI on this platform given all the information we gave?