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 at 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(+) diff --git a/doc/guides/rel_notes/known_issues.rst b/doc/guides/rel_notes/known_issues.rst index 8ef654a..d26dcfa 100644 --- a/doc/guides/rel_notes/known_issues.rst +++ b/doc/guides/rel_notes/known_issues.rst @@ -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 | ++--------------------------------+--------------------------------------------------------------------------------------+ -- 1.9.3