The following patch [ along with a one line kernel patch posted seperately ]
adds 64k page size support to kexec-tools on powerpc. It also replaces
PAGE_SIZE with getpagesize( ) call.
PS: please ignore my previous mail.[ It had both kernel as well as kexec
tools
patch in the same mail ]
Thanks
-Sachin
* 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