Signed-off-by: Andrew Morton Index: linux-2.6.8-rc1/mm/memory.c =================================================================== --- linux-2.6.8-rc1.orig/mm/memory.c 2004-07-15 02:41:41.000000000 +1000 +++ linux-2.6.8-rc1/mm/memory.c 2004-07-15 10:03:31.429426327 +1000 @@ -706,6 +706,7 @@ { int i; unsigned int flags; + int nr_pages = 0; /* * Require read or write permissions. @@ -766,6 +767,13 @@ do { struct page *map; int lookup_write = write; + + if ((++nr_pages & 63) == 0) { + spin_unlock(&mm->page_table_lock); + cpu_relax(); + spin_lock(&mm->page_table_lock); + } + while (!(map = follow_page(mm, start, lookup_write))) { /* * Shortcut for anonymous pages. We don't want