Atsushi Nemoto wrote: > On Tue, 04 Sep 2007 14:46:54 +0200, Franck Bui-Huu <vagabon.xyz@xxxxxxxxx> wrote: >> One thing you might want to try is: >> >> $ echo 0 > /proc/sys/kernel/randomize_va_space >> >> and see if your system still works fine. This command should avoid a >> data cache flush when moving the stack around. See shift_arg_pages(). >> >> With this, maybe you could give this testcase a try: >> >> $ /bin/echo "`seq 10000`" > seq.txt >> >> and see if seq.txt is correct. This command should pass to echo (not >> the bash builtin one) a long argument that should fill your >> dcache. > > I tried this and everything worked fine with/without the > flush_kernel_dcache_page() ;) > >> That said the execve syscall code is quite 'hairy' and it may not be >> suprising that after this syscall the dcache has been completly >> flushed and thus make the problem disappear. > > Yes, there is an yet another path to "flush all dcache". > > do_execve() > copy_strings() > flush_kernel_dcache_page() > search_binary_handler() > load_elf_binary() > flush_old_exec() > exec_mmap() > mmput() > exit_mmap() > flush_cache_mm() > r4k_blast_dcache() > > Anyway, the implementation of flush_kernel_dcache_page() is very > simple so that we can believe it works correctly without any testcase. > Too optimistic? :) god only knows ;) Franck