qapi/vfio: Add VFIO migration QAPI event

Add a new QAPI event for VFIO migration. This event will be emitted when
a VFIO device changes its migration state, for example, during migration
or when stopping/starting the guest.

This event can be used by management applications to get updates on the
current state of the VFIO device for their own purposes.

Note that this new event is introduced since VFIO devices have a unique
set of migration states which cannot be described as accurately by other
existing events such as run state or migration status.

Signed-off-by: Avihai Horon <avihaih@nvidia.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
Avihai Horon 2024-05-15 16:21:35 +03:00 committed by Cédric Le Goater
parent 187716feeb
commit a0359b56ec
4 changed files with 70 additions and 0 deletions

View File

@ -2164,6 +2164,7 @@ F: hw/vfio/*
F: include/hw/vfio/
F: docs/igd-assign.txt
F: docs/devel/migration/vfio.rst
F: qapi/vfio.json
vfio-ccw
M: Eric Farman <farman@linux.ibm.com>

View File

@ -52,6 +52,7 @@ qapi_all_modules = [
'stats',
'trace',
'transaction',
'vfio',
'virtio',
'yank',
]

View File

@ -78,5 +78,6 @@
{ 'include': 'pci.json' }
{ 'include': 'stats.json' }
{ 'include': 'virtio.json' }
{ 'include': 'vfio.json' }
{ 'include': 'cryptodev.json' }
{ 'include': 'cxl.json' }

67
qapi/vfio.json Normal file
View File

@ -0,0 +1,67 @@
# -*- Mode: Python -*-
# vim: filetype=python
#
##
# = VFIO devices
##
##
# @VfioMigrationState:
#
# An enumeration of the VFIO device migration states.
#
# @stop: The device is stopped.
#
# @running: The device is running.
#
# @stop-copy: The device is stopped and its internal state is available
# for reading.
#
# @resuming: The device is stopped and its internal state is available
# for writing.
#
# @running-p2p: The device is running in the P2P quiescent state.
#
# @pre-copy: The device is running, tracking its internal state and its
# internal state is available for reading.
#
# @pre-copy-p2p: The device is running in the P2P quiescent state,
# tracking its internal state and its internal state is available
# for reading.
#
# Since: 9.1
##
{ 'enum': 'VfioMigrationState',
'data': [ 'stop', 'running', 'stop-copy', 'resuming', 'running-p2p',
'pre-copy', 'pre-copy-p2p' ],
'prefix': 'QAPI_VFIO_MIGRATION_STATE' }
##
# @VFIO_MIGRATION:
#
# This event is emitted when a VFIO device migration state is changed.
#
# @device-id: The device's id, if it has one.
#
# @qom-path: The device's QOM path.
#
# @device-state: The new changed device migration state.
#
# Since: 9.1
#
# Example:
#
# <- { "timestamp": { "seconds": 1713771323, "microseconds": 212268 },
# "event": "VFIO_MIGRATION",
# "data": {
# "device-id": "vfio_dev1",
# "qom-path": "/machine/peripheral/vfio_dev1",
# "device-state": "stop" } }
##
{ 'event': 'VFIO_MIGRATION',
'data': {
'device-id': 'str',
'qom-path': 'str',
'device-state': 'VfioMigrationState'
} }