Messages in this thread | | | Date | Wed, 12 Dec 2012 17:09:49 +0800 | From | Tang Chen <> | Subject | Re: [PATCH v3 3/5] page_alloc: Introduce zone_movable_limit[] to keep movable limit for nodes |
| |
On 12/12/2012 08:49 AM, Jiang Liu wrote: >>>>> This patch introduces a new array zone_movable_limit[] to store the >>>>> ZONE_MOVABLE limit from movablecore_map boot option for all nodes. >>>>> The function sanitize_zone_movable_limit() will find out to which >>>>> node the ranges in movable_map.map[] belongs, and calculates the >>>>> low boundary of ZONE_MOVABLE for each node. >> >> What's the difference between zone_movable_limit[nid] and >> zone_movable_pfn[nid]? > zone_movable_limit[] is a temporary storage for zone_moveable_pfn[]. > It's used to handle a special case if user specifies both movablecore_map > and movablecore/kernelcore on the kernel command line. > Hi Simon, Liu,
Sorry for the late and thanks for your discussion. :)
As Liu said, zone_movable_limit[] is a temporary array for calculation.
If users specified movablecore_map option, zone_movable_limit[] holds the lowest pfn of ZONE_MOVABLE limited by movablecore_map option. It is constant, won't change.
Please refer to find_zone_movable_pfns_for_nodes() in patch4, you will see that zone_moveable_pfn[] will be changed each time kernel area increases.
So when kernel area increases on node i, zone_moveable_pfn[i] will increase. And if zone_moveable_pfn[i] > zone_movable_limit[i], we should stop allocate memory for kernel on node i. Here, I give movablecore_map higher priority than kernelcore/movablecore.
And also, I tried to use zone_moveable_pfn[] to store limits. But when calculating the kernel area, I still have to store the limits in temporary variables. I think the code was ugly. So I added an new array.
Thanks. :)
| |