From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0072.outbound.protection.outlook.com [104.47.38.72]) by dpdk.org (Postfix) with ESMTP id 201E2FA63 for ; Wed, 18 Jan 2017 15:03:44 +0100 (CET) Received: from BN3PR0301CA0005.namprd03.prod.outlook.com (10.160.180.143) by CY4PR03MB2471.namprd03.prod.outlook.com (10.168.165.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12; Wed, 18 Jan 2017 14:03:43 +0000 Received: from BL2FFO11FD034.protection.gbl (2a01:111:f400:7c09::106) by BN3PR0301CA0005.outlook.office365.com (2a01:111:e400:4000::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.860.13 via Frontend Transport; Wed, 18 Jan 2017 14:03:43 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com;nxp.com; dkim=none (message not signed) header.d=none; 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 BL2FFO11FD034.mail.protection.outlook.com (10.173.161.130) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.803.8 via Frontend Transport; Wed, 18 Jan 2017 14:03:43 +0000 Received: from tophie.ap.freescale.net ([10.232.14.39]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v0IE2511026776; Wed, 18 Jan 2017 07:03:40 -0700 From: Shreyansh Jain To: CC: , , Shreyansh Jain Date: Wed, 18 Jan 2017 19:35:23 +0530 Message-ID: <1484748329-5418-8-git-send-email-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1484748329-5418-1-git-send-email-shreyansh.jain@nxp.com> References: <1484735880-17178-1-git-send-email-shreyansh.jain@nxp.com> <1484748329-5418-1-git-send-email-shreyansh.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131292218233797951; (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)(39860400002)(39450400003)(39400400002)(39840400002)(39410400002)(39380400002)(39850400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(305945005)(81156014)(81166006)(85426001)(8936002)(106466001)(48376002)(86362001)(105606002)(8656002)(575784001)(356003)(50986999)(53936002)(4326007)(189998001)(33646002)(2351001)(76176999)(5890100001)(92566002)(2906002)(50226002)(8676002)(97736004)(54906002)(68736007)(50466002)(5660300001)(47776003)(626004)(38730400001)(104016004)(77096006)(36756003)(5003940100001)(6916009)(6666003)(2950100002)(110136003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR03MB2471; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD034; 1:nSy8DoMK6KiZXBy2i0twg4ckH/J4kYnWgCJZK7SS11i9WjLm0CItF1kMCeT0oxeWt+vw5kWH5NjcskHxe5ZjA4bU2nzfwa7g6VOdHeyfSs+gNLD2b2VS0lvMtq+RaDU8YDB+zACgC9T36y3XUSHySiJFasekqzuP1QFrDEhaKjVvQ96bV4SWYnRidQLeVozgQL9QD9zjA8ra/6OduHnbCovTlPNAsL9HE17Hk7RfzrRU0n4n9mcYXn7OYj51RpISlqjpPUSO0QR8kpWVk6fPILMvpWGZ7u7fZIW6pi/8JM2LgOmdbw2tmk6ksssX9QG+NlmJdbtkMaAAQRb02APCnOCjSlTe01oPuhq3SpKEbjotZLWDvdn0HEV0KarIEBRiXDejQNCgaFAh2y1JZ+kDtLsbt+rF7p8HVsM/+LB6P1ikQpsLCuH+dgiXyo8RGN3RXiJMXbHLxp5m3DsHwB42+IGTlpHOjN/Ed07Ags1Ioy5KfggclK9ckuaXG1j1LMX3Su2T2J3OvAlE1oD8K/uJRiL0OkDVTlHrnaaL7Aj2zTJ/IdmjhJSVQV6LHofO2oaT7bie7ec65ll8jFCLdKLHL9W96PYyPn7NUGa8/7BZY20wEr2l6pi8T2ZdR+CrJRikoTRVxmtCOM7jkbjD5j+CaCDwnLdnpA2N+yJMVtzPE6/ccnSbggXXSva9FmjeJaRP2ijQc6Sj00ISW9bugO8XhQ== MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 029ae398-eb01-4e11-d0d6-08d43faacffa X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:CY4PR03MB2471; X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2471; 3:Myhf4kWZbSlJ+TM8thwrSzz2S8yFodrjlFH+/l89zPJQ+Xnb0iBoInCozkklUtTDLrNbEx+VsEfe0A4Mxw+FeRrNzmbn6rlbwTYA23rcTpB6ZpFluXrSo8OpSbz+NXnzQOyx+XQdX2DhRDiKJiiZLPukDrUNdfZWu0Cx/3h1c5OF6BWp5ZIgMXrCp5E6s559WH3faKFT+6JV9qxAgxHh+JebOSmpjNFWO2gLZdo64NN92APvJZ0pO5lNDSxYjL5Bfv3Up10uKrTy8LgB6bG2zRTz2AEpQROwNU8ICPTB+5hIBkE++AWKNJgptV63pVrrCxjr5y1JKs8QZQRzIfwDKdrUU4g2vkAZeigEk2eHq5TcvrVVp9h+bUDjvTv111s+ X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2471; 25:AaH7Kr1DSpa2K0DOCxWfnqi783ewzP4oS8PxwZgqk+KYS65/VFI4KJqRYnMviAqkx+BTGsu2wQQrDUL2d13qJT/v1weLPvuE2YQdQjW1xApCNtz0uNJFLv9GrjXzua2ERlk9Dci+Boby/qin2Bd+KQB0/F6qUa1kZQU+O1Jj5pmUZswTDu++ya7o5lEdKzt8HBltEj5B8cA9l9iiKm8QY5zbCi1Amn8QJbr3+/1ZE4kHHctqwR7SpcUZ9K9rgjyR2kZ/d61t4mXZS5iUDtAqNPjj0/jw5Oibxq0LGdu92GH3hgzkupLI8SL8lAJZr2DMcU1nFtm2s9qJujWvJzjxT9O8EtBBfPuYiX+xFx2H3Hb8r1a+tC6SoZBlCgwccVYiH8fosDk1YXXbSHKzaDGuKFTmZVg2hTrK4ENlDxtq7w+jQQlAwsX9M+Nf4c4xVP/bJQ2k7bFZjzGu419THHGLnbtB+0spKxzdT1VDgMuGgXBwEImOwMb9gjnqHN/L0RdAYFflQQkPM408UIsMpdLou7h5BXUplx7Ii1gqnvVUDVRhMBR+QopOXu97xpNeJNfKKDGVcu/PJiHWQYtHfbIssC93Z/F+u/oQXGWDRV/LenKYMkNm+xQD+1+d8dAOTjE4wh1K/VnjoCEFAHgX3bVVm9EcN+VDdPWxOoOovVs5oARvwuj8XbH+un74fuGSyqdzXaFr5lBlTM5JaFhejwNDwT2UMykp2gH0t7FNot56Vjmz7yc/B4wZgbeLNWA5leKeESGcLVPC0IchlN3QXysrxn00P3ejJhG1nHNuKlWN/c8= X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2471; 31:ltRQ28LAfpS9c4n5GlDHXWlWOpq0lWe3s8rUNugFXNfkfZ+YhF9xNS8RlT0XQiQWqqauG31eOs697IqtNjVSSxWuHRCuxNi6x430q87PvVYp6j9sxUhV58lpINirntcHzwJBw5bI56ZVG+wZQppVXEMHkmkoTDp0OuBpQQn51eTHzRonlpSt3RJinlp4zU7YPa4940wqjLqscQFi1Vqvvmin7jacqbFfgnCcHD1+vZddetniKbBk8L5lS6jU4tu9z77C5efPvOB0xKmk3VM992Dpcv4lbFDDw/9mUrOWGyI= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(13015025)(13024025)(13023025)(13018025)(13017025)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6096035)(20161123565025)(20161123563025)(20161123556025)(20161123561025)(20161123559025); SRVR:CY4PR03MB2471; BCL:0; PCL:0; RULEID:(400006); SRVR:CY4PR03MB2471; X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2471; 4:iqAc3NLhi3S2SIGoynghra3NT0HFH0xDA4L77OcojFrW3/cxnb+pdNGzYCZ0rQb+i+JDZGJxwAa32UhyL1GXxyGyMnk000rgqpa1aXwMjF68FFGIhjyJnpAFtJeWnZ7frapO5gtiwM/diOT+f9c2/c8uuuMPfO3zczr6TbyumhCm0XZ65VqH1xd1U341LZvrqfomcgFBrPCBx6wT3Mn8wTbs6vrlYpEVwEUVno4PMnIv6DAuCfULbR0LL339d6liRN7J0b3MQrU6YK2nDwMuuAmUCp74UZ+RWq8V8BqCahDBzNmv1Qbd4+7nr8UnfGeD288OVBKJpQLlMH8hj8a8UkxJDqAikJTKgXneZ0wBC0hFlLGlCmxuRreKymT4PPVKlgQGjGrPzJbUinZo+GfasUE6L2nVHvyKRC2y8ffK8viCFlsCatanWnO1qzVAT/UuHzChEtYCUjXsbILHCH6IE7GVaEXcyvK0ZGz6F8EkwVXTIUsfows0te8UgQAyDqvD7vSLyhjreWp/JqH0bqcakGsdLmSStWSlJiu+LwefOf6xtOMPFXlQpWsn4TkmpYxutaDhUKMmNK1K0pF4G+XZyPMSrx3nJ1F3gG1cWCHNjwOVh2Jy4zQLBYe5fhORkY0fR/RNZDBgNea7dwCg87zeLz6k4jh1Kouc3AoM5929dd6gmfII5WTD+uzK2G2pSaudRzRNBMwV3WmqTrycu2Mnx5HTvO24t9/0pgGFhv903JrKYMfPRTwdA66x5sX3zmSqTMsxyf996+k5AsTsJ2eevA== X-Forefront-PRVS: 01917B1794 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR03MB2471; 23:3VuZ4cwAtZrng3t0HBCuSeJm2TRQmCJEa570JGiAD?= =?us-ascii?Q?JqjppfNru0Ux4tP+f558wtezcFNwgnRK14IU9e4ZEcRc/zWb7bnp62ve1JRh?= =?us-ascii?Q?lUQhY/wDZvvrgWZcoJiSphrZ1ne2rMCCmCYiQHGvEWy92dfV1iei49qV+wGm?= =?us-ascii?Q?7x7DczdbTuMNy4oeZcF42HDd73Ynm6cS/Tvp8ruBsQhJ8IQ8N6c2VxZz1THc?= =?us-ascii?Q?vkzRCmWh+lZusMnFTn+GJC4ws9OemG5FTHD3WLFZnPHYMmOxn2v6ScfSBAaW?= =?us-ascii?Q?Gn3k5D5Z4PqAFuFQ1MwkBb7qKT32FWZkAYRjR5UnkJWqCn6XmoHjb+asEyMA?= =?us-ascii?Q?H9eAMIM/SUjk5Txj+pfwEGeJoSWhCgpnJNeo4/2TbDELpjAGienCAL7puPlY?= =?us-ascii?Q?fXXOtWc0WDnsXf8m4s/gmtzAqNqVuxtLv8nQrhBRouf/LK9FhlclVDmX+0fw?= =?us-ascii?Q?9D/Rut8f8FjBpDMMPu5l1gKzR4vbdaMhjlwI3pwwlJXHNYu3YVVtyPjICLcC?= =?us-ascii?Q?/WSYt9PhgrB7wM73KssFBR/0QznXcPj1XAGZjXtvkGVlmdknhy6WUAxkYSgH?= =?us-ascii?Q?d/0nw05b9G4nlWQOd5PFh2XWVpP4unu9RS/gaF23sg+hW86DU/3rBBUOihyA?= =?us-ascii?Q?oofc2UC62CDYtQJsVSxplTmB4ABsayHBg+Zu6iQh48KoCryDjR6YVbhPvGNP?= =?us-ascii?Q?D3NBJzh8Pps+qvK/kH0IsrzKdARpH9jhBchbGMNGjV+tw241YTAGVKDGygBq?= =?us-ascii?Q?eESiendM1KNcR8LP7cA99qIQpqL+JlHKfUU1T+kTRycyTujVDYtDcHVzvPOl?= =?us-ascii?Q?QPkRTnZFKs69ZIlL5gMez+8WVhc+RD1RX0kI4Xju3TLahNURaQeN0UBTFVKp?= =?us-ascii?Q?Eqdy+1pFAWp+n8zt6Ldgm0JHcOdCgS3t9DFGhU6Ayn1IKZj7AW/ql9SOql7B?= =?us-ascii?Q?cTmQ4Q+AWnT5xjhb4RLIVTR7No20J9Vhtd3+0yXE3rf78g7Zz6FoR1ZarvBb?= =?us-ascii?Q?rxkuBhSSPjamiKTXt7QOVeWG9d8tj16wZw9mfRF40Uc5AeyI4foeAztvSZM0?= =?us-ascii?Q?xrWO2EeM3JVmaN3XCrblFXLC6bDHQ8DCOy6UeS57wQ338d/GVh8z+ggyogB4?= =?us-ascii?Q?l1pl11IAhA/tZs++GAX9UUW74n9Z+4jyh4U9TPuqb0m/HBAi/RMToGHwdinK?= =?us-ascii?Q?ZDSFD0Xl8EKLzjOSQgJmLiHNwOXMUL38vr2yrztzDpewV4AO8w2rCzVevq6t?= =?us-ascii?Q?7d5VAl52j0dbmLAvqR5MVtL923wPHeglNCRqYUZJI1Ac4qzSPcnPpETDatyZ?= =?us-ascii?Q?cNZA128MSGq0TquOWW3CmA7fZvBFXrExBJQ44FVAm8KuAo+pzx8Okb7zbixY?= =?us-ascii?Q?wDWbQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2471; 6:Jg5kh9QS/v66bbK4MZXbeUDrYxL0Nu5lfB/e77b6F6ZL+fonl3F3XwE4HBQcig/x4oJUbl1+BllO/IhuHYeQPmqJW2Na5LD/bdL4170TDQVHd3htkP9D0iE1bWTAyMa/8T8+ROYlEXzNjFJgLu1Vhy3VHclwNnlIgM5U1m5vLA3yCRrnfPwjpnzfWUdQBOeWRgwsgPcWqK/k94xdGbmkVsHpAsf57BGTGEqlMFvJ31xx++1LMrEIzU2LjP3c8YACrHwGiNsBmzdrwTq9wD2dWCmJX+MsZsZswIyC9EBvasPMUoZ/pAlq9dvLdiyRh0mxQ/7jem9HUL0mrBvnL29iYMxfj3YM0iIAww9lft2tzAnJLcIJ4B6wNrotQ1Nm/OS+hTv3KTDp8YGG05OfOV+hwfoCBuDG/3Jtx/Fm5Khymfc6dVf8dVb3a/IPd++BVKUM; 5:T3hZn9k+NixwqZJgkGq7Cwc+DbapdX9HWuCaKMHpRG/L7c5XXJukAgZ2mQDuCdCc2IMpe32YRQUopWAdA9wMYugJdfK3SNMO6y/cDrVXv+xrG9YtpFJhRRZO5ojimcPtsMp+Ul3V8PcKNhHnEz40JzFPkqQs2t2FyT0iyA0BX6gbc/NEQcJ9p6HX7akNCM8v; 24:OVagvmUqzz/xCtCRocK/6sNyap7uu4ANT6c89ml1eEPfW/uCsghJgeZLF5Z1KEVf0MDYe/5FGtp0/B1pVAKDCroPBt8V7PahT77yRFtgFB4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2471; 7:NnX741THGquLg/hjZRIe0NLh1mI0XzhHXi0fHUYyGihH8X3CapCM7jL4IrgV/gxaQtYKteP56YVzFLLYoJCwcFJR4t1LEAtTcjlYz9vT+3GE1Zj8sNbXVwOkvwgGGmM7bduJsHMkpFVPwtevQDKnWLJFgBioMjqvpkqUtPaTuKOdJynNAnLMvwQY+u2HhWCV7n7wAJ8Z747Lml+wQdJMiZKy8ozIgz5BScmcvFaQ8B/FGd3sEKXgBM8k5IniRhyy39SetjxoVsQ2ccxTyY/VkBqjfC3EWEmPNXxe6qEMsC5huewh7vKjd8UEUkbT7W7I8bEOV7w+YMD9plVsh94xASisnueAIo0lpDc50TSxfiZH6pC5SVrXT82ut4gN+dUcu9EtEGP2voYMokkWM1+PldKZNsEvaWPN3gRQOlcVN6I/rLuHvdcpt4WruMu3pEBvEUt9WkA+wcOT0XBhCKD5Ug== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2017 14:03:43.0677 (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: CY4PR03MB2471 Subject: [dpdk-dev] [PATCH v10 07/13] eal: integrate bus scan and probe with EAL 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: Wed, 18 Jan 2017 14:03:45 -0000 Add functions for scanning all the buses and performing probe on all the buses on EAL initialization. Presently, no bus exists - in subseqent patches, PCI bus would be introduced. Signed-off-by: Shreyansh Jain Reviewed-by: Ferruh Yigit --- lib/librte_eal/bsdapp/eal/eal.c | 7 +++++ lib/librte_eal/bsdapp/eal/rte_eal_version.map | 2 ++ lib/librte_eal/common/eal_common_bus.c | 40 +++++++++++++++++++++++++ lib/librte_eal/common/include/rte_bus.h | 19 ++++++++++++ lib/librte_eal/linuxapp/eal/eal.c | 8 +++++ lib/librte_eal/linuxapp/eal/rte_eal_version.map | 2 ++ 6 files changed, 78 insertions(+) diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c index 2206277..f0abd82 100644 --- a/lib/librte_eal/bsdapp/eal/eal.c +++ b/lib/librte_eal/bsdapp/eal/eal.c @@ -577,6 +577,9 @@ rte_eal_init(int argc, char **argv) rte_config.master_lcore, thread_id, cpuset, ret == 0 ? "" : "..."); + if (rte_bus_scan()) + rte_panic("Cannot scan the buses for devices\n"); + RTE_LCORE_FOREACH_SLAVE(i) { /* @@ -613,6 +616,10 @@ rte_eal_init(int argc, char **argv) if (rte_eal_pci_probe()) rte_panic("Cannot probe PCI\n"); + /* Probe all the buses and devices/drivers on them */ + if (rte_bus_probe()) + rte_panic("Cannot probe devices\n"); + if (rte_eal_dev_init() < 0) rte_panic("Cannot init pmd devices\n"); diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map index c015889..c43140c 100644 --- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map +++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map @@ -182,6 +182,8 @@ DPDK_17.02 { rte_bus_dump; rte_bus_register; rte_bus_unregister; + rte_bus_probe; + rte_bus_scan; rte_pci_match; } DPDK_16.11; diff --git a/lib/librte_eal/common/eal_common_bus.c b/lib/librte_eal/common/eal_common_bus.c index 205ddb6..089fcd6 100644 --- a/lib/librte_eal/common/eal_common_bus.c +++ b/lib/librte_eal/common/eal_common_bus.c @@ -65,6 +65,46 @@ rte_bus_unregister(struct rte_bus *bus) RTE_LOG(DEBUG, EAL, "Unregistered [%s] bus.\n", bus->name); } +/* Scan all the buses for registering devices */ +int +rte_bus_scan(void) +{ + int ret; + struct rte_bus *bus = NULL; + + TAILQ_FOREACH(bus, &rte_bus_list, next) { + ret = bus->scan(); + if (ret) { + RTE_LOG(ERR, EAL, "Scan for (%s) bus failed.\n", + bus->name); + /* Error in scanning any bus stops the EAL init. */ + return ret; + } + } + + return 0; +} + +/* Call bus specific probe */ +int +rte_bus_probe(void) +{ + int ret; + struct rte_bus *bus; + + /* For each bus registered with EAL */ + TAILQ_FOREACH(bus, &rte_bus_list, next) { + ret = bus->probe(); + if (ret) { + RTE_LOG(ERR, EAL, "Bus (%s) probe failed.\n", + bus->name); + return ret; + } + } + + return 0; +} + /* Dump information of a single bus */ static int bus_dump_one(FILE *f, struct rte_bus *bus) diff --git a/lib/librte_eal/common/include/rte_bus.h b/lib/librte_eal/common/include/rte_bus.h index 17583ad..4b4bb36 100644 --- a/lib/librte_eal/common/include/rte_bus.h +++ b/lib/librte_eal/common/include/rte_bus.h @@ -113,6 +113,25 @@ void rte_bus_register(struct rte_bus *bus); void rte_bus_unregister(struct rte_bus *bus); /** + * Scan all the buses attached to the framework. + * + * @return + * 0 in case of success in scanning all buses + * !0 in case of failure to scan + */ +int rte_bus_scan(void); + +/** + * For each device on the bus, perform a driver 'match' and call the + * bus's probe for device initialization. + * + * @return + * 0 for successful match/probe + * !0 otherwise + */ +int rte_bus_probe(void); + +/** * Dump information of all the buses registered with EAL. * * @param f diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c index 16dd5b9..f77ff5c 100644 --- a/lib/librte_eal/linuxapp/eal/eal.c +++ b/lib/librte_eal/linuxapp/eal/eal.c @@ -69,6 +69,7 @@ #include #include #include +#include #include #include #include @@ -844,6 +845,9 @@ rte_eal_init(int argc, char **argv) if (rte_eal_intr_init() < 0) rte_panic("Cannot init interrupt-handling thread\n"); + if (rte_bus_scan()) + rte_panic("Cannot scan the buses for devices\n"); + RTE_LCORE_FOREACH_SLAVE(i) { /* @@ -884,6 +888,10 @@ rte_eal_init(int argc, char **argv) if (rte_eal_pci_probe()) rte_panic("Cannot probe PCI\n"); + /* Probe all the buses and devices/drivers on them */ + if (rte_bus_probe()) + rte_panic("Cannot probe devices\n"); + if (rte_eal_dev_init() < 0) rte_panic("Cannot init pmd devices\n"); diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map index 5ed2589..6f047c5 100644 --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map @@ -186,6 +186,8 @@ DPDK_17.02 { rte_bus_dump; rte_bus_register; rte_bus_unregister; + rte_bus_probe; + rte_bus_scan; rte_pci_match; } DPDK_16.11; -- 2.7.4