powerpc: Fix /dev/oldmem for kdump
PATCH 1/1 powerpc: Fix /dev/oldmem for kdump
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.
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.
---
arch/powerpc/kernel/crash_dump.c +22 -9
@@ -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 pif (!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; }
Quoted 8 lines · Sachin P. Sant
This one has been pending for a long time. Somehow never made it upstream.
Resending the patch which fixes
/dev/oldmeminterface 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?
Quoted 1 line
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
Signature · 8 lines
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
Quoted 4 lines · Michael Ellerman
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
Michael Ellerman
Acked-byQuoted 8 lines · Sachin P. Sant
Quoted 4 lines · Michael Ellerman
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/vmcoreand/dev/oldmeminterface ]
OK great, thanks for that.
Quoted 2 lines
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!
cheers
Signature · 8 lines
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