Acked-by: Chengwen Feng <[email protected]> Minor suggestion: how about replace "bool do_mp = internal_conf->no_shconf == 0;" to "bool do_mp = !!internal_conf->no_shconf;" or bool do_mp = internal_conf->no_shconf;"
the no_shconf's prototype is "volatile unsigned", most of invokation is some like "if (internal_conf->no_shconf)" On 6/28/2026 10:05 PM, David Marchand wrote: > If multi-process is disabled (--no-shconf/--in-memory), > there is no need to build a multi-process message. > > Signed-off-by: David Marchand <[email protected]> > --- > lib/eal/common/eal_common_dev.c | 46 ++++++++++++++++++++++++--------- > 1 file changed, 34 insertions(+), 12 deletions(-) > > diff --git a/lib/eal/common/eal_common_dev.c b/lib/eal/common/eal_common_dev.c > index 762ed09e21..47fc45aa3e 100644 > --- a/lib/eal/common/eal_common_dev.c > +++ b/lib/eal/common/eal_common_dev.c > @@ -267,10 +267,16 @@ RTE_EXPORT_SYMBOL(rte_dev_probe) > int > rte_dev_probe(const char *devargs) > { > + const struct internal_config *internal_conf = > + eal_get_internal_configuration(); > + bool do_mp = internal_conf->no_shconf == 0; > struct eal_dev_mp_req req; > struct rte_device *dev; > int ret; > > + if (!do_mp) > + goto skip_mp_req; > + > memset(&req, 0, sizeof(req)); > req.t = EAL_DEV_REQ_TYPE_ATTACH; > strlcpy(req.devargs, devargs, EAL_DEV_MP_DEV_ARGS_MAX_LEN); > @@ -294,6 +300,7 @@ rte_dev_probe(const char *devargs) > > /* attach a shared device from primary start from here: */ > > +skip_mp_req: > /* primary attach the new device itself. */ > ret = local_dev_probe(devargs, &dev); > > @@ -311,6 +318,9 @@ rte_dev_probe(const char *devargs) > return ret; > } > > + if (!do_mp) > + goto skip_mp_notify; > + > /* primary send attach sync request to secondary. */ > ret = eal_dev_hotplug_request_to_secondary(&req); > > @@ -337,16 +347,19 @@ rte_dev_probe(const char *devargs) > goto rollback; > } > > +skip_mp_notify: > return 0; > > rollback: > - req.t = EAL_DEV_REQ_TYPE_ATTACH_ROLLBACK; > + if (do_mp) { > + req.t = EAL_DEV_REQ_TYPE_ATTACH_ROLLBACK; > > - /* primary send rollback request to secondary. */ > - if (eal_dev_hotplug_request_to_secondary(&req) != 0) > - EAL_LOG(WARNING, > - "Failed to rollback device attach on secondary." > - "Devices in secondary may not sync with primary"); > + /* primary send rollback request to secondary. */ > + if (eal_dev_hotplug_request_to_secondary(&req) != 0) > + EAL_LOG(WARNING, > + "Failed to rollback device attach on secondary." > + "Devices in secondary may not sync with > primary"); > + } > > /* primary rollback itself. */ > if (local_dev_remove(dev) != 0) > @@ -407,6 +420,9 @@ RTE_EXPORT_SYMBOL(rte_dev_remove) > int > rte_dev_remove(struct rte_device *dev) > { > + const struct internal_config *internal_conf = > + eal_get_internal_configuration(); > + bool do_mp = internal_conf->no_shconf == 0; > struct eal_dev_mp_req req; > char *devargs; > int ret; > @@ -416,6 +432,9 @@ rte_dev_remove(struct rte_device *dev) > return -ENOENT; > } > > + if (!do_mp) > + goto skip_mp_req; > + > ret = build_devargs(dev->bus->name, dev->name, "", &devargs); > if (ret != 0) > return ret; > @@ -474,6 +493,7 @@ rte_dev_remove(struct rte_device *dev) > goto rollback; > } > > +skip_mp_req: > /* primary detach the device itself. */ > ret = local_dev_remove(dev); > > @@ -490,13 +510,15 @@ rte_dev_remove(struct rte_device *dev) > return 0; > > rollback: > - req.t = EAL_DEV_REQ_TYPE_DETACH_ROLLBACK; > + if (do_mp) { > + req.t = EAL_DEV_REQ_TYPE_DETACH_ROLLBACK; > > - /* primary send rollback request to secondary. */ > - if (eal_dev_hotplug_request_to_secondary(&req) != 0) > - EAL_LOG(WARNING, > - "Failed to rollback device detach on secondary." > - "Devices in secondary may not sync with primary"); > + /* primary send rollback request to secondary. */ > + if (eal_dev_hotplug_request_to_secondary(&req) != 0) > + EAL_LOG(WARNING, > + "Failed to rollback device detach on secondary." > + "Devices in secondary may not sync with > primary"); > + } > > return ret; > }

