1 .. SPDX-License-Identifier: BSD-3-Clause
2 Copyright(c) 2010-2014 Intel Corporation.
4 Known Issues and Limitations in Legacy Releases
5 ===============================================
7 This section describes known issues with the DPDK software that aren't covered in the version specific release
11 Unit Test for Link Bonding may fail at test_tlb_tx_burst()
12 ----------------------------------------------------------
15 Unit tests will fail in ``test_tlb_tx_burst()`` function with error for uneven distribution of packets.
18 Unit test link_bonding_autotest will fail.
20 **Resolution/Workaround**:
21 There is no workaround available.
23 **Affected Environment/Platform**:
30 Pause Frame Forwarding does not work properly on igb
31 ----------------------------------------------------
34 For igb devices rte_eth_flow_ctrl_set does not work as expected.
35 Pause frames are always forwarded on igb, regardless of the ``RFCE``, ``MPMCF`` and ``DPF`` registers.
38 Pause frames will never be rejected by the host on 1G NICs and they will always be forwarded.
40 **Resolution/Workaround**:
41 There is no workaround available.
43 **Affected Environment/Platform**:
47 Poll Mode Driver (PMD).
50 In packets provided by the PMD, some flags are missing
51 ------------------------------------------------------
54 In packets provided by the PMD, some flags are missing.
55 The application does not have access to information provided by the hardware
56 (packet is broadcast, packet is multicast, packet is IPv4 and so on).
59 The ``ol_flags`` field in the ``rte_mbuf`` structure is not correct and should not be used.
61 **Resolution/Workaround**:
62 The application has to parse the Ethernet header itself to get the information, which is slower.
64 **Affected Environment/Platform**:
68 Poll Mode Driver (PMD).
70 The rte_malloc library is not fully implemented
71 -----------------------------------------------
74 The ``rte_malloc`` library is not fully implemented.
77 All debugging features of rte_malloc library described in architecture documentation are not yet implemented.
79 **Resolution/Workaround**:
80 No workaround available.
82 **Affected Environment/Platform**:
93 Reading the HPET chip is slow.
96 An application that calls ``rte_get_hpet_cycles()`` or ``rte_timer_manage()`` runs slower.
98 **Resolution/Workaround**:
99 The application should not call these functions too often in the main loop.
100 An alternative is to use the TSC register through ``rte_rdtsc()`` which is faster,
101 but specific to an lcore and is a cycle reference, not a time reference.
103 **Affected Environment/Platform**:
107 Environment Abstraction Layer (EAL).
110 HPET timers do not work on the Osage customer reference platform
111 ----------------------------------------------------------------
114 HPET timers do not work on the Osage customer reference platform which includes an Intel® Xeon® processor 5500
115 series processor) using the released BIOS from Intel.
118 On Osage boards, the implementation of the ``rte_delay_us()`` function must be changed to not use the HPET timer.
120 **Resolution/Workaround**:
121 This can be addressed by building the system with the ``CONFIG_RTE_LIBEAL_USE_HPET=n``
122 configuration option or by using the ``--no-hpet`` EAL option.
124 **Affected Environment/Platform**:
125 The Osage customer reference platform.
126 Other vendor platforms with Intel® Xeon® processor 5500 series processors should
127 work correctly, provided the BIOS supports HPET.
130 ``lib/librte_eal/common/include/rte_cycles.h``
133 Not all variants of supported NIC types have been used in testing
134 -----------------------------------------------------------------
137 The supported network interface cards can come in a number of variants with different device ID's.
138 Not all of these variants have been tested with the DPDK.
140 The NIC device identifiers used during testing:
142 * Intel® Ethernet Controller XL710 for 40GbE QSFP+ [8086:1584]
143 * Intel® Ethernet Controller XL710 for 40GbE QSFP+ [8086:1583]
144 * Intel® Ethernet Controller X710 for 10GbE SFP+ [8086:1572]
145 * Intel® 82576 Gigabit Ethernet Controller [8086:10c9]
146 * Intel® 82576 Quad Copper Gigabit Ethernet Controller [8086:10e8]
147 * Intel® 82580 Dual Copper Gigabit Ethernet Controller [8086:150e]
148 * Intel® I350 Quad Copper Gigabit Ethernet Controller [8086:1521]
149 * Intel® 82599 Dual Fibre 10 Gigabit Ethernet Controller [8086:10fb]
150 * Intel® Ethernet Server Adapter X520-T2 [8086: 151c]
151 * Intel® Ethernet Controller X540-T2 [8086:1528]
152 * Intel® 82574L Gigabit Network Connection [8086:10d3]
153 * Emulated Intel® 82540EM Gigabit Ethernet Controller [8086:100e]
154 * Emulated Intel® 82545EM Gigabit Ethernet Controller [8086:100f]
155 * Intel® Ethernet Server Adapter X520-4 [8086:154a]
156 * Intel® Ethernet Controller I210 [8086:1533]
159 Risk of issues with untested variants.
161 **Resolution/Workaround**:
162 Use tested NIC variants. For those supported Ethernet controllers, additional device
163 IDs may be added to the software if required.
165 **Affected Environment/Platform**:
172 Multi-process sample app requires exact memory mapping
173 ------------------------------------------------------
176 The multi-process example application assumes that
177 it is possible to map the hugepage memory to the same virtual addresses in client and server applications.
178 Occasionally, very rarely with 64-bit, this does not occur and a client application will fail on startup.
179 The Linux "address-space layout randomization" security feature can sometimes cause this to occur.
182 A multi-process client application fails to initialize.
184 **Resolution/Workaround**:
185 See the "Multi-process Limitations" section in the DPDK Programmer's Guide for more information.
187 **Affected Environment/Platform**:
191 Multi-process example application
194 Packets are not sent by the 1 GbE/10 GbE SR-IOV driver when the source MAC is not the MAC assigned to the VF NIC
195 ----------------------------------------------------------------------------------------------------------------
198 The 1 GbE/10 GbE SR-IOV driver can only send packets when the Ethernet header's source MAC address is the same as
200 The reason for this is that the Linux ``ixgbe`` driver module in the host OS has its anti-spoofing feature enabled.
203 Packets sent using the 1 GbE/10 GbE SR-IOV driver must have the source MAC address correctly set to that of the VF NIC.
204 Packets with other source address values are dropped by the NIC if the application attempts to transmit them.
206 **Resolution/Workaround**:
207 Configure the Ethernet source address in each packet to match that of the VF NIC.
209 **Affected Environment/Platform**:
213 1 GbE/10 GbE VF Poll Mode Driver (PMD).
216 SR-IOV drivers do not fully implement the rte_ethdev API
217 --------------------------------------------------------
220 The SR-IOV drivers only supports the following rte_ethdev API functions:
222 * rte_eth_dev_configure()
223 * rte_eth_tx_queue_setup()
224 * rte_eth_rx_queue_setup()
225 * rte_eth_dev_info_get()
226 * rte_eth_dev_start()
230 * rte_eth_stats_get()
231 * rte_eth_stats_reset()
233 * rte_eth_link_get_no_wait()
236 Calling an unsupported function will result in an application error.
238 **Resolution/Workaround**:
239 Do not use other rte_ethdev API functions in applications that use the SR-IOV drivers.
241 **Affected Environment/Platform**:
245 VF Poll Mode Driver (PMD).
248 PMD does not work with --no-huge EAL command line parameter
249 -----------------------------------------------------------
252 Currently, the DPDK does not store any information about memory allocated by ``malloc()` (for example, NUMA node,
253 physical address), hence PMD drivers do not work when the ``--no-huge`` command line parameter is supplied to EAL.
256 Sending and receiving data with PMD will not work.
258 **Resolution/Workaround**:
259 Use huge page memory or use VFIO to map devices.
261 **Affected Environment/Platform**:
262 Systems running the DPDK on Linux
265 Poll Mode Driver (PMD).
268 Some hardware off-load functions are not supported by the VF Driver
269 -------------------------------------------------------------------
272 Currently, configuration of the following items is not supported by the VF driver:
274 * IP/UDP/TCP checksum offload
275 * Jumbo Frame Receipt
279 Any configuration for these items in the VF register will be ignored.
280 The behavior is dependent on the current PF setting.
282 **Resolution/Workaround**:
283 For the PF (Physical Function) status on which the VF driver depends, there is an option item under PMD in the
285 For others, the VF will keep the same behavior as PF setting.
287 **Affected Environment/Platform**:
291 VF (SR-IOV) Poll Mode Driver (PMD).
294 Kernel crash on IGB port unbinding
295 ----------------------------------
298 Kernel crash may occur when unbinding 1G ports from the igb_uio driver, on 2.6.3x kernels such as shipped
304 **Resolution/Workaround**:
305 Use newer kernels or do not unbind ports.
307 **Affected Environment/Platform**:
308 2.6.3x kernels such as shipped with Fedora 14
311 IGB Poll Mode Driver (PMD).
314 Twinpond and Ironpond NICs do not report link status correctly
315 --------------------------------------------------------------
318 Twin Pond/Iron Pond NICs do not bring the physical link down when shutting down the port.
321 The link is reported as up even after issuing ``shutdown`` command unless the cable is physically disconnected.
323 **Resolution/Workaround**:
326 **Affected Environment/Platform**:
327 Twin Pond and Iron Pond NICs
330 Poll Mode Driver (PMD).
333 Discrepancies between statistics reported by different NICs
334 -----------------------------------------------------------
337 Gigabit Ethernet devices from Intel include CRC bytes when calculating packet reception statistics regardless
338 of hardware CRC stripping state, while 10-Gigabit Ethernet devices from Intel do so only when hardware CRC
339 stripping is disabled.
342 There may be a discrepancy in how different NICs display packet reception statistics.
344 **Resolution/Workaround**:
347 **Affected Environment/Platform**:
351 Poll Mode Driver (PMD).
354 Error reported opening files on DPDK initialization
355 ---------------------------------------------------
358 On DPDK application startup, errors may be reported when opening files as part of the initialization process.
359 This occurs if a large number, for example, 500 or more, or if hugepages are used, due to the per-process
360 limit on the number of open files.
363 The DPDK application may fail to run.
365 **Resolution/Workaround**:
366 If using 2 MB hugepages, consider switching to a fewer number of 1 GB pages.
367 Alternatively, use the ``ulimit`` command to increase the number of files which can be opened by a process.
369 **Affected Environment/Platform**:
373 Environment Abstraction Layer (EAL).
376 Intel® QuickAssist Technology sample application does not work on a 32-bit OS on Shumway
377 ----------------------------------------------------------------------------------------
380 The Intel® Communications Chipset 89xx Series device does not fully support NUMA on a 32-bit OS.
381 Consequently, the sample application cannot work properly on Shumway, since it requires NUMA on both nodes.
384 The sample application cannot work in 32-bit mode with emulated NUMA, on multi-socket boards.
386 **Resolution/Workaround**:
387 There is no workaround available.
389 **Affected Environment/Platform**:
396 Differences in how different Intel NICs handle maximum packet length for jumbo frame
397 ------------------------------------------------------------------------------------
400 10 Gigabit Ethernet devices from Intel do not take VLAN tags into account when calculating packet size
401 while Gigabit Ethernet devices do so for jumbo frames.
404 When receiving packets with VLAN tags, the actual maximum size of useful payload that Intel Gigabit Ethernet
405 devices are able to receive is 4 bytes (or 8 bytes in the case of packets with extended VLAN tags) less than
406 that of Intel 10 Gigabit Ethernet devices.
408 **Resolution/Workaround**:
409 Increase the configured maximum packet size when using Intel Gigabit Ethernet devices.
411 **Affected Environment/Platform**:
415 Poll Mode Driver (PMD).
418 Binding PCI devices to igb_uio fails on Linux kernel 3.9 when more than one device is used
419 ------------------------------------------------------------------------------------------
422 A known bug in the uio driver included in Linux kernel version 3.9 prevents more than one PCI device to be
423 bound to the igb_uio driver.
426 The Poll Mode Driver (PMD) will crash on initialization.
428 **Resolution/Workaround**:
429 Use earlier or later kernel versions, or apply the following
430 `patch <https://github.com/torvalds/linux/commit/5ed0505c713805f89473cdc0bbfb5110dfd840cb>`_.
432 **Affected Environment/Platform**:
433 Linux systems with kernel version 3.9
439 GCC might generate Intel® AVX instructions for processors without Intel® AVX support
440 ------------------------------------------------------------------------------------
443 When compiling DPDK (and any DPDK app), gcc may generate Intel® AVX instructions, even when the
444 processor does not support Intel® AVX.
447 Any DPDK app might crash while starting up.
449 **Resolution/Workaround**:
450 Either compile using icc or set ``EXTRA_CFLAGS='-O3'`` prior to compilation.
452 **Affected Environment/Platform**:
453 Platforms which processor does not support Intel® AVX.
456 Environment Abstraction Layer (EAL).
458 Ethertype filter could receive other packets (non-assigned) in Niantic
459 ----------------------------------------------------------------------
462 On Intel® Ethernet Controller 82599EB When Ethertype filter (priority enable) was set, unmatched packets also
463 could be received on the assigned queue, such as ARP packets without 802.1q tags or with the user priority not
465 Launch the testpmd by disabling RSS and with multiply queues, then add the ethertype filter like the following
466 and then start forwarding::
468 add_ethertype_filter 0 ethertype 0x0806 priority enable 3 queue 2 index 1
470 When sending ARP packets without 802.1q tag and with user priority as non-3 by tester, all the ARP packets can
471 be received on the assigned queue.
474 The user priority comparing in Ethertype filter cannot work probably.
475 It is a NIC's issue due to the following: "In fact, ETQF.UP is not functional, and the information will
476 be added in errata of 82599 and X540."
478 **Resolution/Workaround**:
481 **Affected Environment/Platform**:
485 Poll Mode Driver (PMD).
488 Cannot set link speed on Intel® 40G Ethernet controller
489 -------------------------------------------------------
492 On Intel® 40G Ethernet Controller you cannot set the link to specific speed.
495 The link speed cannot be changed forcibly, though it can be configured by application.
497 **Resolution/Workaround**:
500 **Affected Environment/Platform**:
504 Poll Mode Driver (PMD).
507 Devices bound to igb_uio with VT-d enabled do not work on Linux kernel 3.15-3.17
508 --------------------------------------------------------------------------------
511 When VT-d is enabled (``iommu=pt intel_iommu=on``), devices are 1:1 mapped.
512 In the Linux kernel unbinding devices from drivers removes that mapping which result in IOMMU errors.
513 Introduced in Linux `kernel 3.15 commit
514 <https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/iommu/intel-iommu.c?id=816997d03bca9fabcee65f3481eb0297103eceb7>`_,
515 solved in Linux `kernel 3.18 commit
516 <https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/iommu/intel-iommu.c?id=1196c2fb0407683c2df92d3d09f9144d42830894>`_.
519 Devices will not be allowed to access memory, resulting in following kernel errors::
521 dmar: DRHD: handling fault status reg 2
522 dmar: DMAR:[DMA Read] Request device [02:00.0] fault addr a0c58000
523 DMAR:[fault reason 02] Present bit in context entry is clear
525 **Resolution/Workaround**:
526 Use earlier or later kernel versions, or avoid driver binding on boot by blacklisting the driver modules.
527 I.e., in the case of ``ixgbe``, we can pass the kernel command line option: ``modprobe.blacklist=ixgbe``.
528 This way we do not need to unbind the device to bind it to igb_uio.
530 **Affected Environment/Platform**:
531 Linux systems with kernel versions 3.15 to 3.17.
537 VM power manager may not work on systems with more than 64 cores
538 ----------------------------------------------------------------
541 When using VM power manager on a system with more than 64 cores, VM(s) should not use cores 64 or higher.
544 VM power manager should not be used with VM(s) that are using cores 64 or above.
546 **Resolution/Workaround**:
547 Do not use cores 64 or above.
549 **Affected Environment/Platform**:
550 Platforms with more than 64 cores.
553 VM power manager application.
556 DPDK may not build on some Intel CPUs using clang < 3.7.0
557 ---------------------------------------------------------
560 When compiling DPDK with an earlier version than 3.7.0 of clang, CPU flags are not detected on some Intel platforms
561 such as Intel Broadwell/Skylake (and possibly future CPUs), and therefore compilation fails due to missing intrinsics.
564 DPDK will not build when using a clang version < 3.7.0.
566 **Resolution/Workaround**:
567 Use clang 3.7.0 or higher, or gcc.
569 **Affected Environment/Platform**:
570 Platforms with Intel Broadwell/Skylake using an old clang version.
573 Environment Abstraction Layer (EAL).
576 The last EAL argument is replaced by the program name in argv[]
577 ---------------------------------------------------------------
580 The last EAL argument is replaced by program name in ``argv[]`` after ``eal_parse_args`` is called.
581 This is the intended behavior but it causes the pointer to the last EAL argument to be lost.
584 If the last EAL argument in ``argv[]`` is generated by a malloc function, changing it will cause memory
585 issues when freeing the argument.
587 **Resolution/Workaround**:
588 An application should not consider the value in ``argv[]`` as unchanged.
590 **Affected Environment/Platform**:
594 Environment Abstraction Layer (EAL).
597 I40e VF may not receive packets in the promiscuous mode
598 -------------------------------------------------------
601 Promiscuous mode is not supported by the DPDK i40e VF driver when using the
602 i40e Linux kernel driver as host driver.
605 The i40e VF does not receive packets when the destination MAC address is unknown.
607 **Resolution/Workaround**:
608 Use a explicit destination MAC address that matches the VF.
610 **Affected Environment/Platform**:
614 Poll Mode Driver (PMD).
617 uio pci generic module bind failed in X710/XL710/XXV710
618 -------------------------------------------------------
621 The ``uio_pci_generic`` module is not supported by XL710, since the errata of XL710
622 states that the Interrupt Status bit is not implemented. The errata is the item #71
623 from the `xl710 controller spec
624 <http://www.intel.com/content/www/us/en/embedded/products/networking/xl710-10-40-controller-spec-update.html>`_.
625 The hw limitation is the same as other X710/XXV710 NICs.
628 When use ``--bind=uio_pci_generic``, the ``uio_pci_generic`` module probes device and check the Interrupt
629 Status bit. Since it is not supported by X710/XL710/XXV710, it return a *failed* value. The statement
630 that these products don’t support INTx masking, is indicated in the related `linux kernel commit
631 <https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/drivers/pci/quirks.c?id=8bcf4525c5d43306c5fd07e132bc8650e3491aec>`_.
633 **Resolution/Workaround**:
634 Do not bind the ``uio_pci_generic`` module in X710/XL710/XXV710 NICs.
636 **Affected Environment/Platform**:
640 Poll Mode Driver (PMD).
643 virtio tx_burst() function cannot do TSO on shared packets
644 ----------------------------------------------------------
647 The standard TX function of virtio driver does not manage shared
648 packets properly when doing TSO. These packets should be read-only
649 but the driver modifies them.
651 When doing TSO, the virtio standard expects that the L4 checksum is
652 set to the pseudo header checksum in the packet data, which is
653 different than the DPDK API. The driver patches the L4 checksum to
654 conform to the virtio standard, but this solution is invalid when
655 dealing with shared packets (clones), because the packet data should
659 In this situation, the shared data will be modified by the driver,
660 potentially causing race conditions with the other users of the mbuf
663 **Resolution/Workaround**:
664 The workaround in the application is to ensure that the network
665 headers in the packet data are not shared.
667 **Affected Environment/Platform**:
668 Virtual machines running a virtio driver.
671 Poll Mode Driver (PMD).
674 igb uio legacy mode can not be used in X710/XL710/XXV710
675 --------------------------------------------------------
678 X710/XL710/XXV710 NICs lack support for indicating INTx is asserted via the interrupt
679 bit in the PCI status register. Linux delected them from INTx support table. The related
680 `commit <https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/drivers/pci/quirks.c?id=8bcf4525c5d43306c5fd07e132bc8650e3491aec>`_.
683 When insmod ``igb_uio`` with ``intr_mode=legacy`` and test link status interrupt. Since
684 INTx interrupt is not supported by X710/XL710/XXV710, it will cause Input/Output error
685 when reading file descriptor.
687 **Resolution/Workaround**:
688 Do not bind ``igb_uio`` with legacy mode in X710/XL710/XXV710 NICs, or do not use kernel
689 version >4.7 when you bind ``igb_uio`` with legacy mode.
691 **Affected Environment/Platform**:
695 Poll Mode Driver (PMD).
698 igb_uio can not be used when running l3fwd-power
699 ------------------------------------------------
702 Link Status Change(LSC) interrupt and packet receiving interrupt are all enabled in l3fwd-power
703 APP. Because of UIO only support one interrupt, so these two kinds of interrupt need to share
704 one, and the receiving interrupt have the higher priority, so can't get the right link status.
707 When insmod ``igb_uio`` and running l3fwd-power APP, link status getting doesn't work properly.
709 **Resolution/Workaround**:
710 Use vfio-pci when LSC and packet receiving interrupt enabled.
712 **Affected Environment/Platform**:
719 Linux kernel 4.10.0 iommu attribute read error
720 ----------------------------------------------
723 When VT-d is enabled (``iommu=pt intel_iommu=on``), reading IOMMU attributes from
724 /sys/devices/virtual/iommu/dmarXXX/intel-iommu/cap on Linux kernel 4.10.0 error.
725 This bug is fixed in `Linux commmit a7fdb6e648fb
726 <https://patchwork.kernel.org/patch/9595727/>`_,
727 This bug is introduced in `Linux commmit 39ab9555c241
728 <https://patchwork.kernel.org/patch/9554403/>`_,
731 When binding devices to VFIO and attempting to run testpmd application,
732 testpmd (and other DPDK applications) will not initialize.
734 **Resolution/Workaround**:
735 Use other linux kernel version. It only happens in linux kernel 4.10.0.
737 **Affected Environment/Platform**:
738 ALL OS of linux kernel 4.10.0.
743 Netvsc driver and application restart
744 -------------------------------------
747 The Linux kernel uio_hv_generic driver does not completely shutdown and clean up
748 resources properly if application using Netvsc PMD exits.
751 When application using Netvsc PMD is restarted it can not complete initialization
752 handshake sequence with the host.
754 **Resolution/Workaround**:
755 Either reboot the guest or remove and reinsert the hv_uio_generic module.
757 **Affected Environment/Platform**:
761 ``uio_hv_generic`` module.
764 PHY link up fails when rebinding i40e NICs to kernel driver
765 -----------------------------------------------------------
768 Some kernel drivers are not able to handle the link status correctly
769 after DPDK application sets the PHY to link down.
772 The link status can't be set to "up" after the NIC is rebound to the
773 kernel driver. Before a DPDK application quits it will invoke the
774 function ``i40e_dev_stop()`` which will sets the PHY to link down. Some
775 kernel drivers may not be able to handle the link status correctly after
776 it retakes control of the device. This is a known PHY link configuration
777 issue in the i40e kernel driver. The fix has been addressed in the 2.7.4 rc
778 version. So if the i40e kernel driver is < 2.7.4 and doesn't have the
779 fix backported it will encounter this issue.
781 **Resolution/Workaround**:
782 First try to remove and reinsert the i40e kernel driver. If that fails
785 **Affected Environment/Platform**:
789 Poll Mode Driver (PMD).
792 Restricted vdev ethdev operations supported in secondary process
793 ----------------------------------------------------------------
795 In current virtual device sharing model, Ethernet device data structure will be
796 shared between primary and secondary process. Only those Ethernet device operations
797 which based on it are workable in secondary process.
800 Some Ethernet device operations like device start/stop will be failed on virtual
801 device in secondary process.
803 **Affected Environment/Platform**:
807 Virtual Device Poll Mode Driver (PMD).
810 Kernel crash when hot-unplug igb_uio device while DPDK application is running
811 -----------------------------------------------------------------------------
814 When device has been bound to igb_uio driver and application is running,
815 hot-unplugging the device may cause kernel crash.
818 When device is hot-unplugged, igb_uio driver will be removed which will destroy UIO resources.
819 Later trying to access any uio resource will cause kernel crash.
821 **Resolution/Workaround**:
822 If using DPDK for PCI HW hot-unplug, prefer to bind device with VFIO instead of IGB_UIO.
824 **Affected Environment/Platform**: