Re: tlb_finish_mmu() bogisity

From: Linus Torvalds
Date: Sun Dec 23 2007 - 16:16:28 EST




On Sun, 23 Dec 2007, Al Viro wrote:
>
> tlb->need_flush += &__get_cpu_var(quicklist)[0].nr_pages != 0;
> makes no sense whatsoever. How the hell can you ever get the address of
> __get_cpu_var(quicklist)[0].nr_pages to be NULL? Postfix operators have
> higher precedence than prefix ones, so that's
> &(((__get_cpu_var(quicklist))[0]).nr_pages)
>
> What did you intend here? s/&//, perhaps?

I think that thing is bogus in other ways. It plays games with
"needs_flush", just because it seems to want the generic code to then call
"check_pgt_cache()", not because it actually wants any flushing to take
place.

But we already call "check_pgt_cache()" there in tlb_finish_mmu()
unconditionally, so I think the whole patch was utter crap.

Or is there any other reason going on here? That quicklist stuff has been
totally broken, it's done too many totally invalid things to really be
worth even keeping. We should get rid of that unmaintainable hack, and if
it has a real performance upside, we should make it part of the *native*
mmu-gather infrastructure, instead of maintaining it as some separate and
buggy/unmaintainable piece-of-sh*t code.

Linus
--
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/