From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0063.outbound.protection.outlook.com [104.47.41.63]) by dpdk.org (Postfix) with ESMTP id 0DC482BF2 for ; Tue, 17 Jan 2017 05:50:42 +0100 (CET) Received: from BLUPR0301CA0028.namprd03.prod.outlook.com (10.162.113.166) by BY2PR0301MB0743.namprd03.prod.outlook.com (10.160.63.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12; Tue, 17 Jan 2017 04:50:41 +0000 Received: from BN1AFFO11FD010.protection.gbl (2a01:111:f400:7c10::149) by BLUPR0301CA0028.outlook.office365.com (2a01:111:e400:5259::38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12 via Frontend Transport; Tue, 17 Jan 2017 04:50:40 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1AFFO11FD010.mail.protection.outlook.com (10.58.52.70) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.803.8 via Frontend Transport; Tue, 17 Jan 2017 04:50:39 +0000 Received: from [10.232.14.39] ([10.232.14.39]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v0H4oagw004556; Mon, 16 Jan 2017 21:50:37 -0700 To: Ferruh Yigit , References: <1484581107-2025-1-git-send-email-shreyansh.jain@nxp.com> <1484581107-2025-4-git-send-email-shreyansh.jain@nxp.com> CC: , From: Shreyansh Jain Message-ID: <7d803d0d-7ffb-2be8-1ad9-d9003ac0a796@nxp.com> Date: Tue, 17 Jan 2017 10:24:05 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-EOPAttributedMessage: 0 X-Matching-Connectors: 131291022401237779; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(7916002)(39850400002)(39840400002)(39450400003)(39380400002)(39860400002)(39400400002)(39410400002)(2980300002)(1110001)(1109001)(339900001)(3190300001)(24454002)(189002)(377454003)(199003)(86362001)(31696002)(626004)(33646002)(31686004)(106466001)(305945005)(23746002)(356003)(97736004)(47776003)(105606002)(4001350100001)(5001770100001)(65806001)(92566002)(65956001)(38730400001)(85426001)(104016004)(54906002)(77096006)(189998001)(64126003)(229853002)(2906002)(68736007)(4326007)(8936002)(230700001)(81156014)(50466002)(8676002)(81166006)(2950100002)(54356999)(76176999)(36756003)(50986999)(6666003)(65826007)(30001)(83506001)(5660300001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0301MB0743; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD010; 1:YDOLs2h2rxLjT4n18pdXe8j7RLck1QvexNA+3WPWBC5xpC9Qtd7urLz7MZOmtVsrBR5ArntN7YEAAKoUOj19WyUUeuhL1nYPfzIahnw1KH3Tm6uMDNdvldebZwPbXzLgaKoUObCsFrDV1JWRMJ8eqofNbGD8YK7X0T5tozYbyVmvirDgHWg+DDR1urPv17u6Zw9NP7rWYnVITAQDKI9bAdJ8MQU2oW3YuNDkwlLNm2xRpxm9ln3Q2Bid6CRHXef73rkC0kBpDWrjhkuQO80QSfnAT3iRZ07fr4gsU/uIPAIlV5MT8QXHN4ZHRoOXB8J+yElX72rJXkfyhwqM9lzS2odMpXVlmukFzlH7cDC8I0Potkp4P5w65EReLiWB+VlEF37CVfL9L2NTPENvXRfN/rEa6LT0t3Vh5+XpEgE4914Bup+ZKN738d0WAAo9FeUa87VKRqN2SEQvhh8zN4tjnukBxuHDvbUmUEcrZ1Zqj5CIXZ+ZoJu7g+xx0HbRPxEihF+RgVzqU14GRqoDs/hm5+7rwdyoulG1ShaXe/IqIRyf01uobn/yGcVUA47R4SYNTiz5RCbW9TKLOL7VlU7frhW0BEvXeNUSJXsH2gEOA6OMOQHUxuTbrgiTodPwQuCk X-MS-Office365-Filtering-Correlation-Id: 3173efbb-13ca-402c-682b-08d43e9462d0 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BY2PR0301MB0743; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0743; 3:2ir447Dl12J7NdvgEAyznXNr96mA3ZEdXqJie87CuHKgdaggd8KcWQNBoN/rzxRpIR2Q7exqlQEia/UXC0bMwjKh8q9TKIP7Q26OHT8mOCG//pyy4uaEdxXCeoISRpFkXiPKeuGcevrookEma6OKfHCC55D9H9PqcTfOcJspRScKyu68tv7d8GyRpjRa/Fv8NWnaz7u9Q30oQLOxr26//V7pWjXaRNgESzEy8eo6Eqj/A4grs1J/RcbC5OMHiGClp9ovXuQdrPfLGhsJi6bWsL3tslTVGmaZ4VB1W9ZZPGmDlEq7Jz9wqoTgCMtSk3RBq4G6TL13SmPhATZ54uDRluvV3jGB5ODDnfCP3hQYvD2Z5X3srGvRucb1nOG0/Gq7 X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0743; 25:EqeVQHdnLpDTggLZ7PL4XuIrU83wt7lIX9tyhCirRwp/Pu4yFXnW7TWLjzPpOvlvwcswuhVwIeNB4QNy0K5ptqaIQREqyqSLhMeXpPmwccJ89QHFDudmmLH4oHRNWgoFHMEwwC7h55FKTP3Zo075owp/S0yhgU5h7eALRyK1Upnw2+/BzRHVEXrDHfeTEdNXC8PW16eciMCbmtBE8vuzEilDr/6WsClSanRl5F8YRmx+Y2CTsuZJWRMBeYv7MZf1CbTXCee9BzF1R7khjobsezYrLZzGI2QNfZJ5LLgV1+rqG99VEOpb/Tpd1dFH54MCaQY1hVGf9PPjKDDCuFOMBA9eCFq2AFIu0kAPWFUiaP/XoFDVWnvhIEPSbveNSYv+02MUdx0EHOfc+mRGbJaWvXQC2fO0ZebqZq3hXpLH+sR+SdnZi4CJMy2vn3+T5jLbDhJtdX5jvsEcAYJhgcEClTZIrfKFu86palqOymRDCD7M/3Qr+SRojW5KfDd+honETM57NB9lPpG/ZfsRTd2eqQ36DY4+Sp/QRtqRsSDDOgC0IbuFSdjJZP6grqZpODFNt1IOXtG3sMb3FVuj0zL0HAvblUnU/1cJLphwwq3q+TJOPSPwt2+Ie8yiiwSxzOERk3vshh+uAmT9vnY41cghC1dtJWt/Ot10JDNkFLM6ruwYpljYDPG3s1OrQAtLTGY/gNBRoGgEjsdCPWgUApf6uwGeSktCgg23Bhnpt9UqhEdOgSCbc2bNz+6VulYfXqurrO1UkM60p3bYiomiVY4vCBR+rFPzubTrMCirF203ZCU= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0743; 31:L8ABX6OfxP/mJEHIKYYzP7LTKH5f/LJbInv1MTqOdb3Z9adh/8C/jEbdkBaci+rBFjtRdtWIc5T6EVED216Xql4b2z9NHJKQuRUqEyls2uDnxxaBnMSIfNoRJ29Rqo+mwiTsqL0iyW4g1S3y/gkRknn9WDKwcHdt98ltcVPXqQ/T1sCLdstxc5Z0A9egTOkOcTgp+ry5U80Q6XVYyYkl+UoTreHqqal9IcDViL+T7gHcMPK45MY0CkCfe5Epc7awJSANocEa5D9gp9hrx6/+Gg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(13023025)(13017025)(13015025)(13024025)(13018025)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6096035)(20161123561025)(20161123559025)(20161123556025)(20161123563025)(20161123565025); SRVR:BY2PR0301MB0743; BCL:0; PCL:0; RULEID:(400006); SRVR:BY2PR0301MB0743; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0743; 4:MhrewpHOa11BqieDRmhdx2FBXZt1LS4XTQtukS+0hxj/gBmLFZkrbgA3IlLGPCou5UGfLOMU0z3QjJ+VuXmh4FyttDC1zuHrr+CQx8VejW2+dkeaeQBVqTz7gZpiZGLgyqm60YWJq6XtOpG5YJ8/lt2e4kvt9rEwqoSzj2Swj4S0s4mFA9kT9oYK2CDAQJvasLXFfPEf1doTFn8ZpGnLzctTJv18MocdsGAyD3RzTx4F+EuArlwk8f7QeJAAb2fa76AWTv2dINLHPbq5bHYxIwcfYUiMin4xIjlNvaA5m+aAit5XGP6v97cEmSixC75vVN2w9k6gcHWvPob9sFv4MtWy6x/HsXekWtPe1U3DYqklOPr997Gq6w+10W291B3dCq6n+WeKEZ6bSEeD/VCBgNBQBynE2jDd9TOFmj6lXvXPEQ+AJZUrpIrRcSwPsXzjnbyYFGxbmP5zRzJu7u8hDviiVvIkYs2QdPM2xHi6rdq1TRM78vZorRrgIbvKJlYnmcjDJKzTEwAZ9AExlznhQlY/61vJiAnS/eI4YOB++HILV458jFRQD0klioGVF2wMJe+JneQS0gte/5ZLPIRrC/g6RakYE1M+jEDmBeq7xWoRG9mnIMPcBfljleafZs3QwQ6yPg/n/waTtJFC4IHm3ajlNF94LgNY3VGozAEFOXrWkAWjPAC5MXcxFSphx9Ob6qikqi1+qe2yhtzeFCREcMmkwyoc1DI9EbKzkhWA+WIg+puFaC2h31UZmfC5tC08 X-Forefront-PRVS: 01901B3451 X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; BY2PR0301MB0743; 23:0pV5nCtFknNKTFyxAdUDyypBMF55Vhalokr?= =?Windows-1252?Q?1LrjB4tgl9kjGojzARUspOaYoZ2goKNjLAdQ+sI5tmLXEv8pzk+21uy8?= =?Windows-1252?Q?nsRApQGeEXHBIeMHABF3IRWFjsiYdcEgSll38fqHzJ1QHKCdBWgBtkYJ?= =?Windows-1252?Q?fr648BrfdSmjd4ZR86p8VKGsgt9mjVHRzfwE9XNHlIjq+NkOgbhAFho6?= =?Windows-1252?Q?rcEjoh0Qi1fFak177QUgKzwgdf6cN8cZJGxfssXgtb4G/4xJdFfAQKpx?= =?Windows-1252?Q?jWo0U0QDmrGSCLESatcesYBZvraBWLcjzwuYCYGlCoZ16rSkcmMbTQxJ?= =?Windows-1252?Q?xNo5xopiBumZFmlQCU29CSzPz0FrAsnkUcMUMW9GgcndjVoFSPTY0kg0?= =?Windows-1252?Q?tiRQi7NMlBs7SgV5DlKz9Bu73h9ODKNlLKwP1etXtCXT9vWZFCXvGAjh?= =?Windows-1252?Q?4a/qjheV0YpWIXxevudt6wLv2dQkBO0kW8tom6ykBT2EDUGAQAPSdP0z?= =?Windows-1252?Q?RRDS949F9Ob8OA7aS0YO9Q1czdtbv1fmulQgxsIsnOFewqXgmFM7AWNe?= =?Windows-1252?Q?fc7QTXCHQCc2XTFBJm753Q0KtE/9AKiv+0NpS7tXKBemQyjNWSQ4QPaZ?= =?Windows-1252?Q?Qanv1iHP7XF/dfe4lXTHvNGv3L6Qq9f5AvQqjgwURgj4egtaXyl7zqnY?= =?Windows-1252?Q?vsl/fXoqO+5KTkEML0wo0MqOvpQGe6aKh4HJ9lb087vhLqg3olAE0/lw?= =?Windows-1252?Q?S8nFX8ddaO9xH0EXHwNHYsiA0/PSvpiuH8SS9tPW+0sLMXcBNWPK7lp0?= =?Windows-1252?Q?276vR/U972iCwoLWwwkGTEegQ5vCUWRqEWSfOfeyTlMrFGvTrYK/k9HZ?= =?Windows-1252?Q?GUMCuqPROQE7csvUSkcZ432XSWxlED918CyPfVF5w15k9VLWhuOQitxz?= =?Windows-1252?Q?k361p9nRB3q595Brhhu9um2NvFXOjzG8iMQorF/MYUPO9DEMjSC+k/+V?= =?Windows-1252?Q?Ii0F7YQ2qotjSjiyiVPnSRtO+9x0MikPWljvBaJxVpk9eB7qkUTsPA87?= =?Windows-1252?Q?5cBFPEfAaYzUmo5IHfyyM5VZjQMI5WuIaza8/vwyv9UEALAwu4TDOLRo?= =?Windows-1252?Q?ieJFP9qUeg4PboY/U0wV0FWV6chRC1hFwUjZZgzIi5yKOUhH3nVWMVQH?= =?Windows-1252?Q?Yx8fO2GFFDH4e0EWDBhlhNNaPmIdeId0R3P5zB/nzCaph4hUrkAnVytE?= =?Windows-1252?Q?zAfUI+qbrr/lJacFadPp1Et75P89nmCksny7MY9CaromrFsHGiRLRIg7?= =?Windows-1252?Q?TqOWiFOCsOpEylOQbODAKE1G+rztvu5GKNyWNx2nqLwk6gdKhmLDD8qY?= =?Windows-1252?Q?Ix//U/TSIu+NhBkgzE17I0thZ50FIlHcIAmM6xI7sFIMx1W2q2pvmucz?= =?Windows-1252?Q?A7ns3/UFqyCHE/xLjopnVcdjLvS/1PbvFAU4yAkcEzIfKFYmpfSBwXHt?= =?Windows-1252?Q?x81l8bE0yetSrTwU3QETxJjKysjI9Ea1u7F+oBz33ZapZ9tYlMjFBtbl?= =?Windows-1252?Q?cmQ4NZ0Ycn+A0SuEvLGdgYnzyeFCigOQRvjWxaktpehuNQ0p+QinjDtF?= =?Windows-1252?Q?g2iASqb7mpOLGjRFmrmvL2BETOBkGoc+pUzPtz35DoGEu?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0743; 6:7yERjJTIB+imLJW8ruBz9GEwWSBWrZZp13p+82rlJW8PIr2gflAsaxdK8w5YxzO6AJXjhRylFhinpFpmrCrtSdfCruDM3Nx/CRNrsE4zoUu/PyAxsvSFhJNBqbleejtxyX204Sx9J1EQ/wguwyLmRdeTPxbIcE5IB2xxQ0+72uXx2EfkM7B1IgcBjl6z/k6smvO2xgZc8uP8OfKcUuCAGh4RY75JJNrWq0GEOfDBEmPShZd9tpWEIcBnMrTSOTumBQxfCHx2FK+9WMuD17jGYgYV84a3YsYIvn7+wsNjPy+PKeFmqkYGerDTfzi1EuogCLw2Z5R8qZgyoX3+lZWA/qC0UaKP9d5WvHWTDNG2ZemS4J+Yx3gde4JdX9sBgU2iHon85u1xLM0HDtwJOMQgNTMMmKTBhdXNg6PtO3/JAOkasAaLtAmNaWpumFAPGKKt; 5:YRSwagND7rF2fZ4/OUYeobgMflxP/e28fRI4O1WdQye4zY1nfSTkdxQRObZc+NxfcW8iQZhjFF0/F3/RbVJ6BdTn0QxC+CusxgrLXLqEDMvp0yKESvl26f4Xwr29jklHArYEVWH/JIpkN5btHtL3qy4yhXF6IwicAPddmWoIWEjhN4ZOWFNjvlxVwEtSM7ZI; 24:8nAKhC3QR6dwFWHUBisNZKtLr7Y9FmDIxZj8V2obTgbb6I2b3sfGwiUENtKCuU1+w1W4in+kmtl0ti1vbsbW7VuFBultLqwkYlLScmv0O/I= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0743; 7:rOGM1MgIs0+Azhz+xzuyBkvl5lCqza22qijmMvmUJIe62q7BKrocsMUj1rhc5p7vwPxUHXBgatoa0RvpSsKyw35j38WeG1HmV01mRk3erM1ylkRVV5fi9H39m+GBLltYrpIi5Joh9QmyhTbh9vbI8L3svEVf85As8UqbhdCwO2BMlVLSA41wdl03N6l2LwWTWg8NbxhcdQy1TowcPp4tryRkv4nrOc5usW2yx//OEOaDWJjvSdLEc5avUnA1r8tsTl2A9SgDtX+LtJUGBAO8NDP8KVBAMzDRvGQqNR7FsFoRwmekU2gNyNkxWb1ZjFsvNJesAiSwUj0fRdPZzM2R7dVq6cNyAf3xYZ0kVwxglPdtkYJbyn15I1UAKtgwzbi/YJ9prY8znGDQXQ1000RUqLZ5HXt7SMv6kfZyyT3+6RGHW9u0EhCBQTCbW5nDI48iQY8ztyap29Y5Tb6lQ2dxZw== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2017 04:50:39.8273 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0301MB0743 Subject: Re: [dpdk-dev] [PATCH v6 3/8] pci: split match and probe function X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 04:50:43 -0000 Hello Ferruh, On Tuesday 17 January 2017 01:23 AM, Ferruh Yigit wrote: > On 1/16/2017 3:38 PM, Shreyansh Jain wrote: >> Matching of PCI device address and driver ID table is being done at two >> discreet locations duplicating the code. (rte_eal_pci_probe_one_driver >> and rte_eal_pci_detach_dev). >> >> Splitting the matching function into a public fn rte_pci_match. >> >> Signed-off-by: Shreyansh Jain > > <...> > >> /* >> - * If vendor/device ID match, call the remove() function of the >> + * If vendor/device ID match, call the probe() function of the >> * driver. >> */ >> static int >> -rte_eal_pci_detach_dev(struct rte_pci_driver *dr, >> - struct rte_pci_device *dev) >> +rte_eal_pci_probe_one_driver(struct rte_pci_driver *dr, >> + struct rte_pci_device *dev) >> { >> - const struct rte_pci_id *id_table; >> + int ret; >> + struct rte_pci_addr *loc; >> >> if ((dr == NULL) || (dev == NULL)) >> return -EINVAL; >> >> - for (id_table = dr->id_table; id_table->vendor_id != 0; id_table++) { >> + loc = &dev->addr; >> >> - /* check if device's identifiers match the driver's ones */ >> - if (id_table->vendor_id != dev->id.vendor_id && >> - id_table->vendor_id != PCI_ANY_ID) >> - continue; >> - if (id_table->device_id != dev->id.device_id && >> - id_table->device_id != PCI_ANY_ID) >> - continue; >> - if (id_table->subsystem_vendor_id != dev->id.subsystem_vendor_id && >> - id_table->subsystem_vendor_id != PCI_ANY_ID) >> - continue; >> - if (id_table->subsystem_device_id != dev->id.subsystem_device_id && >> - id_table->subsystem_device_id != PCI_ANY_ID) >> - continue; >> + RTE_LOG(INFO, EAL, "PCI device "PCI_PRI_FMT" on NUMA socket %i\n", >> + loc->domain, loc->bus, loc->devid, loc->function, >> + dev->device.numa_node); > > This cause bunch of log printed during app startup, what about printing > this log when probed device found? Only thing I did was move around this log message without adding anything new. Maybe earlier it was in some conditional (match) and now it isn't. I will check again and move to match-only case. > >> >> - struct rte_pci_addr *loc = &dev->addr; >> + /* The device is not blacklisted; Check if driver supports it */ >> + ret = rte_pci_match(dr, dev); >> + if (ret) { >> + /* Match of device and driver failed */ >> + RTE_LOG(DEBUG, EAL, "Driver (%s) doesn't match the device\n", >> + dr->driver.name); >> + return 1; >> + } >> + >> + /* no initialization when blacklisted, return without error */ >> + if (dev->device.devargs != NULL && >> + dev->device.devargs->type == >> + RTE_DEVTYPE_BLACKLISTED_PCI) { >> + RTE_LOG(INFO, EAL, " Device is blacklisted, not" >> + " initializing\n"); >> + return 1; >> + } >> >> - RTE_LOG(DEBUG, EAL, "PCI device "PCI_PRI_FMT" on NUMA socket %i\n", >> - loc->domain, loc->bus, loc->devid, >> - loc->function, dev->device.numa_node); >> + RTE_LOG(INFO, EAL, " probe driver: %x:%x %s\n", dev->id.vendor_id, >> + dev->id.device_id, dr->driver.name); > > Same for this one, this line cause printing all registered drivers for > each device during app initialization, only matched one can be logged. Same. Will post v7 shortly with only match case printing. What about DEBUG for all cases? > >> >> - RTE_LOG(DEBUG, EAL, " remove driver: %x:%x %s\n", dev->id.vendor_id, >> - dev->id.device_id, dr->driver.name); >> + if (dr->drv_flags & RTE_PCI_DRV_NEED_MAPPING) { >> + /* map resources for devices that use igb_uio */ >> + ret = rte_eal_pci_map_device(dev); >> + if (ret != 0) >> + return ret; >> + } >> >> - if (dr->remove && (dr->remove(dev) < 0)) >> - return -1; /* negative value is an error */ >> + /* reference driver structure */ >> + dev->driver = dr; >> >> - /* clear driver structure */ >> + /* call the driver probe() function */ >> + ret = dr->probe(dr, dev); >> + if (ret) { >> dev->driver = NULL; >> - >> if (dr->drv_flags & RTE_PCI_DRV_NEED_MAPPING) >> - /* unmap resources for devices that use igb_uio */ >> rte_eal_pci_unmap_device(dev); >> + } >> >> - return 0; >> + return ret; >> +} > > <...> > >> diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map >> index b553b13..5ed2589 100644 >> --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map >> +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map >> @@ -186,5 +186,6 @@ DPDK_17.02 { >> rte_bus_dump; >> rte_bus_register; >> rte_bus_unregister; >> + rte_pci_match; > > I think this is internal API, should library expose this API? Idea is that pci_match be useable outside of PCI for any other PCI-like bus (BDF compliant). For example, one of NXP's devices are very close to PCI (but not exactly PCI) and they too rely on BDF for addressing/naming. > >> >> } DPDK_16.11; >> > > - Shreyansh