Hi,

I think there is a real bug to fix in 17.08-rc2.
More details below. Proposals are welcome.
07/07/2017 02:04, Gaetan Rivet:
> --- a/lib/librte_eal/common/eal_common_devargs.c
> +++ b/lib/librte_eal/common/eal_common_devargs.c
> @@ -143,6 +143,21 @@ rte_eal_devargs_add(enum rte_devtype devtype, const char 
> *devargs_str)
>  
>               break;
>       }
> +     if (devargs->type == RTE_DEVTYPE_WHITELISTED_PCI) {
> +             if (bus->conf.scan_mode == RTE_BUS_SCAN_UNDEFINED) {
> +                     bus->conf.scan_mode = RTE_BUS_SCAN_WHITELIST;
> +             } else if (bus->conf.scan_mode == RTE_BUS_SCAN_BLACKLIST) {
> +                     fprintf(stderr, "ERROR: incompatible device type and 
> bus scan mode\n");
> +                     goto fail;
> +             }
> +     } else if (devargs->type == RTE_DEVTYPE_BLACKLISTED_PCI) {
> +             if (bus->conf.scan_mode == RTE_BUS_SCAN_UNDEFINED) {
> +                     bus->conf.scan_mode = RTE_BUS_SCAN_BLACKLIST;
> +             } else if (bus->conf.scan_mode == RTE_BUS_SCAN_WHITELIST) {
> +                     fprintf(stderr, "ERROR: incompatible device type and 
> bus scan mode\n");
> +                     goto fail;
> +             }
> +     }

After another look, there is something wrong here.
You are checking a probe policy (wrongly named scan_mode), in a function
which can be not related at all with bus probing.

Example with failsafe:
1/ We blacklist a device for the global EAL probe.
So the probing mode is set from "undefined" to "blacklist".
2/ We add the device as a failsafe slave.
3/ The device must be plugged, no matter of the probe policy.
But it is seen as a whitelist and rejected because the bus probing
is in blacklist mode.

I think it is a serious bug.

PS: thanks Matan for having checked it

Reply via email to