free_area[] bitmap elimination [1/3]
Subsystems (2)
RFC 1/1 free_area[] bitmap elimination [1/3]
This patch removes bitmap initialization.
Signature · 2 lines
--the clue is these footmarks leading to the door.-- KAMEZAWA Hiroyuki <[email protected]>
Remove bitmap initialization in free_area_init_core()
---
linux-2.6.8.1-kame-kamezawa/mm/page_alloc.c | 36 ---------------------------- 1 files changed, 1 insertion(+), 35 deletions(-)
mm/page_alloc.c renamed from mm/page_alloc.c~eliminate-bitmap-p02 +1 -35
@@ -1514,42 +1514,8 @@ static void __init free_area_init_core(s zone_start_pfn += size; lmem_map += size; -for (i =0 ; ; i++) { -unsigned long bitmap_size; - +for (i =0 ; i <MAX_ORDER ; i++) {INIT_LIST_HEAD (&zone->free_area[i].free_list); -if (i ==MAX_ORDER -1 ) { - zone->free_area[i].map =NULL ; -break ; - } - -/* -* Page buddy system uses "index >> (i+1)", -* where "index" is at most "size-1". -* -* The extra "+3" is to round down to byte -* size (8 bits per byte assumption). Thus -* we get "(size-1) >> (i+4)" as the last byte -* we can access. -* -* The "+1" is because we want to round the -* byte allocation up rather than down. So -* we should have had a "+7" before we shifted -* down by three. Also, we have to add one as -* we actually _use_ the last bit (it's [0,n] -* inclusive, not [0,n[). -* -* So we actually had +7+1 before we shift -* down by 3. But (n+8) >> 3 == (n >> 3) + 1 -* (modulo overflows, which we do not have). -* -* Finally, we LONG_ALIGN because all bitmap -* operations are on longs. -*/ - bitmap_size = (size-1 ) >> (i+4 ); - bitmap_size =LONG_ALIGN (bitmap_size+1 ); - zone->free_area[i].map = - (unsigned long *)alloc_bootmem_node (pgdat, bitmap_size); } } }
_