On Mon, Aug 13, 2012 at 02:03:51PM +0300, Avi Kivity wrote:
> On 08/13/2012 02:01 PM, Gleb Natapov wrote:
> >>
> >> Actually this is overkill. Suppose we do an apicid->vcpu translation
> >> cache? Then we retain O(1) behaviour, no need for a huge cache.
> >>
> > Not sure I follow.
>
> Unicast MSIs and IPIs can be speeded up by looking up the vcpu using the
> apic id, using a static lookup table (only changed when the guest
> updates apicid or a vcpu is inserted).
>
To check that MSI/IPI is unicast you need to check a lot of things: delivery
mode, shorthand, dest mode, vector. In short everything but level. This
is exactly what kvm_irq_delivery_to_apic() is doing. Caching apicid->vcpu
is not enough, caching (delivery mode, shorthand, dest mode,
vector)->vcpu is enough and this is exactly what the patch does for irq
routing entries.
--
Gleb.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html