Question of kmap_atomic
nico at fluxnic.net
Thu Jul 15 22:10:28 EDT 2010
On Fri, 16 Jul 2010, Minchan Kim wrote:
> I am stuck with looking at ARM's kmap_atomic.
> I am not familiar with ARM cache model.
> As I look the code, ARM seems to have a VIPT aliasing model.
There are VIPT as well as VIVT models available.
> Before Nicolas's 17ebba1fe, kmap_atomic always calls kmap_high_get to
> prevent aliasing problem of 7929eb9cf64 regardless of VIVT and VIPT.
The aliasing issue is fundamental for VIVT. But on VIPT it is also
advantageous to reuse a kmap entry if possible as this saves on the PTE
setup and TLB flush that is required otherwise.
> But the patch made it to not call kmap_high_get when VIPT-aliasing
> model in CONFIG_DEBUG_HIGHMEM.
> Doesn't it cause aliasing problem as 7929eb9cf64 says, again?
No because with VIPT, the cache is tagged with physical addresses, and
therefore the same cache data will be used for the same memory
regardless of the virtual address used to reach it. On VIVT this is not
the case and the comment in 7929eb9cf64 applies to VIVT only.
More information about the linux-arm-kernel