01/02/2023 08:32, Andrew Rybchenko: > On 2/1/23 01:55, Thomas Monjalon wrote: > > 31/01/2023 19:14, Jerin Jacob: > >> On Wed, Jan 18, 2023 at 9:15 PM Rongwei Liu <rongw...@nvidia.com> wrote: > >>> > >>> When a DPDK application must be upgraded, > >>> the traffic downtime should be shortened as much as possible. > >>> During the migration time, the old application may stay alive > >>> while the new application is starting and being configured. > >>> > >>> In order to optimize the switch to the new application, > >>> the old application may need to be aware of the presence > >>> of the new application being prepared. > >>> This is achieved with a new API allowing the user to change the > >>> new application state to standby and active later. > >>> > >>> The added function is trying to apply the new state to all probed > >>> ethdev ports. To make this API simple and easy to use, > >>> the same flags have to be accepted by all devices. > >>> > >>> This is the scenario of operations in the old and new applications: > >>> . device: already configured by the old application > >>> . new: start as active > >>> . new: probe the same device > >> > >> How to probe same device if is already bind to another application? > >> vfio-pci wont allow this. > > > > I missed that part. > > There is no way to share a VFIO device between 2 applications? > > As I understand multi-process shares an VFIO device between > many application. As far as I remember it is just required to > pass corresponding file descriptor to another application. > > Anyway I fully agree that the patch requires more documentation > in doc/guides/ with the description of live migration theory of > operations.
Yes that part is missing. Rongwei, you should try a fake migration with e1000 or virtio (both available in QEMU), so you can play with VFIO device probing. > >>> . new: set as standby > >>> . new: configure the device > >>> . device: has configurations from old and new applications > >>> . old: clear its device configuration > >>> . device: has only 1 configuration from new application > >>> . new: set as active > >>> . device: downtime for connecting all to the new application > >>> . old: shutdown