From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <shreyansh.jain@nxp.com>
Received: from NAM03-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam03on0056.outbound.protection.outlook.com [104.47.40.56])
 by dpdk.org (Postfix) with ESMTP id 072D75684
 for <dev@dpdk.org>; Fri, 16 Dec 2016 14:09:09 +0100 (CET)
Received: from DM5PR03CA0009.namprd03.prod.outlook.com (10.175.104.19) by
 CY1PR0301MB0746.namprd03.prod.outlook.com (10.160.159.152) with Microsoft
 SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.771.8; Fri, 16 Dec
 2016 13:09:06 +0000
Received: from BN1BFFO11OLC004.protection.gbl (2a01:111:f400:7c10::1:106) by
 DM5PR03CA0009.outlook.office365.com (2603:10b6:3:118::19) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id
 15.1.771.8 via Frontend Transport; Fri, 16 Dec 2016 13:09:06 +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
 BN1BFFO11OLC004.mail.protection.outlook.com (10.58.145.15) with Microsoft
 SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id
 15.1.771.7 via Frontend Transport; Fri, 16 Dec 2016 13:09:05 +0000
X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:;
 SizeAsReceived:808; Count:10
Received: from Tophie.ap.freescale.net ([10.232.14.87])
 by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id uBGD8BtG028345;
 Fri, 16 Dec 2016 06:09:02 -0700
From: Shreyansh Jain <shreyansh.jain@nxp.com>
To: <dev@dpdk.org>, <david.marchand@6wind.com>
CC: <thomas.monjalon@6wind.com>, <ferruh.yigit@intel.com>,
 <jianbo.liu@linaro.org>, Shreyansh Jain <shreyansh.jain@nxp.com>
Date: Fri, 16 Dec 2016 18:40:46 +0530
Message-ID: <1481893853-31790-6-git-send-email-shreyansh.jain@nxp.com>
X-Mailer: git-send-email 2.7.4
In-Reply-To: <1481893853-31790-1-git-send-email-shreyansh.jain@nxp.com>
References: <1481636232-2300-1-git-send-email-shreyansh.jain@nxp.com>
 <1481893853-31790-1-git-send-email-shreyansh.jain@nxp.com>
X-IncomingHeaderCount: 10
X-EOPAttributedMessage: 0
X-Matching-Connectors: 131263673457288328;
 (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)(39380400002)(39450400003)(39410400002)(39860400002)(39400400002)(39850400002)(39840400002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(4326007)(81166006)(105606002)(8936002)(81156014)(97736004)(5001770100001)(33646002)(106466001)(85426001)(5003940100001)(5660300001)(626004)(2950100002)(6666003)(47776003)(189998001)(5890100001)(76176999)(575784001)(8666005)(86362001)(8676002)(50466002)(68736007)(50986999)(48376002)(92566002)(38730400001)(50226002)(36756003)(77096006)(305945005)(356003)(104016004)(2906002)(7059030)(2101003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB0746; H:tx30smr01.am.freescale.net;
 FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11OLC004;
 1:+AksltcRN30Nwf3jjcJ8o5MyFtKg2IwA/c9Vu17rKbEVv2NfQqofPNExxcgYOi6NrEXuY2XblwQ4BGeid36UD8AP3bJ67G/2Ndhx8S4RprR1VX31nkebHnTa8TtaD5D78gO5eZ2R7RjqGNwEVyZToxe48gyH0Da/+LxN0S8sEnCIg+GuTdJ1NYy2yWVWs4DpCnYjWSbRo95Rc6NWW5ebA7828xCOnAMqACVf1n2O4Kk+ASS8om4HeTScIoO4/BqPDqO7zzlPU8AV8WLkrKYz8lOL2bR6h2PraplUrPCE9nMKaVVRwcvcm+TikKPLz66zL2fH0oSaVC1e6VGJPd5lqeOVv3LQ2FpYJGxVUddp4AhyecCWlSt9DB44TAcRXGwD4If3oZHB/RLKJyUp+13Fzcj7nOhmVrdvQlgQDC4HH3z59cuwo2PDf/XuSMDdeHb1nfCcRSL//xb4eWaWyBUubq0nDh98ZHG3F/GD15Ab2V2XRcqboMSwaEYkc3oN/52qnvuF6+eS04e4xAkdrFqvAxzGL/GgvMVYL1bHpGB7lV7fkimV76BY+U1f3Jev1HOhjoDwYzLcefTM4Mv8Fu9K+wsWhUgENtlxv3YxM/rJXs0GHDYOMiOrvkkLclxgLUWxZ9K2LV7z0GPjw16v8qi2uDixh3Rs+n7HLT9g8F5R7bB36kCsk6pSQGroFc/H2yFj3iNc2FTINpkUK1MDjvHjvYGETd+U0pnNy/AJMs66Y3CRgpWrq1xRYZglH79d6pK08d3IFvMSyrfQ1EpSZ62ggw==
MIME-Version: 1.0
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: bc999480-a93a-43de-a488-08d425b4b6cc
X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001);
 SRVR:CY1PR0301MB0746; 
X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0746;
 3:eiCA06ieVbAl/7NpSixBhBCsQk3w7UqGUmtFh1gcQcjJbETeTPCNCM6BPvZZBaQ8b/NA/qPmAFcFMW8itXFOP8a4mrE3fgiThC7AxZGpO97YfJf9fwvjvYccyyeBMt3h4NUZjX7jErcQ2Cdg9V68ku/cGMrLW73R+maxaFnLhrIhFB4GW4VY/NUZ20ztrAx9FG+VJXMIjMaaeSvLyscKXUFnUxjVNYrIdgV7jNBE5ZWQPb19mm8JVTZ079HAyJiApmfqrVGadZSIyahzA7ADtAmzOyjk8FiPu07c2gfuZbqFhh8ZuB0n9jQwX/UYKcv2eVwIpPSKPBhqjtUCzjvZS1o+Ry4qvupURy5DEmqBqR/nfn6k40eSArZ4XYUEylER
X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0746;
 25:+7UF1/hs2WYwHx2mDLqKb3CxOsZYACcXR0h9cSI8LL7f6OPLXGCAlw28rnFEhn8EpQr5OwaoOUgKgq+6hhWRUu67MMAhnYU+KdnwiTsxaoyVA6Z56cYOOQfSqVeFWol/ogOkibZwWzH4LsL4LQdO+/Xg9OL0RjVQ4sKnBH1/jdI4UyQNrJ/uvdB4D82e2PmP9LuXVtwrLpHWBwaRPYHug3X1Cq4YzU8CecD6R/KOsC/Ut72h1+CtH+4c1dyzEHsc9iVhfgaqg0bunmMFE5Ql6Cq4d7FZDP5Qih8aLyD5EsgnUUXnV9FzIWQGesF+wtpJavy90RokmHDsSALABYw5rkBCGcrKnM49rpGFaqXSksBjK3EiuC1dw+1UA75H1ATJDAA4fWFjwMzq6vtz/8hTnGqMX0yGF559MJIo/TBmMz864gjhl5IV1oqKUz6jvtweFMUZBrLElFi0kJjUroVQfiMBDIvc+zVzeyhqWLVSRV9zI2qsKJ4VjrtmYPXMnZx7ne1rxhI/7yxp9mtLwLl1fnKMRM+KLA/i66FiheGZcEA5Y686rBemWngCYLCat4sZOqmGIiYJEsksd6AI3OS/hn6xeEOj57/PoDAV5S61lJQWb0WG1zz21UsioGB5NbLFfAfbBLuQU8VXJcsiqSvP5OBJIvgVw32mCkoS9J37FVrg8LT5lq4oI6TVnddL4lgN5vA/i4K3fjasmUq5TQ56SdbHfAemzWVexAfhNW5qfQj8p/UOAvWJ0QoPAOnYAkAxJ4QrwlEWRg160YB7cbMSBV3eE36XLTQAAK4t/W5Wkrrgj6LykNBeiq3MFokRaHxg
X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0746;
 31:c/4GsDouSAM9756JtII+A+Q9/dxFkCGMCOxOvWMCaNR+/kQFCAsXKSZ5CPLypLUdhQB2h4vvU9srlmXAnvRFMkZOOI3wgdAdmlo5YGdWSAsjlF1+0p2s+7Ey0uql6xhrKuPnv18GemftCivGqqcmOo/GkFka90oAhIYCxIiiMo9qCNrNSpzyLHBzh/Ssz73B9el4vDFgxiNYgBd/h1MQnTvNtCAV7sd54WA85/bK23S27vsPxiePeJGxCZ2exk1bnE71uSBgJG4+gTIsrp2zVvgi044hMJyCAu2byvm5lbc=
X-Microsoft-Antispam-PRVS: <CY1PR0301MB07464A16BCB90B0B66241861909C0@CY1PR0301MB0746.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)(13017025)(13018025)(13015025)(13024025)(13023025)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6096035)(20161123563025)(20161123559025)(20161123565025)(20161123556025)(20161123561025);
 SRVR:CY1PR0301MB0746; BCL:0; PCL:0; RULEID:(400006); SRVR:CY1PR0301MB0746; 
X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0746;
 4:hcqPLqrfWYD6H19Kl2jlnU1Zz15kqWoH7vta7YbzFH3dvSp8+ymKr0hxRlVAmtWzbtNKnK4eO7eGgakGZlLfjz7zn4o/g/93a8s4H2ktB1tJA3GNnaZNOhxXgQO0/qKy6F89s5/HCPFs/i9RJoqPZQSoJAH6+sDMkzpOTTJMUcL/Nptl/SEL4vD0jbGHNqaj9gwLzdPSKYT12syS1h/9O8i/CcVge01mltINbCNI0+/Ge0IkpQoPx8GO6LS16S3QMTntr+gBXNlbPyuuX4iXCgIZupFk//fGCz/SxfLYNJHeVZ6GaFh/hKlhoooDRhZDoMHISNZv4uVSbyHcioBJADtpKACAFEC2U7s6sXHUKRe5y6h1peSymzysa410biXA0P6WcMuFJyAivr7bbfkTVh0XQVaXVQcHEviTX2veuy4ocvBjBLI2RgxNah3spkToUswtakK3mqILXhk+105eSM7Jspm4h5FZugAZyOzqF4kezKM0zFZerdApo8eR9EpT+bpXzsz6w4AYn5Zlu+0FoXmypPb3bsA1aCfgHiemmznkTBCIK4WbfFKv/1PuCr9sHnFkMKvq7YhY5RXd44lR0Kx0U71mZNzZP0drT6qcXYoY/2lUxzT76tC2PppUAl18PJ3MSJk97HURb+tgbt1A00PxFMbbkhvGWSXBrRFdrlFyOKLW44I5fjb607cYqOU0WlNIqwZkIoUvqf+MxkZXJBUJ16SvQ45IHxijtgih9Gp1sLbGdez/5SG8xfvd+dP9
X-Forefront-PRVS: 01583E185C
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB0746;
 23:CeLQvQBeCNMdYwpM5HYTaBWi35k7dkZJ6FcWE7o?=
 =?us-ascii?Q?6pmLN7yfY2iBQhBKVLDAH7FObMV2Y8uqorW/sYQEaVngQG8svlDQ2hpn7w/s?=
 =?us-ascii?Q?QL0B3jHmyq/EDvdyZWJlvsV4P0CD+Q2SMrxikMLHrWNR8QCEjEcGOXnJ7Fwf?=
 =?us-ascii?Q?dn9Fn9h2rKkt/WsWnqRl8rK6BB+E/gX9ntItxq33y9OqvvilYoWGQqXm9+3Q?=
 =?us-ascii?Q?ZroPBGR/DGFF+brtGVU69BN140YTqXWBEcNKQpmkgYGEHYxl7N80u/6duRQY?=
 =?us-ascii?Q?RanePq3R6ramr2UkQrzEn/W6oqm049JuJw8XY8hcVpvQIRFziGBvs1AVceyk?=
 =?us-ascii?Q?6W1iLAhYtLbfbqa0l1/7M8s1R1EsOMszN0EuHFOz0ekX8e3zEPTiGPXdv1F5?=
 =?us-ascii?Q?hJoK2oroY+r3I2rJHz7MhsK3O1dfW1R4EONVEUMMkaeGPzrxVuJkx+kIJEis?=
 =?us-ascii?Q?XPMjYYTN0Tt2oinka9/AgBtVbIGm2klTdssu69r0pdR2/23O7W/xObuycOkW?=
 =?us-ascii?Q?oKtaMdNis5AoW10+LxqAVYxw0an0BpKd4+3yUWDMvDKiLZvJ4orhWj2ivGu2?=
 =?us-ascii?Q?rRM4EJZXotAZYQ4cXr0ngdeZBJ2hE6nMGzQ2DFehJpPvEnG3++bhRZFzfMEy?=
 =?us-ascii?Q?3K5QPwmKsqoyv6ll1CbX6nHWRXa7kjViBquOtNqsE+E4ZzjI5KI+T7dcxFrw?=
 =?us-ascii?Q?YbTQQWBRSsG6lHhew2sokNxkQPQI2XaMHHC9zsOEfq6qe8hmIKho+R745pli?=
 =?us-ascii?Q?svFr9JCNY1KAVPOVa2Y+gG65+Y555ODgm483TTyMu8nHqM4Wn+8behQIpWkq?=
 =?us-ascii?Q?r/LXbKN4fLkWB4E5WbGQN7SrxavTSAV8V/GItM1BU+lCgQCXmav+omSkkK00?=
 =?us-ascii?Q?wbV0W5IZrT1hNgs3P9R6xXcFrxubq6LGJChqRUMQHKzGGlyyxBMDmLzgd6K8?=
 =?us-ascii?Q?n8zg7riLnYAzFtauagV13D6fNwqqImdK+DrNcar7e36IGE2zHd1vdHEHsFD9?=
 =?us-ascii?Q?FyHRJIEJWhKnhYiWkpCOslaFiD++J82u2xxYFA7louSah+9+IQytxuALIm1W?=
 =?us-ascii?Q?tmLisgWLqDBd5TeovpWO/pBJ3lt5QG9kLzqi/AQWhCMEeCV1Pic4JiYVUKlw?=
 =?us-ascii?Q?u+KMq4P/9aQYk2kqsARLfE8WZYy6mdIxBg175HO2mMuIN8elZTm2gTRrUWf6?=
 =?us-ascii?Q?k6TgAV52WSI9LKBSYnHiw8ZQtAWHmlzmB2nZLouufIFp8vn9a108jwNaE2Sm?=
 =?us-ascii?Q?kXHj37SFj33klfnXrY8/YwUyAw/V3CoKcMJjFnLSBrAvryI/lwks3v/h5bU/?=
 =?us-ascii?Q?dxJommZqanFXPfMqOGZENhH5zfBVxqYT1Nlqja84P8rdw?=
X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0746;
 6:TG2IuX+Y5EHkpip7Z4R0Ch1FlyRMNI1QK+0exGmTKTdQEZw8gt1b8BOT4FwKOMgJXCd1X3opqLB17c1CiH/dNGYQuDxcU/HFcA/vk5C3emSQXQjY0IkC56yDBCBuaV5F/lV4k4bHHKxhy9URYwBvE27dUV86CGFtQpThW3FBNfBnj887ZYu1dt9YArgFYjAiq4XptyEkjMK1e8kOxEf0/6BuaS8AboLmbWQTITwVYHg7F+yS+ohPq/eVG1Vq/f3ARH+Trs+dMAa4oslerscyqQtNWA+IsmCWzhB50IcWGuC+NoyzIfpXBckZVB4iB7qflc8ZdiUcINpu3OsFp4JBdHJZDGCk62AmYmbs+gS3DjQHH7yS+Nia9BxsnSDFQCwMa/LLOfXp2whQ/VwVs45eTpDmwLVi3Afr3JG6juH3lbtqxiXn4IQcAYxOkBy3QKnd;
 5:d+ncFRXKRIp2WFCwcA1PqHgvs5BsrnnPXDI3+2bMYfAcC3XU3qN8S/WewIaAQ9D0ZmVcAfDe4COfKuc+g/q8kBNnDpsY0+Jv26kwBZaUvr4ksZVHJsZ3pljQW+v1UkzVWnwFsl3GDGP0XFgkqnsGYtDjmy2/HpHII/R31B77Z7ui7vBF3WB6ZgbIKzB7GYBQ;
 24:0VlnSTNZo9XjmYFXD6LoSekt3jkz9kpdoWWvB2gRHD60KCufHNnuKgwOAfO7PIxOSm/D987tytolku282521yjODW1UBVE4bb3gr0dvYBlQ=
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0746;
 7:6VcdhMZ36xI4m1G9E9IRbyw7GN3EzVxI3vgggH50ep6LTJHuCUuZCZOO3O4cEw5bgDbAMum4zWnrDJBCoziHNfrTzU7eQWKgamzxoEJcKKcWufEKDZcQyKB6cCtRy0UXi2Qxk+23cs6EANCNfzrWZ+2zMzEKVRx8yFYzByvlKS4NZkgw23OmCbdk6aHlJxnORmdZrBQT10eDAmjDKkcsR/dRY1Z4mqlYT/bZ2wADlUNluvaZ7f15DQyME2dkM3EuSEOZDb/xLr68dr8GU5pacgJK6w0e9v92t/PbrE23RHZT6UOSsj2KXe1jrKvTjovyuZw8EPQ3K56+vM+eDxgvJbE6aIlHOyPwcdjgh/RwbMaumLrRP14qEle6QV8mEXbNXTVgDWrHu3zsUXQRmmMVSwkHQ7nbILSkUGSQPhHPRf35ftJIhaarbfXz/A6CA2yv65lArNxUKdfBio3HFSPSvg==
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Dec 2016 13:09:05.5416 (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: CY1PR0301MB0746
Subject: [dpdk-dev] [PATCH v3 05/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: Fri, 16 Dec 2016 13:09:09 -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 35e3117..30afc6b 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>
@@ -580,6 +581,9 @@ rte_eal_init(int argc, char **argv)
 	if (rte_eal_dev_init() < 0)
 		rte_panic("Cannot init pmd devices\n");
 
+	if (rte_eal_bus_scan())
+		rte_panic("Cannot scan the buses for devices\n");
+
 	RTE_LCORE_FOREACH_SLAVE(i) {
 
 		/*
@@ -616,6 +620,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");
+
 	rte_eal_mcfg_complete();
 
 	return fctret;
diff --git a/lib/librte_eal/common/eal_common_bus.c b/lib/librte_eal/common/eal_common_bus.c
index 162a16f..5fbfdcc 100644
--- a/lib/librte_eal/common/eal_common_bus.c
+++ b/lib/librte_eal/common/eal_common_bus.c
@@ -174,6 +174,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 d1bd2e8..9bd8650 100644
--- a/lib/librte_eal/common/include/rte_bus.h
+++ b/lib/librte_eal/common/include/rte_bus.h
@@ -209,6 +209,25 @@ void rte_eal_bus_unregister(struct rte_bus *bus);
  */
 struct rte_bus *rte_eal_get_bus(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 2075282..01d0cee 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>
@@ -847,6 +848,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) {
 
 		/*
@@ -887,6 +891,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");
+
 	rte_eal_mcfg_complete();
 
 	return fctret;
-- 
2.7.4