26/04/2020 20:41, Jerin Jacob: > On Sun, Apr 26, 2020 at 11:38 PM Thomas Monjalon <tho...@monjalon.net> wrote: > > > > 26/04/2020 19:38, jer...@marvell.com: > > > From: Jerin Jacob <jer...@marvell.com> > > > > > > If the PCI device is not attached to any driver then there is no > > > point in probing it. As an optimization, skip the PCI device probe if > > > the PCI device driver of type RTE_KDRV_NONE. > > > > > > Signed-off-by: Jerin Jacob <jer...@marvell.com> > > > --- > > > Notes: > > > ------ > > > - virtio drivers does special treatment based on RTE_KDRV_UNKNOWN, That is > > > the reason allowing RTE_KDRV_UNKNOWN in this patch. > > > - virio devices uses RTE_KDRV_UNKNOWN for some special meaning, IMO, if > > > it would > > > be better, if > > > a) Introduce the KDRV for virio > > > b) If the PCIe device of driver type NONE or UNKNOWN then not even add in > > > pci > > > list > > > in the scan, It will improve the boot time by avoiding operation on > > > unwanted device like sorting the PCI devices, scanning it, probe it, > > > managing > > > it etc. > > > > mlx4/mlx4 uses RTE_KDRV_UNKNOWN. > > OK. > > > > - Initial problem reported at http://patches.dpdk.org/patch/64999/ as > > > boot time printf clutter on octeontx2 devices with a lot PCI devices > > > which are > > > of type RTE_KDRV_NONE. > > > > Add a logtype for PCI driver and adjust log level accordingly > > to your preferences. > > > > > @@ -271,6 +271,8 @@ pci_probe_all_drivers(struct rte_pci_device *dev) > > > FOREACH_DRIVER_ON_PCIBUS(dr) { > > > + if (dev->kdrv == RTE_KDRV_NONE) > > > + continue; > > > rc = rte_pci_probe_one_driver(dr, dev); > > > > Nack > > I understand mlx4/mlx5 is using RTE_KDRV_UNKNOWN, Here we are skipping > the RTE_KDRV_NONE, > What is the use case for probing the devices with RTE_KDRV_NONE?
Maybe you are right. I don't remember the use case. I think I remember these virtio and vmxnet3 PMD were not using UIO: http://git.dpdk.org/old/virtio-net-pmd/tree/virtio_user.c http://git.dpdk.org/old/vmxnet3-usermap/tree/pmd/vmxnet3.c We need to know which case is using following code: case RTE_KDRV_NONE: #if defined(RTE_ARCH_X86) ret = pci_ioport_map(dev, bar, p); #endif break; David, please could you refresh our memory?