x86, pat: avoid highmem cache attribute aliasing
authorNick Piggin <npiggin@suse.de>
Fri, 1 Aug 2008 01:15:21 +0000 (03:15 +0200)
committerIngo Molnar <mingo@elte.hu>
Fri, 15 Aug 2008 15:22:57 +0000 (17:22 +0200)
commit5843d9a4d0ba89719916c8f07fc9c57b7126be6d
tree3c55d6f17ce32ec3f53a324ce8fc90e291b44d79
parent466ae837424dcc538b1af2a0eaf53be32edcdbe7
x86, pat: avoid highmem cache attribute aliasing

Highmem code can leave ptes and tlb entries around for a given page even after
kunmap, and after it has been freed.

>From what I can gather, the PAT code may change the cache attributes of
arbitrary physical addresses (ie. including highmem pages), which would result
in aliases in the case that it operates on one of these lazy tlb highmem
pages.

Flushing kmaps should solve the problem.

I've also just added code for conditional flushing if we haven't got
any dangling highmem aliases -- this should help performance if we
change page attributes frequently or systems that aren't using much
highmem pages (eg. if < 4G RAM). Should be turned into 2 patches, but
just for RFC...

Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/mm/pageattr.c
mm/highmem.c