hc
2024-05-13 9d77db3c730780c8ef5ccd4b66403ff5675cfe4e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
* virtio memory mapped device
 
See https://ozlabs.org/~rusty/virtio-spec/ for more details.
 
Required properties:
 
- compatible:    "virtio,mmio" compatibility string
- reg:        control registers base address and size including configuration space
- interrupts:    interrupt generated by the device
 
Required properties for virtio-iommu:
 
- #iommu-cells:    When the node corresponds to a virtio-iommu device, it is
       linked to DMA masters using the "iommus" or "iommu-map"
       properties [1][2]. #iommu-cells specifies the size of the
       "iommus" property. For virtio-iommu #iommu-cells must be
       1, each cell describing a single endpoint ID.
 
Optional properties:
 
- iommus:    If the device accesses memory through an IOMMU, it should
       have an "iommus" property [1]. Since virtio-iommu itself
       does not access memory through an IOMMU, the "virtio,mmio"
       node cannot have both an "#iommu-cells" and an "iommus"
       property.
 
Example:
 
   virtio_block@3000 {
       compatible = "virtio,mmio";
       reg = <0x3000 0x100>;
       interrupts = <41>;
 
       /* Device has endpoint ID 23 */
       iommus = <&viommu 23>
   }
 
   viommu: iommu@3100 {
       compatible = "virtio,mmio";
       reg = <0x3100 0x100>;
       interrupts = <42>;
 
       #iommu-cells = <1>
   }
 
[1] Documentation/devicetree/bindings/iommu/iommu.txt
[2] Documentation/devicetree/bindings/pci/pci-iommu.txt