[PATCH 11/37] dt-bindings: document stall and PASID properties for IOMMU masters
Rob Herring
robh at kernel.org
Sun Feb 18 18:51:07 PST 2018
On Mon, Feb 12, 2018 at 06:33:26PM +0000, Jean-Philippe Brucker wrote:
> On ARM systems, some platform devices behind an IOMMU may support stall
> and PASID features. Stall is the ability to recover from page faults and
> PASID offers multiple process address spaces to the device. Together they
> allow to do paging with a device. Let the firmware tell us when a device
> supports stall and PASID.
>
> Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker at arm.com>
> ---
> Documentation/devicetree/bindings/iommu/iommu.txt | 24 +++++++++++++++++++++++
> 1 file changed, 24 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/iommu/iommu.txt b/Documentation/devicetree/bindings/iommu/iommu.txt
> index 5a8b4624defc..8066b3852110 100644
> --- a/Documentation/devicetree/bindings/iommu/iommu.txt
> +++ b/Documentation/devicetree/bindings/iommu/iommu.txt
> @@ -86,6 +86,30 @@ have a means to turn off translation. But it is invalid in such cases to
> disable the IOMMU's device tree node in the first place because it would
> prevent any driver from properly setting up the translations.
>
> +Optional properties:
> +--------------------
> +- dma-can-stall: When present, the master can wait for a transaction to
> + complete for an indefinite amount of time. Upon translation fault some
> + IOMMUs, instead of aborting the translation immediately, may first
> + notify the driver and keep the transaction in flight. This allows the OS
> + to inspect the fault and, for example, make physical pages resident
> + before updating the mappings and completing the transaction. Such IOMMU
> + accepts a limited number of simultaneous stalled transactions before
> + having to either put back-pressure on the master, or abort new faulting
> + transactions.
> +
> + Firmware has to opt-in stalling, because most buses and masters don't
> + support it. In particular it isn't compatible with PCI, where
> + transactions have to complete before a time limit. More generally it
> + won't work in systems and masters that haven't been designed for
> + stalling. For example the OS, in order to handle a stalled transaction,
> + may attempt to retrieve pages from secondary storage in a stalled
> + domain, leading to a deadlock.
> +
> +- pasid-bits: Some masters support multiple address spaces for DMA, by
> + tagging DMA transactions with an address space identifier. By default,
> + this is 0, which means that the device only has one address space.
So 3 would mean 8 address spaces?
Maybe pasid-num-bits would be a bit clearer. Either way,
Reviewed-by: Rob Herring <robh at kernel.org>
Rob
More information about the linux-arm-kernel
mailing list