mem: store memory mode flags in shared config
Currently, command-line switches for legacy mem mode or single-file segments mode are only stored in internal config. This leads to a situation where these flags have to always match between primary and secondary, which is bad for usability. Fix this by storing these flags in the shared config as well, so that secondary process can know if the primary was launched in single-file segments or legacy mem mode. This bumps the EAL ABI, however there's an EAL deprecation notice already in place[1] for a different feature, so that's OK. [1] http://patches.dpdk.org/patch/43502/ Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
This commit is contained in:
parent
ca372b3f50
commit
64cdfc35aa
@ -152,6 +152,10 @@ ABI Changes
|
||||
Also, make sure to start the actual text at the margin.
|
||||
=========================================================
|
||||
|
||||
* eal: added ``legacy_mem`` and ``single_file_segments`` values to
|
||||
``rte_config`` structure on account of improving DPDK usability when
|
||||
using either ``--legacy-mem`` or ``--single-file-segments`` flags.
|
||||
|
||||
|
||||
Removed Items
|
||||
-------------
|
||||
@ -198,7 +202,7 @@ The libraries prepended with a plus sign were incremented in this version.
|
||||
librte_compressdev.so.1
|
||||
librte_cryptodev.so.5
|
||||
librte_distributor.so.1
|
||||
librte_eal.so.8
|
||||
+ librte_eal.so.9
|
||||
librte_ethdev.so.10
|
||||
+ librte_eventdev.so.6
|
||||
librte_flow_classify.so.1
|
||||
|
@ -77,6 +77,10 @@ struct rte_mem_config {
|
||||
* exact same address the primary process maps it.
|
||||
*/
|
||||
uint64_t mem_cfg_addr;
|
||||
|
||||
/* legacy mem and single file segments options are shared */
|
||||
uint32_t legacy_mem;
|
||||
uint32_t single_file_segments;
|
||||
} __attribute__((__packed__));
|
||||
|
||||
|
||||
|
@ -10,7 +10,7 @@ ARCH_DIR ?= $(RTE_ARCH)
|
||||
EXPORT_MAP := ../../rte_eal_version.map
|
||||
VPATH += $(RTE_SDK)/lib/librte_eal/common/arch/$(ARCH_DIR)
|
||||
|
||||
LIBABIVER := 8
|
||||
LIBABIVER := 9
|
||||
|
||||
VPATH += $(RTE_SDK)/lib/librte_eal/common
|
||||
|
||||
|
@ -352,6 +352,24 @@ eal_proc_type_detect(void)
|
||||
return ptype;
|
||||
}
|
||||
|
||||
/* copies data from internal config to shared config */
|
||||
static void
|
||||
eal_update_mem_config(void)
|
||||
{
|
||||
struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;
|
||||
mcfg->legacy_mem = internal_config.legacy_mem;
|
||||
mcfg->single_file_segments = internal_config.single_file_segments;
|
||||
}
|
||||
|
||||
/* copies data from shared config to internal config */
|
||||
static void
|
||||
eal_update_internal_config(void)
|
||||
{
|
||||
struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;
|
||||
internal_config.legacy_mem = mcfg->legacy_mem;
|
||||
internal_config.single_file_segments = mcfg->single_file_segments;
|
||||
}
|
||||
|
||||
/* Sets up rte_config structure with the pointer to shared memory config.*/
|
||||
static void
|
||||
rte_config_init(void)
|
||||
@ -361,11 +379,13 @@ rte_config_init(void)
|
||||
switch (rte_config.process_type){
|
||||
case RTE_PROC_PRIMARY:
|
||||
rte_eal_config_create();
|
||||
eal_update_mem_config();
|
||||
break;
|
||||
case RTE_PROC_SECONDARY:
|
||||
rte_eal_config_attach();
|
||||
rte_eal_mcfg_wait_complete(rte_config.mem_config);
|
||||
rte_eal_config_reattach();
|
||||
eal_update_internal_config();
|
||||
break;
|
||||
case RTE_PROC_AUTO:
|
||||
case RTE_PROC_INVALID:
|
||||
|
@ -21,7 +21,7 @@ else
|
||||
error('unsupported system type "@0@"'.format(host_machine.system()))
|
||||
endif
|
||||
|
||||
version = 8 # the version of the EAL API
|
||||
version = 9 # the version of the EAL API
|
||||
allow_experimental_apis = true
|
||||
deps += 'compat'
|
||||
deps += 'kvargs'
|
||||
|
Loading…
x
Reference in New Issue
Block a user