[dpdk-dev,v2] devargs: fix policy check in rte_eal_devargs_add

Message ID 1da8b8d0c80d7af97ca32c35a0215f99ad2f6666.1501693240.git.gaetan.rivet@6wind.com (mailing list archive)
State Accepted, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Gaëtan Rivet Aug. 2, 2017, 5:12 p.m. UTC
  Do not fail upon detecting a set bus configuration when adding an
rte_devargs. i.e. adding a blacklisted PCI device while the bus is
configured in whitelist mode.

This failure condition has been introduced when the bus policies
were implemented. This implementation however was meant to strictly
follow the existing API. This check was not and should not be performed
until the current API has been properly deprecated.

Fixes: 02823c1db0bc ("devargs: parse bus policies")

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
---

v2:

  - reword commitlog to better explain my intent.

 lib/librte_eal/common/eal_common_devargs.c | 16 +++-------------
 1 file changed, 3 insertions(+), 13 deletions(-)
  

Comments

Thomas Monjalon Aug. 3, 2017, 7:36 p.m. UTC | #1
02/08/2017 19:12, Gaetan Rivet:
> Do not fail upon detecting a set bus configuration when adding an
> rte_devargs. i.e. adding a blacklisted PCI device while the bus is
> configured in whitelist mode.
> 
> This failure condition has been introduced when the bus policies
> were implemented. This implementation however was meant to strictly
> follow the existing API. This check was not and should not be performed
> until the current API has been properly deprecated.
> 
> Fixes: 02823c1db0bc ("devargs: parse bus policies")
> 
> Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>

Adding a precision:
The same kind of check is already done when parsing EAL options.

Applied, thanks
  

Patch

diff --git a/lib/librte_eal/common/eal_common_devargs.c b/lib/librte_eal/common/eal_common_devargs.c
index 33e9f0a..6ac88d6 100644
--- a/lib/librte_eal/common/eal_common_devargs.c
+++ b/lib/librte_eal/common/eal_common_devargs.c
@@ -170,22 +170,12 @@  rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str)
 	bus = devargs->bus;
 	if (devargs->type == RTE_DEVTYPE_BLACKLISTED_PCI)
 		devargs->policy = RTE_DEV_BLACKLISTED;
-	if (devargs->policy == RTE_DEV_WHITELISTED) {
-		if (bus->conf.scan_mode == RTE_BUS_SCAN_UNDEFINED) {
+	if (bus->conf.scan_mode == RTE_BUS_SCAN_UNDEFINED) {
+		if (devargs->policy == RTE_DEV_WHITELISTED)
 			bus->conf.scan_mode = RTE_BUS_SCAN_WHITELIST;
-		} else if (bus->conf.scan_mode == RTE_BUS_SCAN_BLACKLIST) {
-			fprintf(stderr, "ERROR: incompatible device policy and bus scan mode\n");
-			goto fail;
-		}
-	} else if (devargs->policy == RTE_DEV_BLACKLISTED) {
-		if (bus->conf.scan_mode == RTE_BUS_SCAN_UNDEFINED) {
+		else if (devargs->policy == RTE_DEV_BLACKLISTED)
 			bus->conf.scan_mode = RTE_BUS_SCAN_BLACKLIST;
-		} else if (bus->conf.scan_mode == RTE_BUS_SCAN_WHITELIST) {
-			fprintf(stderr, "ERROR: incompatible device policy and bus scan mode\n");
-			goto fail;
-		}
 	}
-
 	TAILQ_INSERT_TAIL(&devargs_list, devargs, next);
 	return 0;