In functions rte_dev_probe() and __handle_secondary_request(), an error message was logged as a failure if the probe returns -EEXIST. Anyway this error code is not returned by rte_dev_probe() as it is not considered as an error. For instance, in multi-process case, some synchronizations may request to probe a device which was already probed before by the process.
Signed-off-by: Thomas Monjalon <tho...@monjalon.net> --- lib/librte_eal/common/eal_common_dev.c | 12 ++---------- lib/librte_eal/common/hotplug_mp.c | 5 ++--- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/lib/librte_eal/common/eal_common_dev.c b/lib/librte_eal/common/eal_common_dev.c index 048c0b025f..deaaea9345 100644 --- a/lib/librte_eal/common/eal_common_dev.c +++ b/lib/librte_eal/common/eal_common_dev.c @@ -222,18 +222,10 @@ rte_dev_probe(const char *devargs) /* primary attach the new device itself. */ ret = local_dev_probe(devargs, &dev); - if (ret != 0) { + if (ret != 0 && ret != -EEXIST) { RTE_LOG(ERR, EAL, "Failed to attach device on primary process\n"); - - /** - * it is possible that secondary process failed to attached a - * device that primary process have during initialization, - * so for -EEXIST case, we still need to sync with secondary - * process. - */ - if (ret != -EEXIST) - return ret; + return ret; } /* primary send attach sync request to secondary. */ diff --git a/lib/librte_eal/common/hotplug_mp.c b/lib/librte_eal/common/hotplug_mp.c index 94bd1d896e..69e9a16d6a 100644 --- a/lib/librte_eal/common/hotplug_mp.c +++ b/lib/librte_eal/common/hotplug_mp.c @@ -96,10 +96,9 @@ __handle_secondary_request(void *param) if (req->t == EAL_DEV_REQ_TYPE_ATTACH) { ret = local_dev_probe(req->devargs, &dev); - if (ret != 0) { + if (ret != 0 && ret != -EEXIST) { RTE_LOG(ERR, EAL, "Failed to hotplug add device on primary\n"); - if (ret != -EEXIST) - goto finish; + goto finish; } ret = eal_dev_hotplug_request_to_secondary(&tmp_req); if (ret != 0) { -- 2.20.1