[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: [PATCH v2 4/9] virtio-iommu: Add PASID field to DETACH
Some page table extensions (Intel scalable mode and some AMD implementations) require populating host-managed PASID tables with ATTACH_TABLE and DETACH requests. To mirror the PASID parameter in the ATTACH_TABLE request, add a PASID parameter to DETACH. This could later be used if we generalize PASID support to the ATTACH request, but there is not plan for that at the moment. Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> --- device-types/iommu/description.tex | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/device-types/iommu/description.tex b/device-types/iommu/description.tex index 58edaad..c057cdf 100644 --- a/device-types/iommu/description.tex +++ b/device-types/iommu/description.tex @@ -486,27 +486,36 @@ \subsubsection{DETACH request} struct virtio_iommu_req_head head; le32 domain; le32 endpoint; - u8 reserved[8]; + le32 flags; + le32 pasid; struct virtio_iommu_req_tail tail; }; + +#define VIRTIO_IOMMU_DETACH_F_PASID (1 << 0) \end{lstlisting} -Detach an endpoint from a domain. When this request completes, -the endpoint cannot access any mapping from that domain anymore. -However the endpoint may then be in bypass mode and access the -guest-physical address space. +Detach an address space from an endpoint. When this request +completes, the endpoint cannot access any mapping from the +address space anymore. However the endpoint may then be in bypass +mode and access the guest-physical address space. After all endpoints have been successfully detached from a domain, it ceases to exist and its ID can be reused by the driver for another domain. +When flag VIRTIO_IOMMU_DETACH_F_PASID is set, field \field{pasid} +contains the identifier of the address space to detach from the +device. This is only supported with some table formats, attached +with a VIRTIO_IOMMU_T_ATTACH_TABLE request. When flag +VIRTIO_IOMMU_DETACH_F_PASID is not set, detach all address spaces +from the device. + \drivernormative{\paragraph}{DETACH request}{Device Types / IOMMU Device / Device operations / DETACH request} -The driver SHOULD set \field{reserved} to zero. +The driver SHOULD set field \field{pasid} and flag +VIRTIO_IOMMU_DETACH_F_PASID to zero if PASID is not supported. \devicenormative{\paragraph}{DETACH request}{Device Types / IOMMU Device / Device operations / DETACH request} -The device MUST ignore \field{reserved}. - If the endpoint identified by \field{endpoint} doesn't exist, then the device MUST reject the request and set \field{status} to VIRTIO_IOMMU_S_NOENT. @@ -516,8 +525,9 @@ \subsubsection{DETACH request} then the device MAY set the request \field{status} to VIRTIO_IOMMU_S_INVAL. -The device MUST ensure that after being detached from a domain, the -endpoint cannot access any mapping from that domain. +The device MUST ensure that after being detached from an address +space, the endpoint cannot access any mapping from that address +space. \subsubsection{MAP request}\label{sec:Device Types / IOMMU Device / Device operations / MAP request} -- 2.42.0
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]