Introduce a new 'early-mig' property that enables the early migration path for virtio-net devices on machine types >= 10.2:
- virtio-net-device,early-mig=on - virtio-net-pci,early-mig=on - virtio-net-pci-transitional,early-mig=on - virtio-net-pci-non-transitional,early-mig=on - virtio-net-ccw,early-mig=on To preserve compatibility for older machine types (<= 10.1), add compat overrides in hw_compat_10_1 to keep the legacy default (off). With this, machine types 10.2 and newer enable early migration by default while older machine types retain the previous behavior. Users may still override explicitly via: -device virtio-net-pci,early-mig=off or -global virtio-net-device.early-mig=off Follow-up patches will implement the actual early migration feature for virtio-net devices. Signed-off-by: Jonah Palmer <[email protected]> --- hw/core/machine.c | 5 +++++ hw/net/virtio-net.c | 1 + include/hw/virtio/virtio-net.h | 1 + 3 files changed, 7 insertions(+) diff --git a/hw/core/machine.c b/hw/core/machine.c index 6cf0e2f404..1b6c7db119 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -45,6 +45,11 @@ const size_t hw_compat_10_2_len = G_N_ELEMENTS(hw_compat_10_2); GlobalProperty hw_compat_10_1[] = { { TYPE_ACPI_GED, "x-has-hest-addr", "false" }, + { "virtio-net-device", "early-mig", "off" }, + { "virtio-net-pci", "early-mig", "off" }, + { "virtio-net-pci-transitional", "early-mig", "off" }, + { "virtio-net-pci-non-transitional", "early-mig", "off" }, + { "virtio-net-ccw", "early-mig", "off" }, { TYPE_VIRTIO_NET, "host_tunnel", "off" }, { TYPE_VIRTIO_NET, "host_tunnel_csum", "off" }, { TYPE_VIRTIO_NET, "guest_tunnel", "off" }, diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 2a5d642a64..12b3456ca2 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -4258,6 +4258,7 @@ static const Property virtio_net_properties[] = { VIRTIO_NET_F_GUEST_USO6, true), DEFINE_PROP_BIT64("host_uso", VirtIONet, host_features, VIRTIO_NET_F_HOST_USO, true), + DEFINE_PROP_BOOL("early-mig", VirtIONet, early_mig, true), DEFINE_PROP_ON_OFF_AUTO_BIT64("hash-ipv4", VirtIONet, rss_data.specified_hash_types, VIRTIO_NET_HASH_REPORT_IPv4 - 1, diff --git a/include/hw/virtio/virtio-net.h b/include/hw/virtio/virtio-net.h index 371e376428..ddb141fefc 100644 --- a/include/hw/virtio/virtio-net.h +++ b/include/hw/virtio/virtio-net.h @@ -230,6 +230,7 @@ struct VirtIONet { struct EBPFRSSContext ebpf_rss; uint32_t nr_ebpf_rss_fds; char **ebpf_rss_fds; + bool early_mig; }; size_t virtio_net_handle_ctrl_iov(VirtIODevice *vdev, -- 2.51.0
