devargs: fix policy check when adding arguments

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.

The same kind of check is already done when parsing EAL options.

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

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
This commit is contained in:
Gaetan Rivet 2017-08-02 19:12:07 +02:00 committed by Thomas Monjalon
parent 4d0e2a5da7
commit b631f3b0f2

View File

@ -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;