Re: [patch] KVM: do VMXOFF upon reboot

From: Avi Kivity
Date: Sun Jan 21 2007 - 05:17:41 EST


Ingo Molnar wrote:
* Ingo Molnar <mingo@xxxxxxx> wrote:

So i think we should do the patch below - this makes reboot work even in atomic contexts. [...]

hm, this causes problems if KVM is not active on a VT-capable CPU: even on CPUs with VT supported, if a VT context is not actually activated, a vmxoff causes an invalid opcode exception. So the updated patch below uses a slightly more sophisticated approach to avoid that problem.


There is already code to that effect. Any idea why it is not called?

static int kvm_reboot(struct notifier_block *notifier, unsigned long val,
void *v)
{
if (val == SYS_RESTART) {
/*
* Some (well, at least mine) BIOSes hang on reboot if
* in vmx root mode.
*/
printk(KERN_INFO "kvm: exiting hardware virtualization\n");
on_each_cpu(kvm_arch_ops->hardware_disable, 0, 0, 1);
}
return NOTIFY_OK;
}

static struct notifier_block kvm_reboot_notifier = {
.notifier_call = kvm_reboot,
.priority = 0,
};


Note that it performs the vmxoff on all cpus, not just one, and that it is svm friendly too. Maybe it should check for values other than SYS_RESTART?


--
error compiling committee.c: too many arguments to function

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/