I think that there're bugs in do_swap_page and try_to_swap_out.I've read "Documentation/cachetlb.txt" and I know that now isthe transition to newer interface, but we need a fix at the momentwith old interface.

(1) Flush is needed at do_swap_page

With current implementation, cache is flushed when it is swapped insynchronously. When it is swapped in asynchronously(swapfile.c:try_to_unuse, memory.c:swapin_readahead), there's noflushing which causes alias.