All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peng Liu <liupeng256@huawei.com>
To: <mike.kravetz@oracle.com>, <david@redhat.com>,
	<akpm@linux-foundation.org>, <yaozhenguo1@gmail.com>,
	<baolin.wang@linux.alibaba.com>, <songmuchun@bytedance.com>,
	<liuyuntao10@huawei.com>, <linux-mm@kvack.org>,
	<linux-kernel@vger.kernel.org>, <liupeng256@huawei.com>
Subject: [PATCH v3 2/4] hugetlb: Fix hugepages_setup when deal with pernode
Date: Wed, 13 Apr 2022 03:29:13 +0000	[thread overview]
Message-ID: <20220413032915.251254-3-liupeng256@huawei.com> (raw)
In-Reply-To: <20220413032915.251254-1-liupeng256@huawei.com>

Hugepages can be specified to pernode since "hugetlbfs: extend
the definition of hugepages parameter to support node allocation",
but the following problem is observed.

Confusing behavior is observed when both 1G and 2M hugepage is set
after "numa=off".
 cmdline hugepage settings:
  hugepagesz=1G hugepages=0:3,1:3
  hugepagesz=2M hugepages=0:1024,1:1024
 results:
  HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
  HugeTLB registered 2.00 MiB page size, pre-allocated 1024 pages

Furthermore, confusing behavior can be also observed when an
invalid node behind a valid node. To fix this, never allocate any
typical hugepage when an invalid parameter is received.

Fixes: b5389086ad7b ("hugetlbfs: extend the definition of hugepages parameter to support node allocation")
Signed-off-by: Peng Liu <liupeng256@huawei.com>
---
 mm/hugetlb.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 5b5a2a5a742f..1930b6341f7e 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -4116,6 +4116,20 @@ bool __init __weak hugetlb_node_alloc_supported(void)
 {
 	return true;
 }
+
+static void __init hugepages_clear_pages_in_node(void)
+{
+	if (!hugetlb_max_hstate) {
+		default_hstate_max_huge_pages = 0;
+		memset(default_hugepages_in_node, 0,
+			MAX_NUMNODES * sizeof(unsigned int));
+	} else {
+		parsed_hstate->max_huge_pages = 0;
+		memset(parsed_hstate->max_huge_pages_node, 0,
+			MAX_NUMNODES * sizeof(unsigned int));
+	}
+}
+
 /*
  * hugepages command line processing
  * hugepages normally follows a valid hugepagsz or default_hugepagsz
@@ -4203,6 +4217,7 @@ static int __init hugepages_setup(char *s)
 
 invalid:
 	pr_warn("HugeTLB: Invalid hugepages parameter %s\n", p);
+	hugepages_clear_pages_in_node();
 	return 0;
 }
 __setup("hugepages=", hugepages_setup);
-- 
2.18.0.huawei.25


  parent reply	other threads:[~2022-04-13  3:11 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-13  3:29 [PATCH v3 0/4] hugetlb: Fix some incorrect behavior Peng Liu
2022-04-13  3:29 ` [PATCH v3 1/4] hugetlb: Fix wrong use of nr_online_nodes Peng Liu
2022-04-13  4:42   ` Andrew Morton
2022-04-13  6:27     ` liupeng (DM)
2022-04-13 22:04       ` Andrew Morton
2022-04-14  1:28         ` liupeng (DM)
2022-04-13  6:29   ` Baolin Wang
2022-04-14 23:36   ` Mike Kravetz
2022-04-15  2:09   ` Davidlohr Bueso
2022-04-15  5:41     ` Kefeng Wang
2022-04-15  7:01       ` liupeng (DM)
2022-04-16  1:21       ` Kefeng Wang
2022-04-19  4:40         ` Andrew Morton
2022-04-19  8:54           ` Kefeng Wang
2022-04-16 10:35   ` [PATCH v4] " Peng Liu
2022-04-18  5:53     ` Kefeng Wang
2022-04-19  4:03     ` Andrew Morton
2022-04-19 14:07       ` Kefeng Wang
2022-04-20  6:17         ` liupeng (DM)
2022-04-29  9:32     ` David Hildenbrand
2022-04-13  3:29 ` Peng Liu [this message]
2022-04-14 23:50   ` [PATCH v3 2/4] hugetlb: Fix hugepages_setup when deal with pernode Mike Kravetz
2022-04-29  9:30   ` David Hildenbrand
2022-04-13  3:29 ` [PATCH v3 3/4] hugetlb: Fix return value of __setup handlers Peng Liu
2022-04-13  6:39   ` Baolin Wang
2022-04-13  7:55   ` Muchun Song
2022-04-13  8:16     ` liupeng (DM)
2022-04-13  8:21       ` Muchun Song
2022-04-13  8:45         ` Kefeng Wang
2022-04-13  9:01           ` Muchun Song
2022-04-15  0:01   ` Mike Kravetz
2022-04-15  2:24   ` Davidlohr Bueso
2022-04-29  2:43   ` [PATCH v4] mm: Using for_each_online_node and node_online instead of open coding Peng Liu
2022-04-29  3:02     ` Peng Liu
2022-04-29  9:29     ` David Hildenbrand
2022-04-29  9:29       ` David Hildenbrand
2022-04-29 11:44     ` Muchun Song
2022-04-29 11:44       ` Muchun Song
2022-04-13  3:29 ` [PATCH v3 4/4] hugetlb: Clean up hugetlb_cma_reserve Peng Liu
2022-04-13  5:50   ` Muchun Song
2022-04-13  6:41   ` Baolin Wang
2022-04-15  0:03   ` Mike Kravetz
2022-04-15  2:15   ` Davidlohr Bueso
2022-04-15  7:03     ` liupeng (DM)
2022-04-29  9:28   ` David Hildenbrand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220413032915.251254-3-liupeng256@huawei.com \
    --to=liupeng256@huawei.com \
    --cc=akpm@linux-foundation.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=david@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=liuyuntao10@huawei.com \
    --cc=mike.kravetz@oracle.com \
    --cc=songmuchun@bytedance.com \
    --cc=yaozhenguo1@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.