mirror of https://gitee.com/openkylin/linux.git
[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 <Ed.Swarthout@freescale.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
94987aff23
commit
df174e3be8
|
@ -255,3 +255,40 @@ void free_initrd_mem(unsigned long start, unsigned long end)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#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
|
||||||
|
|
|
@ -113,6 +113,7 @@ void free_initrd_mem(unsigned long start, unsigned long end)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_PROC_KCORE
|
||||||
static struct kcore_list kcore_vmem;
|
static struct kcore_list kcore_vmem;
|
||||||
|
|
||||||
static int __init setup_kcore(void)
|
static int __init setup_kcore(void)
|
||||||
|
@ -139,6 +140,7 @@ static int __init setup_kcore(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
module_init(setup_kcore);
|
module_init(setup_kcore);
|
||||||
|
#endif
|
||||||
|
|
||||||
static void zero_ctor(void *addr, struct kmem_cache *cache, unsigned long flags)
|
static void zero_ctor(void *addr, struct kmem_cache *cache, unsigned long flags)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue