[dpdk-dev,v4] doc: add known issue for iommu and igb_uio
Commit Message
Known issue regarding iommu/VT-d and igb_uio in Linux kernel version 3.15
to 3.17 where unbinding the device from the driver removes the 1:1 mapping
in the iommu resulting in IOMMU/DMAR errors when the device tries to
access memory.
Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
---
v4:
Improve commit log description
Add kernel error message info
Improve formatting
Fix patch charset encoding
v3:
Remove reference number
Add Linux commit links
v2:
Fix title uppercase
Add extra blank line to show proper indentation
v1:
Known igb_uio issue when iommu/vt-d is on
doc/guides/rel_notes/known_issues.rst | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
Comments
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Sergio Gonzalez Monroy
> Sent: Monday, December 15, 2014 10:33 AM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v4] doc: add known issue for iommu and igb_uio
>
> Known issue regarding iommu/VT-d and igb_uio in Linux kernel version 3.15 to 3.17 where unbinding
> the device from the driver removes the 1:1 mapping in the iommu resulting in IOMMU/DMAR errors
> when the device tries to access memory.
>
> Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
I have applied the patch to my tree next/dpdk-doc.
@@ -1026,3 +1026,35 @@ Stopping the port does not down the link on IntelĀ® 40G ethernet controller
| Driver/Module | Poll Mode Driver (PMD) |
| | |
+--------------------------------+--------------------------------------------------------------------------------------+
+
+Devices bound to igb_uio with VT-d enabled do not work on Linux* kernel 3.15-3.17
+---------------------------------------------------------------------------------
+
++--------------------------------+--------------------------------------------------------------------------------------+
+| Title | Devices bound to igb_uio with VT-d enabled do not work on Linux* kernel 3.15-3.17 |
++================================+======================================================================================+
+| Description | | When VT-d is enabled (iommu=pt intel_iommu=on), devices are 1:1 mapped. |
+| | In the Linux* kernel unbinding devices from drivers removes that mapping which |
+| | result in IOMMU errors. |
+| | | Introduced in Linux `kernel 3.15 commit <https://git.kernel.org/cgit/linux/kernel/ |
+| | git/torvalds/linux.git/commit/drivers/iommu/ |
+| | intel-iommu.c?id=816997d03bca9fabcee65f3481eb0297103eceb7>`_, |
+| | solved in Linux `kernel 3.18 commit <https://git.kernel.org/cgit/linux/kernel/git/ |
+| | torvalds/linux.git/commit/drivers/iommu/ |
+| | intel-iommu.c?id=1196c2fb0407683c2df92d3d09f9144d42830894>`_. |
++--------------------------------+--------------------------------------------------------------------------------------+
+| Implication | | Devices will not be allowed to access memory, resulting in following kernel errors:|
+| | | ``dmar: DRHD: handling fault status reg 2`` |
+| | | ``dmar: DMAR:[DMA Read] Request device [02:00.0] fault addr a0c58000`` |
+| | | ``DMAR:[fault reason 02] Present bit in context entry is clear`` |
++--------------------------------+--------------------------------------------------------------------------------------+
+| Resolution/ Workaround | | Use earlier or later kernel versions, or avoid driver binding on boot by |
+| | blacklisting the driver modules. |
+| | | ie. in the case of ixgbe, we can pass the kernel command line option: |
+| | | ``modprobe.blacklist=ixgbe`` |
+| | | This way we do not need to unbind the device to bind it to igb_uio. |
++--------------------------------+--------------------------------------------------------------------------------------+
+| Affected Environment/ Platform | Linux* systems with kernel versions 3.15 to 3.17 |
++--------------------------------+--------------------------------------------------------------------------------------+
+| Driver/Module | igb_uio module |
++--------------------------------+--------------------------------------------------------------------------------------+