From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0072.outbound.protection.outlook.com [104.47.37.72]) by dpdk.org (Postfix) with ESMTP id CAB01108F for ; Tue, 17 Jan 2017 11:10:54 +0100 (CET) Received: from BN6PR03CA0056.namprd03.prod.outlook.com (10.173.137.18) by DM5PR03MB2474.namprd03.prod.outlook.com (10.168.233.20) 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 10:10:51 +0000 Received: from BY2FFO11FD038.protection.gbl (2a01:111:f400:7c0c::156) by BN6PR03CA0056.outlook.office365.com (2603:10b6:404:4c::18) 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 10:10:51 +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 BY2FFO11FD038.mail.protection.outlook.com (10.1.14.223) 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 10:10:50 +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 v0HAAm7X028854; Tue, 17 Jan 2017 03:10:48 -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> <7d803d0d-7ffb-2be8-1ad9-d9003ac0a796@nxp.com> CC: , From: Shreyansh Jain Message-ID: Date: Tue, 17 Jan 2017 15:44:16 +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: 131291214508830830; (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)(7916002)(336005)(39450400003)(39860400002)(39400400002)(39840400002)(39410400002)(39850400002)(39380400002)(2980300002)(1109001)(1110001)(3190300001)(339900001)(24454002)(189002)(199003)(377454003)(33646002)(189998001)(47776003)(65806001)(6666003)(65956001)(5001770100001)(106466001)(54356999)(23746002)(356003)(30001)(105606002)(50466002)(31686004)(104016004)(97736004)(76176999)(50986999)(305945005)(2950100002)(4001350100001)(65826007)(93886004)(5660300001)(38730400001)(77096006)(64126003)(230700001)(229853002)(36756003)(81166006)(8936002)(54906002)(85426001)(8676002)(83506001)(2906002)(4326007)(86362001)(81156014)(68736007)(31696002)(626004)(92566002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR03MB2474; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD038; 1:Ww7Sr1sD8AkKoJz5Oeh20egP8fnSeASPmPg6desDaCph0iDRLmwXFrlroFsROsoyjxHVZKF6Lk65l8HWah5wPR4SVNuzpZ4bXvcay1EtGUpJr4km6eQe5XXs1wqBmK6Vg7KEV411FUG16GVGdMVucD2XZIB3SKTXRpDtCUIR6XPspcJVM1T94O6XAmmIMZdYo9u8H8slgCxrtY0l6LdTs4Y9MKNf4ESGnJ1/FmKN9ciK69sN6WZpq8Q0I19ggSU9xjjEOOJVcFLwYk8F+IoCgWu2zARjrh4HQO+MsI7+aPwr9LsN6drW4rGQZ09Bt9//3oLrv08sCCkdo8ZQEN7FtOutMUaUtN0Q2mJyVsQfZDiIaP0H9436V3Fbu6Wld73Exai253iDSRVE0cLtJ56AhhDSiBLbgr3uDBmO2v9liSCu/YcQtAPxL2l2X9v5e8yQcX0GXEpLhFbYSRxDX1k1DV8TFLlxCD8tmLb1YIfN9nVPm5MmN/LkjC1N60JTg8aCxttU44Aa60ma+EQKq7MqxJTajfWFvntD/4XhuPLcLrErw7sUDWe06f7WDmEai3MFpEOdGTlr3D02Ugf18xZQaVlJHCZXfsz8kwyJP2GNiqrXUl1QZXDtrxWB+30Ghx3i X-MS-Office365-Filtering-Correlation-Id: 10b752ba-d75a-4d26-b06e-08d43ec11d64 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:DM5PR03MB2474; X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2474; 3:NjBHQ5IXiq9T0yLKzxMetn25vn7ezxgCWs9Lc1z5QBN/HSuZp+HsEUa2yJT0joFtDg76UQyvpwGmlytJPfk/WPTebAVtpVV/qacuC0yNGzlCiQcEObeOJAt0qUuiq4li12CICKPR6Uw+Na/+vNfgoaGaTBMddW0ZOXHUqDgV8z4m4azYsepta4ZMcZyT2zBCbZxdw924geqLwOoRAFaaPsRhX0P6EigCMvKZhV+lT84DRW+C3YYUfT3gBwNa6DaOF65/rp1R23HCFsynCN6rRwmt2w3jdvq+6GCl7ndeNTmsDRUaxDoe9Zi4TNEhGi6p+4r2zgGDKkUOj3dXPSYB5Fs+sfUdDnWlBK7ZHSZuytiZ6NqA1w3vpdIkXKf6YYbF; 25:bg9TnrmtN8Hoan5t25639Lfu4UqL0knG6QklLFUABVh1xU43XP+JRjIpZ+F/gob0q8qfm4FJ2WLp8RANjS34ewOLUew0dKdEEza8zStxcESgGVfrC1yFhl05NA2sIITMxvP5feJ6iWf+Ug0lUL+XLn0chdLjjt09n4K91pzTOBCMgAnR2u6xUr5FzEWPkAQStFqKHmqyWJFDLoy1s0TyOED99DhgsQXjH+xilT0I2snd8LL9bNiP2rl8vE9zpskGXAlr5jJCHtMBDWnt+4kXfJwDCcf4dq2oOOUdnGZ+ePrEqfSH0YzW8VndG3/7psYONIfX15w1ykik6paKAVmwpHrbeadqD/8SoWX7WCdIuPNxBVuuQn9sDqjko29nITB/bWw5CFErBPBE/x0Is7kN3JuaJOoAylm4J2W0hNSStKDTTpscIvCDKYihh/+XqV1itKtr28iaivcMqbu8gaQKYw== X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2474; 31:kpWYLOmk8MrmmO5G56iaGz1syLrcQXvURm7ua5J2wnNhBwJhfSs5yMrPclV9bCw3C430r3/N+mmo/n4e0cczVSegsjSLHmDF/G5+K3fLTnBxSKm794GidcgJgLrIQejFPt0/0Fqmp9uVhJKi6OyxBGcUu1e4czoGYDYMstAKG/8ZjNICo+/iQ8MwjURyMcz7kn91Phjj8qwffbgfG0A3Nu9J4++YUNkQdlmRTARb455Lp14DI0Yo7/d68zYQmBeP6oKZ1lguV0Nyfmw4c7e7efOnD7cusXX68KMgV+T8gGY= 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)(8121501046)(5005006)(13024025)(13015025)(13023025)(13018025)(13017025)(10201501046)(3002001)(6055026)(6096035)(20161123561025)(20161123556025)(20161123563025)(20161123559025)(20161123565025); SRVR:DM5PR03MB2474; BCL:0; PCL:0; RULEID:(400006); SRVR:DM5PR03MB2474; X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2474; 4:jbt5rxwp2/BRqz0qJb/iKki0Aia6fISU2wvKYUvuR/+13yPbcgrZZ1c6iUWaVtMJ1nz5Z+Z9lPOyxeZCxHfSwZtz3rvOGs+za4vEd+bvpebSpvjhzqUTG2rnoR21PajVJr5ySaZbZVBFiumth0NBBvzTU6n07CnVElBgQmfzNAyWZ4wL9dQHfTziLXqUdmS521ICKAa+jbrqL6NSWq6411jVmpuLUKMpNQyFcLeu2FNBqnjkh3nPaMljRseETu3BH73CRIglDGoJ0MoVmHE++HpiPhLxGqmKerbNd9c0zSx2FqyA62ww6m/A1C2G3Ya8/FwYE6pwioEx9bYGUoBDdpZVGbcPY39/SiXodI7E6eObTm01j3Z+9OjIGeIfivtTMS2+xDvc/kYtCei8hJPJ+uocApF5n3cGe4her0eWwPHp7EBpGujimWSOHc4sFXs7zTqoCznL8Z1rWXmpILh3dB6Bf+rBIozJW8olQkctvIYMpNgXSjSuukRJzdCQeAfg4e+rsUQzwKTAuuA9K3QqFwJCEzxFhN1H3Q1tSQoR5lPpOYEmvptiChKUuxmMzHIl5YDfpqrZvgZXWFCTmm2FsG2cGPRzPwR7LpBzqlJKgWFmcbvhB3Ax4FDjMVsCFhY+QKNtAweBEgabBCxhNUufkWNnV7Bdho6yp/I87IEgHVap+e9LrbtX4aYMovs0CRdvKi5m0YFDz70m8LA8bNCQ+zQ6QeTAqG/1JZPxFqzEwP0Q9UgpJSjTwxHCLB6fAv+J X-Forefront-PRVS: 01901B3451 X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; DM5PR03MB2474; 23:N+8H80QEZEC8Nvo4iTdqA4DRoqMr2TdJI9yAA?= =?Windows-1252?Q?8vGnD1zpjpvNkaIBj1fj4tBSmNtDX+mfBkVHy0gEO76doHF7uRyEBb3t?= =?Windows-1252?Q?1aRRY5DVSEm2GM0pW1foRv9n73yDiZX8tFAv5NW2q0hgqJe+p2t5sd+f?= =?Windows-1252?Q?mAvG3/WoXvNH8YZhgW/2M+OfMhRCvriCINKWdLnepoOQ1IrDBz7Hnjqw?= =?Windows-1252?Q?ucBsv9u1LTbOvknw2tzd8c2yVNoO6rFTBwP8Llt9GfI4zwoSzVV/k18P?= =?Windows-1252?Q?MBbsQBszh+QVSkesbjRw8fallHvxSi0ZBDZK+u/Rd32/hFBGGPjZVvpn?= =?Windows-1252?Q?5yXjfBI224nG5j9fPJfNExBJthq+tc8RSyhYQUbqcR09uebuB73QUa1g?= =?Windows-1252?Q?N1Q9BxShL1/981XkhRWl1qVsJDMMwh2tHDBl2LR2F81KFMhMpeYOGpl9?= =?Windows-1252?Q?HYxu2McyA+04AjugnNuMJixxD/C31C3EZfazMpGQqiAzAsMPgyjLpxNG?= =?Windows-1252?Q?gcsPb0Q9sJtae41hT7MELI87hg97QbqLGXwqEMjQgG7Uj4CdpjUgHI0r?= =?Windows-1252?Q?AB0Q1srXTEZp6r+iaPN+sBF+Q8/pekxS+C4TZggfdQ5snTcNcjwGKiPK?= =?Windows-1252?Q?ANJadFYCU6DQ2wzjrnLJdG1vUU8OE+yjpVeZKvGGZVpT8gVs9sYCur6O?= =?Windows-1252?Q?hr8nWiiw4cYuh2Bf+bvS8xiU4tcoCXhk47AB2QlJJ+jncMv/9efIhO41?= =?Windows-1252?Q?QyHL0gSLr7q5Q4XSQ/Fiow9Yx7Sg216aodsFGn2ZElaDDl0kIMv90815?= =?Windows-1252?Q?ymzB87iDi8K8O32TP38k0oAKS557ed8mvSxYqxPXYs6zEgA4Wmwp4XHe?= =?Windows-1252?Q?UMcJKjvhsUrQKjbHMlIf6Wcy1WGcQ2+UUosZ2hfglpDP08pDwQnozDgn?= =?Windows-1252?Q?lZZ6wVxFCsQiW/KuNcUptQPhyF+ij/MagQ7xrM/dayEGWGdRSAGJCczQ?= =?Windows-1252?Q?XPsUVny6yYM1mUtY32JIovjNZ5tMseIw1tSLPM+9d5Xe60bBjs27oiqI?= =?Windows-1252?Q?7UshhZbRu7KFhG+ygrH7u32fSuAqgRR0Q7/4a2GYZHP100LArQqeXNid?= =?Windows-1252?Q?OmWYpJbacIfYNlDl3q75uxEjTqZLKgDkXiBg/KcbEP6qRP+FCOcmvqg3?= =?Windows-1252?Q?gYkAw/cOdIusR6ADwPpTiL13ySgs8FnNfN0lHhQFoPXwPBa+/Zl8KRQF?= =?Windows-1252?Q?TFqMLCcN9qFX9rugxkBDGY460yo3XBUG3tj1lLyBNcVkQbAxFz6Gc4lp?= =?Windows-1252?Q?8j4WX/iaev9lEn41bOyjDl/Tq8Md4ZAD2fF4YYqV6QMEtc9l6bRuMG1A?= =?Windows-1252?Q?QRp24Y8zmrvvtdq/IgNd9LyMoxtkI7HwN7wDpSGHgNaG5TYO6DOO9HML?= =?Windows-1252?Q?Mxyspo5LGpjHERV0WLlKveb3p/e4Jb5f469k9ZXV6lMKmf2Fivf8rcEb?= =?Windows-1252?Q?WtLbhgg4znsHYXVCnVd7iDhok74LqxR1c2Nzax7OXKTWT5AfkQ5gO9e+?= =?Windows-1252?Q?F1XQyS0IIN2rotk4jzxIX8M36p/ESHDN6lGRyKw7kzFMAlGalO0visA9?= =?Windows-1252?Q?1zS+DG0VlFLVk7GpmG3Z8jPrU3QgKPmfPuJzi2MfGiDsWqFpbCBE/sIE?= =?Windows-1252?Q?ifNfSTzHw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2474; 6:2efod88dzY7Pt1OGs91SppaU9kDKW63UEgLh6MwwtwT33JYG3K34avoggujQvR0AFd04tb77LmLBWwc9mnyNB0o7wY3leF2yEYuxCH7VRX4VbecwV5ynNNdFhzBh0imweogci5wAyBFbx6LVOM4EwxX+oNeWYfpHZ14tqDA9oTPT8wGJG7JCaL6DsTmgxyLx/nKyAyuA3xcXExO0Q2Vvugm2ofW3pnzSrxlZYVqZ5dnbXV/2rnY1Df1RW0tNHtoVjWEDC31870gR/cX/ARLsJU7fT1ajLqqEx2ZrlgTY7DDLpPcDbwEizvarLu5ig0tV490j0ts2guHTZuJRvDpHEyiSLL5+G90kKssEPqMLsVUHw7Y4kANJ2eDKMKO/VWq9EKJY8+lLBYnVH1EkufGnUPDO+tOHbSjMUSqY1TmT/i2U8miZzRvHOOBJnrHHG7b2; 5:wdCtGgK6UViWTBhzaq42FTJT04KFrQW4KSXhOrasJrCyvZhmnN5FBD61/g5VSsOVxIp7EHa6gJOTXQTvR6n6/juyZ1nDB9BTtBUvvXt2V1vR9ki0wWlYzqT27RiX2070AJs6eSJsvC/YFtwXosyEiczw5PuTHfHN18ClfC4hM4ik7k/TDjpT+36QYzrvIqYz; 24:yKrOtgVdYUlThuQu+0a9sTe915a/qQeS23cwk+i24Jjgki683/ZUGx9rzD5Zcyje6zJ2eOZk+DnF/4KkqVk4mc2uSVlk/NGSLouFtAYRh8g= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2474; 7:eDIuA3MGEbByCjWQ4aIB/BnhddM7eS/Xkg8O7DHZyojB5QddTlvX6+hi4JuowRnTMlagCZ++Lje9WQWDVaBdBTAYOuruotvWTJXIm2KOJSGXH/+Rvn60NPFY6Jjuv+WK5fmODz9fnJfXLVi4t8yybdwYKbr4XjyIWKFwxQHU3oxt7q+jyB6d/QMyddTv+b1epMonah/kLucurRhPgzz4ZN2BsK7ObxCM81ogmzUECamgfGCrRbU3bP/VPd1HcyqK/+LRU8J3hTFkZ9V3BLwyf1h3pzsZ8fmU7T9WsH4lUVVM/LDFlaPDGEDmCUJf91xGuCeiKqnFweREJmO8ODry6r2X8ap8977gsqduUwbEBOZRcchzzJOqUSSXwQXjm9IEpoNIJ8NntdzKeelQN/L3z5+3ZBwSmZ7tN3jMstu9y2kDu1pFgNhhbWP5WzAiHvZ1eElSG/hAQHOG7ngnF6exaQ== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2017 10:10:50.6490 (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: DM5PR03MB2474 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 10:10:55 -0000 On Tuesday 17 January 2017 03:28 PM, Ferruh Yigit wrote: > On 1/17/2017 4:54 AM, Shreyansh Jain wrote: >> 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? > > I would prefer existing behavior, INFO level for successfully probed > device and driver, but no strong opinion. Reverted to existing behavior. It was a miss from my side. I had moved this log message _before_ matching unlike the original code. Pushed v7 to ML. > >> >>> >>>> >>>> - 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. > > OK. > >> >>> >>>> >>>> } DPDK_16.11; >>>> >>> >>> >> >> - >> Shreyansh >> > >