2011-10-24 21:07:03 +08:00
|
|
|
* virtio memory mapped device
|
|
|
|
|
2020-07-09 14:47:55 +08:00
|
|
|
See https://ozlabs.org/~rusty/virtio-spec/ for more details.
|
2011-10-24 21:07:03 +08:00
|
|
|
|
|
|
|
Required properties:
|
|
|
|
|
|
|
|
- compatible: "virtio,mmio" compatibility string
|
|
|
|
- reg: control registers base address and size including configuration space
|
|
|
|
- interrupts: interrupt generated by the device
|
|
|
|
|
2019-01-15 20:19:53 +08:00
|
|
|
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.
|
|
|
|
|
2011-10-24 21:07:03 +08:00
|
|
|
Example:
|
|
|
|
|
|
|
|
virtio_block@3000 {
|
|
|
|
compatible = "virtio,mmio";
|
|
|
|
reg = <0x3000 0x100>;
|
|
|
|
interrupts = <41>;
|
2019-01-15 20:19:53 +08:00
|
|
|
|
|
|
|
/* Device has endpoint ID 23 */
|
|
|
|
iommus = <&viommu 23>
|
2011-10-24 21:07:03 +08:00
|
|
|
}
|
2019-01-15 20:19:53 +08:00
|
|
|
|
|
|
|
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
|