Hi David, > From: David Marchand [mailto:david.marchand at 6wind.com] > Subject: Re: [PATCH v6] eal: add function to check if primary proc alive
> When I look at this new api, I am under the impression that you are > supposed to check for primary liveliness once dpdk init has finished > (from your secondary process point of view), not before and not while > it is initialising. The issue is that if a secondary process is initialized, it holds a read lock on /var/run/.rte_config and this prevents a primary from starting. So we *must* detect a primary process being ready to attach to, *without* having called rte_eal_init() in the secondary process. > Why do you need to move this ? Issues arise when a primary and secondary process both scan the PCI devices at the same time. Moving rte_eal_mcfg_complete() solves this race-cond because the secondary process will wait until the primary is finished. > > + if (config_file_path) > > + config_fd = open(config_file_path, O_RDONLY); > > + else { > > + char default_path[PATH_MAX+1]; > > + snprintf(default_path, PATH_MAX, RUNTIME_CONFIG_FMT, > > + default_config_dir, "rte"); > > + config_fd = open(default_path, O_RDONLY); > > Can't you reuse eal_runtime_config_path() here ? No, as rte_eal_init() has not been called, for the same reason as above. As rte_eal_init() has not been called, the shared config that is read by eal_runtime_config_path() has not been initialized. -Harry