On 16.05.2010, at 11:47, Avi Kivity wrote: > 1: vcpu_run > 2: KVM_INTERRUPT > 2k: sets flag, if msr.ee IPIs 1 or wakes up 1 if halted Doesn't that break when we have a while(1) loop in the guest with msr.ee=0 while no timer is scheduled on the host? But then again with msr.ee=0 we don't get interrupts in the guest and to set msr.ee=1 we trap. Yeah, that would work. > 1k: notices flag, if msr.ee injects interrupt > ... > 1g: acks The ack is done in userspace by the mpic, so we can just complete the interrupt there. > 1k: forwards ack to userspace > 1: completes interrupt So if I just have a field kvm_run->external_active I could set that to =1 on KVM_INTERRUPT including the above logic. To acknowledge it userspace would then do something like this in kvm_arch_pre_run: if (kvm_run->external_active && !((env->interrupt_request & CPU_INTERRUPT_HARD) && (env->irq_input_state & (1<<PPC_INPUT_INT)))) { kvm_run->external_active = 0; } The big question is how to make such a change backwards compatible. But I guess I could just reuse the feature enabling framework. Well, sounds like we're getting closer. Alex -- 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