How is rid (requester ID) is used in SMMU-v3 connected to PCIe RC?

Chan Kim ckim at
Tue May 24 19:01:40 EDT 2022

Hello all,

I read Documentation/devicetree/bindings/pci/pci-iommu.txt (linux-5.10)
There is an example (Example(1)).

	/ {
	    #address-cells = <1>;
	    #size-cells = <1>;
	    iommu: iommu at a {
	        reg = <0xa 0x1>;
	        compatible = "vendor,some-iommu";
	        #iommu-cells = <1>;
	    pci: pci at f {
	        reg = <0xf 0x1>;
	        compatible = "vendor,pcie-root-complex"; 
	        device_type = "pci";

	         * The sideband data provided to the IOMMU is the RID,
	         * identity-mapped.
	        iommu-map = <0x0 &iommu 0x0 0x10000>;

The "iommu-map" property for pcie is expanding the "iommus" property of
general bus master.
(That is, mapping between the master and {iommu, master ID} is expanded to 
mapping between the range of devices represented by RID (16 bit
bus,device,function pair) and {iommu, requester ID ranges})
This is because there can be many masters on the PCIe bus. Yes, I can
understand that. 
My question is, In arm's SMMUv3 case, how is this rid used in setting up the
stream table (or context table)?
Is rid equal to StreamID in SMMUv3?
Any comment or explanation will be really appreciated.
Thank you!

Chan Kim

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Kernelnewbies mailing list