Re: [GIT PULL tip/genirq] Please pull from lost-spurious-irq

From: Thomas Gleixner
Date: Mon Aug 02 2010 - 14:52:53 EST


On Mon, 2 Aug 2010, Tejun Heo wrote:

> On 08/02/2010 05:28 PM, Tejun Heo wrote:
> > The reason why poll_irq() looks complicated is because different types
> > of timers on the same desc shares the timer. The reason why it's
> > shared this way instead of across different descs of the same type is
> > to avoid locking overhead in maintaining the timer and linked lists of
> > its targets. By sharing the timer in the same desc, everything can be
> > protected by desc->lock but if we use timers across different descs,
> > we need another layer of locking.
>
> Ooh, another reason is timer locality. If timers are shared per desc,
> they have much higher chance of being on the same processor. Global
> timers would be pretty bad in that respect.

That's irrelevant. If you need to poll an interrupt, then it does not
matter at all whether you bounce some cache lines or not.

In fact we have two cases:

1) An interrupt needs to be polled all the time. That sucks whether
the poll timer bounces a few cache lines or not.

2) Polling an irq for some time. Either it works again after a
while, so your suckage is restricted to the poll period. If not
see #1

And it's even less of an issue as the main users of this misfeature
are laptops and desktop machines, where locality is not really that
important. If an enterprise admin decides to ignore the fact that the
hardware is flaky, then he does not care about the cache line bounces
either.

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/