On 2015/10/9 23:41, Yasuaki Ishimatsu wrote:
On Thu, 8 Oct 2015 10:21:05 +0800If user only set boot option movablecore, and the value is larger than
Xishi Qiu <qiuxishi@xxxxxxxxxx> wrote:
If kernelcore was not specified, or the kernelcore size is zeroWhy does required_movablecore become larger than totalpages, when the
(required_movablecore >= totalpages), or the kernelcore size is larger
kernelcore size is zero? I read the code but I could not find that you
mention.
totalpages, the calculation of kernelcore is zero, but we can't fill
the zone only with kernelcore, so skip it.
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@xxxxxxxxxx For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>
.