On Thu, May 12, 2022 at 11:46 AM Heinrich Schuchardt <heinrich.schucha...@canonical.com> wrote: <snip> > The above failures for performance tests without a bound NIC can be > reproduced on x86_64. So this is not RISC-V specific. > > With both ports of an Intel Corporation Ethernet Controller 10-Gigabit > X540-AT2 bound to the sfio-pci driver some fast tests fail on the > Unmatched board: > > 16/173 DPDK:fast-tests / eal_flags_n_opt_autotest FAIL 5.54s (exit > status 255 or signal 127 SIGinvalid) > >>> DPDK_TEST=eal_flags_n_opt_autotest MALLOC_PERTURB_=31 > build/app/test/dpdk-test --file-prefix=eal_flags_n_opt_autotest > 18/173 DPDK:fast-tests / eal_flags_no_huge_autotest FAIL 5.31s (exit > status 255 or signal 127 SIGinvalid) > >>> DPDK_TEST=eal_flags_no_huge_autotest MALLOC_PERTURB_=150 > build/app/test/dpdk-test --file-prefix=eal_flags_no_huge_autotest > 21/173 DPDK:fast-tests / eal_flags_vdev_opt_autotest FAIL 5.38s (exit > status 255 or signal 127 SIGinvalid) > >>> MALLOC_PERTURB_=71 DPDK_TEST=eal_flags_vdev_opt_autotest > build/app/test/dpdk-test --file-prefix=eal_flags_vdev_opt_autotest > 25/173 DPDK:fast-tests / eal_flags_misc_autotest FAIL 5.58s (exit > status 255 or signal 127 SIGinvalid) > >>> DPDK_TEST=eal_flags_misc_autotest MALLOC_PERTURB_=130 > build/app/test/dpdk-test --file-prefix=eal_flags_misc_autotest > > The eal* tests succeed on x86_64 with a bound Intel I211 NIC. The common element of those tests is --no-huge flag. The reason why they are failing is a combination of --no-huge and a lack of IOMMU (VT-d on Intel). Lack of IOMMU means that DMA will be done using physical addresses (RTE_IOVA_PA), however that implicitly requires hugepages to function. More details are in [1]. That mail also shows how to replicate the same issue on x86 even without a device bound to UIO. The following fails: $ ./app/test/dpdk-test --iova-mode=pa --no-huge But this works: sudo ./app/test/dpdk-test --iova-mode=pa However fixing it is not as straightforward as I thought (some tests are not run where they should - [3]). As I explain in [2], the PCI bus probing may force RTE_IOVA_PA on no-IOMMU platforms. That gives the same effect as passing `--iova-mode=pa`. If no PCI device is bound, then DPDK will be in RTE_IOVA_DC mode and that works just fine with --no-huge.
As DPDK CI does not bind any device for fast-tests I've concluded that it is the way those tests should be run. If not then I'm not sure how should I handle --iova-mode=pa + --no-huge in general. Any suggestions? [1] http://mails.dpdk.org/archives/dev/2021-June/210773.html [2] http://mails.dpdk.org/archives/dev/2021-June/211146.html [3] https://patches.dpdk.org/project/dpdk/patch/20210604141601.275430-4-...@semihalf.com/ > > If the eal* tests are run depends on the installed Linux packages. I > have used 'apt build-dep dpdk' on Ubuntu Jammy to install prerequisite > packages before building DPDK. > > Best regards > > Heinrich >