On Fri, Oct 12, 2018 at 03:59:11PM +0100, Jean-Philippe Brucker wrote:
> 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.
> 
> Signed-off-by: Jean-Philippe Brucker <jean-philippe.bruc...@arm.com>
> ---
>  .../devicetree/bindings/virtio/mmio.txt       | 30 +++++++++++++++++++
>  1 file changed, 30 insertions(+)

One nit, otherwise,

Reviewed-by: Rob Herring <r...@kernel.org>

> 
> diff --git a/Documentation/devicetree/bindings/virtio/mmio.txt 
> b/Documentation/devicetree/bindings/virtio/mmio.txt
> index 5069c1b8e193..748595473b36 100644
> --- a/Documentation/devicetree/bindings/virtio/mmio.txt
> +++ b/Documentation/devicetree/bindings/virtio/mmio.txt
> @@ -8,10 +8,40 @@ Required properties:
>  - 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: virtio_iommu@3100 {

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
> -- 
> 2.19.1
> 
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to