[pve-devel] [PATCH qemu-server] vm start: set minimum timeout of 300s if using PCI passthrough

Friedrich Weber f.weber at proxmox.com
Wed May 3 15:37:23 CEST 2023

The default VM startup timeout is max(30, VM memory in GiB) seconds.
Multiple reports in the forum [0] [1] and the bug tracker [2] suggest
this is too short when using PCI passthrough with a large amount of VM
memory, since QEMU needs to map the whole memory during startup (see
comment #2 in [2]). As a result, VM startup fails with "got timeout".

To work around this, ensure that the startup timeout is at least 300s
in case the VM config contains at least one `hostpci[n]` option.

[0]: https://forum.proxmox.com/threads/83765/post-552071
[1]: https://forum.proxmox.com/threads/126398/post-552807
[2]: https://bugzilla.proxmox.com/show_bug.cgi?id=3502

Signed-off-by: Friedrich Weber <f.weber at proxmox.com>

    An alternative workaround is offered by an unapplied patch series [3]
    of bug #3502 [2] that makes it possible to set VM-specific timeouts
    (also in the GUI). Users could use this option to manually set a
    higher timeout for VMs that use PCI passthrough. However, it is not
    immediately obvious that a higher timeout is necessary. Since the
    problem seems to come up somewhat frequently, I think it makes sense
    to have the heuristic choose a higher timeout by default.
    [2]: https://bugzilla.proxmox.com/show_bug.cgi?id=3502
    [3]: https://lists.proxmox.com/pipermail/pve-devel/2023-January/055352.html

 PVE/QemuServer/Helpers.pm | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/PVE/QemuServer/Helpers.pm b/PVE/QemuServer/Helpers.pm
index e91f906..11897f4 100644
--- a/PVE/QemuServer/Helpers.pm
+++ b/PVE/QemuServer/Helpers.pm
@@ -160,6 +160,11 @@ sub config_aware_timeout {
 	$timeout = 150;
+    # Users reported the default timeout being too short when using PCI passthrough
+    if (grep(/^hostpci[0-9]+$/, keys %$config) && $timeout < 300) {
+	$timeout = 300;
+    }
     return $timeout;

More information about the pve-devel mailing list