On 05/15/2010 09:21 AM, Alexander Graf wrote:

On x86 eflags.if is freely changeable by the guest, so if we want to queue an 
interrupt we have to IPI the vcpu to force it out of guest mode, so we can 
inspect eflags.  This means the vcpu thread has to be interrupted one way or 
another.

The tpr (really ppr) is even more problematic as it is maintained in userspace, 
not in the kernel (for non-kernel-irqchip).  It could in theory be inspected by 
another thread, but we wouldn't gain anything by it due to the requirement to 
IPI.
Hrm right. On PPC we trap on every MSR change, so we get notified when 
interrupts are enabled again. But isn't that what VINTR intercepts are there 
for? Just add the  lowest active TPR value to the KVM_INTERRUPT ioctl and then 
wait until the guest is ready to take it.

Yes, and we do that when using in-kernel-irqchip. With userspace apic, the tpr is maintained in userspace and the kernel has no visibility into it.

We could have changed moved the tpr/ppr into the kernel for userspace irqchip, but there's not much point now.

void kvmppc_book3s_queue_irqprio(struct kvm_vcpu *vcpu, unsigned int vec)
{
    vcpu->stat.queue_intr++;

    set_bit(kvmppc_book3s_vec2irqprio(vec),
&vcpu->arch.pending_exceptions);
#ifdef EXIT_DEBUG
    printk(KERN_INFO "Queueing interrupt %x\n", vec);
#endif
}
Isn't this missing an IPI if the vcpu is in guest mode?
Yes, it is :). At least with qemu we're 100% sure we're not in VCPU_RUN when an 
interrupt gets injected, as the injection happens in kvm_arch_pre_run.

That means you never inject an interrupt from the iothread (or from a different vcpu thread)?

If that's the case we might make it part of the API and require the ioctl to be issued from the vcpu thread. We'd still be left with the s390 exception.

--
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to