[dpdk-dev,v3] doc: add driver limitation for vhost dequeue zero copy

Message ID 1520590048-151284-1-git-send-email-junjie.j.chen@intel.com (mailing list archive)
State Superseded, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

junjie.j.chen@intel.com March 9, 2018, 10:07 a.m. UTC
  In vhost-switch example, when binding nic to vfio-pci with iommu enabled,
dequeue zero copy cannot work in VM2NIC mode due to no iommu dma mapping
is setup for guest memory currently.

Signed-off-by: Junjie Chen <junjie.j.chen@intel.com>
---
Changes in V3:
- update limitation to iommu
Changes in V2:
- add doc in vhost lib

 doc/guides/prog_guide/vhost_lib.rst | 5 +++++
 doc/guides/sample_app_ug/vhost.rst  | 5 ++++-
 2 files changed, 9 insertions(+), 1 deletion(-)
  

Comments

Jianfeng Tan March 12, 2018, 3:15 a.m. UTC | #1
On 3/9/2018 6:07 PM, Junjie Chen wrote:
> In vhost-switch example, when binding nic to vfio-pci with iommu enabled,
> dequeue zero copy cannot work in VM2NIC mode due to no iommu dma mapping
> is setup for guest memory currently.
>
> Signed-off-by: Junjie Chen <junjie.j.chen@intel.com>
> ---
> Changes in V3:
> - update limitation to iommu
> Changes in V2:
> - add doc in vhost lib
>
>   doc/guides/prog_guide/vhost_lib.rst | 5 +++++
>   doc/guides/sample_app_ug/vhost.rst  | 5 ++++-
>   2 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/doc/guides/prog_guide/vhost_lib.rst b/doc/guides/prog_guide/vhost_lib.rst
> index 18227b6..06d214f 100644
> --- a/doc/guides/prog_guide/vhost_lib.rst
> +++ b/doc/guides/prog_guide/vhost_lib.rst
> @@ -83,6 +83,11 @@ The following is an overview of some key Vhost API functions:
>         of those segments, thus the fewer the segments, the quicker we will get
>         the mapping. NOTE: we may speed it by using tree searching in future.
>   
> +    * zero copy does not work when using driver with iommu mode currently, this

Considering FreeBSD driver nic_uio does not support iommu, we can make 
"driver" more explicitly. For example,

"driver with iommu mode" -> "vfio-pci with iommu mode"

> +      is because we don't setup iommu dma mapping for guest memory.

> For example, when you bind device to vfio-pci driver, you need to set driver to work in noiommu mode.

Reword the above sentence a little bit:
"If vfio-pci is a must in your case, insert vfio-pci kernel module in 
noiommu mode."

> +
>     - ``RTE_VHOST_USER_IOMMU_SUPPORT``
>   
>       IOMMU support will be enabled when this flag is set. It is disabled by
> diff --git a/doc/guides/sample_app_ug/vhost.rst b/doc/guides/sample_app_ug/vhost.rst
> index a4bdc6a..f0bb169 100644
> --- a/doc/guides/sample_app_ug/vhost.rst
> +++ b/doc/guides/sample_app_ug/vhost.rst
> @@ -147,7 +147,10 @@ retries on an RX burst, it takes effect only when rx retry is enabled. The
>   default value is 15.
>   
>   **--dequeue-zero-copy**
> -Dequeue zero copy will be enabled when this option is given.
> +Dequeue zero copy will be enabled when this option is given. it is worth to
> +note that if NIC is binded to driver with iommu enabled, dequeue zero copy
> +cannot work at VM2NIC mode (vm2vm=0) due to currently we don't setup iommu
> +dma mapping for guest memory.
>   
>   **--vlan-strip 0|1**
>   VLAN strip option is removed, because different NICs have different behaviors
  
junjie.j.chen@intel.com March 13, 2018, 9:19 a.m. UTC | #2
Hi Jianfeng.

> -----Original Message-----
> From: Tan, Jianfeng
> Sent: Monday, March 12, 2018 11:15 AM
> To: Chen, Junjie J <junjie.j.chen@intel.com>; yliu@fridaylinux.org;
> maxime.coquein@redhat.com
> Cc: dev@dpdk.org
> Subject: Re: [PATCH v3] doc: add driver limitation for vhost dequeue zero copy
> 
> 
> 
> On 3/9/2018 6:07 PM, Junjie Chen wrote:
> > In vhost-switch example, when binding nic to vfio-pci with iommu
> > enabled, dequeue zero copy cannot work in VM2NIC mode due to no iommu
> > dma mapping is setup for guest memory currently.
> >
> > Signed-off-by: Junjie Chen <junjie.j.chen@intel.com>
> > ---
> > Changes in V3:
> > - update limitation to iommu
> > Changes in V2:
> > - add doc in vhost lib
> >
> >   doc/guides/prog_guide/vhost_lib.rst | 5 +++++
> >   doc/guides/sample_app_ug/vhost.rst  | 5 ++++-
> >   2 files changed, 9 insertions(+), 1 deletion(-)
> >
> > diff --git a/doc/guides/prog_guide/vhost_lib.rst
> > b/doc/guides/prog_guide/vhost_lib.rst
> > index 18227b6..06d214f 100644
> > --- a/doc/guides/prog_guide/vhost_lib.rst
> > +++ b/doc/guides/prog_guide/vhost_lib.rst
> > @@ -83,6 +83,11 @@ The following is an overview of some key Vhost API
> functions:
> >         of those segments, thus the fewer the segments, the quicker we will
> get
> >         the mapping. NOTE: we may speed it by using tree searching in
> future.
> >
> > +    * zero copy does not work when using driver with iommu mode
> > + currently, this
> 
> Considering FreeBSD driver nic_uio does not support iommu, we can make
> "driver" more explicitly. For example,
> 
> "driver with iommu mode" -> "vfio-pci with iommu mode"
Will update.
> 
> > +      is because we don't setup iommu dma mapping for guest memory.
> 
> > For example, when you bind device to vfio-pci driver, you need to set driver to
> work in noiommu mode.
> 
> Reword the above sentence a little bit:
> "If vfio-pci is a must in your case, insert vfio-pci kernel module in noiommu
> mode."
Will update, thanks.

> > +
> >     - ``RTE_VHOST_USER_IOMMU_SUPPORT``
> >
> >       IOMMU support will be enabled when this flag is set. It is
> > disabled by diff --git a/doc/guides/sample_app_ug/vhost.rst
> > b/doc/guides/sample_app_ug/vhost.rst
> > index a4bdc6a..f0bb169 100644
> > --- a/doc/guides/sample_app_ug/vhost.rst
> > +++ b/doc/guides/sample_app_ug/vhost.rst
> > @@ -147,7 +147,10 @@ retries on an RX burst, it takes effect only when rx
> retry is enabled. The
> >   default value is 15.
> >
> >   **--dequeue-zero-copy**
> > -Dequeue zero copy will be enabled when this option is given.
> > +Dequeue zero copy will be enabled when this option is given. it is
> > +worth to note that if NIC is binded to driver with iommu enabled,
> > +dequeue zero copy cannot work at VM2NIC mode (vm2vm=0) due to
> > +currently we don't setup iommu dma mapping for guest memory.
> >
> >   **--vlan-strip 0|1**
> >   VLAN strip option is removed, because different NICs have different
> > behaviors
  

Patch

diff --git a/doc/guides/prog_guide/vhost_lib.rst b/doc/guides/prog_guide/vhost_lib.rst
index 18227b6..06d214f 100644
--- a/doc/guides/prog_guide/vhost_lib.rst
+++ b/doc/guides/prog_guide/vhost_lib.rst
@@ -83,6 +83,11 @@  The following is an overview of some key Vhost API functions:
       of those segments, thus the fewer the segments, the quicker we will get
       the mapping. NOTE: we may speed it by using tree searching in future.
 
+    * zero copy does not work when using driver with iommu mode currently, this
+      is because we don't setup iommu dma mapping for guest memory. For example,
+      when you bind device to vfio-pci driver, you need to set driver to work
+      in noiommu mode.
+
   - ``RTE_VHOST_USER_IOMMU_SUPPORT``
 
     IOMMU support will be enabled when this flag is set. It is disabled by
diff --git a/doc/guides/sample_app_ug/vhost.rst b/doc/guides/sample_app_ug/vhost.rst
index a4bdc6a..f0bb169 100644
--- a/doc/guides/sample_app_ug/vhost.rst
+++ b/doc/guides/sample_app_ug/vhost.rst
@@ -147,7 +147,10 @@  retries on an RX burst, it takes effect only when rx retry is enabled. The
 default value is 15.
 
 **--dequeue-zero-copy**
-Dequeue zero copy will be enabled when this option is given.
+Dequeue zero copy will be enabled when this option is given. it is worth to
+note that if NIC is binded to driver with iommu enabled, dequeue zero copy
+cannot work at VM2NIC mode (vm2vm=0) due to currently we don't setup iommu
+dma mapping for guest memory.
 
 **--vlan-strip 0|1**
 VLAN strip option is removed, because different NICs have different behaviors