eal: enable hotplug on multi-process
authorQi Zhang <qi.z.zhang@intel.com>
Tue, 16 Oct 2018 00:16:28 +0000 (08:16 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 17 Oct 2018 08:16:18 +0000 (10:16 +0200)
commit244d5130719ca69038c2331e306c7d0934f93b28
treee3269969ffb95b9a52a2ebff1d9ad81600d0c747
parent95f3e8846e881290a6f116a605b2c90e46af2016
eal: enable hotplug on multi-process

We are going to introduce the solution to handle hotplug in
multi-process, it includes the below scenario:

1. Attach a device from the primary
2. Detach a device from the primary
3. Attach a device from a secondary
4. Detach a device from a secondary

In the primary-secondary process model, we assume devices are shared
by default. that means attaches or detaches a device on any process
will broadcast to all other processes through mp channel then device
information will be synchronized on all processes.

Any failure during attaching/detaching process will cause inconsistent
status between processes, so proper rollback action should be considered.

This patch covers the implementation of case 1,2.
Case 3,4 will be implemented on a separate patch.

IPC scenario for Case 1, 2:

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

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

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
doc/guides/rel_notes/release_18_11.rst
lib/librte_eal/bsdapp/eal/Makefile
lib/librte_eal/common/eal_common_dev.c
lib/librte_eal/common/eal_private.h
lib/librte_eal/common/hotplug_mp.c [new file with mode: 0644]
lib/librte_eal/common/hotplug_mp.h [new file with mode: 0644]
lib/librte_eal/common/include/rte_dev.h
lib/librte_eal/common/include/rte_eal.h
lib/librte_eal/common/meson.build
lib/librte_eal/linuxapp/eal/Makefile
lib/librte_eal/linuxapp/eal/eal.c