From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <shreyansh.jain@nxp.com>
Received: from NAM02-SN1-obe.outbound.protection.outlook.com
 (mail-sn1nam02on0057.outbound.protection.outlook.com [104.47.36.57])
 by dpdk.org (Postfix) with ESMTP id 4E5EBF60E
 for <dev@dpdk.org>; Mon, 26 Dec 2016 14:21:21 +0100 (CET)
Received: from BN6PR03CA0035.namprd03.prod.outlook.com (10.175.124.21) by
 DM5PR03MB2473.namprd03.prod.outlook.com (10.168.233.19) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id
 15.1.803.11; Mon, 26 Dec 2016 13:21:20 +0000
Received: from BN1AFFO11FD005.protection.gbl (2a01:111:f400:7c10::198) by
 BN6PR03CA0035.outlook.office365.com (2603:10b6:404:10c::21) with Microsoft
 SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.803.11 via
 Frontend Transport; Mon, 26 Dec 2016 13:21:20 +0000
Authentication-Results: spf=fail (sender IP is 192.88.158.2)
 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.158.2 as permitted sender) receiver=protection.outlook.com;
 client-ip=192.88.158.2; helo=az84smr01.freescale.net;
Received: from az84smr01.freescale.net (192.88.158.2) by
 BN1AFFO11FD005.mail.protection.outlook.com (10.58.52.65) with Microsoft SMTP
 Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.789.10
 via Frontend Transport; Mon, 26 Dec 2016 13:21:19 +0000
Received: from Tophie.ap.freescale.net ([10.232.14.87])
 by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id uBQDKVCU029786;
 Mon, 26 Dec 2016 06:21:17 -0700
From: Shreyansh Jain <shreyansh.jain@nxp.com>
To: <david.marchand@6wind.com>
CC: <dev@dpdk.org>, <thomas.monjalon@6wind.com>, Shreyansh Jain
 <shreyansh.jain@nxp.com>
Date: Mon, 26 Dec 2016 18:53:57 +0530
Message-ID: <1482758645-23057-5-git-send-email-shreyansh.jain@nxp.com>
X-Mailer: git-send-email 2.7.4
In-Reply-To: <1482758645-23057-1-git-send-email-shreyansh.jain@nxp.com>
References: <1482756644-13726-1-git-send-email-shreyansh.jain@nxp.com>
 <1482758645-23057-1-git-send-email-shreyansh.jain@nxp.com>
X-EOPAttributedMessage: 0
X-Matching-Connectors: 131272320800849716;
 (91ab9b29-cfa4-454e-5278-08d120cd25b8); ()
X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(6009001)(7916002)(336005)(39410400002)(39400400002)(39380400002)(39850400002)(39840400002)(39860400002)(39450400003)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(50986999)(105606002)(33646002)(38730400001)(106466001)(36756003)(5003940100001)(48376002)(77096006)(76176999)(2351001)(8656002)(5890100001)(50466002)(47776003)(85426001)(626004)(68736007)(4326007)(189998001)(2906002)(92566002)(69596002)(50226002)(8936002)(104016004)(5660300001)(8676002)(81156014)(81166006)(6666003)(6916009)(2950100002)(110136003)(97736004)(86362001)(356003)(305945005)(7059030);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR03MB2473; H:az84smr01.freescale.net; FPR:;
 SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD005;
 1:ftvg4gmyrIwzikkVtBseX40xhJr6r0kPAmcw7NNCFKUzP5EGeOnI/LRWxW1BuhgDcl/N32hwY2NiJMbx44BGsXSbnAF5amGbSxpHbktyP3UW6Llg9woCYsc1Ez5ETSaN3yD9Pi2DLEUEdIxt0AIkswZXOcLeD75Ryhfm5PvgcK926p0ve0z7OMs19d0suGU4QR+W4/sTg99G2621DelgQCU23krS0GJhjIYgcYVuvR1TAUgqKK9GnU6i0Truix9ycysu21WJiTPFtD+Y+x3ZJUZg7u1SUGviM7qkOZMjkzf3MshlP6tvW+jLEamjoMNWFJ5kL8hwnaQCX8pTNtnPAc1V+Rpzxv/pCyD+St8+rTA5Qx/CbCTgjJo7e/D3N7SknUk7eI8fmBzm1VGEiQ6E6M+IZffKpqFCdftIOCie37qR3t+YzCf9gDx6LMdf9GpVHeo7gNQHaDQaq0JkOLnP9DaJARjPPOKixm1djw5ARqL+FuA/yJ+fDBScEms1Jm1KE/VNC5mbzY8sHfNyYBH6zho1rFk3AdvdlX/KkMdrNaCqUPHmIOiktHMGQTrG7Cqode5GjtlzqqIrgnulqDRZzJtQnlMSqAesu1WPB/ZQ1ZOUhyBfHZG6TPQjYQ/XsACLrP9JNdKVrbmoBWgDBCqQ1aoB6IQk6Cy22dbupi1D8s4iGtjmXZfdB1JH6jxsXr2pdyAns00tyLlbBnTtRyCq0tJa5o9BZK2anAaCgsfbk7M=
MIME-Version: 1.0
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: c016468e-3172-4364-9dd3-08d42d9214a1
X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:DM5PR03MB2473;
X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2473;
 3:6zclWXK97VLbxuwnU8Q91O+2VT3PoW8+I7Cp0/wGyKT6ZS8D0EOED1td48GoSa4W3ZRssWkbVPGekj6kOnyx6Ne7hfG3CRfHs3mhs8FjodbaXB94ZhNhbJm6LKzjMJGkh6gw+tupWD/wlAABJ1GyRWmrMfiT0++xMKjRwaoaRMh2A6T7Fex+T4wJfUxINfAJQL3enXpQH5DSnQqwmcEtebDPNYMsN16yF+iI8RNyrwZhqo/zSD/yLTvis68xDRXzIF/lS/vfcGdqIjgkYFIhMow7ZXggCzRIwmkdUZuapYuvONxgjnVQl+yjBWgEcsGjqbMLTicT0kKtQJSLlCkK4WuTfEqzYJCSt307o4qaj0sVOHUi3ZDgNG7G/DU2knYi
X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2473;
 25:dVcf8h77LWTKsf9j3x32sLuuGjeV1xG9yENobJmDCpX7W9HkKW4DGINcKGNGNAZf601i+gV9QzToYdNINpyjgvjAsde/iC9iOx/yHTUSvngF8zBZ52O77ovoXvCYWnjKoIGFKuvnVaFKgFFhW/zBd2D4aetZlsNZ3Rjv8MDIMgzakwKTQ79ZXQzIJwBwg/m0LA9O/y/JyoZp6EAzlAb3bJMmfIZS66SFGi66uWEhW/0oLjmk3129HBSAibON81kg+QYLAZwJqpcV4Xe80upVkI90OaOcVxADXYqFGjUjG9zAk/Hg9Mn4pgimQuHo0FLQgG9lg+ITm42BCHS36SEDc6RdZoBkTB8A/BC7dciiQ6pdQM+aXplHsOUYZi7cIhup1zu/V6iGQCreq+piJ5HHlO7PW0kOE7jRV53eWxu61+QkC9koraRDZxt7zGmConZ0yLuyB+lBLijp56UJ9i6YTcNjVHk3ddCADPpAaNOwvM8BT6X1RlaBv6bHCDPbcxj8IBmKDVASFivz9ZHfBdKiMUDRpFJGYZGx84kwHh33ldFzcxvlTxbDFscb+JoTWQBuQE2ZcmwOu+tRNL5Y53HkJ1c/DtqbeUoYgh1yiAJj72nU/k7t2jyWy/mD1tuGBUWfFqmh2vPwwq7gCH5RnRsU3i5Ea27njxN04wWecDUKXkMFDslGSvHE2Uf2AxblOeWztDdXWs5so6WkKsjOeYuXNlcL2kcc17NQPp10Ggu7/e0afmiR0XALgxPEJrvgYiT8XhIIgqLN3y00zjKfaV9cYxFi5MODDv0qOJLts/XjiZQmOLPAkzplNs4IZ0BoOOM0
X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2473;
 31:hQbpgXgt9D6TS5fbmz6QRSxHmCzQfoib1z2fhae/djdnDqtJt4yp87lYucLVRbBZ95cyrqLnpwHhyBxlcf5tBX0R9CEsyhTxvNMoPVB8/r9eSvyC9tMjsg3O+E9NZSO2o/mi0/GzfKnRE00vS/G1qNYfWlyBeWEfRAN/NnInOpZuEpqgzjI/UQbeGRQtTKqdwHoC6QBOZF9q+QPly4aQNi8SVEAsnA1/zZaAmTKgTd5V43BiLAxPXno+BDq84un2BMfXK9Z0a3mHOi3KG4zePg==
X-Microsoft-Antispam-PRVS: <DM5PR03MB2473AD076FA9CBBB1C8760C990960@DM5PR03MB2473.namprd03.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:(185117386973197);
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0;
 RULEID:(6095060)(601004)(2401047)(13024025)(13023025)(13015025)(13017025)(13018025)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6096035)(20161123561025)(20161123559025)(20161123556025)(20161123565025)(20161123563025);
 SRVR:DM5PR03MB2473; BCL:0; PCL:0; RULEID:(400006); SRVR:DM5PR03MB2473; 
X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2473;
 4:hdewVtwD9PPNcVry5Wi9ZI1bhSSXmKaTeEZomNHbCAc4UVrZKHGiHCrYZyeywMqXq8Bfqh6oouMcM8DZUa7m62M5WcCeaMi8UykyplKOylhJVNN9TZMpy3d2kQ3gzPgtaoowFCADIH72K6MXHTg2wsM5AbfKPa5xZ9eThMApxqlixDq7XWs6JmDgFlQWhKYxnEz1EaZtybyEwMNmUl3+SVobMns6HVzXizpJR77maDmg5xaENE+x5FRm6GosUG7xCWOKoiuz/oFwNmAG+24OJ6XmA2QWzs1esLhgJbGbnl7lZgysRX6urToqFX/bUsiEo9TJFNyAqEEaDic4SdwgjCZvW0LBnOWvFjYY+Sn+4hqbe46IlzU5cP6P0g3/VpswzD+aoDhiu8N4tjeTbM+Xyd1AbHmt3h+5iKM6MPU+fYTRpBoZ5PKpom2f0FglaiQ3VNqbWkRzp6umtSrQlTX428cqdjnaQFMA3aCZVmy/R9IiXSOqm7RCKAy+5knO/1jJy4/2uSrKRI0AIYk2199omA79xND/Aa3ZoVjs+2J7PmDsRccM0BtELZtV1Aqxs7OHu6eWBySiGKnSO5u9XyR0PZPeDzEB5lpOu9bZNn6WazuTijWEICmd2QQ9c9yxsQn94ZJPMkEi1xqObmoLcAfWeHziRA9n0bAGNkbu5jzuPB729rob/ouS0DboIW++U2uPt4uKGGiLVcFHxWPTgtXhYtb6tmNnAReot77528uL6DKIAIz3B3dNNW+Sllzpw+t7
X-Forefront-PRVS: 016885DD9B
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR03MB2473;
 23:r7Dvt7vFqXwNyALdv8vKoOSlna6rFVMVLkwjRX4N0?=
 =?us-ascii?Q?ZnZzj6qkXIuDfg09sc0xjkEZj2pN3qJGtqn1CT8tKvBcAGK36LZMsO06qGpo?=
 =?us-ascii?Q?I/ISQa6S0k/RsV3rwuMlvUGpj8D2jFR6Xd7Z6VX2te6QGP5LKqYbIV5Wv7z1?=
 =?us-ascii?Q?m05TuPOaqlsml993gcoF1GIjgvYh+LcPeqWHBZAk2QNqG19Uv1O8MoqoJPov?=
 =?us-ascii?Q?heWZDs+BZby4656BwbZSSNArpVON32Z8E+62GbBNiMXjm5stag5p4q4le1YI?=
 =?us-ascii?Q?1E78b7cdlSYaXT2BDfLk2H77MPL2JPZNvSv8MrdIz0UQZqR9EyHQtSeSzMsv?=
 =?us-ascii?Q?X5SvZYamyX4CHwhjXwdyAn035SFKjWRziSWO+QW9g9NdINB6UpHrqJLXfVyX?=
 =?us-ascii?Q?39RCT+5WGEp7Qu61cvXwXZjMbXWMxeK6AK4F3GTqMZCJYVWDNAu7eoGIdILV?=
 =?us-ascii?Q?GwKb37GH4zV5hl1wrycVXYGvPkmbQLBYAxgDa4WjSdTs5BDe+OJQMM1VWXJx?=
 =?us-ascii?Q?D0xoEhRdTtSJJiqhXzxERgXo2YpDrcVG+lVOJeISNlYo2okZhk2ufG00yacP?=
 =?us-ascii?Q?u2/DbigWQAIW5Mgveb9AW0nV8KH1I/C5B2JJamiY3BUm7yCOAAyEeBQW2RHQ?=
 =?us-ascii?Q?Ix43OamkttGOWaO3qhrFLjnqPn869fVxQTlyjF2lcI4DISY2b/NG/oSqceyk?=
 =?us-ascii?Q?mmUmIrM0KuEqgTkdvZ5UMQEbYRo09xMyH8tRdofFPmRm4eNUHqVe6yg1lLSn?=
 =?us-ascii?Q?ncbb3ndvnH7D8jDxvX4IT0Pdcg0xJdEaKDRwpnfwqC0Ipu/SszAuTpzUMVHh?=
 =?us-ascii?Q?rdMyS1stZXZUIVWp+1BciCaIClx7cRr3bVUY4Y+1SiZ7WnIDm4jLTgmbcJfR?=
 =?us-ascii?Q?lJn+8oZLsyfSFB8QBuIk/psqIU8ZNAVVVh+bmVOsoRIChX9i97poCWQ9GDQt?=
 =?us-ascii?Q?oE2idOd8/whapD0glMlwRM7SCu9THLOVCOfc2Llz7UW7RrxCfRGR2ChOEjOk?=
 =?us-ascii?Q?qEML5kP2o6f2dWpqCCTGX3cbxi6vgN+n0e0CMwDnmHmGi3VmdkrfUhR/adhZ?=
 =?us-ascii?Q?oqcN9Xga6GqLAKJsX4CwBOe9/hsOmdHVM+YFyvAzDO8ASFG87ZBnwbjhFyq1?=
 =?us-ascii?Q?95qdTXA6jC892PWByC+u/XI4xqKxMpkXGy0jQ2gCAi04i4Mag2dboufyc/xm?=
 =?us-ascii?Q?SyBIHIMiTJUbbyPEMpPCU7OGpUN7+8hYnIaYogAIMc3zeeFezwlNKZ3DIk+n?=
 =?us-ascii?Q?lhnuzU7buLsvS/klsCU0/vSG/6xywY05nCS+3lFxb9OC8Q2jgdMpf8YxA1bG?=
 =?us-ascii?Q?1+hXcOCj82EdKLPPJtJhQozPVvjcG2eFhoSxRbKP82D?=
X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2473;
 6:T5z9JIoyuOfvDyYbY6jqgDUtNvME2AuFGKuPcQRJ70nXiBlZ1QE+JW75Su2h6XZ0PfCcKIygVM/oRjf9wvN6XltT6wTbKFqvlGdwMRIte6HUskrU5cTaeZ7P/UVnDKmKENNaT11m/TGs9i7mGtq1s9eWPHiXerJMEr5zvEpSFjVQknpre3U6VD1qyTz3hfuwlG9cZhZq61eWgtoDc1NF5AjXHNgDlNnflJQGlkLlzEirYuddFQLoIwccTdYew7TW8QFkE5AWJ02ZxR9zeK3WJiO4p0Z76PfgQDaGFgvd80KR1nAJNVcswS+V7DNuqFg9eGZVTtv98cQVIZbLfRDlTuzKea2c918JHvA6Jk/7z7VbZUTFuff+LFMxGbAweUjgn4ME4CKECTRWPgj3r3PrH1r2tbJkp/Scg2VhR35GVGDMv9jJohPd5Iur/vFb+5If;
 5:jK1d7Be0Py3pmBBipqz9mu/GYz81VoKcmFAHBtWIU3vy9unCF8J79T2tQeeIiZu+vzGw+Sg3n5IpFzisq/P8SLJoSEoNaqKlwlBo8jILHEXako22gY27ZtivhFbsvlhLkS02bbicv2xXFfYMFhSCB7QYEZEm3aCzhUnPRRBoqeFKBgwKS3stXSb3a2GI2IKT;
 24:6J50GSay3MhRcXY7g93YJLxaol3TUhvgXaco4C5aj6m4FalRnPevjUks1kOEjAGozrxCYVsHQImvNIecK1ZjDoVGQMHgCydIZ7HmGIhmInQ=
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2473;
 7:9jE0x83HgzZegFPKTq35jcP8QErxklW9YRdtOjjvv78ThalBRw088hUw/xFy9xPzk6XwcMf3g9eS5c4kLUD71u4drwvh5bskHPEXJTYT4oi7BEcjx2zEXdEGkCy+AJeDurkDFZBrzkmftJVAmtdKxzhIflL4ZEYQQ8o15hP4ZVikZHq5tgFBxmT31c4eVqK2D3btOaDnJFmlPwzxnszDtu4LT0+mvkZW3a6JjjaSxpufRZIEf65RhC+bMp1FIpxogjNrhQCgUwLX+7qn5RiObNT19tvOSoK0W0ExMrDdGQOyW7Xuq/v+0gJiBMuFumuacNy+pyM+0wn8rAh3SMfggzLxbhMEgX1akbH5Fp2Guc0qE7ooDWP3fuuTea/538MDjEJw59yEc/1rggMSU0YL9+X6xjSGAaLWqSaneO4gUUEnZDotJRZ5/2g8CEVU66ssNImh+fg+M4UQnWGsAChNFw==
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Dec 2016 13:21:19.8197 (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.158.2];
 Helo=[az84smr01.freescale.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2473
Subject: [dpdk-dev] [PATCH v5 04/12] 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 <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Mon, 26 Dec 2016 13:21:22 -0000

Still a dummy implementation as no real bus driver exists. This adds calls
from EAL to bus specific scan, match functions.
Once driver->probe is in place, and a bus handler has been installed,
the code would become effective.

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
---
 lib/librte_eal/bsdapp/eal/eal.c         |  7 +++++++
 lib/librte_eal/common/eal_common_bus.c  | 30 ++++++++++++++++++++++++++++++
 lib/librte_eal/common/include/rte_bus.h | 19 +++++++++++++++++++
 lib/librte_eal/linuxapp/eal/eal.c       |  7 +++++++
 4 files changed, 63 insertions(+)

diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c
index 2206277..2c223de 100644
--- a/lib/librte_eal/bsdapp/eal/eal.c
+++ b/lib/librte_eal/bsdapp/eal/eal.c
@@ -64,6 +64,7 @@
 #include <rte_string_fns.h>
 #include <rte_cpuflags.h>
 #include <rte_interrupts.h>
+#include <rte_bus.h>
 #include <rte_pci.h>
 #include <rte_dev.h>
 #include <rte_devargs.h>
@@ -577,6 +578,9 @@ rte_eal_init(int argc, char **argv)
 		rte_config.master_lcore, thread_id, cpuset,
 		ret == 0 ? "" : "...");
 
+	if (rte_eal_bus_scan())
+		rte_panic("Cannot scan the buses for devices\n");
+
 	RTE_LCORE_FOREACH_SLAVE(i) {
 
 		/*
@@ -613,6 +617,9 @@ rte_eal_init(int argc, char **argv)
 	if (rte_eal_pci_probe())
 		rte_panic("Cannot probe PCI\n");
 
+	if (rte_eal_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/common/eal_common_bus.c b/lib/librte_eal/common/eal_common_bus.c
index 5a5ae75..b7ccbd8 100644
--- a/lib/librte_eal/common/eal_common_bus.c
+++ b/lib/librte_eal/common/eal_common_bus.c
@@ -172,6 +172,36 @@ rte_eal_bus_unregister(struct rte_bus *bus)
 	RTE_LOG(INFO, EAL, "Unregistered [%s] bus.\n", bus->name);
 }
 
+/* Scan all the buses for registering devices */
+int
+rte_eal_bus_scan(void)
+{
+	int ret;
+	struct rte_bus *bus = NULL;
+
+	TAILQ_FOREACH(bus, &rte_bus_list, next) {
+		ret = bus->scan(bus);
+		if (ret) {
+			RTE_LOG(ERR, EAL, "Scan for (%s) bus failed.\n",
+				bus->name);
+			/* TODO: Should error on a particular bus block scan
+			 * for all others?
+			 */
+			return ret;
+		}
+	}
+
+	return 0;
+}
+
+/* Match driver<->device and call driver->probe() */
+int
+rte_eal_bus_probe(void)
+{
+	/* Until driver->probe is available, this is dummy implementation */
+	return 0;
+}
+
 /* dump one bus info */
 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 da76db3..3bd3ab5 100644
--- a/lib/librte_eal/common/include/rte_bus.h
+++ b/lib/librte_eal/common/include/rte_bus.h
@@ -212,6 +212,25 @@ void rte_eal_bus_unregister(struct rte_bus *bus);
  */
 struct rte_bus *rte_eal_bus_get(const char *bus_name);
 
+/** @internal
+ * Scan all the buses attached to the framework.
+ *
+ * @param void
+ * @return void
+ */
+int rte_eal_bus_scan(void);
+
+/** @internal
+ * For each device on the bus, perform a driver 'match' and call the
+ * driver's probe for device initialization.
+ *
+ * @param void
+ * @return
+ *	0 for successful match/probe
+ *	!0 otherwise
+ */
+int rte_eal_bus_probe(void);
+
 /**
  * Dump information of all the buses registered with EAL.
  *
diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c
index 16dd5b9..1a17891 100644
--- a/lib/librte_eal/linuxapp/eal/eal.c
+++ b/lib/librte_eal/linuxapp/eal/eal.c
@@ -69,6 +69,7 @@
 #include <rte_string_fns.h>
 #include <rte_cpuflags.h>
 #include <rte_interrupts.h>
+#include <rte_bus.h>
 #include <rte_pci.h>
 #include <rte_dev.h>
 #include <rte_devargs.h>
@@ -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_eal_bus_scan())
+		rte_panic("Cannot scan the buses for devices\n");
+
 	RTE_LCORE_FOREACH_SLAVE(i) {
 
 		/*
@@ -884,6 +888,9 @@ rte_eal_init(int argc, char **argv)
 	if (rte_eal_pci_probe())
 		rte_panic("Cannot probe PCI\n");
 
+	if (rte_eal_bus_probe())
+		rte_panic("Cannot probe devices\n");
+
 	if (rte_eal_dev_init() < 0)
 		rte_panic("Cannot init pmd devices\n");
 
-- 
2.7.4