Hello Anatoly, On Mon, Aug 12, 2019 at 3:38 PM Burakov, Anatoly <anatoly.bura...@intel.com> wrote: > > On 12-Aug-19 11:19 AM, David Marchand wrote: > > On Tue, Jul 16, 2019 at 1:25 PM Anatoly Burakov > > <anatoly.bura...@intel.com> wrote: > >> > >> According to our docs, only Linuxapp supports base-virtaddr option. > >> That is, strictly speaking, not true because most of the things > >> that are attempting to respect base-virtaddr are in common files, > >> so FreeBSD already *mostly* supports this option in practice. > >> > >> This commit fixes the remaining bits to explicitly support > >> base-virtaddr option, and moves the arg parsing from EAL to common > >> options parsing code. Documentation is also updated to reflect > >> that all platforms now support base-virtaddr. > >> > >> Signed-off-by: Anatoly Burakov <anatoly.bura...@intel.com> > >> --- > >> doc/guides/linux_gsg/eal_args.include.rst | 6 +++ > >> doc/guides/linux_gsg/linux_eal_parameters.rst | 6 --- > >> doc/guides/rel_notes/release_19_08.rst | 5 +++ > >> lib/librte_eal/common/eal_common_options.c | 38 ++++++++++++++++++ > >> lib/librte_eal/freebsd/eal/eal.c | 13 ++++++- > >> lib/librte_eal/linux/eal/eal.c | 39 ------------------- > >> 6 files changed, 60 insertions(+), 47 deletions(-) > >> > >> diff --git a/doc/guides/linux_gsg/eal_args.include.rst > >> b/doc/guides/linux_gsg/eal_args.include.rst > >> index cf421a56e..ed8b0e35b 100644 > >> --- a/doc/guides/linux_gsg/eal_args.include.rst > >> +++ b/doc/guides/linux_gsg/eal_args.include.rst > >> @@ -86,6 +86,12 @@ Multiprocessing-related options > >> > >> Set the type of the current process. > >> > >> +* ``--base-virtaddr <address>`` > >> + > >> + Attempt to use a different starting address for all memory maps of the > >> + primary DPDK process. This can be helpful if secondary processes > >> cannot > >> + start due to conflicts in address map. > >> + > > > > doc/guides/freebsd_gsg/freebsd_eal_parameters.rst:.. include:: > > ../linux_gsg/eal_args.include.rst > > > > Ok, a bit misleading to put in linux_gsg/, so writing this here if > > someone else looks at this :-) > > This was agreed upon when this file was first introduced. We don't have > a "common" section and there's no real way to create it without > triggering a bunch of errors in doxygen, so it was decided that putting > this in a Linux GSG is the best way to do this. > > > > > > >> Memory-related options > >> ~~~~~~~~~~~~~~~~~~~~~~ > >> > >> diff --git a/doc/guides/linux_gsg/linux_eal_parameters.rst > >> b/doc/guides/linux_gsg/linux_eal_parameters.rst > >> index c63f0f49a..b2cc60e44 100644 > >> --- a/doc/guides/linux_gsg/linux_eal_parameters.rst > >> +++ b/doc/guides/linux_gsg/linux_eal_parameters.rst > >> @@ -49,12 +49,6 @@ Multiprocessing-related options > >> allows running multiple independent DPDK primary/secondary processes > >> under > >> different prefixes. > >> > >> -* ``--base-virtaddr <address>`` > >> - > >> - Attempt to use a different starting address for all memory maps of the > >> - primary DPDK process. This can be helpful if secondary processes > >> cannot > >> - start due to conflicts in address map. > >> - > >> Memory-related options > >> ~~~~~~~~~~~~~~~~~~~~~~ > >> > >> diff --git a/doc/guides/rel_notes/release_19_08.rst > >> b/doc/guides/rel_notes/release_19_08.rst > >> index 4a1fd8dd8..1b58d9282 100644 > >> --- a/doc/guides/rel_notes/release_19_08.rst > >> +++ b/doc/guides/rel_notes/release_19_08.rst > >> @@ -56,6 +56,11 @@ New Features > >> Also, make sure to start the actual text at the margin. > >> ========================================================= > >> > >> +* **FreeBSD now supports `--base-virtaddr` EAL option.** > >> + > >> + FreeBSD version now also supports setting base virtual address for > >> mapping > >> + pages and resources into its address space. > >> + > >> * **Added MCS lock.** > >> > >> MCS lock provides scalability by spinning on a CPU/thread local > >> variable > > > > Well, obviously, this needs some rebase on 19.11-rc0 :-) > > Yes, will do. > > > > >> diff --git a/lib/librte_eal/common/eal_common_options.c > >> b/lib/librte_eal/common/eal_common_options.c > >> index 512d5088e..156e48e19 100644 > >> --- a/lib/librte_eal/common/eal_common_options.c > >> +++ b/lib/librte_eal/common/eal_common_options.c > >> @@ -20,6 +20,7 @@ > >> #include <rte_eal.h> > >> #include <rte_log.h> > > <snip> > > >> - rte_mem_cfg_addr = mmap(NULL, sizeof(*rte_config.mem_config), > >> - PROT_READ | PROT_WRITE, MAP_SHARED, > >> mem_cfg_fd, 0); > >> + rte_mem_cfg_addr = mmap(rte_mem_cfg_addr, > >> + sizeof(*rte_config.mem_config), PROT_READ | > >> PROT_WRITE, > >> + MAP_SHARED, mem_cfg_fd, 0); > >> > >> if (rte_mem_cfg_addr == MAP_FAILED){ > >> RTE_LOG(ERR, EAL, "Cannot mmap memory for rte_config\n"); > > > > Nit: when compared to Linux implementation, the reattach step does not > > recommend using the --base-virtaddr in case the remmapping failed. > > > > Good catch, will fix.
Can you prepare a v2? Thanks. -- David Marchand