From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 95F0EA04B4;
	Sat,  2 May 2020 09:20:54 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id D6BB21D951;
	Sat,  2 May 2020 09:20:53 +0200 (CEST)
Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com
 [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id CFE841D6EB
 for <dev@dpdk.org>; Sat,  2 May 2020 09:20:51 +0200 (CEST)
Received: from pps.filterd (m0045849.ppops.net [127.0.0.1])
 by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id
 0427GlUB017972; Sat, 2 May 2020 00:20:50 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;
 h=from : to : cc :
 subject : date : message-id : references : in-reply-to : content-type :
 content-transfer-encoding : mime-version; s=pfpt0818;
 bh=MNqcVUEFRV8nPnKW2qyvp8WMiaErHSxhC4kQjyG4XXk=;
 b=l6Oi8+WVAof2/iF864Shau98qR+/OOW+NDl5VW613oKRDz+6Y0CApJQscMdudUYR+WMm
 q0NOQYGydevoKypc6T0xJFLVy+aiIbPxfHhdS0ukQvJYTJEl0C/K4tZF1mI9gFGWmxJJ
 FmVO+F7DBvMOatR6kLfF0KEyGG9T2iSjm1lepF6GmenbI8rAi8dtLRJfS5QTMkf/GQi+
 HDgSN//D0WpDyIb/LjJOP1KAmjZrUGYbyrLjKuNwvwVUAh+S6RrLMDTI3M0hMMwJynoJ
 qQnP62FsC+NkMrMsANZS1Lo3MmHSiktNLf4EglzAXzkJXjLYzQyzW4IYjvVlUHZPqywP 3Q== 
Received: from sc-exch01.marvell.com ([199.233.58.181])
 by mx0a-0016f401.pphosted.com with ESMTP id 30r7em6emp-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);
 Sat, 02 May 2020 00:20:50 -0700
Received: from SC-EXCH02.marvell.com (10.93.176.82) by SC-EXCH01.marvell.com
 (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sat, 2 May
 2020 00:20:48 -0700
Received: from NAM02-BL2-obe.outbound.protection.outlook.com (104.47.38.57) by
 SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server
 (TLS) id
 15.0.1497.2 via Frontend Transport; Sat, 2 May 2020 00:20:48 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=J+/MmWlo+OEoGN3PyTWnHWe1wCrgpjGVn3J7hFplzAzffGTPI3jitwiOAYOeAgqWij5ejK9fxBiMQCiy49C9ylvKxTEd+QlNAqzW6cClsWm+MP3Q2XKY+X2Po94RxgXs50pvaMCdVJ7nerQDVcZkw6Mm1wj3LCQuuNpw7VCUuz/B4Mjto0RRj92SuSXb7ZHsqPnnZpcmYqVCFwCreWSyvs772FcTGqDku9Uibm389nlmuXkpWg51VV/hCu5GFa+61wicxpYMuepj5TvlT85mp/d7VFiE/dvWqOwluZiWFK1r1myzJZ3OaLLn7RP816+XZFRHdSd+ewMlL28zu3shEw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=MNqcVUEFRV8nPnKW2qyvp8WMiaErHSxhC4kQjyG4XXk=;
 b=DLRprmdvc8i1W4VD7rp0ruDjJ+V75M5M/9FJFPaE62TWPcz/KzVgT1lg7COjWdL5n+M40CB17SVB1VqZvZAB1vU8C1EZqTGnAJK+yBFkej5GgvY+Gkb+LDmNHFXOf6TrHi+3sp6kaqDZ85s/kvywLoajXsF4AT7yp5+NnrlsRnPtLseAhXs3ElWfusFwy1pReFD0tM9TY4RFnXbRlle1JbD4XR6hnFT6MnOMwP0nI989xdmHAh2VXhiuvFadSqy5bYvt1Aj/o6MLraLv9AaBQxSezl9Ak2MJkLW1SVIbnxMQea3sAsur3k7UFUnAXZOWPKninlpDjznCgTWGc6ZQag==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com;
 dkim=pass header.d=marvell.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=MNqcVUEFRV8nPnKW2qyvp8WMiaErHSxhC4kQjyG4XXk=;
 b=PPI4GDMHViVSB5AcbRWTcHBI/LyAwuSsdkrsYCTQm4cQNnOvJVPPdvievlyFFhoj94lPaLjacVsPry/OHiZJz9FbZ08ozvazcLZgur/kVpEoemT2TTIDCmBj7pvYKXDx8NBQ8KleUe3nUXkzjdQ3YFpiA73oplOo6tVKVs5JX4A=
Received: from BY5PR18MB3105.namprd18.prod.outlook.com (2603:10b6:a03:1a4::30)
 by BY5PR18MB3089.namprd18.prod.outlook.com (2603:10b6:a03:1aa::29)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2958.21; Sat, 2 May
 2020 07:20:47 +0000
Received: from BY5PR18MB3105.namprd18.prod.outlook.com
 ([fe80::cc6:c7ae:dc40:7ddf]) by BY5PR18MB3105.namprd18.prod.outlook.com
 ([fe80::cc6:c7ae:dc40:7ddf%7]) with mapi id 15.20.2958.027; Sat, 2 May 2020
 07:20:46 +0000
From: Sunil Kumar Kori <skori@marvell.com>
To: =?iso-8859-1?Q?Ga=EBtan_Rivet?= <grive@u256.net>
CC: "stephen@networkplumber.org" <stephen@networkplumber.org>,
 "david.marchand@redhat.com" <david.marchand@redhat.com>, "Jerin Jacob
 Kollanukkaran" <jerinj@marvell.com>, "dev@dpdk.org" <dev@dpdk.org>
Thread-Topic: [EXT] Re: [PATCH v4 1/1] bus/pci: optimise scanning with
 whitelist/blacklist
Thread-Index: AQHWH60omhEuboyrCUS2WGMzBXc5aqiTt7YAgACs6AA=
Date: Sat, 2 May 2020 07:20:46 +0000
Message-ID: <BY5PR18MB310538B2DA5D7F2968954F47B4A80@BY5PR18MB3105.namprd18.prod.outlook.com>
References: <20200420065554.20138-1-skori@marvell.com>
 <20200501113909.26355-1-skori@marvell.com>
 <20200501210013.hbkcm6pcsyxscyvc@u256.net>
In-Reply-To: <20200501210013.hbkcm6pcsyxscyvc@u256.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
authentication-results: u256.net; dkim=none (message not signed)
 header.d=none;u256.net; dmarc=none action=none header.from=marvell.com;
x-originating-ip: [2401:4900:44e0:ed34:845c:7a64:b8c7:9606]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: e5f8da16-1bd6-4e2d-1848-08d7ee695578
x-ms-traffictypediagnostic: BY5PR18MB3089:
x-ms-exchange-transport-forked: True
x-microsoft-antispam-prvs: <BY5PR18MB30891EBFF9A9FB944380F37FB4A80@BY5PR18MB3089.namprd18.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:619;
x-forefront-prvs: 039178EF4A
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: VPESkt+ojLkOFqWaxJxPM9vUXjrstFcr1oRoArYlzwSBkW2NT9dKRKhsJM487bchTAeatX9qhVyZ+9x6k3lLwhgRWD4cKXex9F+KjCZpfIKdYKfgG9FIxK2W65NJxOXOh+kT1vIt/U5DSy0UTCvJ1qOMuMYl98l71GqWSdv/dm9AOkMwOLhshhvPIXL/M1zUtae8gtxugfth6L7LnMk8RlN4W+yZ5dm0dacs9ewkiH0WTjqlezzwbRQJVm2DME8n7edqpWTrTkKH3fP1S4xKwvTJflbOkM3iR6yZ7OKe364l3VS4LjUplenq7108X6qjGqAzm0do7bAelM1mkEMSkyXGeasLT9NcErSA3AVwlFYEXE0vi68riuf9SUp9CJ5aT/FG22CQHg2WpVuEKRS6L6mSmynUaitZkJdLQQBSFKYEincsFwZ6K8sD1JftjmB8
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:BY5PR18MB3105.namprd18.prod.outlook.com; PTR:; CAT:NONE;
 SFTY:;
 SFS:(4636009)(39850400004)(366004)(136003)(376002)(396003)(346002)(66446008)(64756008)(66946007)(66476007)(66556008)(76116006)(2906002)(71200400001)(8936002)(7696005)(6506007)(186003)(8676002)(52536014)(54906003)(33656002)(478600001)(86362001)(66574012)(4326008)(55016002)(9686003)(316002)(6916009)(5660300002);
 DIR:OUT; SFP:1101; 
x-ms-exchange-antispam-messagedata: sX3JqNujlcHjsniL36XvreVLjr84SfIHYApInxA1LNBuaoSumi8qFPQ+M1bzVXviIYy4lpiAMT0BGxkqZN8XVwM5yFGGg08d0nzyujzvJ0w9VxTs3q68v9SlhNvY5LilDk/H55ypihzo4I7eMeQz+HUwhMlzAdljfDn7kjsJ5SXND3o2aCEGatik2YY6NWlaM/6d3SqO6cbSA9umcNA6886h5fmboD15WczyBGPqdgXCPTypsMcJ+QggMdDPEH04a7wM8T2w0A64f1nN0bqX1cihpgFpibi7mZnPTwPDBwNprpyAL1yHyb6WMLdNMgADC2xD5ecsA+VYcjAirxmXBK8tQo9B0xUFszP5mDYZrrXp6MR4fjrpBZoTG8qbK+uWDwLW5a1xd74ZlFvLjAZeGKYNJih6s0rwRMznvZPA4ieIIDgqBS596z3tkX2vzexaAwPb/3IVPVOYRiAMamd6TgKGHh+RqTUtRhIMJLU5ob8nkBqwpVO4eGx0fiK3h6Y3PDKsR/QErDDfuwlSbRrfeXJO1f7je5L0MteKv3YdeFWRy5LeMdszaKLdFxB84fzY+zfIV9pQ6ug1NQG0HBW3QzjuhqaPfM50ExmjhyPDyJ/bJCAA+1GTUxTKg1A/T3uf9zkuFiupk9/qMs79A4lEYFVeMgYsiYuK1tZYvogqYiezhrfMVPX7M3qcCsRJwlO7sTnGhKWxA6/YWpiB01X1rexyUaJGyr6NG2wPRPXlfqaAucGTihvIlkd/9+2tuX6xnAF1WuCFxf2eeqnsQmmc4ZTn6o2B6ssNE6bK/6uRCFwITKF01EyhJEbwQL/bF4lCeyjhxnWonzOFVJ2jqQgsIXgDmeipSZuWcmaVpdVQooOeZHJPoNAn4JCG10dpRj71
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: e5f8da16-1bd6-4e2d-1848-08d7ee695578
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2020 07:20:46.7196 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: h3V1rcIbEy//dNfNjMpb+J28s+I8vRqFFzsnBQ6F6fEld20nI5t7bZvnc02yxiHeD/H3EmhRuk50Q6CRZUOEmQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR18MB3089
X-OriginatorOrg: marvell.com
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.676
 definitions=2020-05-02_03:2020-05-01,
 2020-05-02 signatures=0
Subject: Re: [dpdk-dev] [EXT] Re: [PATCH v4 1/1] bus/pci: optimise scanning
 with whitelist/blacklist
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

>-----Original Message-----
>From: Ga=EBtan Rivet <grive@u256.net>
>Sent: Saturday, May 2, 2020 2:30 AM
>To: Sunil Kumar Kori <skori@marvell.com>
>Cc: stephen@networkplumber.org; david.marchand@redhat.com; Jerin Jacob
>Kollanukkaran <jerinj@marvell.com>; dev@dpdk.org
>Subject: [EXT] Re: [PATCH v4 1/1] bus/pci: optimise scanning with
>whitelist/blacklist
>
>External Email
>
>----------------------------------------------------------------------
>Hello Sunil,
>
>It's pretty close, thanks. Unfortunately, I just have a few nits remaining=
.
>
>On 01/05/20 17:09 +0530, Sunil Kumar Kori wrote:
>> rte_bus_scan API scans all the available PCI devices irrespective of
>> white or black listing parameters then further devices are probed
>> based on white or black listing parameters. So unnecessary CPU cycles
>> are wasted during rte_pci_scan.
>>
>> For Octeontx2 platform with core frequency 2.4 Ghz, rte_bus_scan
>> consumes around 26ms to scan around 90 PCI devices but all may not be
>> used by the application. So for the application which uses 2 NICs,
>> rte_bus_scan consumes few microseconds and rest time is saved with this
>patch.
>>
>> Patch restricts devices to be scanned as per below mentioned conditions:
>>  - All devices will be scanned if no parameters are passed.
>>  - Only white listed devices will be scanned if white list is available.
>>  - All devices, except black listed, will be scanned if black list is
>>    available.
>>
>> Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
>> ---
>> v4:
>>  - Review comments incorporated (Gaeten and David).
>>  - Rebased on top of tree.
>> v3:
>>  - Remove __rte_experimental from private function.
>>  - Remove entry from map file too.
>> v2:
>>  - Added function to validate ignorance of device based on PCI address.
>>  - Marked device validation function as experimental.
>>
>>  drivers/bus/pci/bsd/pci.c    | 12 +++++++++++-
>>  drivers/bus/pci/linux/pci.c  |  3 +++  drivers/bus/pci/pci_common.c |
>> 33 ++++++++++++---------------------
>>  drivers/bus/pci/private.h    | 11 +++++++++++
>>  4 files changed, 37 insertions(+), 22 deletions(-)
>>
>> diff --git a/drivers/bus/pci/bsd/pci.c b/drivers/bus/pci/bsd/pci.c
>> index ebbfeb13a..709a1e7e5 100644
>> --- a/drivers/bus/pci/bsd/pci.c
>> +++ b/drivers/bus/pci/bsd/pci.c
>> @@ -338,6 +338,7 @@ rte_pci_scan(void)
>>  			.match_buf_len =3D sizeof(matches),
>>  			.matches =3D &matches[0],
>>  	};
>> +	struct rte_pci_addr pci_addr;
>>
>>  	/* for debug purposes, PCI can be disabled */
>>  	if (!rte_eal_has_pci())
>> @@ -357,9 +358,18 @@ rte_pci_scan(void)
>>  			goto error;
>>  		}
>>
>> -		for (i =3D 0; i < conf_io.num_matches; i++)
>> +		for (i =3D 0; i < conf_io.num_matches; i++) {
>> +			pci_addr.domain =3D matches[i].pc_sel.pc_domain;
>> +			pci_addr.bus =3D matches[i].pc_sel.pc_bus;
>> +			pci_addr.devid =3D matches[i].pc_sel.pc_dev;
>> +			pci_addr.function =3D matches[i].pc_sel.pc_func;
>> +
>> +			if (rte_pci_ignore_device_addr(&pci_addr))
>> +				continue;
>> +
>>  			if (pci_scan_one(fd, &matches[i]) < 0)
>>  				goto error;
>> +		}
>>
>>  		dev_count +=3D conf_io.num_matches;
>>  	} while(conf_io.status =3D=3D PCI_GETCONF_MORE_DEVS); diff --git
>> a/drivers/bus/pci/linux/pci.c b/drivers/bus/pci/linux/pci.c index
>> ca783b157..ec347eff3 100644
>> --- a/drivers/bus/pci/linux/pci.c
>> +++ b/drivers/bus/pci/linux/pci.c
>> @@ -487,6 +487,9 @@ rte_pci_scan(void)
>>  		if (parse_pci_addr_format(e->d_name, sizeof(e->d_name),
>&addr) !=3D 0)
>>  			continue;
>>
>> +		if (rte_pci_ignore_device_addr(&addr))
>> +			continue;
>> +
>>  		snprintf(dirname, sizeof(dirname), "%s/%s",
>>  				rte_pci_get_sysfs_path(), e->d_name);
>>
>> diff --git a/drivers/bus/pci/pci_common.c
>> b/drivers/bus/pci/pci_common.c index 3f5542076..d34e59536 100644
>> --- a/drivers/bus/pci/pci_common.c
>> +++ b/drivers/bus/pci/pci_common.c
>> @@ -42,14 +42,17 @@ const char *rte_pci_get_sysfs_path(void)
>>  	return path;
>>  }
>>
>> -static struct rte_devargs *pci_devargs_lookup(struct rte_pci_device
>> *dev)
>> +static struct rte_devargs *
>> +pci_devargs_lookup(const struct rte_pci_addr *pci_addr)
>>  {
>>  	struct rte_devargs *devargs;
>>  	struct rte_pci_addr addr;
>>
>>  	RTE_EAL_DEVARGS_FOREACH("pci", devargs) {
>> -		devargs->bus->parse(devargs->name, &addr);
>> -		if (!rte_pci_addr_cmp(&dev->addr, &addr))
>> +		if (rte_pci_addr_parse(devargs->name, &addr) < 0)
>> +			continue;
>> +
>> +		if (!rte_pci_addr_cmp(pci_addr, &addr))
>
>I'm really sorry, I was overzealous on your v4. I thought using
>devargs->bus->parse() was from your patch, but it was already there.
>
>It's even more shameful as it was me who wrote this.
>
>Anyway, it's much better looking this way, but it should be a separate pat=
ch.
>
No problem. I will revert this change to its original state and later will =
share separate
Patch to replace devargs->bus->parse.

>>  			return devargs;
>>  	}
>>  	return NULL;
>> @@ -63,7 +66,7 @@ pci_name_set(struct rte_pci_device *dev)
>>  	/* Each device has its internal, canonical name set. */
>>  	rte_pci_device_name(&dev->addr,
>>  			dev->name, sizeof(dev->name));
>> -	devargs =3D pci_devargs_lookup(dev);
>> +	devargs =3D pci_devargs_lookup(&dev->addr);
>>  	dev->device.devargs =3D devargs;
>>  	/* In blacklist mode, if the device is not blacklisted, no
>>  	 * rte_devargs exists for it.
>> @@ -293,23 +296,12 @@ rte_pci_probe(void)  {
>>  	struct rte_pci_device *dev =3D NULL;
>>  	size_t probed =3D 0, failed =3D 0;
>> -	struct rte_devargs *devargs;
>> -	int probe_all =3D 0;
>>  	int ret =3D 0;
>>
>> -	if (rte_pci_bus.bus.conf.scan_mode !=3D RTE_BUS_SCAN_WHITELIST)
>> -		probe_all =3D 1;
>> -
>>  	FOREACH_DEVICE_ON_PCIBUS(dev) {
>>  		probed++;
>>
>> -		devargs =3D dev->device.devargs;
>> -		/* probe all or only whitelisted devices */
>> -		if (probe_all)
>> -			ret =3D pci_probe_all_drivers(dev);
>> -		else if (devargs !=3D NULL &&
>> -			devargs->policy =3D=3D RTE_DEV_WHITELISTED)
>> -			ret =3D pci_probe_all_drivers(dev);
>> +		ret =3D pci_probe_all_drivers(dev);
>>  		if (ret < 0) {
>>  			if (ret !=3D -EEXIST) {
>>  				RTE_LOG(ERR, EAL, "Requested device "
>> @@ -589,10 +581,10 @@ pci_dma_unmap(struct rte_device *dev, void
>*addr, uint64_t iova, size_t len)
>>  	return -1;
>>  }
>>
>> -static bool
>> -pci_ignore_device(const struct rte_pci_device *dev)
>> +bool
>> +rte_pci_ignore_device_addr(const struct rte_pci_addr *pci_addr)
>
>I'd prefer naming this function rte_pci_ignore_device(), given that
>pci_ignore_device() disappears.
>
Ack.

>>  {
>> -	struct rte_devargs *devargs =3D dev->device.devargs;
>> +	struct rte_devargs *devargs =3D pci_devargs_lookup(pci_addr);
>>
>>  	switch (rte_pci_bus.bus.conf.scan_mode) {
>>  	case RTE_BUS_SCAN_WHITELIST:
>> @@ -627,8 +619,7 @@ rte_pci_get_iommu_class(void)
>>  		if (iommu_no_va =3D=3D -1)
>>  			iommu_no_va =3D pci_device_iommu_support_va(dev)
>>  					? 0 : 1;
>> -		if (pci_ignore_device(dev))
>> -			continue;
>> +
>>  		if (dev->kdrv =3D=3D RTE_KDRV_UNKNOWN ||
>>  		    dev->kdrv =3D=3D RTE_KDRV_NONE)
>>  			continue;
>> diff --git a/drivers/bus/pci/private.h b/drivers/bus/pci/private.h
>> index a205d4d9f..3874219ba 100644
>> --- a/drivers/bus/pci/private.h
>> +++ b/drivers/bus/pci/private.h
>> @@ -42,6 +42,17 @@ int rte_pci_scan(void);  void  pci_name_set(struct
>> rte_pci_device *dev);
>>
>> +/**
>> + * Validate whether a device with given pci address should be ignored o=
r
>not.
>> + *
>> + * @param pci_addr
>> + *	PCI address of device to be validated
>> + * @return
>> + *	1: if device is to be ignored,
>> + *	0: if device is to be scanned,
>> + */
>> +bool rte_pci_ignore_device_addr(const struct rte_pci_addr *pci_addr);
>> +
>>  /**
>>   * Add a PCI device to the PCI Bus (append to PCI Device list). This fu=
nction
>>   * also updates the bus references of the PCI Device (and the generic
>> device
>> --
>> 2.17.1
>>
>
>Otherwise it looks good to me, almost finished!
>
>--
>Ga=EBtan