Re: [PATCH] powerpc mm init_32 gdb regions
From: Kumar Gala <hidden>
Date: 2007-09-19 20:28:20
On Sep 19, 2007, at 12:09 AM, Ed Swarthout wrote:
quoted hunk ↗ jump to hunk
Add memory regions to the kcore list for 32-bit machines. Since the entries are only 32-bit, keep under 4G. Signed-off-by: Ed Swarthout <redacted> --- Adapted from init_64.c arch/powerpc/mm/init_32.c | 34 ++++++++++++++++++++++++++++++++++ 1 files changed, 34 insertions(+), 0 deletions(-)diff --git a/arch/powerpc/mm/init_32.c b/arch/powerpc/mm/init_32.c index d65995a..d804c65 100644 --- a/arch/powerpc/mm/init_32.c +++ b/arch/powerpc/mm/init_32.c@@ -255,3 +255,37 @@ void free_initrd_mem(unsigned long start,unsigned long end) } } #endif +
should this be #ifdef CONFIG_PROC_KCORE protected?
+static struct kcore_list kcore_vmem;
+
+static int __init setup_kcore(void)
+{
+ int i;
+
+ for (i=0; i < lmb.memory.cnt; i++) {
+ unsigned long base, size;
+ struct kcore_list *kcore_mem;
+
+ base = lmb.memory.region[i].base;
+ size = lmb.memory.region[i].size;
+
+ kcore_mem = kmalloc(sizeof(struct kcore_list), GFP_ATOMIC);
+ if (!kcore_mem)
+ panic("%s: kmalloc failed\n", __FUNCTION__);
+
+ /* must stay under 32 bits */
+ if ( 0xfffffffful - (unsigned long)__va(base) < size) {
+ size = 0xfffffffful - (unsigned long)(__va(base));
+ printk(KERN_DEBUG "setup_kcore: restrict size=%lx\n",
+ size);
+ }
+
+ kclist_add(kcore_mem, __va(base), size);
+ }
+
+ kclist_add(&kcore_vmem, (void *)VMALLOC_START,
+ VMALLOC_END-VMALLOC_START);
+
+ return 0;
+}
+module_init(setup_kcore);
--
1.5.3.rc6.63.gf7c18