summaryrefslogtreecommitdiff
path: root/kernel
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 /kernel
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 'kernel')
-rw-r--r--kernel/ksyms.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/ksyms.c b/kernel/ksyms.c
index 4954fc80381f..56852f3be54c 100644
--- a/kernel/ksyms.c
+++ b/kernel/ksyms.c
@@ -132,6 +132,9 @@ EXPORT_SYMBOL(highmem_start_page);
EXPORT_SYMBOL(kmap_prot);
EXPORT_SYMBOL(kmap_pte);
#endif
+#ifdef HASHED_PAGE_VIRTUAL
+EXPORT_SYMBOL(page_address);
+#endif
EXPORT_SYMBOL(get_user_pages);
/* filesystem internal functions */