powerpc/crashdump: Fix issues with kexec and 36bit physical addr
authorMatthew McClintock <msm@freescale.com>
Wed, 21 Jul 2010 11:14:54 +0000 (11:14 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Sat, 31 Jul 2010 04:56:30 +0000 (14:56 +1000)
Fix sizes of variables so correct values are exported via /proc.
Cast variable in comparison to avoid compiler error.

Signed-off-by: Matthew McClintock <msm@freescale.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/kernel/crash_dump.c
arch/powerpc/kernel/machine_kexec.c

index 5fb667a..d254132 100644 (file)
@@ -128,9 +128,9 @@ ssize_t copy_oldmem_page(unsigned long pfn, char *buf,
        if (!csize)
                return 0;
 
-       csize = min(csize, PAGE_SIZE);
+       csize = min_t(size_t, csize, PAGE_SIZE);
 
-       if (pfn < max_pfn) {
+       if ((min_low_pfn < pfn) && (pfn < max_pfn)) {
                vaddr = __va(pfn << PAGE_SHIFT);
                csize = copy_oldmem_vaddr(vaddr, buf, csize, offset, userbuf);
        } else {
index bb3d893..6ff15f0 100644 (file)
@@ -144,24 +144,24 @@ int overlaps_crashkernel(unsigned long start, unsigned long size)
 }
 
 /* Values we need to export to the second kernel via the device tree. */
-static unsigned long kernel_end;
-static unsigned long crashk_size;
+static phys_addr_t kernel_end;
+static phys_addr_t crashk_size;
 
 static struct property kernel_end_prop = {
        .name = "linux,kernel-end",
-       .length = sizeof(unsigned long),
+       .length = sizeof(phys_addr_t),
        .value = &kernel_end,
 };
 
 static struct property crashk_base_prop = {
        .name = "linux,crashkernel-base",
-       .length = sizeof(unsigned long),
+       .length = sizeof(phys_addr_t),
        .value = &crashk_res.start,
 };
 
 static struct property crashk_size_prop = {
        .name = "linux,crashkernel-size",
-       .length = sizeof(unsigned long),
+       .length = sizeof(phys_addr_t),
        .value = &crashk_size,
 };