mirror of
https://github.com/torvalds/linux.git
synced 2024-12-23 19:31:53 +00:00
8447d84e35
The nature of a virtio-mmio node is discovered by the virtio driver at probe time. However the DMA relation between devices must be described statically. When a virtio-mmio node is a virtio-iommu device, it needs an "#iommu-cells" property as specified by bindings/iommu/iommu.txt. Otherwise, the virtio-mmio device may perform DMA through an IOMMU, which requires an "iommus" property. Describe these requirements in the device-tree bindings documentation. Reviewed-by: Rob Herring <robh@kernel.org> Reviewed-by: Eric Auger <eric.auger@redhat.com> Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
48 lines
1.3 KiB
Plaintext
48 lines
1.3 KiB
Plaintext
* virtio memory mapped device
|
|
|
|
See http://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
|