This test is senseless, in my opinion:
> + if (cpu_has_pge) \
> + __flush_tlb_single(addr); \
The test _should_ be for something like
if (cpu_has_invlpg)
__flush_tlb_single(addr);
since we want to use the invlpg instruction regardless of any PGE issues
if it is available.
There's another issue, which is the fact that I do not believe that invlpg
is even guaranteed to invalidate a G page at all - although obviously all
current CPU's seem to work that way. However, I don't see that documented
anywhere. It might make sense to mark the places that expect to invalidate
a global page explicitly, and call that function "flush_one_global_rlb()"
(even if it - at least for now - does the same thing as the regular single
invalidate).
Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/