[pve-devel] [PATCH qemu-server 3/3] fix #3258: block vm start when pci device is already in use
Dominik Csapak
d.csapak at proxmox.com
Tue Oct 5 15:12:00 CEST 2021
on vm start, we reserve all pciids that we use, and
remove the reservation again in vm_stop_cleanup
this way, when a vm starts with a pci device that is already configured
for a different running vm, will not be started and the user gets
the error that the device is already in use
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
PVE/QemuServer.pm | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 076ce59..1e8cd53 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -5365,6 +5365,13 @@ sub vm_start_nolock {
my $d = parse_hostpci($conf->{"hostpci$i"});
next if !$d;
my $pcidevices = $d->{pciid};
+
+ # reserve all pciids
+ foreach my $pcidevice (@$pcidevices) {
+ my $pciid = $pcidevice->{id};
+ PVE::QemuServer::PCI::reserve_pci_usage($pciid, $vmid);
+ }
+
foreach my $pcidevice (@$pcidevices) {
my $pciid = $pcidevice->{id};
@@ -5676,6 +5683,7 @@ sub vm_stop_cleanup {
foreach my $pci (@{$d->{pciid}}) {
my $pciid = $pci->{id};
PVE::SysFSTools::pci_cleanup_mdev_device($pciid, $uuid);
+ PVE::QemuServer::PCI::remove_pci_reservation($pciid);
}
}
--
2.30.2
More information about the pve-devel
mailing list