[dpdk-dev] [PATCH 7/7] bus/pci: support Windows with bifurcated drivers
Tal Shnaiderman
talshn at mellanox.com
Tue Apr 28 10:11:49 CEST 2020
> Subject: Re: [dpdk-dev] [PATCH 7/7] bus/pci: support Windows with
> bifurcated drivers
>
> On Wed, Apr 22, 2020 at 10:27:47AM +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.
> > scanning currently supports types RTE_KDRV_NONE.
> >
> > Signed-off-by: Tal Shnaiderman <talshn at mellanox.com>
> > ---
> > drivers/bus/pci/windows/pci.c | 342
> ++++++++++++++++++++++++++-
> > lib/librte_eal/rte_eal_exports.def | 1 +
> > lib/librte_eal/windows/include/rte_windows.h | 1 +
> > 3 files changed, 342 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/bus/pci/windows/pci.c
> > b/drivers/bus/pci/windows/pci.c index 7eff39173..d5ee938fa 100644
> > --- a/drivers/bus/pci/windows/pci.c
> > +++ b/drivers/bus/pci/windows/pci.c
> > @@ -1,14 +1,24 @@
> > /* SPDX-License-Identifier: BSD-3-Clause
> > * Copyright 2020 Mellanox Technologies, Ltd
> > */
> > +
> > +static
> > +int get_device_resource_info(HDEVINFO hDevInfo,
> > + PSP_DEVINFO_DATA pDeviceInfoData , struct rte_pci_device *dev) {
> > + int ret = -1;
> > + DEVPROPTYPE uPropertyType;
> > + DWORD uNumaNode;
> > + BOOL bResult;
> > +
> > + switch (dev->kdrv) {
> > + case RTE_KDRV_NONE:
> > + /* Get NUMA node using DEVPKEY_Device_Numa_Node */
> > + bResult = SetupDiGetDevicePropertyW(hDevInfo,
> pDeviceInfoData,
> > + &DEVPKEY_Device_Numa_Node, &uPropertyType,
> > + (BYTE *)&uNumaNode, sizeof(uNumaNode), NULL,
> 0);
> > + if (!bResult) {
> > + ret = GetLastError();
> > + break;
>
> Here 'ret' is correctly set to an error code, but after breaking out of the
> switch, it is overwritten to ERROR_SUCCESS.
> Maybe 'goto end' instead of 'break'.
>
> > + }
> > + dev->device.numa_node = uNumaNode;
> > + /* mem_resource - Uneeded for RTE_KDRV_NONE */
> > + dev->mem_resource[0].phys_addr = 0;
> > + dev->mem_resource[0].len = 0;
> > + dev->mem_resource[0].addr = NULL;
> > + break;
> > + default:
> > + ret = -1;
>
> Same thing here, ret is overwritten after breaking from the switch.
Agreed, I'll fix both in v2, thank you.
>
> > + break;
> > + }
> > +
> > + ret = ERROR_SUCCESS;
> > +end:
> > + return ret;
> > +}
> > +
> > +
> > +/*
More information about the dev
mailing list