'Can the Address field of different PCI devices of MSI Capability be same?
I am working on an arm64 based board, running on Linux (Ubuntu 18.04). On the other end of this device, there is an FPGA connected via PCIe which is endpoint and arm based board is root complex. I have written driver for that. The FPGA seems to be generating the MSI interrupt, but somehow the arm board is not receiving it. FPGA writes MSI data to 0x00000000fffff000 address. Bus mastering is also enabled. I checked /proc/interrupts file on arm board, and it seems to be registering the interrupt successfully with an appropriate IRQ number, which can also be seen in output of lspci -vvv. There is a WiFi card connected to another PCIe port. MSI Capabilities are displayed as follows for both (WiFi card and FPGA).
FPGA:
Capabilities: [50] MSI: Enable+ Count=1/4 Maskable- 64bit+
Address: 00000000fffff000 Data: 0000
WiFi card:
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fffff000 Data: 0000
My question is, can both the devices have same value in their "Address" field. IRQ numbers are different for both the devices and are not being shared with anything else. I confirmed it from /proc/interrupts file. If they have the same address, how the interrupt handler I have written in my driver will get called? That is, how interrupt will get routed to the IRQ number that is registered to be used with my driver?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|