linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
To: linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org,
	linux-acpi@vger.kernel.org, devicetree@vger.kernel.org,
	iommu@lists.linux-foundation.org, kvm@vger.kernel.org
Cc: joro@8bytes.org, robh+dt@kernel.org, mark.rutland@arm.com,
	catalin.marinas@arm.com, will.deacon@arm.com,
	lorenzo.pieralisi@arm.com, hanjun.guo@linaro.org,
	sudeep.holla@arm.com, rjw@rjwysocki.net, lenb@kernel.org,
	robin.murphy@arm.com, bhelgaas@google.com,
	alex.williamson@redhat.com, tn@semihalf.com, liubo95@huawei.com,
	thunder.leizhen@huawei.com, xieyisheng1@huawei.com,
	xuzaibo@huawei.com, ilias.apalodimas@linaro.org,
	jonathan.cameron@huawei.com, shunyong.yang@hxt-semitech.com,
	nwatters@codeaurora.org, okaya@codeaurora.org,
	jcrouse@codeaurora.org, rfranz@cavium.com, dwmw2@infradead.org,
	jacob.jun.pan@linux.intel.com, yi.l.liu@intel.com,
	ashok.raj@intel.com, robdclark@gmail.com,
	christian.koenig@amd.com, bharatku@xilinx.com
Subject: [PATCH 11/37] dt-bindings: document stall and PASID properties for IOMMU masters
Date: Mon, 12 Feb 2018 18:33:26 +0000	[thread overview]
Message-ID: <20180212183352.22730-12-jean-philippe.brucker@arm.com> (raw)
In-Reply-To: <20180212183352.22730-1-jean-philippe.brucker@arm.com>

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@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.
+
 
 Notes:
 ======
-- 
2.15.1


  parent reply	other threads:[~2018-02-12 18:33 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-12 18:33 [PATCH 00/37] Shared Virtual Addressing for the IOMMU Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 01/37] iommu: Introduce Shared Virtual Addressing API Jean-Philippe Brucker
2018-02-13  7:31   ` Tian, Kevin
2018-02-13 12:40     ` Jean-Philippe Brucker
2018-02-13 23:43       ` Tian, Kevin
2018-02-15 12:42         ` Jean-Philippe Brucker
2018-02-27  6:21           ` Tian, Kevin
2018-02-28 16:20             ` Jean-Philippe Brucker
2018-02-15  9:59   ` Joerg Roedel
2018-02-15 12:43     ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 02/37] iommu/sva: Bind process address spaces to devices Jean-Philippe Brucker
2018-02-13  7:54   ` Tian, Kevin
2018-02-13 12:57     ` Jean-Philippe Brucker
2018-02-13 23:34       ` Tian, Kevin
2018-02-15 12:40         ` Jean-Philippe Brucker
2018-03-01  3:03           ` Liu, Yi L
2018-03-02 16:03             ` Jean-Philippe Brucker
2018-02-15 10:21       ` joro
2018-02-15 12:29         ` Christian König
2018-02-15 12:46         ` Jean-Philippe Brucker
2018-02-28 20:34   ` Sinan Kaya
2018-03-02 12:32     ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 03/37] iommu/sva: Manage process address spaces Jean-Philippe Brucker
2018-03-01  6:52   ` Lu Baolu
2018-03-01  8:04     ` Christian König
2018-03-02 16:42       ` Jean-Philippe Brucker
2018-03-02 16:19     ` Jean-Philippe Brucker
2018-03-05 15:28   ` Sinan Kaya
2018-03-06 10:37     ` Jean-Philippe Brucker
2018-04-10 18:53   ` Sinan Kaya
2018-04-13 10:59     ` Jean-Philippe Brucker
2018-04-24  1:32   ` Sinan Kaya
2018-04-24  9:33     ` Jean-Philippe Brucker
2018-04-24 17:17       ` Sinan Kaya
2018-02-12 18:33 ` [PATCH 04/37] iommu/sva: Add a mm_exit callback for device drivers Jean-Philippe Brucker
2018-02-13  8:11   ` Tian, Kevin
2018-02-13 12:57     ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 05/37] iommu/sva: Track mm changes with an MMU notifier Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 06/37] iommu/sva: Search mm by PASID Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 07/37] iommu: Add a page fault handler Jean-Philippe Brucker
2018-02-14  7:18   ` Jacob Pan
2018-02-15 13:49     ` Jean-Philippe Brucker
2018-03-05 21:44   ` Sinan Kaya
2018-03-06 10:24     ` Jean-Philippe Brucker
2018-03-05 21:53   ` Sinan Kaya
2018-03-06 10:46     ` Jean-Philippe Brucker
2018-03-06 12:52       ` okaya
2018-03-08 15:40   ` Jonathan Cameron
2018-03-14 13:08     ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 08/37] iommu/fault: Handle mm faults Jean-Philippe Brucker
2018-02-14 18:46   ` Jacob Pan
2018-02-15 13:51     ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 09/37] iommu/fault: Let handler return a fault response Jean-Philippe Brucker
2018-02-20 23:19   ` Jacob Pan
2018-02-21 10:28     ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 10/37] iommu/fault: Allow blocking fault handlers Jean-Philippe Brucker
2018-02-12 18:33 ` Jean-Philippe Brucker [this message]
2018-02-19  2:51   ` [PATCH 11/37] dt-bindings: document stall and PASID properties for IOMMU masters Rob Herring
2018-02-20 11:28     ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 12/37] iommu/of: Add stall and pasid properties to iommu_fwspec Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 13/37] arm64: mm: Pin down ASIDs for sharing mm with devices Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 14/37] iommu/arm-smmu-v3: Link domains and devices Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 15/37] iommu/io-pgtable-arm: Factor out ARM LPAE register defines Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 16/37] iommu: Add generic PASID table library Jean-Philippe Brucker
2018-02-27 18:51   ` Jacob Pan
2018-02-28 16:22     ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 17/37] iommu/arm-smmu-v3: Move context descriptor code Jean-Philippe Brucker
2018-03-09 11:44   ` Jonathan Cameron
2018-03-14 13:08     ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 18/37] iommu/arm-smmu-v3: Add support for Substream IDs Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 19/37] iommu/arm-smmu-v3: Add second level of context descriptor table Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 20/37] iommu/arm-smmu-v3: Share process page tables Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 21/37] iommu/arm-smmu-v3: Seize private ASID Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 22/37] iommu/arm-smmu-v3: Add support for VHE Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 23/37] iommu/arm-smmu-v3: Enable broadcast TLB maintenance Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 24/37] iommu/arm-smmu-v3: Add SVA feature checking Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 25/37] iommu/arm-smmu-v3: Implement mm operations Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 26/37] iommu/arm-smmu-v3: Add support for Hardware Translation Table Update Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 27/37] iommu/arm-smmu-v3: Register fault workqueue Jean-Philippe Brucker
2018-03-08 17:44   ` Jonathan Cameron
2018-03-14 13:08     ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 28/37] iommu/arm-smmu-v3: Maintain a SID->device structure Jean-Philippe Brucker
2018-03-08 17:34   ` Jonathan Cameron
2018-03-14 13:09     ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 29/37] iommu/arm-smmu-v3: Add stall support for platform devices Jean-Philippe Brucker
2018-02-13  1:46   ` Xu Zaibo
2018-02-13 12:58     ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 30/37] ACPI/IORT: Check ATS capability in root complex nodes Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 31/37] iommu/arm-smmu-v3: Add support for PCI ATS Jean-Philippe Brucker
2018-03-08 16:17   ` Jonathan Cameron
2018-03-14 13:09     ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 32/37] iommu/arm-smmu-v3: Hook up ATC invalidation to mm ops Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 33/37] iommu/arm-smmu-v3: Disable tagged pointers Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 34/37] PCI: Make "PRG Response PASID Required" handling common Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 35/37] iommu/arm-smmu-v3: Add support for PRI Jean-Philippe Brucker
2018-03-05 12:29   ` Dongdong Liu
2018-03-05 13:09     ` Jean-Philippe Brucker
2018-03-08 16:24   ` Jonathan Cameron
2018-03-14 13:10     ` Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 36/37] iommu/arm-smmu-v3: Add support for PCI PASID Jean-Philippe Brucker
2018-02-12 18:33 ` [PATCH 37/37] vfio: Add support for Shared Virtual Addressing Jean-Philippe Brucker
2018-02-16 19:33   ` Alex Williamson
2018-02-20 11:26     ` Jean-Philippe Brucker
2018-02-28  1:26   ` Sinan Kaya
2018-02-28 16:25     ` Jean-Philippe Brucker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180212183352.22730-12-jean-philippe.brucker@arm.com \
    --to=jean-philippe.brucker@arm.com \
    --cc=alex.williamson@redhat.com \
    --cc=ashok.raj@intel.com \
    --cc=bharatku@xilinx.com \
    --cc=bhelgaas@google.com \
    --cc=catalin.marinas@arm.com \
    --cc=christian.koenig@amd.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dwmw2@infradead.org \
    --cc=hanjun.guo@linaro.org \
    --cc=ilias.apalodimas@linaro.org \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jacob.jun.pan@linux.intel.com \
    --cc=jcrouse@codeaurora.org \
    --cc=jonathan.cameron@huawei.com \
    --cc=joro@8bytes.org \
    --cc=kvm@vger.kernel.org \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=liubo95@huawei.com \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=nwatters@codeaurora.org \
    --cc=okaya@codeaurora.org \
    --cc=rfranz@cavium.com \
    --cc=rjw@rjwysocki.net \
    --cc=robdclark@gmail.com \
    --cc=robh+dt@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=shunyong.yang@hxt-semitech.com \
    --cc=sudeep.holla@arm.com \
    --cc=thunder.leizhen@huawei.com \
    --cc=tn@semihalf.com \
    --cc=will.deacon@arm.com \
    --cc=xieyisheng1@huawei.com \
    --cc=xuzaibo@huawei.com \
    --cc=yi.l.liu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).