On 06/10/2010 12:52 PM, Pekka Enberg wrote:
How is the guest supposed to halt the hypervisor if KVM_CREATE_IRQCHIP is being used? The kvm_emulate_halt() function seems to handle the halt event completely if irqchip_in_kernel() returns true and thus never exits to the hypervisor.
"The hypervisor" is the combination of userspace and kvm. Without KVM_CREATE_IRQCHIP, HLT is emulated in userspace. With KVM_CREATE_IRQCHIP, HLT is emulated in the kernel. Emulating HLT in the kernel results in a faster return from HLT, which occurs frequently.
If you need to break out of the kernel, send a signal to the thread that's running the vcpu. That works whether the guest is running or sleeping.
I see there's a KVM_GET_MP_STATE ioctl that can be used to check if state is KVM_MP_STATE_HALTED but as we never exit to the hypervisor, how is this supposed to work? Am I missing something obvious here?
In general you only rarely want to check the state (example are for debugging and for live migration). It's not a stable value (the guest executing HLT, or a guest interrupt delivered, will change its value). What's your use case?
-- error compiling committee.c: too many arguments to function -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html