OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

virtio-comment message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: [PATCH v2 8/9] virtio-iommu: Add VIRTIO_IOMMU_RESV_MEM_T_IDENTITY


To support MSIs on platforms that translate MSI addresses (Arm, possibly
RISC-V), when using page tables, the driver needs to create IOVA-GPA
mappings of addresses reserved by the platform.

Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
---
 device-types/iommu/description.tex | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/device-types/iommu/description.tex b/device-types/iommu/description.tex
index 38f94f8..dcb51d3 100644
--- a/device-types/iommu/description.tex
+++ b/device-types/iommu/description.tex
@@ -1031,7 +1031,10 @@ \subsubsection{PROBE properties}\label{sec:Device Types / IOMMU Device / Device
   u8    reserved[3];
   le64  start;
   le64  end;
+  le32  flags;
 };
+
+#define VIRTIO_IOMMU_RESV_MEM_F_MMIO      (1 << 0)
 \end{lstlisting}
 
 Fields \field{start} and \field{end} describe the range of reserved virtual
@@ -1051,6 +1054,27 @@ \subsubsection{PROBE properties}\label{sec:Device Types / IOMMU Device / Device
     In addition it provides information about MSI doorbells. If the
     endpoint doesn't have a VIRTIO_IOMMU_RESV_MEM_T_MSI property, then the
     driver creates an MMIO mapping to the doorbell of the MSI controller.
+
+  \item[VIRTIO_IOMMU_RESV_MEM_T_IDENTITY (2)]
+    When using page tables, the driver creates an identity
+    mapping for this region, in order to get full functionality
+    of the endpoint. When not using page tables, this behaves
+    like a VIRTIO_IOMMU_RESV_MEM_T_RESERVED region.
+
+    The intent is to create MSI doorbell mappings when the driver
+    uses VIRTIO_IOMMU_T_ATTACH_TABLE, the platform manages MSIs
+    and the hardware IOMMU translates MSI addresses using page
+    tables. In that case the driver fully controls the mappings,
+    so the platform requests through this property that the
+    driver creates itself the mapping to the MSI doorbell. When
+    not using page tables, the platform can create the mappings
+    itself and this is simply a reserved region.
+
+    Flag VIRTIO_IOMMU_RESV_MEM_F_MMIO tells the driver to create
+    an MMIO mapping.
+    \todo{Does each acceleration need to define what MMIO means?
+    Arm has a lot of MMIO flavors. Do we need a common
+    non-cacheable definition as well?}
 \end{description}
 
 \drivernormative{\subparagraph}{Property RESV_MEM}{Device Types / IOMMU Device / Device operations / PROBE properties / RESVMEM}
@@ -1063,6 +1087,9 @@ \subsubsection{PROBE properties}\label{sec:Device Types / IOMMU Device / Device
 The driver SHOULD treat any \field{subtype} it doesn't recognize as if it
 was VIRTIO_IOMMU_RESV_MEM_T_RESERVED.
 
+The driver SHOULD create an identity mapping described by
+VIRTIO_IOMMU_RESV_MEM_T_IDENTITY, when using page tables.
+
 \devicenormative{\subparagraph}{Property RESV_MEM}{Device Types / IOMMU Device / Device operations / PROBE properties / RESVMEM}
 
 The device SHOULD set \field{reserved} to zero.
@@ -1073,7 +1100,8 @@ \subsubsection{PROBE properties}\label{sec:Device Types / IOMMU Device / Device
 The device SHOULD NOT present multiple RESV_MEM properties that overlap
 each other for the same endpoint.
 
-The device SHOULD reject a MAP request that overlaps a RESV_MEM region.
+The device SHOULD reject a MAP request that overlaps a RESV_MEM
+region.
 
 The device SHOULD NOT allow accesses from the endpoint to RESV_MEM regions
 to affect any other component than the endpoint and the driver.
-- 
2.42.0



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]