All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86: copy_oldmem_page using cached addressing
@ 2010-09-08 15:14 ` Cliff Wickman
  0 siblings, 0 replies; 9+ messages in thread
From: Cliff Wickman @ 2010-09-08 15:14 UTC (permalink / raw)
  To: kexec, mingo; +Cc: linux-kernel

From: Cliff Wickman <cpw@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@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;
 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH] x86: copy_oldmem_page using cached addressing
@ 2010-09-08 15:14 ` Cliff Wickman
  0 siblings, 0 replies; 9+ messages in thread
From: Cliff Wickman @ 2010-09-08 15:14 UTC (permalink / raw)
  To: kexec, mingo; +Cc: linux-kernel

From: Cliff Wickman <cpw@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@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;
 

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] x86: copy_oldmem_page using cached addressing
  2010-09-08 15:14 ` Cliff Wickman
@ 2010-09-08 19:19   ` Eric W. Biederman
  -1 siblings, 0 replies; 9+ messages in thread
From: Eric W. Biederman @ 2010-09-08 19:19 UTC (permalink / raw)
  To: Cliff Wickman; +Cc: kexec, mingo, linux-kernel

Cliff Wickman <cpw@sgi.com> writes:

> From: Cliff Wickman <cpw@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

I believe this code simply predates being able to specify the
caching attributes at ioremap time.  Being cached in this case
actually looks more correct, as that is the default for RAM
and we are talking about RAM.

Ultimately either there is another cpu running wild with these pages
mapped with some random set of attributes, and we cannot get the
permissions right or we have captured all of the cpus and this is the
only mapping so it doesn't matter.

Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>

>
> Signed-off-by: Cliff Wickman <cpw@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;
>  
>
> _______________________________________________
> kexec mailing list
> kexec@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] x86: copy_oldmem_page using cached addressing
@ 2010-09-08 19:19   ` Eric W. Biederman
  0 siblings, 0 replies; 9+ messages in thread
From: Eric W. Biederman @ 2010-09-08 19:19 UTC (permalink / raw)
  To: Cliff Wickman; +Cc: mingo, kexec, linux-kernel

Cliff Wickman <cpw@sgi.com> writes:

> From: Cliff Wickman <cpw@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

I believe this code simply predates being able to specify the
caching attributes at ioremap time.  Being cached in this case
actually looks more correct, as that is the default for RAM
and we are talking about RAM.

Ultimately either there is another cpu running wild with these pages
mapped with some random set of attributes, and we cannot get the
permissions right or we have captured all of the cpus and this is the
only mapping so it doesn't matter.

Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>

>
> Signed-off-by: Cliff Wickman <cpw@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;
>  
>
> _______________________________________________
> kexec mailing list
> kexec@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] x86: copy_oldmem_page using cached addressing
  2010-09-08 15:14 ` Cliff Wickman
@ 2010-09-08 19:42   ` Andi Kleen
  -1 siblings, 0 replies; 9+ messages in thread
From: Andi Kleen @ 2010-09-08 19:42 UTC (permalink / raw)
  To: Cliff Wickman
  Cc: public-kexec-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	public-mingo-X9Un+BFzKDI,
	public-linux-kernel-u79uwXL29TY76Z2rM5mHXA



Cliff Wickman <cpw-sJ/iWh9BUns@public.gmane.org> writes:

> From: Cliff Wickman <cpw-sJ/iWh9BUns@public.gmane.org>
>
> 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

I had a similar patch somewhere in my private kernels,
yes it's a big win. I think it was simply a bug that was added
when ioremap was changed to default to uncached.

-Andi
-- 
ak@linux.intel.com -- Speaking for myself only.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] x86: copy_oldmem_page using cached addressing
@ 2010-09-08 19:42   ` Andi Kleen
  0 siblings, 0 replies; 9+ messages in thread
From: Andi Kleen @ 2010-09-08 19:42 UTC (permalink / raw)
  To: Cliff Wickman
  Cc: public-linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	public-kexec-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	public-mingo-X9Un+BFzKDI



Cliff Wickman <cpw-sJ/iWh9BUns@public.gmane.org> writes:

> From: Cliff Wickman <cpw-sJ/iWh9BUns@public.gmane.org>
>
> 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

I had a similar patch somewhere in my private kernels,
yes it's a big win. I think it was simply a bug that was added
when ioremap was changed to default to uncached.

-Andi
-- 
ak@linux.intel.com -- Speaking for myself only.


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] x86: copy_oldmem_page using cached addressing
  2010-09-08 19:19   ` Eric W. Biederman
@ 2010-09-09  7:48     ` Ingo Molnar
  -1 siblings, 0 replies; 9+ messages in thread
From: Ingo Molnar @ 2010-09-09  7:48 UTC (permalink / raw)
  To: Eric W. Biederman; +Cc: Cliff Wickman, kexec, linux-kernel


* Eric W. Biederman <ebiederm@xmission.com> wrote:

> Cliff Wickman <cpw@sgi.com> writes:
> 
> > From: Cliff Wickman <cpw@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
> 
> I believe this code simply predates being able to specify the
> caching attributes at ioremap time.  Being cached in this case
> actually looks more correct, as that is the default for RAM
> and we are talking about RAM.
> 
> Ultimately either there is another cpu running wild with these pages
> mapped with some random set of attributes, and we cannot get the
> permissions right or we have captured all of the cpus and this is the
> only mapping so it doesn't matter.
> 
> Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>

Applied, thanks guys. Note, i also added a -stable tag, as kdump is 
typically used with enterprise setups and we want this (low-risk, 
high-impact) improvement to be propagated far back the -stable series.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] x86: copy_oldmem_page using cached addressing
@ 2010-09-09  7:48     ` Ingo Molnar
  0 siblings, 0 replies; 9+ messages in thread
From: Ingo Molnar @ 2010-09-09  7:48 UTC (permalink / raw)
  To: Eric W. Biederman; +Cc: kexec, Cliff Wickman, linux-kernel


* Eric W. Biederman <ebiederm@xmission.com> wrote:

> Cliff Wickman <cpw@sgi.com> writes:
> 
> > From: Cliff Wickman <cpw@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
> 
> I believe this code simply predates being able to specify the
> caching attributes at ioremap time.  Being cached in this case
> actually looks more correct, as that is the default for RAM
> and we are talking about RAM.
> 
> Ultimately either there is another cpu running wild with these pages
> mapped with some random set of attributes, and we cannot get the
> permissions right or we have captured all of the cpus and this is the
> only mapping so it doesn't matter.
> 
> Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>

Applied, thanks guys. Note, i also added a -stable tag, as kdump is 
typically used with enterprise setups and we want this (low-risk, 
high-impact) improvement to be propagated far back the -stable series.

Thanks,

	Ingo

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [tip:x86/mm] x86, kdump: Change copy_oldmem_page() to use cached addressing
  2010-09-08 15:14 ` Cliff Wickman
                   ` (2 preceding siblings ...)
  (?)
@ 2010-09-09 11:57 ` tip-bot for Cliff Wickman
  -1 siblings, 0 replies; 9+ messages in thread
From: tip-bot for Cliff Wickman @ 2010-09-09 11:57 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, cpw, tglx, mingo, ebiederm

Commit-ID:  37a2f9f30a360fb03522d15c85c78265ccd80287
Gitweb:     http://git.kernel.org/tip/37a2f9f30a360fb03522d15c85c78265ccd80287
Author:     Cliff Wickman <cpw@sgi.com>
AuthorDate: Wed, 8 Sep 2010 10:14:27 -0500
Committer:  Ingo Molnar <mingo@elte.hu>
CommitDate: Thu, 9 Sep 2010 09:46:23 +0200

x86, kdump: Change copy_oldmem_page() to use cached addressing

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.

Signed-off-by: Cliff Wickman <cpw@sgi.com>
Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: kexec@lists.infradead.org
Cc: <stable@kernel.org> # as far back as it would apply
LKML-Reference: <E1OtMLz-0001yp-Ia@eag09.americas.sgi.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 arch/x86/kernel/crash_dump_64.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/x86/kernel/crash_dump_64.c b/arch/x86/kernel/crash_dump_64.c
index 045b36c..bf43188 100644
--- a/arch/x86/kernel/crash_dump_64.c
+++ b/arch/x86/kernel/crash_dump_64.c
@@ -34,7 +34,7 @@ ssize_t copy_oldmem_page(unsigned long pfn, char *buf,
 	if (!csize)
 		return 0;
 
-	vaddr = ioremap(pfn << PAGE_SHIFT, PAGE_SIZE);
+	vaddr = ioremap_cache(pfn << PAGE_SHIFT, PAGE_SIZE);
 	if (!vaddr)
 		return -ENOMEM;
 

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2010-09-09 11:58 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-09-08 15:14 [PATCH] x86: copy_oldmem_page using cached addressing Cliff Wickman
2010-09-08 15:14 ` Cliff Wickman
2010-09-08 19:19 ` Eric W. Biederman
2010-09-08 19:19   ` Eric W. Biederman
2010-09-09  7:48   ` Ingo Molnar
2010-09-09  7:48     ` Ingo Molnar
2010-09-08 19:42 ` Andi Kleen
2010-09-08 19:42   ` Andi Kleen
2010-09-09 11:57 ` [tip:x86/mm] x86, kdump: Change copy_oldmem_page() to use " tip-bot for Cliff Wickman

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.