numam-dpdk/lib
Qi Zhang ac9e4a1737 eal: support attach/detach shared device from secondary
This patch cover the multi-process hotplug case when a device
attach/detach request be issued from a secondary process

device attach on secondary:
a) secondary send sync request to the primary.
b) primary receive the request and attach the new device if
   failed goto i).
c) primary forward attach sync request to all secondary.
d) secondary receive the request and attach the device and send a reply.
e) primary check the reply if all success goes to j).
f) primary send attach rollback sync request to all secondary.
g) secondary receive the request and detach the device and send a reply.
h) primary receive the reply and detach device as rollback action.
i) send attach fail to secondary as a reply of step a), goto k).
j) send attach success to secondary as a reply of step a).
k) secondary receive reply and return.

device detach on secondary:
a) secondary send sync request to the primary.
b) primary send detach sync request to all secondary.
c) secondary detach the device and send a reply.
d) primary check the reply if all success goes to g).
e) primary send detach rollback sync request to all secondary.
f) secondary receive the request and attach back device. goto h).
g) primary detach the device if success goto i), else goto e).
h) primary send detach fail to secondary as a reply of step a), goto j).
i) primary send detach success to secondary as a reply of step a).
j) secondary receive reply and return.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
2018-10-17 10:16:18 +02:00
..
librte_acl acl: forbid rule with priority zero 2018-09-16 11:53:25 +02:00
librte_bbdev remove useless constructor headers 2018-07-12 00:00:35 +02:00
librte_bitratestats bitrate: add sanity check on parameters 2018-07-26 20:07:57 +02:00
librte_bpf bpf: fix 32-bit build support with meson 2018-07-12 12:24:25 +02:00
librte_cfgfile build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_cmdline cmdline: remove useless intermediate buffer 2018-06-27 18:25:30 +02:00
librte_compat buildtools: change license to SPDX 2018-07-26 22:45:17 +02:00
librte_compressdev remove useless constructor headers 2018-07-12 00:00:35 +02:00
librte_cryptodev remove useless constructor headers 2018-07-12 00:00:35 +02:00
librte_distributor build: set compat lib as universal dependency 2018-01-30 21:59:00 +01:00
librte_eal eal: support attach/detach shared device from secondary 2018-10-17 10:16:18 +02:00
librte_efd build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_ethdev ethdev: add function to release port in secondary process 2018-10-17 10:16:18 +02:00
librte_eventdev eventdev: fix build 2018-10-10 21:40:40 +02:00
librte_flow_classify flow_classify: do not check for invalid socket ID 2018-10-11 10:37:45 +02:00
librte_gro build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_gso gso: support UDP/IPv4 fragmentation 2018-07-11 23:45:20 +02:00
librte_hash hash: add more accurate thread-safety comments 2018-08-09 21:56:29 +02:00
librte_ip_frag ip_frag: add function to delete expired entries 2018-09-19 19:45:38 +02:00
librte_jobstats build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_kni kni: allocate memory dynamically for each device 2018-10-02 17:57:00 +02:00
librte_kvargs kvargs: fix building with meson outside source tree 2018-07-26 10:14:06 +02:00
librte_latencystats latency: free up the memzone 2018-08-01 18:25:08 +02:00
librte_lpm lpm6: add incremental update on delete 2018-09-19 17:11:37 +02:00
librte_mbuf ethdev: add Tx offload outer UDP checksum definition 2018-10-11 18:53:49 +02: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: remove experimental tag from profile API 2018-08-06 01:15:11 +02:00
librte_metrics metrics: disallow null as metric name 2018-07-26 20:30:18 +02:00
librte_net net: fix Intel prepare function for IP checksum offload 2018-09-28 01:41:02 +02:00
librte_pci use SPDX tag for 6WIND copyrighted files 2018-05-25 10:47:06 +02:00
librte_pdump pdump: remove dependency on libpthread 2018-09-18 11:48:32 +02:00
librte_pipeline pipeline: add table action for packet decap 2018-10-12 19:33:34 +02:00
librte_port port: add symmetric crypto 2018-10-12 19:33:02 +02:00
librte_power examples/vm_power: add branch ratio policy type 2018-07-20 23:59:42 +02:00
librte_rawdev rawdev: fix missing queue count API 2018-08-01 18:25:10 +02:00
librte_reorder build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_ring ring: clarify preemptible nature of algorithm 2018-08-05 20:06:10 +02:00
librte_sched sched: allocate memory on the given socket id 2018-10-08 17:52:29 +02:00
librte_security security: fix crash on destroy null session 2018-07-11 00:57:51 +02:00
librte_table lib/librte_table: add hash function headers 2018-10-12 17:58:53 +02:00
librte_timer eal: make semantics of lcore role function more intuitive 2018-04-26 16:58:18 +02:00
librte_vhost vhost: introduce API to get vDPA device number 2018-10-11 18:53:49 +02:00
Makefile lpm6: store rules in hash table 2018-09-19 17:11:17 +02:00
meson.build build: add configuration summary at end of config 2018-09-17 13:58:40 +02:00