First, some context:
I am trying to boot the Xen Project Hypervisor on an LS1088A-RDB.
In the NXP application note AN13138 Xen Deployment on Layerscape Platforms in section 2.2.5 "Enable SMMU support", step 2, it says to "Add the mmu-masters property to the smmu node and specify the StreamID for each master." However there is no further explanation of where to find or derive which devices are SMMU masters and what their Stream IDs are.
In the ARM® CoreLink™ MMU-500 SMMU TRM says that Stream IDs are "Implementation dependent"
Checking the QorIQ LS1088A Reference Manual it states: "The SMMU supports 10 stream ID bits" and "Each master has a unique stream ID assigned to it. The stream ID is an identifier attached to each transaction to determine the translation context."
But again, the LS1088A reference manual then has no further detail on which devices are SMMU masters and what their Stream IDs are or how they're derived. Most other SoCs I've worked with have a table or diagram in their reference manual which documents the SMMU masters and their Stream IDs, or at least an explanation of how the Stream ID is derived (e.g. "Stream ID is the TBU number concatenated with the device number" or similar)
Further, the LS1088A Familly DPAA2 LLHWRM states in a couple places that "The AMQ for each datapath hardware module is routed to its associated IOMMU as part of the stream ID" and later says "the AMQ issued by QMan and other DPAA2 modules are used to create a Stream ID in an ARM SMMU" and even goes on to say "AMQ values are programmed in software portals, in FQs, and in a few other places", but I see no further documentation about what software portals, frame queues, or "other places" are used to program those AMQs, nor how they are used to compose a Stream ID.
Questions:
1) Are the LS1088A SMMU Master devices documented somewhere I'm missing, or is their another way to do determine what they are?
2) Are the Stream IDs for these SMMU masters also captured somewhere, or is their a method to determine/calculate what they are?
Thanks!
Thank you for the reply! This link does help point me in the direction of how the SMMU masters are being assigned StreamIDs, however it does leave open some questions. The file linked mentions that all "non-PCI legacy, platform devices" are assigned a StreamID, and below there are assignments for USB, SD/MMC, SATA, and DMA, but I have to think that things like Serial, I2C, and SPI would also be in that list, yet there are no assignments for those devices?
I guess that ties back to a variation of question 1 in my original post: Booting a stock LS1088A-RDB, with no additional PCI devices, what is the minimal list of SMMU Master devices?
I took a stab at that list in my SMMU device tree node for booting Xen that looked like this:
mmu-masters = <&usb0 0x1>, <&usb1 0x2>, <&esdhc 0x3>, <&sata 0x4>, <&emdio1 0x5>, <&emdio2 0x6>, <&i2c0 0x6>, <&ifc 0x7>, <&duart0 0x8>, <&duart1 0x9>, <&pcs_mdio1 0xa>, <&pcs_mdio2 0xb>, <&pcs_mdio3 0xc>, <&pcs_mdio7 0xd>, <&qspi 0xe>;
But the only entries in that list I'm truly confident on are the first 4 as those are actually listed out in the U-Boot initialization that was linked. However I'm still seeing a global fault when booting due to an unknown StreamID, so clearly my list is incomplete, and/or I have an incorrect ID:
(XEN) smmu: /soc/iommu@5000000: Unexpected global fault, this could be serious
(XEN) smmu: /soc/iommu@5000000: GFSR 0x80000002, GFSYNR0 0x00000002, GFSYNR1 0x00001300, GFSYNR2 0x00000000
Any further guidance on identifying the complete list of the SMMU master devices and their StreamIDs would be greatly appreciated, thanks!
dear @jwhitehead
Each master has a unique stream ID assigned to it. The stream ID is an identifier attached
to each transaction to determine the translation context.
please review the next file in the link below