> Wrong. We do call __pa() on vmalloc ranges (which is a known
AFAIK nobody does actually currently. Although I expect sooner
or later someone will try since __ioremap() lost its pgprot argument
that made it so powerful. Best would be probably to stick
in some bugs just to catch that.
Note that 64bit EFI passes in a fixmap address (they just call
it efi_ioremap). Fixmaps are in the kernel mapping which __pa() handles
and then this gives a low number likely somewhere in memory
and might well trigger.
Are you sure about this for all possible __PAGE_OFFSET values? e.g. consider
1:3 split. Also there is always relocated kernels where kernels might be loaded
quite high.
That doesn't check phys_addr at all?
I never claimed it was a cleanup. It's a fix and a optimization
(don't do unnecessary coherency between direct mapping and other
mappings for clearing X -- this means some innocent pages in the
direct mapping won't get split)
Anyways even if you don't want to fix this clear bug I would ask
to still consider the optimization independently.
-Andi
--