On normal vm startup, we open a file descriptor for the vsock device in qemuProcessPrepareHost. However, when doing domxml-to-native, no file descriptors are open. Only pass the fd if it's not -1, to make domxml-to-native work. https://bugzilla.redhat.com/show_bug.cgi?id=1777212 Signed-off-by: Ján Tomko <jtomko@xxxxxxxxxx> --- Technically a v2 of: https://listman.redhat.com/archives/libvir-list/2021-July/msg00803.html I did not look at other cases, but IIRC the ones converted to use qemuFD* wrappers should handle missing FDs gracefully. src/qemu/qemu_command.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 150824f2e1..bbbde57c0f 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -9717,7 +9717,8 @@ qemuBuildVsockCommandLine(virCommand *cmd, if (!(devprops = qemuBuildVsockDevProps(def, vsock, qemuCaps, ""))) return -1; - virCommandPassFD(cmd, priv->vhostfd, VIR_COMMAND_PASS_FD_CLOSE_PARENT); + if (priv->vhostfd != -1) + virCommandPassFD(cmd, priv->vhostfd, VIR_COMMAND_PASS_FD_CLOSE_PARENT); priv->vhostfd = -1; if (qemuCommandAddExtDevice(cmd, &vsock->info, def, qemuCaps) < 0) -- 2.37.3