Re: [PATCH] powerpc: Fix /dev/oldmem for kdump

2008-07-03 Thread Michael Ellerman
On Thu, 2008-06-26 at 16:25 +0530, Sachin P. Sant wrote:
 This one has been pending for a long time. Somehow never
 made it upstream.
 
 Resending the patch which fixes /dev/oldmem interface for kdump.
 
 Tested with 2.6.26-rc8.
 
 Signed-off-by : Michael Ellerman [EMAIL PROTECTED]

Even though I wrote this, it was so long ago I can't really vouch for
it. If you've tested it and it works Sachin then we should merge it. Is
this fix in distros or does it not apply?

 Also make sure we're only reading one page or less at a time.

It looks like the generic code ensures that I think, but it can't hurt.

cheers

-- 
Michael Ellerman
OzLabs, IBM Australia Development Lab

wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)

We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person


signature.asc
Description: This is a digitally signed message part
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Re: [PATCH] powerpc: Fix /dev/oldmem for kdump

2008-07-03 Thread Sachin P. Sant

Michael Ellerman wrote:

Even though I wrote this, it was so long ago I can't really vouch for
it. If you've tested it and it works Sachin then we should merge it. Is
this fix in distros or does it not apply?
  

Yes, i have tested this on couple of power boxes and the patch
works fine. [ i can copy dump using both /proc/vmcore and /dev/oldmem
interface ]

No this fix is not part of distro ATM. But yes it applies to distros
also. Once it is merged upstream, distros will eventually pick this up.

Thanks
-Sachin


___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH] powerpc: Fix /dev/oldmem for kdump

2008-07-03 Thread Michael Ellerman
On Thu, 2008-07-03 at 12:02 +0530, Sachin P. Sant wrote:
 Michael Ellerman wrote:
  Even though I wrote this, it was so long ago I can't really vouch for
  it. If you've tested it and it works Sachin then we should merge it. Is
  this fix in distros or does it not apply?

 Yes, i have tested this on couple of power boxes and the patch
 works fine. [ i can copy dump using both /proc/vmcore and /dev/oldmem
 interface ]

OK great, thanks for that.

 No this fix is not part of distro ATM. But yes it applies to distros
 also. Once it is merged upstream, distros will eventually pick this up.

Crud, OK well I guess we should hurry up and merge it then :D

Paul, this has been broken for quite a while, but it would still be nice
if the fix was in 26 - sorry!

Acked-by: Michael Ellerman [EMAIL PROTECTED]

cheers

-- 
Michael Ellerman
OzLabs, IBM Australia Development Lab

wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)

We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person


signature.asc
Description: This is a digitally signed message part
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

[PATCH] powerpc: Fix /dev/oldmem for kdump

2008-06-26 Thread Sachin P. Sant

This one has been pending for a long time. Somehow never
made it upstream.

Resending the patch which fixes /dev/oldmem interface for kdump.

Tested with 2.6.26-rc8.

Signed-off-by : Michael Ellerman [EMAIL PROTECTED]

Fix /dev/oldmem for kdump

A change to __ioremap() broke reading /dev/oldmem because we're no
longer able to ioremap pfn 0 (d177c207ba16b1db31283e2d1fee7ad4a863584b).

We actually don't need to ioremap for anything that's part of the linear
mapping, so just read it directly.

Also make sure we're only reading one page or less at a time.

Signed-off-by : Michael Ellerman [EMAIL PROTECTED]
---

diff -Naurp old/arch/powerpc/kernel/crash_dump.c 
new/arch/powerpc/kernel/crash_dump.c
--- old/arch/powerpc/kernel/crash_dump.c2008-06-25 07:28:20.0 
+0530
+++ new/arch/powerpc/kernel/crash_dump.c2008-06-26 14:46:17.0 
+0530
@@ -83,6 +83,19 @@ static int __init parse_savemaxmem(char 
 }
 __setup(savemaxmem=, parse_savemaxmem);
 
+
+static size_t copy_oldmem_vaddr(void *vaddr, char *buf, size_t csize,
+   unsigned long offset, int userbuf)
+{
+   if (userbuf) {
+   if (copy_to_user((char __user *)buf, (vaddr + offset), csize))
+   return -EFAULT;
+   } else
+   memcpy(buf, (vaddr + offset), csize);
+
+   return csize;
+}
+
 /**
  * copy_oldmem_page - copy one page from oldmem
  * @pfn: page frame number to be copied
@@ -104,16 +117,16 @@ ssize_t copy_oldmem_page(unsigned long p
if (!csize)
return 0;
 
-   vaddr = __ioremap(pfn  PAGE_SHIFT, PAGE_SIZE, 0);
+   csize = min(csize, PAGE_SIZE);
 
-   if (userbuf) {
-   if (copy_to_user((char __user *)buf, (vaddr + offset), csize)) {
-   iounmap(vaddr);
-   return -EFAULT;
-   }
-   } else
-   memcpy(buf, (vaddr + offset), csize);
+   if (pfn  max_pfn) {
+   vaddr = __va(pfn  PAGE_SHIFT);
+   csize = copy_oldmem_vaddr(vaddr, buf, csize, offset, userbuf);
+   } else {
+   vaddr = __ioremap(pfn  PAGE_SHIFT, PAGE_SIZE, 0);
+   csize = copy_oldmem_vaddr(vaddr, buf, csize, offset, userbuf);
+   iounmap(vaddr);
+   }
 
-   iounmap(vaddr);
return csize;
 }
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev