Currently kexec-tools for PPC64 supports only 4k page size. The
following patches
( attached here ) adds support for 64 K page size. It also replaces
PAGE_SIZE
with getpagesize( ) call.
Thanks
-Sachin
Signed-off-by: Sachin Sant <[EMAIL PROTECTED]>
---
diff -Naurp a/include/asm-powerpc/kdump.h b/include/asm-powerpc/kdump.h
--- a/include/asm-powerpc/kdump.h 2006-08-31 03:01:13.000000000 +0530
+++ b/include/asm-powerpc/kdump.h 2006-08-31 05:49:13.000000000 +0530
@@ -7,7 +7,7 @@
/* How many bytes to reserve at zero for kdump. The reserve limit should
* be greater or equal to the trampoline's end address.
* Reserve to the end of the FWNMI area, see head_64.S */
-#define KDUMP_RESERVE_LIMIT 0x8000
+#define KDUMP_RESERVE_LIMIT max(0x8000, PAGE_SIZE)
#ifdef CONFIG_CRASH_DUMP
* kexec-tools for PPC64 only support 4k page size and does not work with kernels
configured with 64k page size support. This patch adds support for 64k page
size on PPC64 arch.
* It also replaces PAGE_SIZE by getpagesize()
Signed-off-by: Sachin Sant <[EMAIL PROTECTED]>
---
diff -Naurp a/kexec/arch/ppc64/crashdump-ppc64.c
b/kexec/arch/ppc64/crashdump-ppc64.c
--- a/kexec/arch/ppc64/crashdump-ppc64.c 2006-08-31 08:33:53.000000000
+0530
+++ b/kexec/arch/ppc64/crashdump-ppc64.c 2006-08-31 08:38:56.000000000
+0530
@@ -80,8 +80,8 @@ static int get_crash_memory_ranges(struc
unsigned long long start, end, cstart, cend;
/* create a separate program header for the backup region */
- crash_memory_range[0].start = 0x0000000000000000;
- crash_memory_range[0].end = 0x0000000000008000;
+ crash_memory_range[0].start = BACKUP_SRC_START;
+ crash_memory_range[0].end = BACKUP_SRC_END;
crash_memory_range[0].type = RANGE_RAM;
memory_ranges++;
@@ -126,8 +126,8 @@ static int get_crash_memory_ranges(struc
start = ((unsigned long long *)buf)[0];
end = start + ((unsigned long long *)buf)[1];
- if (start == 0 && end >= 0x8000)
- start = 0x8000;
+ if (start == 0 && end >= BACKUP_SRC_END)
+ start = BACKUP_SRC_END;
cstart = crash_base;
cend = crash_base + crash_size;
@@ -419,8 +419,8 @@ void add_usable_mem_rgns(unsigned long l
unsigned long long end = base + size;
unsigned long long ustart, uend;
- base = _ALIGN_DOWN(base, PAGE_SIZE);
- end = _ALIGN_UP(end, PAGE_SIZE);
+ base = _ALIGN_DOWN(base, getpagesize());
+ end = _ALIGN_UP(end, getpagesize());
for (i=0; i < usablemem_rgns.size; i++) {
ustart = usablemem_rgns.ranges[i].start;
diff -Naurp a/kexec/arch/ppc64/crashdump-ppc64.h
b/kexec/arch/ppc64/crashdump-ppc64.h
--- a/kexec/arch/ppc64/crashdump-ppc64.h 2006-08-31 08:33:53.000000000
+0530
+++ b/kexec/arch/ppc64/crashdump-ppc64.h 2006-08-31 08:39:50.000000000
+0530
@@ -1,12 +1,14 @@
#ifndef CRASHDUMP_PPC64_H
#define CRASHDUMP_PPC64_H
+#include <unistd.h> /* For getpagesize() */
+
struct kexec_info;
int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline,
unsigned long max_addr, unsigned long min_base);
void add_usable_mem_rgns(unsigned long long base, unsigned long long size);
-#define PAGE_OFFSET 0xC000000000000000
+#define PAGE_OFFSET 0xC000000000000000
#define KERNELBASE PAGE_OFFSET
#define VMALLOCBASE 0xD000000000000000
@@ -19,15 +21,12 @@ void add_usable_mem_rgns(unsigned long l
#define COMMAND_LINE_SIZE 512 /* from kernel */
/* Backup Region, First 32K of System RAM. */
#define BACKUP_SRC_START 0x0000
-#define BACKUP_SRC_END 0x8000
+#define BACKUP_SRC_END ((0x8000 < getpagesize()) ? getpagesize() : 0x8000)
#define BACKUP_SRC_SIZE (BACKUP_SRC_END - BACKUP_SRC_START + 1)
-#define KDUMP_BACKUP_LIMIT 0x8000
+#define KDUMP_BACKUP_LIMIT BACKUP_SRC_END
#define _ALIGN_UP(addr,size) (((addr)+((size)-1))&(~((size)-1)))
#define _ALIGN_DOWN(addr,size) ((addr)&(~((size)-1)))
-#ifndef PAGE_SIZE
-#define PAGE_SIZE 4096
-#endif
extern unsigned long long crash_base;
extern unsigned long long crash_size;
_______________________________________________
fastboot mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/fastboot