PCIe Intterupts beind PLX switch

1

1

Firstly, I'm not sure if this is the best place to ask this question, so apologies if it isn't, but given its a quite niche question, I don't know if there is anywhere really suited to ask it.


A quick bit of background. For the last year I have been developing an FPGA imaging system for a university research project which connects via PCIe Gen3. I build a driver using KMDF (the windows driver framework) which enables MSI for the device (in the inf file) and is working fine on one computer.

I've recently moved to a new motherboard (Asus P9X79-E WS) as the plan is to have multiple cards and this motherboard has a better arrangement of PCIe slots thanks to the onboard PEX8747 switches. The FPGA and driver work fine in one slot (receiving MSI interrupts correctly), however if I put the card in a different slot, one which is behind either of the two PEX8747 switches, I no longer receive MSI interrupts.

I can see from the configuration space that the FPGA has its MSI config space being correctly set up (8 vectors requested and allocated, MSI Enabled, Legacy interrupts disabled, and the address is non-zero). However the ISR in the driver is never triggered.

I've tried disabling MSI and reverting back to using one legacy interrupt and having a flag register which the driver reads to work out the correct source. This is working fine even behind the switch, but the process is not as fast, so I would rather be using MSI.


I suppose then the question is, is there something about PCIe Switches (specifically the PEX8747) that prevents Message Signal Interrupts from working? Is there configuration that is required to get the switches to work?

Tom Carpenter

Posted 2015-01-17T12:08:06.497

Reputation: 856

Answers

0

Well, as it turns out after a bit of experimentation the PLX switches don't seem to transfer MSI requests (and probably also posted writes given MSI uses those) with a traffic class of anything other than zero. By setting the traffic class of my interrupt generator I was able to get it working.

Hopefully this might prove useful to anyone browsing Google having the same issue.

Tom Carpenter

Posted 2015-01-17T12:08:06.497

Reputation: 856