x86: clean up reserve_bootmem_generic
PATCH 1/1 x86: clean up reserve_bootmem_generic
1. add reserve_bootmem_generic for 32bit
2. change len to unsigned long
3. make early_res_to_bootmem to use it
arch/x86/kernel/e820.c +1 -1
@@ -635,7 +635,7 @@ void __init early_res_to_bootmem(u64 stacontinue ;printk (KERN_INFO " early res: %d [%llx-%llx] %s\n" , i, final_start, final_end -1 , r->name); -reserve_bootmem (final_start, final_end - final_start, +reserve_bootmem_generic (final_start, final_end - final_start,BOOTMEM_DEFAULT ); } }
arch/x86/kernel/mpparse.c +6 -12
@@ -859,10 +859,11 @@ static int __init smp_scan_config(unsignif (!reserve)return 1 ; -#ifdef CONFIG_X86_32 -reserve_bootmem (virt_to_phys (mpf),PAGE_SIZE , +reserve_bootmem_generic (virt_to_phys (mpf),PAGE_SIZE ,BOOTMEM_DEFAULT );if (mpf->mpf_physptr) { +unsigned long size =PAGE_SIZE ; +#ifdef CONFIG_X86_32 /* * We cannot access to MPC table to compute * table size yet, as only few megabytes from
@@ -872,22 +873,15 @@ static int __init smp_scan_config(unsign* PAGE_SIZE from mpg->mpf_physptr yields BUG() * in reserve_bootmem. */ -unsigned long size =PAGE_SIZE ;unsigned long end = max_low_pfn *PAGE_SIZE ;if (mpf->mpf_physptr + size > end) size = end - mpf->mpf_physptr; -reserve_bootmem (mpf->mpf_physptr, size, +#endif +reserve_bootmem_generic (mpf->mpf_physptr, size,BOOTMEM_DEFAULT ); } -#else -reserve_bootmem_generic (virt_to_phys (mpf),PAGE_SIZE , -BOOTMEM_DEFAULT ); -if (mpf->mpf_physptr) -reserve_bootmem_generic (mpf->mpf_physptr, -PAGE_SIZE ,BOOTMEM_DEFAULT ); -#endif -return 1 ; +return 1 ; } bp +=4 ; length -=16 ;
arch/x86/mm/init_32.c +6 -0
@@ -781,3 +781,9 @@ void free_initrd_mem(unsigned long start free_init_pages("initrd memory", start, end); }#endif + +int __init reserve_bootmem_generic (unsigned long phys,unsigned long len, +int flags) +{ +return reserve_bootmem (phys, len, flags); +}
arch/x86/mm/init_64.c +2 -1
@@ -827,7 +827,8 @@ void free_initrd_mem(unsigned long start }#endif -int __init reserve_bootmem_generic (unsigned long phys,unsigned len,int flags) +int __init reserve_bootmem_generic (unsigned long phys,unsigned long len, +int flags) {#ifdef CONFIG_NUMA int nid, next_nid;
include/asm-x86/proto.h +0 -2
@@ -14,8 +14,6 @@ extern void ia32_syscall(void);extern void ia32_cstar_target (void );extern void ia32_sysenter_target (void ); -extern int reserve_bootmem_generic (unsigned long phys,unsigned len,int flags); -extern void syscall32_cpu_init (void );extern void check_efer (void );
include/linux/bootmem.h +2 -0
@@ -84,6 +84,8 @@ extern int reserve_bootmem(unsigned long __alloc_bootmem_low(x, PAGE_SIZE, 0)#endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */ +extern int reserve_bootmem_generic (unsigned long addr,unsigned long size, +int flags);extern unsigned long free_all_bootmem (void );extern unsigned long free_all_bootmem_node (pg_data_t *pgdat); extern void *__alloc_bootmem_node(pg_data_t *pgdat,
Ingo Molnar
AppliedQuoted 3 lines · Yinghai Lu
1. add
reserve_bootmem_genericfor 32bit
2. change len to unsigned long
3. makeearly_res_to_bootmemto use it
applied to tip/x86/mpparse - thanks Yinghai.
This does properly finish my band-aid:
# x86/mpparse: f245905: x86: unify the reserve_bootmem() behavior of early_res_to_bootmem()
correct?
Ingo
Quoted 7 lines · Ingo Molnar
Quoted 3 lines · Yinghai Lu
1. add
reserve_bootmem_genericfor 32bit
2. change len to unsigned long
3. makeearly_res_to_bootmemto use it
Quoted 7 lines
applied to tip/x86/mpparse - thanks Yinghai.
This does properly finish my band-aid:
# x86/mpparse: f245905: x86: unify the
reserve_bootmem()behavior ofearly_res_to_bootmem()correct?
yes. restore the original behavior of that for 64bit.
YH