Hello,
I am using the Honeycomb LX2 board which uses the LX2160A chip. I have inspected the uboot and linux code and found that in uboot, each PCI BDFs (bridges and devices) are assigned a stream ID that is put into msi-map in the dtb.
I assume that Linux uses this stream ID as the ITS device ID for each PCI BDF though when I inspected the Linux code, drivers/irqchip/irq-gic-v3-its-pci-msi.c, the ITS specific deviceID seems to be just the RID.
On the system that I am working on, the ITS device ID of the BDF is the stream ID of the PCI-PCI bridge upstream. Also, the ITS device ID of each port on a 2 port NIC card is the same. Is this the same case on Linux?
Can someone help me confirm how the ITS device ID for PCI devices is calculated on Linux and if 2 ports of a NIC card should share the same ITS device ID? If not, what could have been possibly missing on my system?
I found this discussion helpful. Working with ITS Device IDs on the LX2160A can be tricky, especially when dealing with PCI interrupt routing and configuration details. While researching similar technical topics I also came across Citrus Court Resources which offers well organized public record information. Thanks for sharing this and it’s always useful to see practical insights from others tackling the same hardware.
The discussion around ITS Device IDs for PCI devices on the LX2160A is very informative, especially for anyone working with interrupt translation and embedded systems. While researching related technical documentation I also found Bibb Court Clerk to be a useful resource for accessing organized public information. Thanks for sharing these insights and they make a complex topic much easier to understand and explore further.
Please address your new problem in a new thread.
Thanks
I have a more HW issue that I hope you can help me with.
From debugs, it looks like it mgiht be the PCI-to-PCI Bridge Device that has been sending the Message Signaled Interrupts instead of the PCI devices causing me to see wrong ITS Device ID. Could there be any settings in the PCI config registers that may cause this to happen?
Thanks,
Please refer to the following update
Here is my understanding:
1. The PCIe device generates an interrupt message including its Requester ID (RID).
2. The ITS receives this message and uses the RID to look up the corresponding StreamID.
3. The ITS then translates this information into an appropriate interrupt message for the interrupt controller.
So more specifically,
RID, which is composed of BDF, is used by ITS to manage and translate interrupts
The StreamID, derived from the same BDF as the RID, is used by the SMMU to manage and translate DMA operations.
Please refer to the following update from the AE team.
Those questions are more about linux, so customer can find information how MSI assignment behind PCI-PCI bridge in Documentation/PCI/msi-howto.rst.
Thanks for looking into this. Is there any relationship between the ITS device ID and the stream ID that is programmed into the LUT entries that is mapped to the BDF?
Discussing with the AE team.
Device ID handling for ITS on the LX2160A can definitely be tricky, especially when working with different PCI configurations. While researching similar topics I also came across useful property data through Watauga Property Assessment which was well organized. Thanks for sharing this information and it’s always helpful to see practical discussions on complex hardware behavior.