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