xref: /dpdk/doc/guides/rel_notes/known_issues.rst (revision ae20b97726caa7a9d208e607ec23271009e66b70)
1..  SPDX-License-Identifier: BSD-3-Clause
2    Copyright(c) 2010-2014 Intel Corporation.
3
4Known Issues and Limitations in Legacy Releases
5===============================================
6
7This section describes known issues with the DPDK software that aren't covered in the version specific release
8notes sections.
9
10
11Unit Test for Link Bonding may fail at test_tlb_tx_burst()
12----------------------------------------------------------
13
14**Description**:
15   Unit tests will fail in ``test_tlb_tx_burst()`` function with error for uneven distribution of packets.
16
17**Implication**:
18   Unit test link_bonding_autotest will fail.
19
20**Resolution/Workaround**:
21   There is no workaround available.
22
23**Affected Environment/Platform**:
24   Fedora 20.
25
26**Driver/Module**:
27   Link Bonding.
28
29
30Pause Frame Forwarding does not work properly on igb
31----------------------------------------------------
32
33**Description**:
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.
36
37**Implication**:
38   Pause frames will never be rejected by the host on 1G NICs and they will always be forwarded.
39
40**Resolution/Workaround**:
41   There is no workaround available.
42
43**Affected Environment/Platform**:
44   All.
45
46**Driver/Module**:
47   Poll Mode Driver (PMD).
48
49
50In packets provided by the PMD, some flags are missing
51------------------------------------------------------
52
53**Description**:
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).
57
58**Implication**:
59   The ``ol_flags`` field in the ``rte_mbuf`` structure is not correct and should not be used.
60
61**Resolution/Workaround**:
62   The application has to parse the Ethernet header itself to get the information, which is slower.
63
64**Affected Environment/Platform**:
65   All.
66
67**Driver/Module**:
68   Poll Mode Driver (PMD).
69
70The rte_malloc library is not fully implemented
71-----------------------------------------------
72
73**Description**:
74   The ``rte_malloc`` library is not fully implemented.
75
76**Implication**:
77   All debugging features of rte_malloc library described in architecture documentation are not yet implemented.
78
79**Resolution/Workaround**:
80   No workaround available.
81
82**Affected Environment/Platform**:
83   All.
84
85**Driver/Module**:
86   ``rte_malloc``.
87
88
89HPET reading is slow
90--------------------
91
92**Description**:
93   Reading the HPET chip is slow.
94
95**Implication**:
96   An application that calls ``rte_get_hpet_cycles()`` or ``rte_timer_manage()`` runs slower.
97
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.
102
103**Affected Environment/Platform**:
104   All.
105
106**Driver/Module**:
107   Environment Abstraction Layer (EAL).
108
109
110HPET timers do not work on the Osage customer reference platform
111----------------------------------------------------------------
112
113**Description**:
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.
116
117**Implication**:
118   On Osage boards, the implementation of the ``rte_delay_us()`` function must be changed to not use the HPET timer.
119
120**Resolution/Workaround**:
121   This can be addressed by building the system with ``RTE_LIBEAL_USE_HPET`` unset
122   or by using the ``--no-hpet`` EAL option.
123
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.
128
129**Driver/Module**:
130   ``lib/eal/include/rte_cycles.h``
131
132
133Not all variants of supported NIC types have been used in testing
134-----------------------------------------------------------------
135
136**Description**:
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.
139
140   The NIC device identifiers used during testing:
141
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]
157
158**Implication**:
159   Risk of issues with untested variants.
160
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.
164
165**Affected Environment/Platform**:
166   All.
167
168**Driver/Module**:
169   Poll-mode drivers
170
171
172Multi-process sample app requires exact memory mapping
173------------------------------------------------------
174
175**Description**:
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.
180
181**Implication**:
182   A multi-process client application fails to initialize.
183
184**Resolution/Workaround**:
185   See the "Multi-process Limitations" section in the DPDK Programmer's Guide for more information.
186
187**Affected Environment/Platform**:
188   All.
189
190**Driver/Module**:
191   Multi-process example application
192
193
194Packets 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----------------------------------------------------------------------------------------------------------------
196
197**Description**:
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
199   that of the VF NIC.
200   The reason for this is that the Linux ``ixgbe`` driver module in the host OS has its anti-spoofing feature enabled.
201
202**Implication**:
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.
205
206**Resolution/Workaround**:
207   Configure the Ethernet source address in each packet to match that of the VF NIC.
208
209**Affected Environment/Platform**:
210   All.
211
212**Driver/Module**:
213   1 GbE/10 GbE VF Poll Mode Driver (PMD).
214
215
216SR-IOV drivers do not fully implement the rte_ethdev API
217--------------------------------------------------------
218
219**Description**:
220   The SR-IOV drivers only supports the following rte_ethdev API functions:
221
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()
227   * rte_eth_tx_burst()
228   * rte_eth_rx_burst()
229   * rte_eth_dev_stop()
230   * rte_eth_stats_get()
231   * rte_eth_stats_reset()
232   * rte_eth_link_get()
233   * rte_eth_link_get_no_wait()
234
235**Implication**:
236   Calling an unsupported function will result in an application error.
237
238**Resolution/Workaround**:
239   Do not use other rte_ethdev API functions in applications that use the SR-IOV drivers.
240
241**Affected Environment/Platform**:
242   All.
243
244**Driver/Module**:
245   VF Poll Mode Driver (PMD).
246
247
248PMD does not work with --no-huge EAL command line parameter
249-----------------------------------------------------------
250
251**Description**:
252   Currently, the DPDK does not store any information about memory allocated by ``malloc()``
253   (for example, NUMA node, physical address),
254   hence PMDs do not work when the ``--no-huge`` command line parameter is supplied to EAL.
255   This happens when using non-IOMMU based UIO drivers (i.e. ``igb_uio`` or ``uio_pci_generic``)
256   or when IOVA mode is explicitly set to use physical addresses
257   (via the ``--iova-mode=pa`` EAL parameter).
258
259**Implication**:
260   Sending and receiving data with PMD will not work.
261   Unit tests checking ``--no-huge`` operation will fail if there is a device bound to the PMD
262   (``eal_flags_n_opt_autotest``, ``eal_flags_no_huge_autotest``,
263   ``eal_flags_vdev_opt_autotest``, ``eal_flags_misc_autotest``).
264
265**Resolution/Workaround**:
266   Use huge page memory or use VFIO to map devices.
267
268**Affected Environment/Platform**:
269   Systems running the DPDK on Linux
270
271**Driver/Module**:
272   Poll Mode Driver (PMD).
273
274
275Some hardware off-load functions are not supported by the VF Driver
276-------------------------------------------------------------------
277
278**Description**:
279   Currently, configuration of the following items is not supported by the VF driver:
280
281   * IP/UDP/TCP checksum offload
282   * Jumbo Frame Receipt
283   * HW Strip CRC
284
285**Implication**:
286   Any configuration for these items in the VF register will be ignored.
287   The behavior is dependent on the current PF setting.
288
289**Resolution/Workaround**:
290   For the PF (Physical Function) status on which the VF driver depends, there is an option item under PMD in the
291   config file.
292   For others, the VF will keep the same behavior as PF setting.
293
294**Affected Environment/Platform**:
295   All.
296
297**Driver/Module**:
298   VF (SR-IOV) Poll Mode Driver (PMD).
299
300
301Kernel crash on IGB port unbinding
302----------------------------------
303
304**Description**:
305   Kernel crash may occur when unbinding 1G ports from the igb_uio driver, on 2.6.3x kernels such as shipped
306   with Fedora 14.
307
308**Implication**:
309   Kernel crash occurs.
310
311**Resolution/Workaround**:
312   Use newer kernels or do not unbind ports.
313
314**Affected Environment/Platform**:
315   2.6.3x kernels such as  shipped with Fedora 14
316
317**Driver/Module**:
318   IGB Poll Mode Driver (PMD).
319
320
321Twinpond and Ironpond NICs do not report link status correctly
322--------------------------------------------------------------
323
324**Description**:
325   Twin Pond/Iron Pond NICs do not bring the physical link down when shutting down the port.
326
327**Implication**:
328   The link is reported as up even after issuing ``shutdown`` command unless the cable is physically disconnected.
329
330**Resolution/Workaround**:
331   None.
332
333**Affected Environment/Platform**:
334   Twin Pond and Iron Pond NICs
335
336**Driver/Module**:
337   Poll Mode Driver (PMD).
338
339
340Discrepancies between statistics reported by different NICs
341-----------------------------------------------------------
342
343**Description**:
344   Gigabit Ethernet devices from Intel include CRC bytes when calculating packet reception statistics regardless
345   of hardware CRC stripping state, while 10-Gigabit Ethernet devices from Intel do so only when hardware CRC
346   stripping is disabled.
347
348**Implication**:
349   There may be a  discrepancy in how different NICs display packet reception statistics.
350
351**Resolution/Workaround**:
352   None
353
354**Affected Environment/Platform**:
355   All.
356
357**Driver/Module**:
358   Poll Mode Driver (PMD).
359
360
361Error reported opening files on DPDK initialization
362---------------------------------------------------
363
364**Description**:
365   On DPDK application startup, errors may be reported when opening files as part of the initialization process.
366   This occurs if a large number, for example, 500 or more, or if hugepages are used, due to the per-process
367   limit on the number of open files.
368
369**Implication**:
370   The DPDK application may fail to run.
371
372**Resolution/Workaround**:
373   If using 2 MB hugepages, consider switching to a fewer number of 1 GB pages.
374   Alternatively, use the ``ulimit`` command to increase the number of files which can be opened by a process.
375
376**Affected Environment/Platform**:
377   All.
378
379**Driver/Module**:
380   Environment Abstraction Layer (EAL).
381
382
383Intel® QuickAssist Technology sample application does not work on a 32-bit OS on Shumway
384----------------------------------------------------------------------------------------
385
386**Description**:
387   The Intel® Communications Chipset 89xx Series device does not fully support NUMA on a 32-bit OS.
388   Consequently, the sample application cannot work properly on Shumway, since it requires NUMA on both nodes.
389
390**Implication**:
391   The sample application cannot work in 32-bit mode with emulated NUMA, on multi-socket boards.
392
393**Resolution/Workaround**:
394   There is no workaround available.
395
396**Affected Environment/Platform**:
397   Shumway
398
399**Driver/Module**:
400   All.
401
402
403Differences in how different Intel NICs handle maximum packet length for jumbo frame
404------------------------------------------------------------------------------------
405
406**Description**:
407   10 Gigabit Ethernet devices from Intel do not take VLAN tags into account when calculating packet size
408   while Gigabit Ethernet devices do so for jumbo frames.
409
410**Implication**:
411   When receiving packets with VLAN tags, the actual maximum size of useful payload that Intel Gigabit Ethernet
412   devices are able to receive is 4 bytes (or 8 bytes in the case of packets with extended VLAN tags) less than
413   that of Intel 10 Gigabit Ethernet devices.
414
415**Resolution/Workaround**:
416   Increase the configured maximum packet size when using Intel Gigabit Ethernet devices.
417
418**Affected Environment/Platform**:
419   All.
420
421**Driver/Module**:
422   Poll Mode Driver (PMD).
423
424
425GCC might generate Intel® AVX instructions for processors without Intel® AVX support
426------------------------------------------------------------------------------------
427
428**Description**:
429   When compiling DPDK (and any DPDK app), gcc may generate Intel® AVX instructions, even when the
430   processor does not support Intel® AVX.
431
432**Implication**:
433   Any DPDK app might crash while starting up.
434
435**Resolution/Workaround**:
436   Either compile using icc or set ``EXTRA_CFLAGS='-O3'`` prior to compilation.
437
438**Affected Environment/Platform**:
439   Platforms which processor does not support Intel® AVX.
440
441**Driver/Module**:
442   Environment Abstraction Layer (EAL).
443
444Ethertype filter could receive other packets (non-assigned) in Niantic
445----------------------------------------------------------------------
446
447**Description**:
448   On Intel®  Ethernet Controller 82599EB When Ethertype filter (priority enable) was set, unmatched packets also
449   could be received on the assigned queue, such as ARP packets without 802.1q tags or with the user priority not
450   equal to set value.
451   Launch the testpmd by disabling RSS and with multiply queues, then add the ethertype filter like the following
452   and then start forwarding::
453
454      add_ethertype_filter 0 ethertype 0x0806 priority enable 3 queue 2 index 1
455
456   When sending ARP packets without 802.1q tag and with user priority as non-3 by tester, all the ARP packets can
457   be received on the assigned queue.
458
459**Implication**:
460   The user priority comparing in Ethertype filter cannot work probably.
461   It is a NIC's issue due to the following: "In fact, ETQF.UP is not functional, and the information will
462   be added in errata of 82599 and X540."
463
464**Resolution/Workaround**:
465   None
466
467**Affected Environment/Platform**:
468   All.
469
470**Driver/Module**:
471   Poll Mode Driver (PMD).
472
473
474Cannot set link speed on Intel® 40G Ethernet controller
475-------------------------------------------------------
476
477**Description**:
478   On Intel® 40G Ethernet Controller you cannot set the link to specific speed.
479
480**Implication**:
481   The link speed cannot be changed forcibly, though it can be configured by application.
482
483**Resolution/Workaround**:
484   None
485
486**Affected Environment/Platform**:
487   All.
488
489**Driver/Module**:
490   Poll Mode Driver (PMD).
491
492
493Devices bound to igb_uio with VT-d enabled do not work on Linux kernel 3.15-3.17
494--------------------------------------------------------------------------------
495
496**Description**:
497   When VT-d is enabled (``iommu=pt intel_iommu=on``), devices are 1:1 mapped.
498   In the Linux kernel unbinding devices from drivers removes that mapping which result in IOMMU errors.
499   Introduced in Linux `kernel 3.15 commit
500   <https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/iommu/intel-iommu.c?id=816997d03bca9fabcee65f3481eb0297103eceb7>`_,
501   solved in Linux `kernel 3.18 commit
502   <https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/iommu/intel-iommu.c?id=1196c2fb0407683c2df92d3d09f9144d42830894>`_.
503
504**Implication**:
505   Devices will not be allowed to access memory, resulting in following kernel errors::
506
507      dmar: DRHD: handling fault status reg 2
508      dmar: DMAR:[DMA Read] Request device [02:00.0] fault addr a0c58000
509      DMAR:[fault reason 02] Present bit in context entry is clear
510
511**Resolution/Workaround**:
512   Use earlier or later kernel versions, or avoid driver binding on boot by blacklisting the driver modules.
513   I.e., in the case of ``ixgbe``, we can pass the kernel command line option: ``modprobe.blacklist=ixgbe``.
514   This way we do not need to unbind the device to bind it to igb_uio.
515
516**Affected Environment/Platform**:
517   Linux systems with kernel versions 3.15 to 3.17.
518
519**Driver/Module**:
520   ``igb_uio`` module.
521
522
523VM power manager may not work on systems with more than 64 cores
524----------------------------------------------------------------
525
526**Description**:
527   When using VM power manager on a system with more than 64 cores, VM(s) should not use cores 64 or higher.
528
529**Implication**:
530   VM power manager should not be used with VM(s) that are using cores 64 or above.
531
532**Resolution/Workaround**:
533   Do not use cores 64 or above.
534
535**Affected Environment/Platform**:
536   Platforms with more than 64 cores.
537
538**Driver/Module**:
539   VM power manager application.
540
541
542DPDK may not build on some Intel CPUs using clang < 3.7.0
543---------------------------------------------------------
544
545**Description**:
546   When compiling DPDK with an earlier version than 3.7.0 of clang, CPU flags are not detected on some Intel platforms
547   such as Intel Broadwell/Skylake (and possibly future CPUs), and therefore compilation fails due to missing intrinsics.
548
549**Implication**:
550   DPDK will not build when using a clang version < 3.7.0.
551
552**Resolution/Workaround**:
553   Use clang 3.7.0 or higher, or gcc.
554
555**Affected Environment/Platform**:
556   Platforms with Intel Broadwell/Skylake using an old clang version.
557
558**Driver/Module**:
559   Environment Abstraction Layer (EAL).
560
561
562The last EAL argument is replaced by the program name in argv[]
563---------------------------------------------------------------
564
565**Description**:
566   The last EAL argument is replaced by program name in ``argv[]`` after ``eal_parse_args`` is called.
567   This is the intended behavior but it causes the pointer to the last EAL argument to be lost.
568
569**Implication**:
570  If the last EAL argument in ``argv[]`` is generated by a malloc function, changing it will cause memory
571  issues when freeing the argument.
572
573**Resolution/Workaround**:
574   An application should not consider the value in ``argv[]`` as unchanged.
575
576**Affected Environment/Platform**:
577   ALL.
578
579**Driver/Module**:
580   Environment Abstraction Layer (EAL).
581
582
583I40e VF may not receive packets in the promiscuous mode
584-------------------------------------------------------
585
586**Description**:
587   Promiscuous mode is not supported by the DPDK i40e VF driver when using the
588   i40e Linux kernel driver as host driver.
589
590**Implication**:
591   The i40e VF does not receive packets when the destination MAC address is unknown.
592
593**Resolution/Workaround**:
594   Use a explicit destination MAC address that matches the VF.
595
596**Affected Environment/Platform**:
597   All.
598
599**Driver/Module**:
600   Poll Mode Driver (PMD).
601
602
603uio_pci_generic module bind failed in X710/XL710/XXV710
604-------------------------------------------------------
605
606**Description**:
607   The ``uio_pci_generic`` module is not supported by XL710, since the errata of XL710
608   states that the Interrupt Status bit is not implemented. The errata is the item #71
609   from the `xl710 controller spec
610   <http://www.intel.com/content/www/us/en/embedded/products/networking/xl710-10-40-controller-spec-update.html>`_.
611   The hw limitation is the same as other X710/XXV710 NICs.
612
613**Implication**:
614   When use ``--bind=uio_pci_generic``, the ``uio_pci_generic`` module probes device and check the Interrupt
615   Status bit. Since it is not supported by X710/XL710/XXV710, it return a *failed* value. The statement
616   that these products don’t support INTx masking, is indicated in the related `linux kernel commit
617   <https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/drivers/pci/quirks.c?id=8bcf4525c5d43306c5fd07e132bc8650e3491aec>`_.
618
619**Resolution/Workaround**:
620   Do not bind the ``uio_pci_generic`` module in X710/XL710/XXV710 NICs.
621
622**Affected Environment/Platform**:
623   All.
624
625**Driver/Module**:
626   Poll Mode Driver (PMD).
627
628
629virtio tx_burst() function cannot do TSO on shared packets
630----------------------------------------------------------
631
632**Description**:
633   The standard TX function of virtio driver does not manage shared
634   packets properly when doing TSO. These packets should be read-only
635   but the driver modifies them.
636
637   When doing TSO, the virtio standard expects that the L4 checksum is
638   set to the pseudo header checksum in the packet data, which is
639   different than the DPDK API. The driver patches the L4 checksum to
640   conform to the virtio standard, but this solution is invalid when
641   dealing with shared packets (clones), because the packet data should
642   not be modified.
643
644**Implication**:
645   In this situation, the shared data will be modified by the driver,
646   potentially causing race conditions with the other users of the mbuf
647   data.
648
649**Resolution/Workaround**:
650   The workaround in the application is to ensure that the network
651   headers in the packet data are not shared.
652
653**Affected Environment/Platform**:
654   Virtual machines running a virtio driver.
655
656**Driver/Module**:
657   Poll Mode Driver (PMD).
658
659
660igb_uio legacy mode can not be used in X710/XL710/XXV710
661--------------------------------------------------------
662
663**Description**:
664   X710/XL710/XXV710 NICs lack support for indicating INTx is asserted via the interrupt
665   bit in the PCI status register. Linux deleted them from INTx support table. The related
666   `commit <https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/drivers/pci/quirks.c?id=8bcf4525c5d43306c5fd07e132bc8650e3491aec>`_.
667
668**Implication**:
669   When insmod ``igb_uio`` with ``intr_mode=legacy`` and test link status interrupt. Since
670   INTx interrupt is not supported by X710/XL710/XXV710, it will cause Input/Output error
671   when reading file descriptor.
672
673**Resolution/Workaround**:
674   Do not bind ``igb_uio`` with legacy mode in X710/XL710/XXV710 NICs, or do not use kernel
675   version >4.7 when you bind ``igb_uio`` with legacy mode.
676
677**Affected Environment/Platform**:
678   ALL.
679
680**Driver/Module**:
681   Poll Mode Driver (PMD).
682
683
684igb_uio can not be used when running l3fwd-power
685------------------------------------------------
686
687**Description**:
688   Link Status Change(LSC) interrupt and packet receiving interrupt are all enabled in l3fwd-power
689   APP. Because of UIO only support one interrupt, so these two kinds of interrupt need to share
690   one, and the receiving interrupt have the higher priority, so can't get the right link status.
691
692**Implication**:
693   When insmod ``igb_uio`` and running l3fwd-power APP, link status getting doesn't work properly.
694
695**Resolution/Workaround**:
696   Use vfio-pci when LSC and packet receiving interrupt enabled.
697
698**Affected Environment/Platform**:
699   ALL.
700
701**Driver/Module**:
702   ``igb_uio`` module.
703
704
705Linux kernel 4.10.0 iommu attribute read error
706----------------------------------------------
707
708**Description**:
709   When VT-d is enabled (``iommu=pt intel_iommu=on``), reading IOMMU attributes from
710   /sys/devices/virtual/iommu/dmarXXX/intel-iommu/cap on Linux kernel 4.10.0 error.
711   This bug is fixed in `Linux commit a7fdb6e648fb
712   <https://patchwork.kernel.org/patch/9595727/>`_,
713   This bug is introduced in `Linux commit 39ab9555c241
714   <https://patchwork.kernel.org/patch/9554403/>`_,
715
716**Implication**:
717   When binding devices to VFIO and attempting to run testpmd application,
718   testpmd (and other DPDK applications) will not initialize.
719
720**Resolution/Workaround**:
721   Use other linux kernel version. It only happens in linux kernel 4.10.0.
722
723**Affected Environment/Platform**:
724   ALL OS of linux kernel 4.10.0.
725
726**Driver/Module**:
727   ``vfio-pci`` module.
728
729Netvsc driver and application restart
730-------------------------------------
731
732**Description**:
733   The Linux kernel uio_hv_generic driver does not completely shutdown and clean up
734   resources properly if application using Netvsc PMD exits.
735
736**Implication**:
737   When application using Netvsc PMD is restarted it can not complete initialization
738   handshake sequence with the host.
739
740**Resolution/Workaround**:
741   Either reboot the guest or remove and reinsert the uio_hv_generic module.
742
743**Affected Environment/Platform**:
744   Linux Hyper-V.
745
746**Driver/Module**:
747   ``uio_hv_generic`` module.
748
749
750PHY link up fails when rebinding i40e NICs to kernel driver
751-----------------------------------------------------------
752
753**Description**:
754   Some kernel drivers are not able to handle the link status correctly
755   after DPDK application sets the PHY to link down.
756
757**Implication**:
758   The link status can't be set to "up" after the NIC is rebound to the
759   kernel driver. Before a DPDK application quits it will invoke the
760   function ``i40e_dev_stop()`` which will sets the PHY to link down. Some
761   kernel drivers may not be able to handle the link status correctly after
762   it retakes control of the device. This is a known PHY link configuration
763   issue in the i40e kernel driver. The fix has been addressed in the 2.7.4 rc
764   version. So if the i40e kernel driver is < 2.7.4 and doesn't have the
765   fix backported it will encounter this issue.
766
767**Resolution/Workaround**:
768   First try to remove and reinsert the i40e kernel driver. If that fails
769   reboot the system.
770
771**Affected Environment/Platform**:
772   All.
773
774**Driver/Module**:
775   Poll Mode Driver (PMD).
776
777
778Restricted vdev ethdev operations supported in secondary process
779----------------------------------------------------------------
780**Description**
781   In current virtual device sharing model, Ethernet device data structure will be
782   shared between primary and secondary process. Only those Ethernet device operations
783   which based on it are workable in secondary process.
784
785**Implication**
786   Some Ethernet device operations like device start/stop will be failed on virtual
787   device in secondary process.
788
789**Affected Environment/Platform**:
790   ALL.
791
792**Driver/Module**:
793   Virtual Device Poll Mode Driver (PMD).
794
795
796Kernel crash when hot-unplug igb_uio device while DPDK application is running
797-----------------------------------------------------------------------------
798
799**Description**:
800   When device has been bound to igb_uio driver and application is running,
801   hot-unplugging the device may cause kernel crash.
802
803**Reason**:
804   When device is hot-unplugged, igb_uio driver will be removed which will destroy UIO resources.
805   Later trying to access any UIO resource will cause kernel crash.
806
807**Resolution/Workaround**:
808   If using DPDK for PCI HW hot-unplug, prefer to bind device with VFIO instead of IGB_UIO.
809
810**Affected Environment/Platform**:
811    ALL.
812
813**Driver/Module**:
814   ``igb_uio`` module.
815
816
817AVX-512 support disabled
818------------------------
819
820**Description**:
821   ``AVX-512`` support has been disabled on some conditions.
822
823   On DPDK v18.11 ``AVX-512`` is disabled for all ``GCC`` builds which reported to cause a performance
824   drop.
825
826   On DPDK v19.02 ``AVX-512`` disable scope is reduced to ``GCC`` and ``binutils version 2.30`` based
827   on information accrued from the GCC community defect.
828
829**Reason**:
830   Generated ``AVX-512`` code cause crash:
831   https://bugs.dpdk.org/show_bug.cgi?id=97
832   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88096
833
834**Resolution/Workaround**:
835   * Update ``binutils`` to newer version than ``2.30``.
836
837   OR
838
839   * Use different compiler, like ``clang`` for this case.
840
841**Affected Environment/Platform**:
842    ``GCC`` and ``binutils version 2.30``.
843
844**Driver/Module**:
845    ALL.
846
847
848Unsuitable IOVA mode may be picked as the default
849-------------------------------------------------
850
851**Description**
852   Not all kernel drivers and not all devices support all IOVA modes. EAL will
853   attempt to pick a reasonable default based on a number of factors, but there
854   may be cases where the default may be unsuitable (for example, hotplugging
855   devices using `igb_uio` driver while having picked IOVA as VA mode on EAL
856   initialization).
857
858**Implication**
859   Some devices (hotplugged or otherwise) may not work due to incompatible IOVA
860   mode being automatically picked by EAL.
861
862**Resolution/Workaround**:
863   It is possible to force EAL to pick a particular IOVA mode by using the
864   `--iova-mode` command-line parameter. If conflicting requirements are present
865   (such as one device requiring IOVA as PA and one requiring IOVA as VA mode),
866   there is no workaround.
867
868**Affected Environment/Platform**:
869   Linux.
870
871**Driver/Module**:
872   ALL.
873
874Vhost multi-queue reconnection failed with QEMU version 4.2.0 to 5.1.0
875----------------------------------------------------------------------
876
877**Description**
878   It's a QEMU regression bug (bad commit: c6beefd674ff). QEMU only saves
879   acked features for one vhost-net when vhost quits. When vhost reconnects
880   to virtio-net/virtio-pmd in multi-queue situations, the features been
881   set multiple times are not consistent. QEMU-5.2.0 fixes this issue in commit
882   f66337bdbfda ("vhost-user: save features of multiqueues if chardev is closed").
883
884**Implication**
885   Vhost cannot reconnect back to virtio-net/virtio-pmd normally.
886
887**Resolution/Workaround**:
888   It is possible to filter the incorrect acked features at vhost-user side.
889
890**Affected Environment/Platform**:
891   ALL.
892
893**Driver/Module**:
894   Virtual Device Poll Mode Driver (PMD).
895