As a sanity test, running lastest DPDK testpmd with valgrind (on x86). One concern is that the PCI code appears to be looking at flags in the PCI device (not from the driver) which are not initialized.
The probe logic is a confusing, any recommendation on best fix? ==1695615== Command: build/app/dpdk-testpmd --log-level=debug --log-level=eal:debug -c 1 ==1695615== EAL: Detected 16 lcore(s) EAL: Detected 1 NUMA nodes EAL: Detected static linkage of DPDK EAL: Multi-process socket /var/run/dpdk/rte/mp_socket ==1695615== Conditional jump or move depends on uninitialised value(s) ==1695615== at 0xCF7929: rte_pci_get_iommu_class (pci_common.c:666) ==1695615== by 0xCAC89C: rte_bus_get_iommu_class (eal_common_bus.c:214) ==1695615== by 0xCC8878: rte_eal_init (eal.c:1084) ==1695615== by 0x4ED5E4: main (testpmd.c:3809) ==1695615== ==1695615== Conditional jump or move depends on uninitialised value(s) ==1695615== at 0xCF79BB: rte_pci_get_iommu_class (pci_common.c:666) ==1695615== by 0xCAC89C: rte_bus_get_iommu_class (eal_common_bus.c:214) ==1695615== by 0xCC8878: rte_eal_init (eal.c:1084) ==1695615== by 0x4ED5E4: main (testpmd.c:3809) ==1695615== EAL: Selected IOVA mode 'PA' EAL: No available 1048576 kB hugepages reported ==1695615== Warning: set address range perms: large range [0x100200000, 0x500400000) (noaccess) ==1695615== Warning: set address range perms: large range [0x500400000, 0x900600000) (noaccess) ==1695615== Warning: set address range perms: large range [0x900600000, 0xd00800000) (noaccess) ==1695615== Warning: set address range perms: large range [0x1010859000, 0x1410a59000) (noaccess) ==1695615== Warning: set address range perms: large range [0x1010859000, 0x1410a59000) (noaccess) ==1695615== Warning: set address range perms: large range [0x1010859000, 0x1410a59000) (noaccess) ==1695615== Warning: set address range perms: large range [0x1010859000, 0x1410a59000) (noaccess) ==1695615== Warning: set address range perms: large range [0x1010859000, 0x1410a59000) (noaccess) ==1695615== Warning: set address range perms: large range [0x1010859000, 0x1410a59000) (noaccess) ==1695615== Warning: set address range perms: large range [0x1010859000, 0x1410a59000) (noaccess) ==1695615== Warning: set address range perms: large range [0x1010859000, 0x1410a59000) (noaccess) ==1695615== Warning: set address range perms: large range [0x1010859000, 0x1410a59000) (noaccess) ==1695615== Warning: set address range perms: large range [0x1010859000, 0x1410a59000) (noaccess) ==1695615== Warning: set address range perms: large range [0x1010859000, 0x1410a59000) (noaccess) EAL: WARNING! Base virtual address hint (0xd01061000 != 0x1010a00000) not respected! EAL: This may cause issues with mapping memory into secondary processes ==1695615== Conditional jump or move depends on uninitialised value(s) ==1695615== at 0xCF91C9: pci_device_iova_mode (pci.c:611) ==1695615== by 0x2F498D: rte_pci_probe_one_driver (pci_common.c:219) ==1695615== by 0x2F498D: pci_probe_all_drivers (pci_common.c:321) ==1695615== by 0x2F498D: pci_probe.cold (pci_common.c:348) ==1695615== by 0xCAC692: rte_bus_probe (eal_common_bus.c:72) ==1695615== by 0x2EC82F: rte_eal_init.cold (eal.c:1291) ==1695615== by 0x4ED5E4: main (testpmd.c:3809) ==1695615== ==1695615== Conditional jump or move depends on uninitialised value(s) ==1695615== at 0xCF91D1: pci_device_iova_mode (pci.c:611) ==1695615== by 0x2F498D: rte_pci_probe_one_driver (pci_common.c:219) ==1695615== by 0x2F498D: pci_probe_all_drivers (pci_common.c:321) ==1695615== by 0x2F498D: pci_probe.cold (pci_common.c:348) ==1695615== by 0xCAC692: rte_bus_probe (eal_common_bus.c:72) ==1695615== by 0x2EC82F: rte_eal_init.cold (eal.c:1291) ==1695615== by 0x4ED5E4: main (testpmd.c:3809) ==1695615== ==1695615== Conditional jump or move depends on uninitialised value(s) ==1695615== at 0xCF873D: rte_pci_map_device (pci.c:66) ==1695615== by 0x2F49B8: rte_pci_probe_one_driver (pci_common.c:234) ==1695615== by 0x2F49B8: pci_probe_all_drivers (pci_common.c:321) ==1695615== by 0x2F49B8: pci_probe.cold (pci_common.c:348) ==1695615== by 0xCAC692: rte_bus_probe (eal_common_bus.c:72) ==1695615== by 0x2EC82F: rte_eal_init.cold (eal.c:1291) ==1695615== by 0x4ED5E4: main (testpmd.c:3809) ==1695615==