[dpdk-dev] [PATCH v3 18/28] eal/pci: Prevent double registrations for pci_device_list

Qiu, Michael michael.qiu at intel.com
Thu Dec 11 04:24:02 CET 2014


If you modify one function, make sure all places, where call the
function, have been modified accordingly in same patch.

Please do not split it.  Because we must make sure every patch could
make dpdk work( I think without this patch, it will have some issue
after you applied "Replace pci address comparison code by
eal_compare_pci_addr").

What's more, with your patch set, if someone wants to find out the
commit, which result  in bugs or issues, use git bisect, it may be fail
by your patch, although it's none of your patch's business.

So please merge this patch to
[PATCH v3 03/28] eal/pci: Replace pci address comparison code by
eal_compare_pci_addr

If other patch, I missed, with the same issue, please take same action.

Thanks,
Michael
On 12/9/2014 2:33 PM, Tetsuya Mukawa wrote:
> The patch fixes pci_scan_one() not to register same pci devices twice.
>
> Signed-off-by: Tetsuya Mukawa <mukawa at igel.co.jp>
> ---
>  lib/librte_eal/linuxapp/eal/eal_pci.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c
> index fe212d1..355c858 100644
> --- a/lib/librte_eal/linuxapp/eal/eal_pci.c
> +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c
> @@ -306,14 +306,17 @@ pci_scan_one(const char *dirname, uint16_t domain, uint8_t bus,
>  	}
>  	else {
>  		struct rte_pci_device *dev2 = NULL;
> +		int ret;
>  
>  		TAILQ_FOREACH(dev2, &pci_device_list, next) {
> -			if (eal_compare_pci_addr(&dev->addr, &dev2->addr) != 0)
> +			ret = eal_compare_pci_addr(&dev->addr, &dev2->addr);
> +			if (ret > 0)
>  				continue;
> -			else {
> +			else if (ret < 0) {
>  				TAILQ_INSERT_BEFORE(dev2, dev, next);
>  				return 0;
> -			}
> +			} else	/* already registered */
> +				return 0;
>  		}
>  		TAILQ_INSERT_TAIL(&pci_device_list, dev, next);
>  	}



More information about the dev mailing list