On Mon, Feb 25, 2013 at 11:00:21AM -0300, Marcelo Tosatti wrote:
> > I see a couple of possible solutions:
> > 1. Do what Avi said. Make KVM_IRQ_LINE_STATUS be synchronous. Cons:
> > current QEMU uses KVM_IRQ_LINE_STATUS always and it means that it
> > will be slow on newer kernels
> 
> Can add a capability to QEMU and enable APICv selectively only 
> in newer QEMU, which can issue KVM_IRQ_LINE_STATUS on target vcpu
> only when necessary (and KVM_IRQ_LINE otherwise).

Bad idea. What happens with mixed scenarios.

> Even a lock serializing injection is not safe because ON bit is cleared
> before XCHG(PIR, 0). Must do something heavier (such as running on
> target vcpu context).

Note always running on target vcpu is likely to be slower than no-APICv.

So need to do something heavier on the kernel under serialization, if 
firmware cannot be changed (injection from simultaneous CPUs should be
rare so if data to serialize __accept_apic_irq is cache-line aligned 
it should reduce performance impact).

> > 2. Make KVM_IRQ_LINE_STATUS report coalescing only when vcpu is not
> > running during injection. This assumes that if vcpu is running and does
> > not process interrupt it is guest fault and the same can happen on real
> > HW too. Coalescing when vcpu is not running though is the result of CPU
> > overcommit and should be reported. Cons interface definition is kind of
> > murky.
> > 3. Do not report KVM_IRQ_LINE_STATUS capability and move RTC to use EOI
> > notifiers for interrupt reinjection. This requires us to add interface
> > for reporting EOI to userspace. This is not in the scope of this
> > patchset. Cons: need to introduce new interface (and the one that will
> > not work on AMD BTW)

Is there no int-ack notification at RTC HW level?

> Breaks older userspace?
> > 
> > Other ideas?
> 
> Can HW write a 'finished' bit after 6 in the reserved area? Suppose its
> not a KVM-specific problem?
> 
--
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