On 07/28/2010 08:22 PM, Marcelo Tosatti wrote:
that needs reinjection (or an exception).
That can happen event now, no? A pending exception, interrupt comes
along, injection picks up the exception but leaves the interrupt.
Now the situation can be more complicated:
- pending exception
- injection
- interrupt, sets KVM_REQ_EVENT
- notices KVM_REQ_EVENT
- drops KVM_REQ_EVENT, cancels exception (made pending again)
- goes back
- injection (injects exception again, interrupt is pending)
as far as I can tell, this is all fine.
But you cleared KVM_REQ_EVENT. Which means you're not going to inject
the pending interrupt on the next entry.
Doh. So we need to set KVM_REQ_EVENT again, after the final check
for vcpu->requests, to make sure we redo injection again.
So we can make inject_pending_event() return true if there's more in
the queue, and if it did, re-raise KVM_REQ_EVENT just before entry?
Yeah, that would do it.
On second and third thoughts, that is unneeded. If an interrupt or nmi
is still pending after event injection, we will request an interrupt or
nmi window which will set KVM_REQ_EVENT. An exception cannot be pending
after an event injection since it is the highest priority event.
Yes?
--
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