[PATCH] x86: copy_oldmem_page using cached addressing

Cliff Wickman cpw at sgi.com
Wed Sep 8 11:14:27 EDT 2010

From: Cliff Wickman <cpw at sgi.com>

The copy of /proc/vmcore to a user buffer proceeds much faster
if the kernel addresses memory as cached.

With this patch we have seen an increase in transfer rate from less than
15MB/s to 80-460MB/s, depending on size of the transfer.  This makes
a big difference in time needed to save a system dump.

(Does anyone know of a reason why copy_oldmem_page() would need
 to use uncached addresses?)

Diffed against 2.6.36-rc3

Signed-off-by: Cliff Wickman <cpw at sgi.com>
 arch/x86/kernel/crash_dump_64.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: linus.current/arch/x86/kernel/crash_dump_64.c
--- linus.current.orig/arch/x86/kernel/crash_dump_64.c
+++ linus.current/arch/x86/kernel/crash_dump_64.c
@@ -34,7 +34,7 @@ ssize_t copy_oldmem_page(unsigned long p
 	if (!csize)
 		return 0;
-	vaddr = ioremap(pfn << PAGE_SHIFT, PAGE_SIZE);
+	vaddr = ioremap_cache(pfn << PAGE_SHIFT, PAGE_SIZE);
 	if (!vaddr)
 		return -ENOMEM;

More information about the kexec mailing list