On Mon, 12 Oct 2015 09:37:17 +0800 Xishi Qiu <qiuxishi@xxxxxxxxxx> wrote: > On 2015/10/9 23:41, Yasuaki Ishimatsu wrote: > > > > > On Thu, 8 Oct 2015 10:21:05 +0800 > > Xishi Qiu <qiuxishi@xxxxxxxxxx> wrote: > > > >> If kernelcore was not specified, or the kernelcore size is zero > >> (required_movablecore >= totalpages), or the kernelcore size is larger > > > > Why does required_movablecore become larger than totalpages, when the > > kernelcore size is zero? I read the code but I could not find that you > > mention. > > > > If user only set boot option movablecore, and the value is larger than > totalpages, the calculation of kernelcore is zero, but we can't fill > the zone only with kernelcore, so skip it. Thank you for the explantion. Your patch looks good to me. Reviewed-by: Yasuaki Ishimatsu <isimatu.yasuaki@xxxxxxxxxxxxxx> Thanks, Yasuaki Ishimatsu > > I have send a patch before this patch. > "fix overflow in find_zone_movable_pfns_for_nodes()" > ... > required_movablecore = > roundup(required_movablecore, MAX_ORDER_NR_PAGES); > + required_movablecore = min(totalpages, required_movablecore); > corepages = totalpages - required_movablecore; > ... > > Thanks, > Xishi Qiu > > > Thanks, > > Yasuaki Ishimatsu > > > >> than totalpages, there is no ZONE_MOVABLE. We should fill the zone > >> with both kernel memory and movable memory. > >> > >> Signed-off-by: Xishi Qiu <qiuxishi@xxxxxxxxxx> > >> --- > >> mm/page_alloc.c | 7 +++++-- > >> 1 file changed, 5 insertions(+), 2 deletions(-) > >> > >> diff --git a/mm/page_alloc.c b/mm/page_alloc.c > >> index af3c9bd..6a6da0d 100644 > >> --- a/mm/page_alloc.c > >> +++ b/mm/page_alloc.c > >> @@ -5674,8 +5674,11 @@ static void __init find_zone_movable_pfns_for_nodes(void) > >> required_kernelcore = max(required_kernelcore, corepages); > >> } > >> > >> - /* If kernelcore was not specified, there is no ZONE_MOVABLE */ > >> - if (!required_kernelcore) > >> + /* > >> + * If kernelcore was not specified or kernelcore size is larger > >> + * than totalpages, there is no ZONE_MOVABLE. > >> + */ > >> + if (!required_kernelcore || required_kernelcore >= totalpages) > >> goto out; > >> > >> /* usable_startpfn is the lowest possible pfn ZONE_MOVABLE can be at */ > >> -- > >> 2.0.0 > >> > >> > >> -- > >> To unsubscribe, send a message with 'unsubscribe linux-mm' in > >> the body to majordomo@xxxxxxxxx. For more info on Linux MM, > >> see: http://www.linux-mm.org/ . > >> Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a> > > > > . > > > > > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>