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

 


Help: OASIS Mailing Lists Help | MarkMail Help

virtio-dev message

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


Subject: Re: [virtio-dev] [PATCH] context: Document VIRTIO_F_IOMMU_PLATFORM reserved feature bit (33)


On Tue, Oct 11, 2016 at 01:51:32PM +0100, Will Deacon wrote:
> On most virtio systems, physical addresses are provided from the driver
> to the device and subsequently used to access memory directly. However,
> some systems feature an IOMMU that complicates things slightly:
> 
>   - The IOMMU might require configuration for DMA to work at all. Once
>     configured, the driver must pass bus addresses to the device, which
>     are then translated by the IOMMU into physical addresses in memory.
> 
>   - The IOMMU might be bypassed by virtio DMA. In this case, physical
>     addresses must still be provided to the device by the driver, even
>     though an IOMMU appears to be present.
> 
> This has been solved by the addition of a new reserved feature bit,
> VIRTIO_F_IOMMU_PLATFORM, to describe the two cases above. Legacy systems
> will not negotiate the feature, and therefore continue to operate
> directly on physical addresses.
> 
> Cc: Michael S. Tsirkin <mst@redhat.com>
> Signed-off-by: Will Deacon <will.deacon@arm.com>
> ---
>  content.tex | 22 +++++++++++++++++++---
>  1 file changed, 19 insertions(+), 3 deletions(-)
> 
> diff --git a/content.tex b/content.tex
> index 222b78e7f5d8..1240d0005d77 100644
> --- a/content.tex
> +++ b/content.tex
> @@ -95,10 +95,10 @@ Feature bits are allocated as follows:
>  \begin{description}
>  \item[0 to 23] Feature bits for the specific device type
>  
> -\item[24 to 32] Feature bits reserved for extensions to the queue and
> +\item[24 to 33] Feature bits reserved for extensions to the queue and
>    feature negotiation mechanisms
>  
> -\item[33 and above] Feature bits reserved for future extensions.
> +\item[34 and above] Feature bits reserved for future extensions.
>  \end{description}
>  
>  \begin{note}
> @@ -5813,7 +5813,7 @@ descriptor for the \field{sense_len}, \field{residual},
>  
>  \chapter{Reserved Feature Bits}\label{sec:Reserved Feature Bits}
>  
> -Currently there are three device-independent feature bits defined:
> +Currently there are four device-independent feature bits defined:

I would change it to:

Currently these device-independent feature bits are defined:

That way there's no risk of forgetting to update it again in the future.

>  
>  \begin{description}
>    \item[VIRTIO_F_RING_INDIRECT_DESC (28)] Negotiating this feature indicates
> @@ -5825,6 +5825,12 @@ Currently there are three device-independent feature bits defined:
>  
>    \item[VIRTIO_F_VERSION_1(32)] This indicates compliance with this
>      specification, giving a simple way to detect legacy devices or drivers.
> +
> +  \item[VIRTIO_F_IOMMU_PLATFORM(33)] This feature indicates that the device is
> +  behind an IOMMU that translates bus addresses from the device into physical
> +  addresses in memory.  If this feature bit is set to 0, then the device emits
> +  physical addresses which are not translated further, even though an IOMMU
> +  may be present.
>  \end{description}
>  
>  \drivernormative{\section}{Reserved Feature Bits}{Reserved Feature Bits}
> @@ -5832,11 +5838,21 @@ Currently there are three device-independent feature bits defined:
>  A driver MUST accept VIRTIO_F_VERSION_1 if it is offered.  A driver
>  MAY fail to operate further if VIRTIO_F_VERSION_1 is not offered.
>  
> +A driver MUST accept VIRTIO_F_IOMMU_PLATFORM if it is offered, and it MUST then
> +configure the IOMMU to translate bus addresses passed to the device into
> +physical addresses in memory.  If VIRTIO_F_IOMMU_PLATFORM is not offered, then
> +a driver MUST pass only physical addresses to the device.
> +
>  \devicenormative{\section}{Reserved Feature Bits}{Reserved Feature Bits}
>  
>  A device MUST offer VIRTIO_F_VERSION_1.  A device MAY fail to operate further
>  if VIRTIO_F_VERSION_1 is not accepted.
>  
> +A device SHOULD offer VIRTIO_F_IOMMU_PLATFORM if it is behind an IOMMU that
> +translates bus addresses from the device into physical addresses in memory.
> +A device MAY fail to operate further if VIRTIO_F_IOMMU_PLATFORM is not
> +accepted.
> +
>  \section{Legacy Interface: Reserved Feature Bits}\label{sec:Reserved Feature Bits / Legacy Interface: Reserved Feature Bits}

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

Attachment: signature.asc
Description: PGP signature



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