KMDF and MSI. Works on one PC but not another

Hi,

For the last year I have been developing an FPGA imaging system which connects via PCIe Gen3. I build a driver using KMDF 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 and set up the driver. It works fine in one slot (receiving MSI interrupts correctly), however if I put the card in a different slot, one which is behind a PEX8747 switch, 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.

Is there something special I need to do in the driver to get MSI to work behind a switch? Or maybe it is not the switches but the fact that it is on a different root port of the CPU? Don’t really know.

Thanks.