Re: [PATCH] kvm: optimize ISR lookups

From: Michael S. Tsirkin
Date: Mon May 21 2012 - 17:51:30 EST


On Mon, May 21, 2012 at 11:04:25PM +0200, Thomas Gleixner wrote:
> > @@ -242,6 +262,25 @@ static inline void apic_clear_irr(int vec, struct kvm_lapic *apic)
> > apic->irr_pending = true;
> > }
> >
> > +static inline void apic_set_isr(int vec, struct kvm_lapic *apic)
> > +{
> > + if (!__apic_test_and_set_vector(vec, apic->regs + APIC_ISR))
> > + ++apic->isr_count;
> > + ASSERT(apic->isr_count > MAX_APIC_VECTOR);
>
> I'm really curious what you observed when defining DEBUG in that file.
>
> Clearly you never did.

Sorry :(
Yes clearly silly, thanks for pointing this out.

> > + if (likely(apic->isr_count == 1))
> > + apic->isr_cache = vec;
> > + else
> > + apic->isr_cache = -1;
> > +}
> > +
> > +static inline void apic_clear_isr(int vec, struct kvm_lapic *apic)
> > +{
> > + if (__apic_test_and_clear_vector(vec, apic->regs + APIC_ISR))
> > + --apic->isr_count;
> > + ASSERT(apic->isr_count < 0);
>
> Ditto.
>
> > result = find_highest_vector(apic->regs + APIC_ISR);
> > ASSERT(result == -1 || result >= 16);
>
> And obviously none of the folks who added this gem bothered to define
> DEBUG either.
>
> So please instead of working around horrid design decisions and adding
> more mess to the existing one, can we please cleanup the stuff first
> and then decide whether it's worth to add the extra magic?
>
> Thanks,
>
> tglx
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/