From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <hemant.agrawal@nxp.com>
Received: from EUR01-DB5-obe.outbound.protection.outlook.com
 (mail-db5eur01on0086.outbound.protection.outlook.com [104.47.2.86])
 by dpdk.org (Postfix) with ESMTP id 0AE965F17
 for <dev@dpdk.org>; Wed, 25 Apr 2018 14:59:11 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; 
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version;
 bh=SnTk8+iOt+2s7iv6YedZO1mU3V8lqiWEwcECy3padWE=;
 b=aOMMLJ7CoKqmJZqh5j1Z5VtkfmcAMJ5GZ6WMlN+fiVS6EWivipJ1jmDo/g9G+RXlvNRzLViTzg9hWzELTe5d4fvbAHh+LO9t0RbdP9RP4NkGK121jmpm0JEmyEI8iSRZo/3J8P7kj+erc8FD7bjoK1DC5DIGLxoLXmebALR/urA=
Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=hemant.agrawal@nxp.com; 
Received: from bf-netperf1.ap.freescale.net (14.142.187.166) by
 DB4PR04MB0765.eurprd04.prod.outlook.com (2a01:111:e400:984d::18) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.696.15; Wed, 25
 Apr 2018 12:59:07 +0000
From: Hemant Agrawal <hemant.agrawal@nxp.com>
To: dev@dpdk.org
Cc: ferruh.yigit@intel.com,
	shreyansh.jain@nxp.com
Date: Wed, 25 Apr 2018 18:26:59 +0530
Message-Id: <1524661022-21484-2-git-send-email-hemant.agrawal@nxp.com>
X-Mailer: git-send-email 2.7.4
In-Reply-To: <1524661022-21484-1-git-send-email-hemant.agrawal@nxp.com>
References: <1524661022-21484-1-git-send-email-hemant.agrawal@nxp.com>
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [14.142.187.166]
X-ClientProxiedBy: MAXPR0101CA0035.INDPRD01.PROD.OUTLOOK.COM
 (2603:1096:a00:d::21) To DB4PR04MB0765.eurprd04.prod.outlook.com
 (2a01:111:e400:984d::18)
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-HT: Tenant
X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0;
 RULEID:(7020095)(4652020)(48565401081)(5600026)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020);
 SRVR:DB4PR04MB0765; 
X-Microsoft-Exchange-Diagnostics: 1; DB4PR04MB0765;
 3:2wQdJJ+oO6vKLg9mfy3G2A/v3O7245R53eH0tWkQtbUVQOa6AS2PYf7wEpAZRpEFnhS2xjZ8vlq6y7bmbW5sdO3vn9XzgkVvYd32KTZp268TBwFPYMz36xt/9VT/W6R3pKDmWeZuRN2Iyhh36gC8rUKtkhqhIxTa1Nfn8E3LuG/q69npCDoTpfFmqE5pXv543wVfpPWmFqb/6VjzMrIC93NVnw16zRagvot5QgYuycPY/7kLYEGXa13Ao9L2eoNL;
 25:cmOVZCfTxHXccB1e0PjaJ/uLEEWXDIhbzc51VSvOmqkHDwZ2mVDmEiCO+jbRFnFlTGEhW60okeRZkPXqzMn+SGqVSXsE4vo4MnmsIl5e7mFAONZna6KVb5SqlLMzrzagzQuoU55Q0KWkEMNO5v6QdX8vv3PYdaBOfm1a7dABYHSuCsEvAgkF7rGwRwB4/gsSnHJDm8coZRAkeJ0YZWUd2PeBQjxbj4q12t9byoiB2Vn3S35QGA/W7Ee+Bb//mAoHEAylkucdAoZpjNo4/8yAIlJ+8j05jeWHUonEzrDL+7HLAEfrfsrerGWKYYLC35usBMLfwh/VQZDRyfSeyH1Xlzri3bXJ2KHog1HC5Ez6Yak=;
 31:CfStKa5W7QzrfxGA/+L52s94wF8aiSK+7yPZ2mMQGzWLbPw1X/9csROfPcMTWUzLU7StbMArnHWlCTNTP76l6YrfmyA4kQv4LCklHmQ5ENVykh974uGsK3jdfJIVNI4l4X+QZG/kKhulUrWT8RQG0namDTYKrDZd9xNnMGKT2wN3mZ9AftkIp1wXLMboPvnN4zvn8glJQEfAlUEOCnLSWlrfAqbCuLTOb2KfUvGUUgs=
X-MS-TrafficTypeDiagnostic: DB4PR04MB0765:
X-Microsoft-Exchange-Diagnostics: 1; DB4PR04MB0765;
 20:Z3aFVqg34UsXC/Up81puhre9d+JmtKEWNFjCGoPNZKssX7s8WR5WDRiA7pFQetwQ4x4S3aFnj9AHYdNUyAl7nu6+SYeAOHqHlE0he+UAxu97HL3nyf9pEGW48YfRbMLChlBTnrQnEUGbNHPUOob8s09Wb2GScoay3MQJWE8lsxeCgFz1SnA2DNcDgipr6fPKHdC8kM3j09/Kwn1T2RUnHj9BeWJmbkSUi6awZybM+SP9bUU5UuA8N1m6YvGsVTLGrMVp8Zqa5ef4HAIIfxwdIigEDfMS65kIYRgxM2ZDrp7Y/cy2XLwKqNWavDMBbIma4e2sCWy+9kG1lSkYeILyiXHQ/y1RP8cfhMd+/4OVBUrLNWvjmQY9aI7ZxDI9OS2CwzDc3dinZb3hvFQsYX1e97/m4bH2FaeyhN/iQ+dZXLCRWJRR+C1lTFpUbHCw9EvlhAIDHMjUSZ+qsx/JgyMyMH6MOKQ/QuxU1uxtvX0he9NzlxAWr4M1s6mIUT9++kuC;
 4:0M+v++22sgoUiCE7tsnUCwMmvsZew+DAyoJPvtr1NvWZ8EyDvLZ9PT2FNhPrpMgNz15MMoXEiiR5O4yXgaf4wI3llhK26o420JqjuWhmwPWSMTDSmGKs6EuI0kxtPx9wBtgkfew1b0AvsnldvXS1SbGRY5thcTaTkN3pF58A3ooI6bOXqOWUlZ71ItYIXF5r/8XGgQWNDCj/SmW977SOIELOybvinYVcPjnyRtHiG18Xn9RKBYoc0jUMmXZXZKe7axm/D8/VORIZVI8SuHo3rw5XRLtTvQmu2eEIZ0XzXBVHXRw6JP+EZNga1ip8Mg7R
X-Microsoft-Antispam-PRVS: <DB4PR04MB0765497BBCDD54F4D42EA986898F0@DB4PR04MB0765.eurprd04.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:(185117386973197);
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0;
 RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231232)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(6041310)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123558120)(6072148)(201708071742011);
 SRVR:DB4PR04MB0765; BCL:0; PCL:0; RULEID:; SRVR:DB4PR04MB0765; 
X-Forefront-PRVS: 06530126A4
X-Forefront-Antispam-Report: SFV:NSPM;
 SFS:(10009020)(39380400002)(346002)(376002)(39860400002)(396003)(366004)(189003)(199004)(3846002)(186003)(26005)(6506007)(956004)(76176011)(97736004)(2616005)(11346002)(105586002)(446003)(6486002)(5009440100003)(486006)(386003)(52116002)(2351001)(2361001)(51416003)(5660300001)(25786009)(478600001)(2906002)(44832011)(316002)(16586007)(50226002)(47776003)(6666003)(6916009)(36756003)(8936002)(476003)(6512007)(106356001)(6116002)(55236004)(66066001)(53936002)(16526019)(68736007)(4326008)(86362001)(7736002)(81156014)(575784001)(8676002)(81166006)(50466002)(305945005)(48376002)(110426005);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB4PR04MB0765; H:bf-netperf1.ap.freescale.net;
 FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; 
Received-SPF: None (protection.outlook.com: nxp.com does not designate
 permitted sender hosts)
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB4PR04MB0765;
 23:gzkzEgLuiOWhVkX18CNlYK9qfFNkXQGMKGKlKjBDz?=
 =?us-ascii?Q?ZUmQ84rgqaWrc7/DdirMLzblzWsjvZtS1mzeZSsQOqIkxXkhu5eyK7jXu/Y1?=
 =?us-ascii?Q?DaXCWeM/26bI0YHod/pADN4wYCC6Tkii1T9mjfZPv95myedLCbf0i+JQ6v9G?=
 =?us-ascii?Q?TacWMTOUr8X6hb1QZ0NUandQqEyTOkICe9TM2Kl0zItrgauShgR2wizwkGzc?=
 =?us-ascii?Q?Ds92vXsVU7Gconb6to80odyIm2cuw8XLtwOrXt08v+xZ9pjqBR6tS6kaM6WM?=
 =?us-ascii?Q?UT3N4pv/QLKlOcQcY7BqBa3zKsqyjk9begXlPZspWZBeptK2H4P77R1lrd+w?=
 =?us-ascii?Q?j39My5aBz2ecb8OW2zFdaduCS/UIt0urNckhiudrPv4EX5TQjQhTmCciYEPy?=
 =?us-ascii?Q?6zYJvyAERZAGZ9WFsyG98Ww/tiwfo7MN3g2Ad6fFchOV0e0zdyAZ32zOOG2A?=
 =?us-ascii?Q?8Azw/gEmgn5Evhf32COwpYDLxdIVAmRsLz80e7fuyEm7z5n79zHBay+8enKV?=
 =?us-ascii?Q?4gfFu1IofkpSfaqioZoIrousChtS516B63+N77jVuDhoNrTDbayyTzun3Dkd?=
 =?us-ascii?Q?BJClnT8ICC2RpfMBobKzEEzp71+smkXVtZ+jHo+XyQlXu5Dq5KtHKK6PwcIG?=
 =?us-ascii?Q?C/8prj1nx7Cy7g7pFXA7SXpZ1+Pt2mapxxapCyjuLiXSfJyNKpTjXHGLM1nM?=
 =?us-ascii?Q?6el9b4rOMQnJhKYlUbklVRjzldJjna7CGlwPC0WgtM7TwLy9gykEHM+QYvIu?=
 =?us-ascii?Q?UWbaQ8Sm3xjIZuEYZZSd9uP/dFZZlRjp/GQE+XTyi3BrBCI94VQNneCT9d16?=
 =?us-ascii?Q?3o4scYTPy/ksYeUZMSqb7OWYus/big7ioL6cTGMqiEk2OAjxZpLapMJ1CX6i?=
 =?us-ascii?Q?aMivKLtzeGfyISE85cLwdmj7b5swGvgsjg8jQQ9M71x6locWpB/1t7AQ/Jnj?=
 =?us-ascii?Q?EmHnpo/cvhfmImEyiLwZrSrfLadAWeIsdNuyy+VcNIoMoEjdBTkQzHISAo8v?=
 =?us-ascii?Q?1svgUxPEuC8+2TQhYhe0jzNABsPGpZGMhdW0m8Jqe4yzyKZnlpo1tZpUjyHH?=
 =?us-ascii?Q?uLvogPgpuUYdL7+dh/GVstApDbeN5064DubCEy8hvaVx/sgOgymNLZwYIUPK?=
 =?us-ascii?Q?uG6SyJS9Nik00edekDC6zkhLM3Mz7a2mQ02yQlLzQHjjlsIre9XCsYK1rnQu?=
 =?us-ascii?Q?QyKX9ZCVlDVHs/VBNFju6uwCRileL1mLfIy3BQW5UjatqLtvLpnEWfgp3qqK?=
 =?us-ascii?Q?yhQFKP+37ZV3W7dsXTj9+YQkJQlfzzqAjNiXAXqySM41HgLUDGECtkdZYJKK?=
 =?us-ascii?Q?1zNsvezGfnQjx8pYiiRfKLd0s5meyhlo+ZQX51+We0B?=
X-Microsoft-Antispam-Message-Info: 04I4sRwOgHSwiyBdkTDaEwNsffdnVvxq3/NQ77gg8azTsfr0ze5YeshalLCU+EYSMMRmUfycMBemly0DL3AUJmlPWyIb7xRAiiFC0OULMJIifvYRPyF5A6EJQ/en5sLBzs79U0Nem13W7DnJTnWqwwabFZm+ZESAU+IOI7CceFCJ/atmrFgErMoEb5X0zFFT
X-Microsoft-Exchange-Diagnostics: 1; DB4PR04MB0765;
 6:7xTKW0NYl7bw+qxSESkh2UgL96TGX/UnXvntlWgpMAKorIiWXnkyF3rg1UxPggnD6l38KUgkp89dFA8VoNi2E+lx1gQZ1bSfNH/ngImZmez0u7FfiBx7sovIH5dvaafqVfdTNshCixBQW0+GBDb9oOn/ThFeXDax9PmFkQcIOlmivwjTZsSDLhuSd1KW1sCKHl+0HHg0l1jcJOxLYSq+1badKb+nF/JYkIijLvXoRtyEi/qRM3BPfe0rlCFIwSjzRRNS9FuXd7YzoElAUQa1FEAbf/swewboo3XBJMhP8x6m+o8pR8fOnHzrL167hymstd47yqJQeepx0/s2W5sjmZGR9peru10IgHcQXPpYgN7ebtW738MiGZVZZlytqGiMVlESDznur6xix9BfKmM5oTPQyXdQnS4bLMR1pta3phtsMJr70dAj0Aw4uBwzzVcRirShJu2/M3ju+xukXLI86w==;
 5:1ZNH82tJ8Uzo3IaIcu/mKcGpIrRWFXOutjl/BAIwzFkx2A64JHCDtvrfSSD8gSWmyiC4cE3dS4sGXxs0EPS/+YhUuGpVbj9o/o9GFFDXDpEnil9TBqWTLcQQX9ZH85KhYq+B69KYfF/f4G8omBgCqjVTq9sFwaAqej76xLgxFPY=;
 24:PTz2t9qU0HWRnijIVzh+twixdwXq//YRxouf1e6LWhaQ59jwDlq++I61mzsnlvlMA+K2iv5xCBTAfARTsFrKokC2gb6BuE/da+kh/3M34Mo=
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-Microsoft-Exchange-Diagnostics: 1; DB4PR04MB0765;
 7:seqIlQtnu3K/wVZbmncwVtdoW1rodcD+4pYKxWQZQvCmsUDRML450p0AfzeOm4G1qkgi2RBeyZ0L+dbw88sahmxWQlAIUe008a3JR4s40GT+MmpwpUn5J5+h/q8ywfQhwwED1AW5/Jx8A0TnTcfq+e43d9aMNxfDKO0JFns56iZStlATG8YEfRI2OtQwj9Kh7lLgeUIGyYt/S0b+5Sdh1hlBohG7k9Iq7LNjPVZyh9ras+C+GMdXx1S0sWdJ9Kvl
X-MS-Office365-Filtering-Correlation-Id: d6b5e20e-7cd8-4a18-c604-08d5aaac5560
X-OriginatorOrg: nxp.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Apr 2018 12:59:07.4733 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d6b5e20e-7cd8-4a18-c604-08d5aaac5560
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR04MB0765
Subject: [dpdk-dev] [PATCH 2/5] bus/fslmc: support device blacklisting
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://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: <https://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Wed, 25 Apr 2018 12:59:11 -0000

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 doc/guides/cryptodevs/dpaa2_sec.rst |  11 ++++
 doc/guides/nics/dpaa2.rst           |  11 ++++
 drivers/bus/fslmc/fslmc_bus.c       | 107 ++++++++++++++++++++++++++++++++----
 drivers/bus/fslmc/rte_fslmc.h       |   4 ++
 4 files changed, 122 insertions(+), 11 deletions(-)

diff --git a/doc/guides/cryptodevs/dpaa2_sec.rst b/doc/guides/cryptodevs/dpaa2_sec.rst
index 5558ea5..0fdd673 100644
--- a/doc/guides/cryptodevs/dpaa2_sec.rst
+++ b/doc/guides/cryptodevs/dpaa2_sec.rst
@@ -134,6 +134,17 @@ Supported DPAA2 SoCs
 * LS2088A/LS2048A
 * LS1088A/LS1048A
 
+Whitelisting & Blacklisting
+---------------------------
+
+For blacklisting a DPAA2 SEC device, following commands can be used.
+
+ .. code-block:: console
+
+    <dpdk app> <EAL args> -b "fslmc:dpseci.x" -- ...
+
+Where x is the device object id as configured in resource container.
+
 Limitations
 -----------
 
diff --git a/doc/guides/nics/dpaa2.rst b/doc/guides/nics/dpaa2.rst
index 8e38eff..7d069aa 100644
--- a/doc/guides/nics/dpaa2.rst
+++ b/doc/guides/nics/dpaa2.rst
@@ -561,6 +561,17 @@ which are lower than logging ``level``.
 Using ``pmd.dpaa2`` as log matching criteria, all PMD logs can be enabled
 which are lower than logging ``level``.
 
+Whitelisting & Blacklisting
+---------------------------
+
+For blacklisting a DPAA2 device, following commands can be used.
+
+ .. code-block:: console
+
+    <dpdk app> <EAL args> -b "fslmc:dpni.x" -- ...
+
+Where x is the device object id as configured in resource container.
+
 Limitations
 -----------
 
diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c
index d0b3261..e7c8cc6 100644
--- a/drivers/bus/fslmc/fslmc_bus.c
+++ b/drivers/bus/fslmc/fslmc_bus.c
@@ -23,6 +23,7 @@
 int dpaa2_logtype_bus;
 
 #define VFIO_IOMMU_GROUP_PATH "/sys/kernel/iommu_groups"
+#define FSLMC_BUS_NAME	fslmc
 
 struct rte_fslmc_bus rte_fslmc_bus;
 uint8_t dpaa2_virt_mode;
@@ -93,6 +94,22 @@ insert_in_device_list(struct rte_dpaa2_device *newdev)
 		TAILQ_INSERT_TAIL(&rte_fslmc_bus.device_list, newdev, next);
 }
 
+static struct rte_devargs *
+fslmc_devargs_lookup(struct rte_dpaa2_device *dev)
+{
+	struct rte_devargs *devargs;
+	char dev_name[32];
+
+	RTE_EAL_DEVARGS_FOREACH("fslmc", devargs) {
+		devargs->bus->parse(devargs->name, &dev_name);
+		if (strcmp(dev_name, dev->device.name) == 0) {
+			DPAA2_BUS_INFO("**Devargs matched %s", dev_name);
+			return devargs;
+		}
+	}
+	return NULL;
+}
+
 static void
 dump_device_list(void)
 {
@@ -182,6 +199,7 @@ scan_one_fslmc_device(char *dev_name)
 		DPAA2_BUS_ERR("Unable to clone device name. Out of memory");
 		goto cleanup;
 	}
+	dev->device.devargs = fslmc_devargs_lookup(dev);
 
 	/* Add device in the fslmc device list */
 	insert_in_device_list(dev);
@@ -200,6 +218,54 @@ scan_one_fslmc_device(char *dev_name)
 }
 
 static int
+rte_fslmc_parse(const char *name, void *addr)
+{
+	uint16_t dev_id;
+	char *t_ptr;
+	char *sep = strchr(name, ':');
+
+	if (strncmp(name, RTE_STR(FSLMC_BUS_NAME),
+		strlen(RTE_STR(FSLMC_BUS_NAME)))) {
+		return -EINVAL;
+	}
+
+	if (!sep) {
+		DPAA2_BUS_ERR("Incorrect device name observed");
+		return -EINVAL;
+	}
+
+	t_ptr = (char *)(sep + 1);
+
+	if (strncmp("dpni", t_ptr, 4) &&
+	    strncmp("dpseci", t_ptr, 6) &&
+	    strncmp("dpcon", t_ptr, 5) &&
+	    strncmp("dpbp", t_ptr, 4) &&
+	    strncmp("dpio", t_ptr, 4) &&
+	    strncmp("dpci", t_ptr, 4) &&
+	    strncmp("dpmcp", t_ptr, 5) &&
+	    strncmp("dpdmai", t_ptr, 6)) {
+		DPAA2_BUS_ERR("Unknown or unsupported device");
+		return -EINVAL;
+	}
+
+	t_ptr = strchr(name, '.');
+	if (!t_ptr) {
+		DPAA2_BUS_ERR("Incorrect device string observed (%s)", t_ptr);
+		return -EINVAL;
+	}
+
+	t_ptr = (char *)(t_ptr + 1);
+	if (sscanf(t_ptr, "%hu", &dev_id) <= 0) {
+		DPAA2_BUS_ERR("Incorrect device string observed (%s)", t_ptr);
+		return -EINVAL;
+	}
+
+	if (addr)
+		strcpy(addr, (char *)(sep + 1));
+	return 0;
+}
+
+static int
 rte_fslmc_scan(void)
 {
 	int ret;
@@ -274,6 +340,8 @@ static int
 rte_fslmc_probe(void)
 {
 	int ret = 0;
+	int probe_all;
+
 	struct rte_dpaa2_device *dev;
 	struct rte_dpaa2_driver *drv;
 
@@ -303,6 +371,8 @@ rte_fslmc_probe(void)
 		return 0;
 	}
 
+	probe_all = rte_fslmc_bus.bus.conf.scan_mode != RTE_BUS_SCAN_WHITELIST;
+
 	TAILQ_FOREACH(dev, &rte_fslmc_bus.device_list, next) {
 		TAILQ_FOREACH(drv, &rte_fslmc_bus.driver_list, next) {
 			ret = rte_fslmc_match(drv, dev);
@@ -312,9 +382,21 @@ rte_fslmc_probe(void)
 			if (!drv->probe)
 				continue;
 
-			ret = drv->probe(drv, dev);
-			if (ret)
-				DPAA2_BUS_ERR("Unable to probe");
+			if (dev->device.devargs &&
+			  dev->device.devargs->policy == RTE_DEV_BLACKLISTED) {
+				DPAA2_BUS_LOG(DEBUG, "%s Blacklisted, skipping",
+					      dev->device.name);
+				continue;
+			}
+
+			if (probe_all ||
+			   (dev->device.devargs &&
+			   dev->device.devargs->policy ==
+			   RTE_DEV_WHITELISTED)) {
+				ret = drv->probe(drv, dev);
+				if (ret)
+					DPAA2_BUS_ERR("Unable to probe");
+			}
 			break;
 		}
 	}
@@ -329,17 +411,19 @@ static struct rte_device *
 rte_fslmc_find_device(const struct rte_device *start, rte_dev_cmp_t cmp,
 		      const void *data)
 {
+	const struct rte_dpaa2_device *dstart;
 	struct rte_dpaa2_device *dev;
 
-	TAILQ_FOREACH(dev, &rte_fslmc_bus.device_list, next) {
-		if (start != NULL) {
-			if (&dev->device == start)
-				start = NULL;  /* starting point found */
-			continue;
-		}
-
+	if (start != NULL) {
+		dstart = RTE_DEV_TO_FSLMC_CONST(start);
+		dev = TAILQ_NEXT(dstart, next);
+	} else {
+		dev = TAILQ_FIRST(&rte_fslmc_bus.device_list);
+	}
+	while (dev != NULL) {
 		if (cmp(&dev->device, data) == 0)
 			return &dev->device;
+		dev = TAILQ_NEXT(dev, next);
 	}
 
 	return NULL;
@@ -422,6 +506,7 @@ struct rte_fslmc_bus rte_fslmc_bus = {
 	.bus = {
 		.scan = rte_fslmc_scan,
 		.probe = rte_fslmc_probe,
+		.parse = rte_fslmc_parse,
 		.find_device = rte_fslmc_find_device,
 		.get_iommu_class = rte_dpaa2_get_iommu_class,
 	},
@@ -430,7 +515,7 @@ struct rte_fslmc_bus rte_fslmc_bus = {
 	.device_count = {0},
 };
 
-RTE_REGISTER_BUS(fslmc, rte_fslmc_bus.bus);
+RTE_REGISTER_BUS(FSLMC_BUS_NAME, rte_fslmc_bus.bus);
 
 RTE_INIT(fslmc_init_log);
 static void
diff --git a/drivers/bus/fslmc/rte_fslmc.h b/drivers/bus/fslmc/rte_fslmc.h
index 69d0fec..de40e86 100644
--- a/drivers/bus/fslmc/rte_fslmc.h
+++ b/drivers/bus/fslmc/rte_fslmc.h
@@ -31,6 +31,7 @@ extern "C" {
 #include <rte_dev.h>
 #include <rte_bus.h>
 #include <rte_tailq.h>
+#include <rte_devargs.h>
 
 #include <fslmc_vfio.h>
 
@@ -49,6 +50,9 @@ struct rte_dpaa2_driver;
 TAILQ_HEAD(rte_fslmc_device_list, rte_dpaa2_device);
 TAILQ_HEAD(rte_fslmc_driver_list, rte_dpaa2_driver);
 
+#define RTE_DEV_TO_FSLMC_CONST(ptr) \
+	container_of(ptr, const struct rte_dpaa2_device, device)
+
 extern struct rte_fslmc_bus rte_fslmc_bus;
 
 enum rte_dpaa2_dev_type {
-- 
2.7.4