summaryrefslogtreecommitdiff
path: root/init
diff options
context:
space:
mode:
authorAndrew Morton <akpm@digeo.com>2002-10-04 20:35:48 -0700
committerRussell King <rmk@flint.arm.linux.org.uk>2002-10-04 20:35:48 -0700
commita27efcaff9ffd5ad05f4e111751da41a8820f7ab (patch)
treecc525c035c0e53f1edaadd4a9c572a52ef702bc1 /init
parent343893e647d27c96bf07e3f549b77b89aa9581ce (diff)
[PATCH] remove page->virtual
The patch removes page->virtual for all architectures which do not define WANT_PAGE_VIRTUAL. Hash for it instead. Possibly we could define WANT_PAGE_VIRTUAL for CONFIG_HIGHMEM4G, but it seems unlikely. A lot of the pressure went off kmap() and page_address() as a result of the move to kmap_atomic(). That should be the preferred way to address CPU load in the set_page_address() and page_address() hashing and locking. If kmap_atomic is not usable then the next best approach is for users to cache the result of kmap() in a local rather than calling page_address() repeatedly. One heavy user of kmap() and page_address() is the ext2 directory code. On a 7G Quad PIII, running four concurrent instances of while true do find /usr/src/linux > /dev/null done on ext2 with everything cached, profiling shows that the new hashed set_page_address() and page_address() implementations consume 0.4% and 1.3% of CPU time respectively. I think that's OK.
Diffstat (limited to 'init')
-rw-r--r--init/main.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/init/main.c b/init/main.c
index 3cf336cf6f8d..f69c298b9a6f 100644
--- a/init/main.c
+++ b/init/main.c
@@ -433,6 +433,7 @@ asmlinkage void __init start_kernel(void)
initrd_start = 0;
}
#endif
+ page_address_init();
mem_init();
kmem_cache_sizes_init();
pidhash_init();