Commit 451bb963 authored by Cédric Le Goater's avatar Cédric Le Goater Committed by Alex Williamson
Browse files

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: default avatarCédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/r/20250918121928.1921871-1-clg@redhat.com


Signed-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
parent d14de5b9
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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.
+19 −0
Original line number Diff line number Diff line
@@ -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);
	}
}