Re: [PATCH] mm: skip if required_kernelcore is larger than totalpages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, Qiu

The patch seems OK to me. Only one little concern below.

On 10/12/2015 09:37 AM, Xishi Qiu 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.

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;
		...


So if required_movablecore >= totalpages, there won't be any ZONE_MOVABLE.
How about add a warning or debug info to tell the user he has specified a
too large movablecore, and it is ignored ?

Thanks.



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>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]