Hi, I was going through the Memory Initialization document at www.linux-mm.org/ I am trying to understand the bootmem allocator.Nothing much is written about those functions except for a few lines. I believe the virtual memory above PAGE_OFFSET is reserved for kernel. Here is my analysis of the setup_arch() from kernel/setup.c.Please correct me if I am wrong. 1. /* * Partially used pages are not usable - thus * we are rounding upwards. */ start_pfn = PFN_UP(__pa(&_end)); This is the page frame number in the physical memory above which the bootmem would be allocated. 2. The next part of the code is a for loop that calculates the highest page frame number which would be nothing but the end of physical memory. 3. Then there is a call to init_bootmem. 4. In the init_bootmem routine, I would like to know what is the "mapsize" for.What does it indicate? 5. In the same routine, a bootmem structure is filled with values for the virtual address of start_pfn, the start address and an entry for the highest page frame number.Then the memory starting at bootmem_map is initialized. 6.Returning to setup_arch(),.there is a for loop that does not do a lot. 7.Then there is a call to reserve_bootmem() with the physical address of the first usable page frame as one of its arguments. 8. In the reserve_bootmem routine, what do sidx,eidx and end point to? I am not sure if sidx and eidx point to the physical page numbers needed for bootmem. I could be wrong at a few places. Thanks, Manoj -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ IRC Channel: irc.openprojects.net / #kernelnewbies Web Page: http://www.kernelnewbies.org/