Re: [PATCH] powerpc: Fix /dev/oldmem for kdump
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
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
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
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