Move from legacy INTx to MSI interrupt

Hello,

I have a PCI express card with ALTERA’s FPGA. The FPGA contains a PCIe core.
Till now we worked with INTx legacy interrupts.

Now we want to move to MSI interrupts.
According to ALTERA we should not do any change in the FPGA for this
purpose.

Does it make sense ?

How can the PC get MSI interrupt instead of a regular INTx ?
Should we make a change in the device driver ?

Thanks,
Zvika

On 25-Aug-2013 23:29, Zvi Vered wrote:

I have a PCI express card with ALTERA’s FPGA. The FPGA contains a PCIe
core.
Till now we worked with INTx legacy interrupts.

Now we want to move to MSI interrupts.
According to ALTERA we should not do any change in the FPGA for this
purpose.

Does it make sense ?

The ability to generate MSI may be limited by licensing option of the
PCIe IP. If you indeed have it, then yes, only the driver needs to be
changed (and the inf file, as part of the driver).
Read the WDK documentation:
http://msdn.microsoft.com/en-us/library/windows/hardware/ff544246(v=vs.85).aspx

Windows still can allocate an INTx interrupt for your device for some
obscure reasons, be prepared for this.

Good luck.
– pa

Dear Pavel,

In case we have no licensing problems in the IP, no change is required in FPGA ?

So who determines (chipset ?) that a specific interrupt is MSI and not INTx ?

Thanks,
Zvika

On 26-Aug-2013 22:52, xxxxx@gmail.com wrote:

Dear Pavel,

In case we have no licensing problems in the IP, no change is required in FPGA ?

None. Of course, if you can, check this with your Altera contact.

So who determines (chipset ?) that a specific interrupt is MSI and not INTx ?

Assuming that everything is configured correctly in the registry you can
hope that you’ll get MSI. Just try and test. If it won’t work, post again.

– pa

xxxxx@gmail.com wrote:

In case we have no licensing problems in the IP, no change is required in FPGA ?

So who determines (chipset ?) that a specific interrupt is MSI and not INTx ?

The FPGA has to do this, but all PCI Express devices that do interrupts
are required to support MSI, so it may be their FPGA has had the support
the whole time. There is a bit in the configuration space that turns on
MSI and turns off legacy interrupts. The PCI bus driver will set that
bit if your driver has the proper registry magic.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

Perhaps my answer was not clearly worded…
If by FPGA you mean your own firmware design - then, of course,
it should implement the MSI behavior.

As Tim R. wrote, the PCIe interface IP should contain MSI functionality
and handle the appropriate fields in the configuration space
automatically, without special effort in the driver code.

– pa

On 26-Aug-2013 23:20, Pavel A. wrote:

On 26-Aug-2013 22:52, xxxxx@gmail.com wrote:
> Dear Pavel,
>
> In case we have no licensing problems in the IP, no change is required
> in FPGA ?

None. Of course, if you can, check this with your Altera contact.

> So who determines (chipset ?) that a specific interrupt is MSI and
> not INTx ?

Assuming that everything is configured correctly in the registry you can
hope that you’ll get MSI. Just try and test. If it won’t work, post again.

– pa

> So who determines (chipset ?) that a specific interrupt is MSI and not INTx ?

The only one who can do it is the OS - assuming that the target device is MSI-capable it is the OS’s responsibility to decide whether to make use of device’'s MSI capability or to signal interrupts via a pin…

Anton Bassov

Dear Members,

I double checked the issue with ALTERA.
No change is required by FPGA (firmware) designer.
Currently I’m working with vxWorks.
The change is required in the vxBus device driver - software only.
Somehow, this change causes ALTERA’s PCIe core to create MSI and not legacy interrupt.

Thanks,
Zvika

On 28-Aug-2013 06:09, xxxxx@gmail.com wrote:

The change is required in the vxBus device driver - software only.
Somehow, this change causes ALTERA’s PCIe core to create MSI and not legacy interrupt.

Then you need to look what the vxworks driver does. Do you have its source?
Early PCIe based designs may handle MSIs similarly to INTx, to minimize
changes in firmware and drivers.
So maybe all the driver has to do to inform the device that it should
use MSIs is set the INTx interrupt disable bit in the config space. Or,
the PCI bus driver of VxWorks does this.

Regards,
– pa