[dpdk-dev] [PATCH v9 09/10] bus/pci: support Windows with bifurcated drivers
Narcisa Ana Maria Vasile
navasile at linux.microsoft.com
Sat Jun 27 03:46:53 CEST 2020
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.
> + 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