vfio: Dump migration features under debugfs

A debugfs directory was recently added for VFIO devices. Add a new
"features" file under the migration sub-directory to expose which
features the device supports.

Signed-off-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/r/20250918121928.1921871-1-clg@redhat.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
Cédric Le Goater 2025-09-18 14:19:28 +02:00 committed by Alex Williamson
parent d14de5b925
commit 451bb96328
2 changed files with 25 additions and 0 deletions

View File

@ -23,3 +23,9 @@ Contact: Longfang Liu <liulongfang@huawei.com>
Description: Read the live migration status of the vfio device.
The contents of the state file reflects the migration state
relative to those defined in the vfio_device_mig_state enum
What: /sys/kernel/debug/vfio/<device>/migration/features
Date: Oct 2025
KernelVersion: 6.18
Contact: Cédric Le Goater <clg@redhat.com>
Description: Read the migration features of the vfio device.

View File

@ -58,6 +58,23 @@ static int vfio_device_state_read(struct seq_file *seq, void *data)
return 0;
}
static int vfio_device_features_read(struct seq_file *seq, void *data)
{
struct device *vf_dev = seq->private;
struct vfio_device *vdev = container_of(vf_dev, struct vfio_device, device);
if (vdev->migration_flags & VFIO_MIGRATION_STOP_COPY)
seq_puts(seq, "stop-copy\n");
if (vdev->migration_flags & VFIO_MIGRATION_P2P)
seq_puts(seq, "p2p\n");
if (vdev->migration_flags & VFIO_MIGRATION_PRE_COPY)
seq_puts(seq, "pre-copy\n");
if (vdev->log_ops)
seq_puts(seq, "dirty-tracking\n");
return 0;
}
void vfio_device_debugfs_init(struct vfio_device *vdev)
{
struct device *dev = &vdev->device;
@ -72,6 +89,8 @@ void vfio_device_debugfs_init(struct vfio_device *vdev)
vdev->debug_root);
debugfs_create_devm_seqfile(dev, "state", vfio_dev_migration,
vfio_device_state_read);
debugfs_create_devm_seqfile(dev, "features", vfio_dev_migration,
vfio_device_features_read);
}
}