Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=df174e3be88d4352bfcfe20d11adc671d2961c79
Commit:     df174e3be88d4352bfcfe20d11adc671d2961c79
Parent:     94987aff23bcdd7cee92edf02c2f4ef259d1cbf6
Author:     Ed Swarthout <[EMAIL PROTECTED]>
AuthorDate: Fri Sep 21 12:53:02 2007 +1000
Committer:  Paul Mackerras <[EMAIL PROTECTED]>
CommitDate: Wed Oct 3 09:12:06 2007 +1000

    [POWERPC] Add memory regions to the kcore list for 32-bit machines
    
    The entries are only 32-bit, so restrict the virtual address to stay
    below 0xffff_ffff.  With KERNELBASE set to 0xc000_0000, this in effect
    restricts access to the first 1GB of real memory.
    
    Make setup_kcore conditional on CONFIG_PROC_KCORE for both 32/64.
    
    Signed-off-by: Ed Swarthout <[EMAIL PROTECTED]>
    Signed-off-by: Paul Mackerras <[EMAIL PROTECTED]>
---
 arch/powerpc/mm/init_32.c |   37 +++++++++++++++++++++++++++++++++++++
 arch/powerpc/mm/init_64.c |    2 ++
 2 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/arch/powerpc/mm/init_32.c b/arch/powerpc/mm/init_32.c
index d65995a..27c234f 100644
--- a/arch/powerpc/mm/init_32.c
+++ b/arch/powerpc/mm/init_32.c
@@ -255,3 +255,40 @@ void free_initrd_mem(unsigned long start, unsigned long 
end)
        }
 }
 #endif
+
+#ifdef CONFIG_PROC_KCORE
+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;
+               unsigned long 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);
+#endif
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c
index 9f27bb5..fa90f65 100644
--- a/arch/powerpc/mm/init_64.c
+++ b/arch/powerpc/mm/init_64.c
@@ -113,6 +113,7 @@ void free_initrd_mem(unsigned long start, unsigned long end)
 }
 #endif
 
+#ifdef CONFIG_PROC_KCORE
 static struct kcore_list kcore_vmem;
 
 static int __init setup_kcore(void)
@@ -139,6 +140,7 @@ static int __init setup_kcore(void)
        return 0;
 }
 module_init(setup_kcore);
+#endif
 
 static void zero_ctor(void *addr, struct kmem_cache *cache, unsigned long 
flags)
 {
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to