This add support for qemu_fw_cfg feature, enable it by default for qemu 2.9 (fw_cfg already exist, it's just a new firmware, so it don't break live migration)
the vmid.conf content will be passed to guest vm with -fw_cfg name=opt/Proxmox,file=/etc/pve/nodes/<nodename>/qemu-server/<vmid>.conf qemu guest can read content through sysfs: /sys/firmware/qemu_fw_cfg/by_name/opt/Proxmox/raw (need qemu_fw_cfg module from kernel 4.6) --- PVE/QemuServer.pm | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 2b6fda9..2455e20 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -1759,6 +1759,15 @@ sub print_cpu_device { return "$cpu-x86_64-cpu,id=cpu$id,socket-id=$current_socket,core-id=$current_core,thread-id=0"; } +sub print_firmware_cfg { + my ($vmid, $migratedfrom) = @_; + + my $nodename = $migratedfrom ? $migratedfrom : PVE::INotify::nodename(); + my $path = "/etc/pve/nodes/$nodename/qemu-server/$vmid.conf"; + + return "name=opt/Proxmox,file=$path"; +} + sub drive_is_cdrom { my ($drive) = @_; @@ -2824,7 +2833,7 @@ sub vga_conf_has_spice { } sub config_to_command { - my ($storecfg, $vmid, $conf, $defaults, $forcemachine) = @_; + my ($storecfg, $vmid, $conf, $defaults, $forcemachine, $migratedfrom) = @_; my $cmd = []; my $globalFlags = []; @@ -3332,6 +3341,11 @@ sub config_to_command { push @$cmd, '-global', join(',', @$globalFlags) if scalar(@$globalFlags); + if (qemu_machine_feature_enabled ($machine_type, $kvmver, 2, 9)) { + my $fwcfgstr = print_firmware_cfg($vmid, $migratedfrom); + push @$cmd, '-fw_cfg', $fwcfgstr; + } + return wantarray ? ($cmd, $vollist, $spice_port) : $cmd; } @@ -4560,7 +4574,7 @@ sub vm_start { } } - my ($cmd, $vollist, $spice_port) = config_to_command($storecfg, $vmid, $conf, $defaults, $forcemachine); + my ($cmd, $vollist, $spice_port) = config_to_command($storecfg, $vmid, $conf, $defaults, $forcemachine, $migratedfrom); my $migrate_port = 0; my $migrate_uri; -- 2.11.0 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel