68c3d22bea9827db11ac4033a9c30e1ddd7736f4
[dpdk.git] / doc / guides / rel_notes / known_issues.rst
1 ..  SPDX-License-Identifier: BSD-3-Clause
2     Copyright(c) 2010-2014 Intel Corporation.
3
4 Known Issues and Limitations in Legacy Releases
5 ===============================================
6
7 This section describes known issues with the DPDK software that aren't covered in the version specific release
8 notes sections.
9
10
11 Unit 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
30 Pause 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
50 In 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
70 The 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
89 HPET 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
110 HPET 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 the ``CONFIG_RTE_LIBEAL_USE_HPET=n``
122    configuration option 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/librte_eal/common/include/rte_cycles.h``
131
132
133 Not 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
172 Multi-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
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 ----------------------------------------------------------------------------------------------------------------
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
216 SR-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
248 PMD 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()` (for example, NUMA node,
253    physical address), hence PMD drivers do not work when the ``--no-huge`` command line parameter is supplied to EAL.
254
255 **Implication**:
256    Sending and receiving data with PMD will not work.
257
258 **Resolution/Workaround**:
259    Use huge page memory or use VFIO to map devices.
260
261 **Affected Environment/Platform**:
262    Systems running the DPDK on Linux
263
264 **Driver/Module**:
265    Poll Mode Driver (PMD).
266
267
268 Some hardware off-load functions are not supported by the VF Driver
269 -------------------------------------------------------------------
270
271 **Description**:
272    Currently, configuration of the following items is not supported by the VF driver:
273
274    * IP/UDP/TCP checksum offload
275    * Jumbo Frame Receipt
276    * HW Strip CRC
277
278 **Implication**:
279    Any configuration for these items in the VF register will be ignored.
280    The behavior is dependent on the current PF setting.
281
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
284    config file.
285    For others, the VF will keep the same behavior as PF setting.
286
287 **Affected Environment/Platform**:
288    All.
289
290 **Driver/Module**:
291    VF (SR-IOV) Poll Mode Driver (PMD).
292
293
294 Kernel crash on IGB port unbinding
295 ----------------------------------
296
297 **Description**:
298    Kernel crash may occur when unbinding 1G ports from the igb_uio driver, on 2.6.3x kernels such as shipped
299    with Fedora 14.
300
301 **Implication**:
302    Kernel crash occurs.
303
304 **Resolution/Workaround**:
305    Use newer kernels or do not unbind ports.
306
307 **Affected Environment/Platform**:
308    2.6.3x kernels such as  shipped with Fedora 14
309
310 **Driver/Module**:
311    IGB Poll Mode Driver (PMD).
312
313
314 Twinpond and Ironpond NICs do not report link status correctly
315 --------------------------------------------------------------
316
317 **Description**:
318    Twin Pond/Iron Pond NICs do not bring the physical link down when shutting down the port.
319
320 **Implication**:
321    The link is reported as up even after issuing ``shutdown`` command unless the cable is physically disconnected.
322
323 **Resolution/Workaround**:
324    None.
325
326 **Affected Environment/Platform**:
327    Twin Pond and Iron Pond NICs
328
329 **Driver/Module**:
330    Poll Mode Driver (PMD).
331
332
333 Discrepancies between statistics reported by different NICs
334 -----------------------------------------------------------
335
336 **Description**:
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.
340
341 **Implication**:
342    There may be a  discrepancy in how different NICs display packet reception statistics.
343
344 **Resolution/Workaround**:
345    None
346
347 **Affected Environment/Platform**:
348    All.
349
350 **Driver/Module**:
351    Poll Mode Driver (PMD).
352
353
354 Error reported opening files on DPDK initialization
355 ---------------------------------------------------
356
357 **Description**:
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.
361
362 **Implication**:
363    The DPDK application may fail to run.
364
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.
368
369 **Affected Environment/Platform**:
370    All.
371
372 **Driver/Module**:
373    Environment Abstraction Layer (EAL).
374
375
376 Intel® QuickAssist Technology sample application does not work on a 32-bit OS on Shumway
377 ----------------------------------------------------------------------------------------
378
379 **Description**:
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.
382
383 **Implication**:
384    The sample application cannot work in 32-bit mode with emulated NUMA, on multi-socket boards.
385
386 **Resolution/Workaround**:
387    There is no workaround available.
388
389 **Affected Environment/Platform**:
390    Shumway
391
392 **Driver/Module**:
393    All.
394
395
396 Differences in how different Intel NICs handle maximum packet length for jumbo frame
397 ------------------------------------------------------------------------------------
398
399 **Description**:
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.
402
403 **Implication**:
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.
407
408 **Resolution/Workaround**:
409    Increase the configured maximum packet size when using Intel Gigabit Ethernet devices.
410
411 **Affected Environment/Platform**:
412    All.
413
414 **Driver/Module**:
415    Poll Mode Driver (PMD).
416
417
418 Binding PCI devices to igb_uio fails on Linux kernel 3.9 when more than one device is used
419 ------------------------------------------------------------------------------------------
420
421 **Description**:
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.
424
425 **Implication**:
426    The Poll Mode Driver (PMD) will crash on initialization.
427
428 **Resolution/Workaround**:
429    Use earlier or later kernel versions, or apply the following
430    `patch  <https://github.com/torvalds/linux/commit/5ed0505c713805f89473cdc0bbfb5110dfd840cb>`_.
431
432 **Affected Environment/Platform**:
433    Linux systems with kernel version 3.9
434
435 **Driver/Module**:
436    igb_uio module
437
438
439 GCC might generate Intel® AVX instructions for processors without Intel® AVX support
440 ------------------------------------------------------------------------------------
441
442 **Description**:
443    When compiling DPDK (and any DPDK app), gcc may generate Intel® AVX instructions, even when the
444    processor does not support Intel® AVX.
445
446 **Implication**:
447    Any DPDK app might crash while starting up.
448
449 **Resolution/Workaround**:
450    Either compile using icc or set ``EXTRA_CFLAGS='-O3'`` prior to compilation.
451
452 **Affected Environment/Platform**:
453    Platforms which processor does not support Intel® AVX.
454
455 **Driver/Module**:
456    Environment Abstraction Layer (EAL).
457
458 Ethertype filter could receive other packets (non-assigned) in Niantic
459 ----------------------------------------------------------------------
460
461 **Description**:
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
464    equal to set value.
465    Launch the testpmd by disabling RSS and with multiply queues, then add the ethertype filter like the following
466    and then start forwarding::
467
468       add_ethertype_filter 0 ethertype 0x0806 priority enable 3 queue 2 index 1
469
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.
472
473 **Implication**:
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."
477
478 **Resolution/Workaround**:
479    None
480
481 **Affected Environment/Platform**:
482    All.
483
484 **Driver/Module**:
485    Poll Mode Driver (PMD).
486
487
488 Cannot set link speed on Intel® 40G Ethernet controller
489 -------------------------------------------------------
490
491 **Description**:
492    On Intel® 40G Ethernet Controller you cannot set the link to specific speed.
493
494 **Implication**:
495    The link speed cannot be changed forcibly, though it can be configured by application.
496
497 **Resolution/Workaround**:
498    None
499
500 **Affected Environment/Platform**:
501    All.
502
503 **Driver/Module**:
504    Poll Mode Driver (PMD).
505
506
507 Devices bound to igb_uio with VT-d enabled do not work on Linux kernel 3.15-3.17
508 --------------------------------------------------------------------------------
509
510 **Description**:
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>`_.
517
518 **Implication**:
519    Devices will not be allowed to access memory, resulting in following kernel errors::
520
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
524
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.
529
530 **Affected Environment/Platform**:
531    Linux systems with kernel versions 3.15 to 3.17.
532
533 **Driver/Module**:
534    ``igb_uio`` module.
535
536
537 VM power manager may not work on systems with more than 64 cores
538 ----------------------------------------------------------------
539
540 **Description**:
541    When using VM power manager on a system with more than 64 cores, VM(s) should not use cores 64 or higher.
542
543 **Implication**:
544    VM power manager should not be used with VM(s) that are using cores 64 or above.
545
546 **Resolution/Workaround**:
547    Do not use cores 64 or above.
548
549 **Affected Environment/Platform**:
550    Platforms with more than 64 cores.
551
552 **Driver/Module**:
553    VM power manager application.
554
555
556 DPDK may not build on some Intel CPUs using clang < 3.7.0
557 ---------------------------------------------------------
558
559 **Description**:
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.
562
563 **Implication**:
564    DPDK will not build when using a clang version < 3.7.0.
565
566 **Resolution/Workaround**:
567    Use clang 3.7.0 or higher, or gcc.
568
569 **Affected Environment/Platform**:
570    Platforms with Intel Broadwell/Skylake using an old clang version.
571
572 **Driver/Module**:
573    Environment Abstraction Layer (EAL).
574
575
576 The last EAL argument is replaced by the program name in argv[]
577 ---------------------------------------------------------------
578
579 **Description**:
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.
582
583 **Implication**:
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.
586
587 **Resolution/Workaround**:
588    An application should not consider the value in ``argv[]`` as unchanged.
589
590 **Affected Environment/Platform**:
591    ALL.
592
593 **Driver/Module**:
594    Environment Abstraction Layer (EAL).
595
596
597 I40e VF may not receive packets in the promiscuous mode
598 -------------------------------------------------------
599
600 **Description**:
601    Promiscuous mode is not supported by the DPDK i40e VF driver when using the
602    i40e Linux kernel driver as host driver.
603
604 **Implication**:
605    The i40e VF does not receive packets when the destination MAC address is unknown.
606
607 **Resolution/Workaround**:
608    Use a explicit destination MAC address that matches the VF.
609
610 **Affected Environment/Platform**:
611    All.
612
613 **Driver/Module**:
614    Poll Mode Driver (PMD).
615
616
617 uio pci generic module bind failed in X710/XL710/XXV710
618 -------------------------------------------------------
619
620 **Description**:
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.
626
627 **Implication**:
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>`_.
632
633 **Resolution/Workaround**:
634    Do not bind the ``uio_pci_generic`` module in X710/XL710/XXV710 NICs.
635
636 **Affected Environment/Platform**:
637    All.
638
639 **Driver/Module**:
640    Poll Mode Driver (PMD).
641
642
643 virtio tx_burst() function cannot do TSO on shared packets
644 ----------------------------------------------------------
645
646 **Description**:
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.
650
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
656    not be modified.
657
658 **Implication**:
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
661    data.
662
663 **Resolution/Workaround**:
664    The workaround in the application is to ensure that the network
665    headers in the packet data are not shared.
666
667 **Affected Environment/Platform**:
668    Virtual machines running a virtio driver.
669
670 **Driver/Module**:
671    Poll Mode Driver (PMD).
672
673
674 igb uio legacy mode can not be used in X710/XL710/XXV710
675 --------------------------------------------------------
676
677 **Description**:
678    X710/XL710/XXV710 NICs lack support for indicating INTx is asserted via the interrupt
679    bit in the PCI status register. Linux deleted 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>`_.
681
682 **Implication**:
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.
686
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.
690
691 **Affected Environment/Platform**:
692    ALL.
693
694 **Driver/Module**:
695    Poll Mode Driver (PMD).
696
697
698 igb_uio can not be used when running l3fwd-power
699 ------------------------------------------------
700
701 **Description**:
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.
705
706 **Implication**:
707    When insmod ``igb_uio`` and running l3fwd-power APP, link status getting doesn't work properly.
708
709 **Resolution/Workaround**:
710    Use vfio-pci when LSC and packet receiving interrupt enabled.
711
712 **Affected Environment/Platform**:
713    ALL.
714
715 **Driver/Module**:
716    ``igb_uio`` module.
717
718
719 Linux kernel 4.10.0 iommu attribute read error
720 ----------------------------------------------
721
722 **Description**:
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 commit a7fdb6e648fb
726    <https://patchwork.kernel.org/patch/9595727/>`_,
727    This bug is introduced in `Linux commit 39ab9555c241
728    <https://patchwork.kernel.org/patch/9554403/>`_,
729
730 **Implication**:
731    When binding devices to VFIO and attempting to run testpmd application,
732    testpmd (and other DPDK applications) will not initialize.
733
734 **Resolution/Workaround**:
735    Use other linux kernel version. It only happens in linux kernel 4.10.0.
736
737 **Affected Environment/Platform**:
738    ALL OS of linux kernel 4.10.0.
739
740 **Driver/Module**:
741    ``vfio-pci`` module.
742
743 Netvsc driver and application restart
744 -------------------------------------
745
746 **Description**:
747    The Linux kernel uio_hv_generic driver does not completely shutdown and clean up
748    resources properly if application using Netvsc PMD exits.
749
750 **Implication**:
751    When application using Netvsc PMD is restarted it can not complete initialization
752    handshake sequence with the host.
753
754 **Resolution/Workaround**:
755    Either reboot the guest or remove and reinsert the hv_uio_generic module.
756
757 **Affected Environment/Platform**:
758    Linux Hyper-V.
759
760 **Driver/Module**:
761    ``uio_hv_generic`` module.
762
763
764 PHY link up fails when rebinding i40e NICs to kernel driver
765 -----------------------------------------------------------
766
767 **Description**:
768    Some kernel drivers are not able to handle the link status correctly
769    after DPDK application sets the PHY to link down.
770
771 **Implication**:
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.
780
781 **Resolution/Workaround**:
782    First try to remove and reinsert the i40e kernel driver. If that fails
783    reboot the system.
784
785 **Affected Environment/Platform**:
786    All.
787
788 **Driver/Module**:
789    Poll Mode Driver (PMD).
790
791
792 Restricted vdev ethdev operations supported in secondary process
793 ----------------------------------------------------------------
794 **Description**
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.
798
799 **Implication**
800    Some Ethernet device operations like device start/stop will be failed on virtual
801    device in secondary process.
802
803 **Affected Environment/Platform**:
804    ALL.
805
806 **Driver/Module**:
807    Virtual Device Poll Mode Driver (PMD).
808
809
810 Kernel crash when hot-unplug igb_uio device while DPDK application is running
811 -----------------------------------------------------------------------------
812
813 **Description**:
814    When device has been bound to igb_uio driver and application is running,
815    hot-unplugging the device may cause kernel crash.
816
817 **Reason**:
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.
820
821 **Resolution/Workaround**:
822    If using DPDK for PCI HW hot-unplug, prefer to bind device with VFIO instead of IGB_UIO.
823
824 **Affected Environment/Platform**:
825     ALL.
826
827 **Driver/Module**:
828    ``igb_uio`` module.
829
830
831 AVX-512 support disabled
832 ------------------------
833
834 **Description**:
835    ``AVX-512`` support has been disabled on some conditions.
836    This shouldn't be confused with ``CONFIG_RTE_ENABLE_AVX512`` config option which is already
837    disabled by default. This config option defines if ``AVX-512`` specific implementations of
838    some file to be used or not. What has been disabled is compiler feature to produce ``AVX-512``
839    instructions from any source code.
840
841    On DPDK v18.11 ``AVX-512`` is disabled for all ``GCC`` builds which reported to cause a performance
842    drop.
843
844    On DPDK v19.02 ``AVX-512`` disable scope is reduced to ``GCC`` and ``binutils version 2.30`` based
845    on information accrued from the GCC community defect.
846
847 **Reason**:
848    Generated ``AVX-512`` code cause crash:
849    https://bugs.dpdk.org/show_bug.cgi?id=97
850    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88096
851
852 **Resolution/Workaround**:
853    * Update ``binutils`` to newer version than ``2.30``.
854
855    OR
856
857    * Use different compiler, like ``clang`` for this case.
858
859 **Affected Environment/Platform**:
860     ``GCC`` and ``binutils version 2.30``.
861
862 **Driver/Module**:
863     ALL.
864
865
866 Unsuitable IOVA mode may be picked as the default
867 -------------------------------------------------
868
869 **Description**
870    Not all kernel drivers and not all devices support all IOVA modes. EAL will
871    attempt to pick a reasonable default based on a number of factors, but there
872    may be cases where the default may be unsuitable (for example, hotplugging
873    devices using `igb_uio` driver while having picked IOVA as VA mode on EAL
874    initialization).
875
876 **Implication**
877    Some devices (hotplugged or otherwise) may not work due to incompatible IOVA
878    mode being automatically picked by EAL.
879
880 **Resolution/Workaround**:
881    It is possible to force EAL to pick a particular IOVA mode by using the
882    `--iova-mode` command-line parameter. If conflicting requirements are present
883    (such as one device requiring IOVA as PA and one requiring IOVA as VA mode),
884    there is no workaround.
885
886 **Affected Environment/Platform**:
887    Linux.
888
889 **Driver/Module**:
890    ALL.