ITS device ID for PCI devices

Hello,

I am using the Honeycomb LX2 and I observe that the u-boot calculates the ITS device ID (stream ID) of PCI devices and add the “msi-map” which includes the stream ID in the device tree. The Linux will use this ID for the ITS dev ID of the PCI devices.

This is not the case when using QNX, the ITS device ID of a 2 port NIC card will be the ITS device ID of the PCI bridge and the device ID of the 2 ports are the same.

The Linux has the correct dev ID. Is there any ITS ID set up in u-boot that is specific to Linux only that could have caused this difference?

Thanks,

There is no Linux only configuration in u-boot. U-boot as a bootloader configures the hardware and then maps that information into device-tree to describe how the hardware is configured. It is up to the host OS to then parse the device-tree and apply it.

Thank you for the reply. I noticed that uboot configures the stream ID for PCI. This can be seen from the msi-map entry in device tree. I believe this is used as ITS device ID for the PCI devices.

I have tried looking for the ITS device ID for each of the BDF on Linux by using lspci -vvv and dmesg. Can you confirm this or is there a way to check the ITS device ID on linux?

From linux code, I can see this in drivers/irqchip/irq-gic-v3-its-pci-msi.c (Line 76)

/* ITS specific DeviceID, as the core ITS ignores dev. */
Info->scratchpad[0].ul = pci_msi_domain_get_msi_rid(domain, pdev);

Thanks,