numam-dpdk/lib
Lukasz Wojciechowski 048db4b6dc service: fix core mapping reset
The rte_service_lcore_reset_all function stops execution of services
on all lcores and switches them back from ROLE_SERVICE to ROLE_RTE.
However the thread loop for slave lcores (eal_thread_loop) distincts these
roles to set lcore state after processing delegated function.
It sets WAIT state for ROLE_SERVICE, but FINISHED for ROLE_RTE.
So changing the role to RTE before stopping work in slave lcores
causes lcores to end in FINISHED state. That is why the rte_eal_lcore_wait
must be run after rte_service_lcore_reset_all to bring back lcores to
launchable (WAIT) state.
This has been fixed in test app and clarified in API documentation.

Setting the state to WAIT in rte_service_runner_func is premature
as the rte_service_runner_func function is still a part of the lcore
function delegated to slave lcore. The state is overwritten anyway in
slave lcore thread loop. This premature setting state to WAIT might
however cause rte_eal_lcore_wait, that was called by the application,
to return before slave lcore thread set the FINISHED state. That's
why it is removed from librte_eal rte_service_runner_func function.

Bugzilla ID: 464
Fixes: 21698354c8 ("service: introduce service cores concept")
Fixes: f038a81e1c ("service: add unit tests")
Cc: stable@dpdk.org

Reported-by: Sarosh Arif <sarosh.arif@emumba.com>
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2020-07-08 18:52:49 +02:00
..
librte_acl
librte_bbdev lib: remind experimental status in headers 2020-07-07 12:49:10 +02:00
librte_bitratestats
librte_bpf lib: remind experimental status in headers 2020-07-07 12:49:10 +02:00
librte_cfgfile cfgfile: fix stack buffer underflow 2020-07-07 23:22:04 +02:00
librte_cmdline
librte_compressdev lib: remind experimental status in headers 2020-07-07 12:49:10 +02:00
librte_cryptodev cryptodev: add traces in multi-process path 2020-07-08 18:16:17 +02:00
librte_distributor
librte_eal service: fix core mapping reset 2020-07-08 18:52:49 +02:00
librte_efd
librte_ethdev trace: simplify trace point registration 2020-07-05 21:34:21 +02:00
librte_eventdev eventdev: relax SMP barriers with C11 atomics 2020-07-08 18:16:41 +02:00
librte_fib lib: remind experimental status in headers 2020-07-07 12:49:10 +02:00
librte_flow_classify lib: remind experimental status in headers 2020-07-07 12:49:10 +02:00
librte_graph log: remove unneeded logtype declaration 2020-07-07 13:18:23 +02:00
librte_gro
librte_gso
librte_hash hash: check flags on creation for future proofing 2020-06-16 17:46:39 +02:00
librte_ip_frag
librte_ipsec lib: remind experimental status in headers 2020-07-07 12:49:10 +02:00
librte_jobstats
librte_kni
librte_kvargs kvargs: fix strcmp helper documentation 2020-05-19 15:05:56 +02:00
librte_latencystats
librte_lpm
librte_mbuf mbuf: add dump of free dynamic flags 2020-06-25 23:03:18 +02:00
librte_member log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
librte_mempool eal: register non-EAL threads as lcores 2020-07-08 14:41:05 +02:00
librte_meter meter: remove inline functions from export list 2020-06-23 19:29:41 +02:00
librte_metrics log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
librte_net net: fix IPv4 checksum 2020-06-24 23:42:20 +02:00
librte_node lib: remind experimental status in headers 2020-07-07 12:49:10 +02:00
librte_pci pci: fix address domain format size 2020-06-30 00:02:54 +02:00
librte_pdump log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
librte_pipeline
librte_port
librte_power
librte_rawdev rawdev: export dump function in map file 2020-07-07 19:18:04 +02:00
librte_rcu lib: remind experimental status in headers 2020-07-07 12:49:10 +02:00
librte_regexdev regexdev: implement API functions 2020-07-07 00:24:52 +02:00
librte_reorder
librte_rib rib: add C++ include guard 2020-07-07 23:24:38 +02:00
librte_ring ring: optimize empty test 2020-07-01 11:46:09 +02:00
librte_sched sched: fix port time rounding 2020-07-07 00:58:31 +02:00
librte_security security: support DOCSIS protocol 2020-07-08 00:15:35 +02:00
librte_stack log: remove unneeded logtype declaration 2020-07-07 13:18:23 +02:00
librte_table
librte_telemetry lib: remind experimental status in headers 2020-07-07 12:49:10 +02:00
librte_timer
librte_vhost log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
Makefile regexdev: introduce API 2020-07-07 00:24:38 +02:00
meson.build build: remove special versioning for non stable libraries 2020-07-07 12:48:25 +02:00