public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH qemu-server 1/1] snapshot: prohibit snapshot with ram if vm has a passthrough pci device
@ 2024-03-19 15:08 Hannes Duerr
  2024-04-12  9:32 ` Fabian Grünbichler
  0 siblings, 1 reply; 4+ messages in thread
From: Hannes Duerr @ 2024-03-19 15:08 UTC (permalink / raw)
  To: pve-devel

When a snapshot is created with RAM, qemu attempts to save not only the
RAM content, but also the internal state of the PCI devices.

However, as not all drivers support this, this can lead to the device
drivers in the VM not being able to handle the saved state during the
restore/rollback and in conclusion the VM might crash. For this reason,
we now generally prohibit snapshots with RAM for VMs with passthrough
devices.

In the future, this prohibition can of course be relaxed for individual
drivers that we know support it, such as the vfio driver

Signed-off-by: Hannes Duerr <h.duerr@proxmox.com>
---
 PVE/API2/Qemu.pm | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index 40b6c30..0acd1c7 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -5101,6 +5101,16 @@ __PACKAGE__->register_method({
 	die "unable to use snapshot name 'pending' (reserved name)\n"
 	    if lc($snapname) eq 'pending';
 
+	if ($param->{vmstate}) {
+	    my $conf = PVE::QemuConfig->load_config($vmid);
+
+	    for my $key (keys %$conf) {
+		next if $key !~ /^hostpci\d+/;
+		die "cannot snapshot VM with RAM due to passed-through PCI device(s), which lack"
+		    ." the possibility to save/restore their internal state\n";
+	    }
+	}
+
 	my $realcmd = sub {
 	    PVE::Cluster::log_msg('info', $authuser, "snapshot VM $vmid: $snapname");
 	    PVE::QemuConfig->snapshot_create($vmid, $snapname, $param->{vmstate},
-- 
2.39.2





^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-05-14 14:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-19 15:08 [pve-devel] [PATCH qemu-server 1/1] snapshot: prohibit snapshot with ram if vm has a passthrough pci device Hannes Duerr
2024-04-12  9:32 ` Fabian Grünbichler
2024-05-14 13:03   ` Fiona Ebner
2024-05-14 14:08     ` Fiona Ebner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal