Documentation/devicetree/bindings/virtio/pci-iommu.yaml

Source file repositories/reference/linux-study-clean/Documentation/devicetree/bindings/virtio/pci-iommu.yaml

File Facts

System
Linux kernel
Corpus path
Documentation/devicetree/bindings/virtio/pci-iommu.yaml
Extension
.yaml
Size
2915 bytes
Lines
100
Domain
Support Tooling And Documentation
Bucket
Documentation
Inferred role
Support Tooling And Documentation: configuration, schema, or hardware description
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/virtio/pci-iommu.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: virtio-iommu device using the virtio-pci transport

maintainers:
  - Jean-Philippe Brucker <jean-philippe@linaro.org>

description: |
  When virtio-iommu uses the PCI transport, its programming interface is
  discovered dynamically by the PCI probing infrastructure. However the
  device tree statically describes the relation between IOMMU and DMA
  masters. Therefore, the PCI root complex that hosts the virtio-iommu
  contains a child node representing the IOMMU device explicitly.

  DMA from the IOMMU device isn't managed by another IOMMU. Therefore the
  virtio-iommu node doesn't have an "iommus" property, and is omitted from
  the iommu-map property of the root complex.

allOf:
  - $ref: /schemas/pci/pci-device.yaml#

properties:
  # If compatible is present, it should contain the vendor and device ID
  # according to the PCI Bus Binding specification. Since PCI provides
  # built-in identification methods, compatible is not actually required.
  compatible:
    oneOf:
      - items:
          - const: virtio,pci-iommu
          - const: pci1af4,1057
      - items:
          - const: pci1af4,1057

  reg:
    maxItems: 1

  '#iommu-cells':
    const: 1

required:
  - compatible
  - reg
  - '#iommu-cells'

additionalProperties: false

examples:
  - |
    bus {
        #address-cells = <2>;
        #size-cells = <2>;

        pcie@40000000 {
            device_type = "pci";
            #address-cells = <3>;
            #size-cells = <2>;
            reg = <0x0 0x40000000  0x0 0x1000000>;
            ranges = <0x02000000 0x0 0x41000000  0x0 0x41000000  0x0 0x0f000000>;

            /*
             * The IOMMU manages all functions in this PCI domain except
             * itself. Omit BDF 00:01.0.
             */
            iommu-map = <0x0 &iommu0 0x0 0x8
                         0x9 &iommu0 0x9 0xfff7>;

Annotation

Implementation Notes