[dpdk-dev] [PATCH v9 09/10] bus/pci: support Windows with bifurcated drivers

Tal Shnaiderman talshn at mellanox.com
Sun Jun 28 14:10:07 CEST 2020


> From: Narcisa Ana Maria Vasile <navasile at linux.microsoft.com>
> On Wed, Jun 24, 2020 at 11:28:46AM +0300, talshn at mellanox.com wrote:
> > From: Tal Shnaiderman <talshn at mellanox.com>
> >
> > Uses SetupAPI.h functions to scan PCI tree.
> > Uses DEVPKEY_Device_Numa_Node to get the PCI NUMA node.
> > Uses SPDRP_BUSNUMBER and SPDRP_BUSNUMBER to get the BDF.
> > scanning currently supports types RTE_KDRV_NONE.
> >
> > Signed-off-by: Tal Shnaiderman <talshn at mellanox.com>
> > ---
> >  drivers/bus/pci/windows/pci.c                | 263
> ++++++++++++++++++++++++++-
> >  lib/librte_eal/rte_eal_exports.def           |   1 +
> >  lib/librte_eal/windows/include/rte_windows.h |   1 +
> >  3 files changed, 261 insertions(+), 4 deletions(-)
> >
> >  int
> >  rte_pci_scan(void)
> >  {
> > -	return 0;
> > +	int   ret = -1;
> > +	DWORD device_index = 0, found_device = 0;
> > +	HDEVINFO dev_info;
> > +	SP_DEVINFO_DATA device_info_data;
> > +
> > +	/* for debug purposes, PCI can be disabled */
> > +	if (!rte_eal_has_pci())
> > +		return 0;
> > +
> > +	dev_info = SetupDiGetClassDevs(&GUID_DEVCLASS_NET,
> TEXT("PCI"), NULL,
> > +				DIGCF_PRESENT);
> 
> Should we search for PCI devices by all classes to account for future support
> of drivers that are not part of the the Net class (e.g. netuio driver)? E.g.:
> SetupDiGetClassDevs(NULL, TEXT("PCI"), NULL, DIGCF_PRESENT |
> DIGCF_ALLCLASSES);
> 
> Alternatively, since this patchset supports only RTE_KDRV_NONE, we can
> change it when introducing support for other types.
> 

I'd go with adding it when needed, since the netuio driver addition to bus/pci is being worked on.

> > +	if (dev_info == INVALID_HANDLE_VALUE) {
> > +		RTE_LOG_WIN32_ERR("SetupDiGetClassDevs(pci_scan)");
> > +		RTE_LOG(ERR, EAL, "Unable to enumerate PCI devices.\n");
> > +		goto end;
> > +


More information about the dev mailing list