mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-13 01:57:25 +03:00
qemu: check for kvm availability before starting kvm guests
This *kind of* addresses: https://bugzilla.redhat.com/show_bug.cgi?id=772395 (it doesn't eliminate the failure to start, but causes libvirt to give a better idea about the cause of the failure). If a guest uses a kvm emulator (e.g. /usr/bin/qemu-kvm) and the guest is started when kvm isn't available (either because virtualization is unavailable / has been disabled in the BIOS, or the kvm modules haven't been loaded for some reason), a semi-cryptic error message is logged: libvirtError: internal error Child process (LC_ALL=C PATH=/sbin:/usr/sbin:/bin:/usr/bin /usr/bin/qemu-kvm -device ? -device pci-assign,? -device virtio-blk-pci,? -device virtio-net-pci,?) status unexpected: exit status 1 This patch notices at process start that a guest needs kvm, and checks for the presence of /dev/kvm (a reasonable indicator that kvm is available) before trying to execute the qemu binary. If kvm isn't available, a more useful (too verbose??) error is logged.
This commit is contained in:
parent
d8d9b0e058
commit
32f63e912d
@ -3031,6 +3031,17 @@ int qemuProcessStart(virConnectPtr conn,
|
||||
if ((logfile = qemuDomainCreateLog(driver, vm, false)) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (vm->def->virtType == VIR_DOMAIN_VIRT_KVM) {
|
||||
VIR_DEBUG("Checking for KVM availability");
|
||||
if (access("/dev/kvm", F_OK) != 0) {
|
||||
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||
_("Domain requires KVM, but it is not available. "
|
||||
"Check that virtualization is enabled in the host BIOS, "
|
||||
"and host configuration is setup to load the kvm modules."));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
VIR_DEBUG("Determining emulator version");
|
||||
qemuCapsFree(priv->qemuCaps);
|
||||
priv->qemuCaps = NULL;
|
||||
|
Loading…
x
Reference in New Issue
Block a user