numam-dpdk/lib
David Marchand 1598c72959 eal: fix core list validation with disabled cores
-l and -c options are two ways to select the cores used by DPDK.
Their format differs, but the checks on the selected cores are the same.
Use an intermediate array to separate the specific parsing checks from
the common consistency checks.
The parsing functions now concentrate on validating the passed string
and do nothing more.

We can report all invalid core indexes rather than only the first error.
In the error log message, reporting [0, cfg->lcore_count - 1] as a valid
range is then wrong when the core list is not continuous.

Example on my 8 cpus laptop with core 2 and 6 disabled.
echo 0 > /sys/devices/system/cpu/cpu2/online
echo 0 > /sys/devices/system/cpu/cpu6/online

Before:
./master/app/testpmd -l 0-7 --no-huge -m 512 -- --total-num-mbufs 2048
EAL: Detected 6 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: invalid core list, please check core numbers are in [0, 5] range
...

After:
./master/app/testpmd -l 0-7 --no-huge -m 512 -- --total-num-mbufs 2048
EAL: Detected 6 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: lcore 2 unavailable
EAL: lcore 6 unavailable
EAL: invalid core list, please check specified cores are part of 0-1,3-5,7
...

Fixes: d888cb8b96 ("eal: add core list input format")
Fixes: b38693b612 ("eal: fix core number validation")
Cc: stable@dpdk.org

Signed-off-by: David Marchand <david.marchand@redhat.com>
2019-03-07 21:22:53 +01:00
..
librte_acl lib: fix shifting 32-bit signed variable 31 times 2018-11-06 01:14:05 +01:00
librte_bbdev bbdev: add missing experimental tags and map entries 2018-12-19 19:36:53 +01:00
librte_bitratestats bitrate: add sanity check on parameters 2018-07-26 20:07:57 +02:00
librte_bpf build: improve dependency handling 2019-02-27 12:13:54 +01:00
librte_cfgfile fix indentation in symbol maps 2018-11-26 20:16:46 +01:00
librte_cmdline compat: merge compat library into EAL 2019-02-25 16:03:31 +01:00
librte_compressdev compressdev: fix structure comment 2018-12-19 11:19:10 +01:00
librte_cryptodev cryptodev: add opaque data field to symmetric session 2019-01-10 16:57:22 +01:00
librte_distributor build: set compat lib as universal dependency 2018-01-30 21:59:00 +01:00
librte_eal eal: fix core list validation with disabled cores 2019-03-07 21:22:53 +01:00
librte_efd efd: fix tail queue leak 2019-01-19 00:07:52 +01:00
librte_ethdev ethdev: remove unused variable 2019-02-20 16:41:43 +01:00
librte_eventdev eventdev: use same log macro for all unsupported calls 2019-03-01 18:17:36 +01:00
librte_flow_classify flow_classify: do not check for invalid socket ID 2018-10-11 10:37:45 +02:00
librte_gro gro: check invalid TCP header length 2019-01-17 22:38:54 +01:00
librte_gso gso: fix VxLAN/GRE tunnel checks 2019-01-22 17:08:21 +01:00
librte_hash hash: replace license text with SPDX tag for Toeplitz algo 2019-02-06 22:08:04 +01:00
librte_ip_frag ip_frag: fix IPv6 when MTU sizes not aligned to 8 bytes 2018-12-19 22:40:08 +01:00
librte_ipsec ipsec: fix build with gcc 6 2019-01-15 02:40:40 +01:00
librte_jobstats build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_kni build: set RTE_ARCH_64 based on pointer size 2019-02-26 18:34:28 +01:00
librte_kvargs compat: merge compat library into EAL 2019-02-25 16:03:31 +01:00
librte_latencystats latency: fix timestamp marking and latency calculation 2018-10-25 10:30:13 +02:00
librte_lpm lpm: remove recursively included header file 2019-01-28 01:47:23 +01:00
librte_mbuf mbuf: fix a typo 2019-02-12 14:32:01 +01:00
librte_member remove useless constructor headers 2018-07-12 00:00:35 +02:00
librte_mempool malloc: add function to check if socket is external 2018-10-11 11:11:25 +02:00
librte_meter meter: support RFC4115 trTCM 2019-01-10 00:34:09 +01:00
librte_metrics metrics: disallow null as metric name 2018-07-26 20:30:18 +02:00
librte_net net: add ESP trailer structure definition 2019-01-10 16:57:22 +01:00
librte_pci pci: fix parsing of address without function number 2018-11-13 17:59:42 +01:00
librte_pdump pdump: remove deprecated APIs 2018-12-19 01:25:56 +01:00
librte_pipeline mbuf: implement generic format for sched field 2018-12-22 00:22:44 +01:00
librte_port port: add symmetric crypto 2018-10-12 19:33:02 +02:00
librte_power power: fix file descriptor leak 2019-01-17 19:20:02 +01:00
librte_rawdev lib: reduce global variable usage 2018-10-29 02:34:27 +01:00
librte_reorder build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_ring ring/c11: relax ordering for load and store of the head 2018-11-13 17:00:58 +01:00
librte_sched sched: fix memory leak on init failure 2018-12-22 00:22:57 +01:00
librte_security security: add opaque userdata pointer into security session 2019-01-10 16:57:22 +01:00
librte_table lib/librte_table: add hash function headers 2018-10-12 17:58:53 +02:00
librte_telemetry build: improve dependency handling 2019-02-27 12:13:54 +01:00
librte_timer timer: fix race condition 2018-12-19 20:56:09 +01:00
librte_vhost vhost: remove vhost-net requirements from generic APIs 2019-03-01 18:17:36 +01:00
Makefile compat: merge compat library into EAL 2019-02-25 16:03:31 +01:00
meson.build build: reorder cmdline library after EAL 2019-02-27 12:27:58 +01:00