[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-mm
Subject: Re: [RFC] buddy allocator without bitmap(2) [1/3]
From: Dave Hansen <haveblue () us ! ibm ! com>
Date: 2004-08-31 16:30:57
Message-ID: 1093969857.26660.4816.camel () nighthawk
[Download RAW message or body]
On Tue, 2004-08-31 at 03:41, Hiroyuki KAMEZAWA wrote:
> +static void __init calculate_aligned_end(struct zone *zone,
> + unsigned long start_pfn,
> + int nr_pages)
...
> + end_address = (zone->zone_start_pfn + end_idx) << PAGE_SHIFT;
> +#ifndef CONFIG_DISCONTIGMEM
> + reserve_bootmem(end_address,PAGE_SIZE);
> +#else
> + reserve_bootmem_node(zone->zone_pgdat,end_address,PAGE_SIZE);
> +#endif
> + }
> + return;
> +}
What if someone has already reserved that address? You might not be
able to grow the zone, right?
> /*
> * Initially all pages are reserved - free ones are freed
> @@ -1510,7 +1574,9 @@ void __init memmap_init_zone(unsigned lo
> {
> struct page *start = pfn_to_page(start_pfn);
> struct page *page;
> -
> + unsigned long saved_start_pfn = start_pfn;
> + struct zone *zonep = zone_table[NODEZONE(nid, zone)];
If you're going to calculate NODEZONE() twice, you might as well just
move it into its own variable.
> + /* Because memmap_init_zone() is called in suitable way
> + * even if zone has memory holes,
> + * calling calculate_aligned_end(zone) here is reasonable
> + */
> + calculate_aligned_end(zonep, saved_start_pfn, size);
Could you please elaborate on "suitable way". That comment really
doesn't say anything.
-- Dave
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic