* [PATCH v3 0/4] Subject: [PATCH v3 0/4] mm/hugetlb: Fix CMA parsing, flags and usage accounting
@ 2026-11-06 10:05 Kaitao Cheng
2026-11-06 10:05 ` [PATCH v3 1/4] mm/hugetlb_cma: fix incorrect hugetlb_cma_size assignment on malformed input Kaitao Cheng
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Kaitao Cheng @ 2026-11-06 10:05 UTC (permalink / raw)
To: Muchun Song, Oscar Salvador, David Hildenbrand, Andrew Morton,
Mike Rapoport, Johannes Weiner, Michal Hocko, Roman Gushchin,
Shakeel Butt
Cc: Mani Tofigh, Zi Yan, Mike Kravetz, Baolin Wang, Miaohe Lin,
Naoya Horiguchi, Frank van der Linden, Chris Down, Joshua Hahn,
linux-mm, linux-kernel, cgroups, Kaitao Cheng
From: Kaitao Cheng <chengkaitao@kylinos.cn>
This series fixes three independent HugeTLB issues reported by Sashiko
and includes a follow-up cleanup of NR_HUGETLB accounting.
Patch 1 rejects a global hugetlb_cma size following node-specific entries.
This prevents malformed input from overwriting valid per-node reservations
with an incorrectly parsed global size.
Patch 2 preserves persistent folio flags when a failed vmemmap restore
returns a folio to the pool. This retains CMA allocation tracking and
raw hardware poison information, while ensuring transient flags are
cleared before returning the folio.
Patch 3 retains the minimal NR_HUGETLB accounting fix, as suggested by
Muchun Song, to keep it straightforward to backport. It balances the
counter before freeing unused surplus folios during reservation
gathering or after a failed overcommit recheck.
Patch 4 moves NR_HUGETLB node accounting to the underlying folio state
transitions and separates it from memcg statistics. This cleans up
the accounting in the allocation and surplus cleanup paths.
Changes in v3:
- Retain patch 3/3 from v1.
- Fix code alignment.
Changes in v2:
- Patch 2: Preserve persistent flags, clear transient flags, and warn
about unexpected flags.
- Patch 3: Account at folio state transitions and separate node and
memcg statistics.
Link to v2:
https://lore.kernel.org/all/20261102024910.31486-1-kaitao.cheng@linux.dev/
Link to v1:
https://lore.kernel.org/all/20261028113319.38544-1-kaitao.cheng@linux.dev/
Kaitao Cheng (4):
mm/hugetlb_cma: fix incorrect hugetlb_cma_size assignment on malformed
input
mm/hugetlb: Preserve persistent flags when returning folios to the
pool
mm/hugetlb: fix NR_HUGETLB accounting for unused surplus folios
mm/hugetlb: Account NR_HUGETLB at folio state transitions
mm/hugetlb.c | 52 +++++++++++++++++++++++++++++++-----------------
mm/hugetlb_cma.c | 3 +++
mm/memcontrol.c | 6 +-----
3 files changed, 38 insertions(+), 23 deletions(-)
--
2.53.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 1/4] mm/hugetlb_cma: fix incorrect hugetlb_cma_size assignment on malformed input
2026-11-06 10:05 [PATCH v3 0/4] Subject: [PATCH v3 0/4] mm/hugetlb: Fix CMA parsing, flags and usage accounting Kaitao Cheng
@ 2026-11-06 10:05 ` Kaitao Cheng
2026-11-06 10:05 ` [PATCH v3 2/4] mm/hugetlb: Preserve persistent flags when returning folios to the pool Kaitao Cheng
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Kaitao Cheng @ 2026-11-06 10:05 UTC (permalink / raw)
To: Muchun Song, Oscar Salvador, David Hildenbrand, Andrew Morton,
Mike Rapoport, Johannes Weiner, Michal Hocko, Roman Gushchin,
Shakeel Butt
Cc: Mani Tofigh, Zi Yan, Mike Kravetz, Baolin Wang, Miaohe Lin,
Naoya Horiguchi, Frank van der Linden, Chris Down, Joshua Hahn,
linux-mm, linux-kernel, cgroups, Kaitao Cheng
From: Kaitao Cheng <chengkaitao@kylinos.cn>
When hugetlb_cma contains a global size after node-specific entries,
cmdline_parse_hugetlb_cma() enters the global branch and reparses the
original parameter string. For hugetlb_cma=1:2G,4G, this interprets the
initial node ID as a one-byte global size and clears the 2 GiB reservation
recorded for node 1.
Global and node-specific formats cannot be mixed. Return -EINVAL when a
global entry follows a node-specific entry, before updating any settings.
This preserves the valid prefix, so the example retains node 1's 2 GiB
reservation and reports the malformed option.
Fixes: 38e719ab2673 ("hugetlb: support node specified when using cma for gigantic hugepages")
Closes: https://sashiko.dev/#/bug/linux-10f40d3e-3feb-4622-9da8-1fedecb2d0e2
Acked-by: Muchun Song <muchun.song@linux.dev>
Reviewed-by: Oscar Salvador <osalvador@suse.de>
Signed-off-by: Kaitao Cheng <chengkaitao@kylinos.cn>
---
mm/hugetlb_cma.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/mm/hugetlb_cma.c b/mm/hugetlb_cma.c
index 80b2407e9f07..cd6a64986278 100644
--- a/mm/hugetlb_cma.c
+++ b/mm/hugetlb_cma.c
@@ -165,6 +165,9 @@ static int __init cmdline_parse_hugetlb_cma(char *p)
} else {
char *next;
+ if (s != p)
+ return -EINVAL;
+
tmp = memparse(p, &next);
if (*next == '%') {
if (tmp > 100) {
--
2.53.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 2/4] mm/hugetlb: Preserve persistent flags when returning folios to the pool
2026-11-06 10:05 [PATCH v3 0/4] Subject: [PATCH v3 0/4] mm/hugetlb: Fix CMA parsing, flags and usage accounting Kaitao Cheng
2026-11-06 10:05 ` [PATCH v3 1/4] mm/hugetlb_cma: fix incorrect hugetlb_cma_size assignment on malformed input Kaitao Cheng
@ 2026-11-06 10:05 ` Kaitao Cheng
2026-11-06 10:05 ` [PATCH v3 3/4] mm/hugetlb: fix NR_HUGETLB accounting for unused surplus folios Kaitao Cheng
2026-11-06 10:05 ` [PATCH v3 4/4] mm/hugetlb: Account NR_HUGETLB at folio state transitions Kaitao Cheng
3 siblings, 0 replies; 5+ messages in thread
From: Kaitao Cheng @ 2026-11-06 10:05 UTC (permalink / raw)
To: Muchun Song, Oscar Salvador, David Hildenbrand, Andrew Morton,
Mike Rapoport, Johannes Weiner, Michal Hocko, Roman Gushchin,
Shakeel Butt
Cc: Mani Tofigh, Zi Yan, Mike Kravetz, Baolin Wang, Miaohe Lin,
Naoya Horiguchi, Frank van der Linden, Chris Down, Joshua Hahn,
linux-mm, linux-kernel, cgroups, Kaitao Cheng, Qi Zheng
From: Kaitao Cheng <chengkaitao@kylinos.cn>
add_hugetlb_folio() returns a folio to the HugeTLB pool when vmemmap
restoration fails. It clears folio->private and restores only
HPG_vmemmap_optimized, losing other flags that must survive the rollback.
Clearing HPG_cma causes a later free to bypass the CMA release path,
leaving the CMA allocation bitmap set. Clearing HPG_raw_hwp_unreliable
loses the indication that the locations of poisoned subpages are unknown,
undermining the checks that prevent freeing or unpoisoning such folios.
Preserve the existing flags instead of resetting folio->private. Callers
already clear HPG_restore_reserve, HPG_migratable and HPG_freed before
returning a folio to the pool. Clear HPG_temporary in free_huge_folio()
before attempting to free a temporary folio, so a failed vmemmap restore
does not leave that flag set on a folio returned as surplus.
Add a VM_WARN_ON_ONCE_FOLIO() check for flags other than
HPG_vmemmap_optimized, HPG_raw_hwp_unreliable and HPG_cma to detect
incomplete transient flag cleanup.
Fixes: 161df60e9e89 ("mm, hwpoison, hugetlb: support saving mechanism of raw error pages")
Fixes: d2d786714080 ("mm/hugetlb: enable bootmem allocation from CMA areas")
Closes: https://sashiko.dev/#/bug/linux-5363eb09-9c3c-4f8b-9f3c-a998a8c4b258
Suggested-by: David Hildenbrand <david@kernel.org>
Suggested-by: Muchun Song <muchun.song@linux.dev>
Suggested-by: Zi Yan <ziy@nvidia.com>
Acked-by: Muchun Song <muchun.song@linux.dev>
Acked-by: Zi Yan <ziy@nvidia.com>
Acked-by: Qi Zheng <qi.zheng@linux.dev>
Signed-off-by: Kaitao Cheng <chengkaitao@kylinos.cn>
---
mm/hugetlb.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 6fba92b0f674..5b5353ff5ee2 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -1450,6 +1450,12 @@ void add_hugetlb_folio(struct hstate *h, struct folio *folio,
lockdep_assert_held(&hugetlb_lock);
+ /* Callers must clear transient flags before returning to the pool. */
+ VM_WARN_ON_ONCE_FOLIO((unsigned long)folio->private &
+ ~(BIT(HPG_vmemmap_optimized) |
+ BIT(HPG_raw_hwp_unreliable) |
+ BIT(HPG_cma)), folio);
+
INIT_LIST_HEAD(&folio->lru);
h->nr_huge_pages++;
h->nr_huge_pages_node[nid]++;
@@ -1460,9 +1466,6 @@ void add_hugetlb_folio(struct hstate *h, struct folio *folio,
}
__folio_set_hugetlb(folio);
- /* Clear all folio->private flags except hugetlb_vmemmap_optimized. */
- folio->private = NULL;
- folio_set_hugetlb_vmemmap_optimized(folio);
arch_clear_hugetlb_flags(folio);
enqueue_hugetlb_folio(h, folio);
@@ -1750,6 +1753,7 @@ void free_huge_folio(struct folio *folio)
h->resv_huge_pages++;
if (folio_test_hugetlb_temporary(folio)) {
+ folio_clear_hugetlb_temporary(folio);
remove_hugetlb_folio(h, folio, false);
spin_unlock_irqrestore(&hugetlb_lock, flags);
update_and_free_hugetlb_folio(h, folio, true);
--
2.53.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 3/4] mm/hugetlb: fix NR_HUGETLB accounting for unused surplus folios
2026-11-06 10:05 [PATCH v3 0/4] Subject: [PATCH v3 0/4] mm/hugetlb: Fix CMA parsing, flags and usage accounting Kaitao Cheng
2026-11-06 10:05 ` [PATCH v3 1/4] mm/hugetlb_cma: fix incorrect hugetlb_cma_size assignment on malformed input Kaitao Cheng
2026-11-06 10:05 ` [PATCH v3 2/4] mm/hugetlb: Preserve persistent flags when returning folios to the pool Kaitao Cheng
@ 2026-11-06 10:05 ` Kaitao Cheng
2026-11-06 10:05 ` [PATCH v3 4/4] mm/hugetlb: Account NR_HUGETLB at folio state transitions Kaitao Cheng
3 siblings, 0 replies; 5+ messages in thread
From: Kaitao Cheng @ 2026-11-06 10:05 UTC (permalink / raw)
To: Muchun Song, Oscar Salvador, David Hildenbrand, Andrew Morton,
Mike Rapoport, Johannes Weiner, Michal Hocko, Roman Gushchin,
Shakeel Butt
Cc: Mani Tofigh, Zi Yan, Mike Kravetz, Baolin Wang, Miaohe Lin,
Naoya Horiguchi, Frank van der Linden, Chris Down, Joshua Hahn,
linux-mm, linux-kernel, cgroups, Kaitao Cheng
From: Kaitao Cheng <chengkaitao@kylinos.cn>
free_huge_folio() unconditionally decrements NR_HUGETLB, but freshly
allocated surplus folios can be freed before the counter has been
incremented.
This happens when alloc_surplus_hugetlb_folio() rejects a fresh folio
after its second surplus limit check. It also happens when
gather_surplus_pages() frees folios because a reservation cannot be
satisfied, or because concurrent pool changes leave excess folios
after the reservation succeeds.
These paths leave unmatched decrements, causing HugeTLB usage to be
underreported and potentially underflowing the counter.
Increment NR_HUGETLB before calling free_huge_folio() in both paths
to balance its unconditional decrement.
Fixes: 05d4532b60e3 ("memcg/hugetlb: add hugeTLB counters to memcg")
Closes: https://sashiko.dev/#/bug/linux-860a3b8f-0b07-4cd5-a122-aa2288463bee
Signed-off-by: Kaitao Cheng <chengkaitao@kylinos.cn>
---
mm/hugetlb.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 5b5353ff5ee2..31a92ed4165a 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -2140,6 +2140,8 @@ static struct folio *alloc_surplus_hugetlb_folio(struct hstate *h,
if (h->surplus_huge_pages >= h->nr_overcommit_huge_pages) {
folio_set_hugetlb_temporary(folio);
spin_unlock_irq(&hugetlb_lock);
+ /* Balance the NR_HUGETLB decrement in free_huge_folio(). */
+ lruvec_stat_mod_folio(folio, NR_HUGETLB, pages_per_huge_page(h));
free_huge_folio(folio);
return NULL;
}
@@ -2384,9 +2386,13 @@ static int gather_surplus_pages(struct hstate *h, long delta)
/*
* Free unnecessary surplus pages to the buddy allocator.
* Pages have no ref count, call free_huge_folio directly.
+ * These pages were not accounted in NR_HUGETLB, so balance the
+ * decrement in free_huge_folio().
*/
- list_for_each_entry_safe(folio, tmp, &surplus_list, lru)
+ list_for_each_entry_safe(folio, tmp, &surplus_list, lru) {
+ lruvec_stat_mod_folio(folio, NR_HUGETLB, pages_per_huge_page(h));
free_huge_folio(folio);
+ }
spin_lock_irq(&hugetlb_lock);
return ret;
--
2.53.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 4/4] mm/hugetlb: Account NR_HUGETLB at folio state transitions
2026-11-06 10:05 [PATCH v3 0/4] Subject: [PATCH v3 0/4] mm/hugetlb: Fix CMA parsing, flags and usage accounting Kaitao Cheng
` (2 preceding siblings ...)
2026-11-06 10:05 ` [PATCH v3 3/4] mm/hugetlb: fix NR_HUGETLB accounting for unused surplus folios Kaitao Cheng
@ 2026-11-06 10:05 ` Kaitao Cheng
3 siblings, 0 replies; 5+ messages in thread
From: Kaitao Cheng @ 2026-11-06 10:05 UTC (permalink / raw)
To: Muchun Song, Oscar Salvador, David Hildenbrand, Andrew Morton,
Mike Rapoport, Johannes Weiner, Michal Hocko, Roman Gushchin,
Shakeel Butt
Cc: Mani Tofigh, Zi Yan, Mike Kravetz, Baolin Wang, Miaohe Lin,
Naoya Horiguchi, Frank van der Linden, Chris Down, Joshua Hahn,
linux-mm, linux-kernel, cgroups, Kaitao Cheng
From: Kaitao Cheng <chengkaitao@kylinos.cn>
NR_HUGETLB updates are spread across allocation entry points and
freeing paths, mixing node accounting with memcg statistics. This
makes the accounting harder to follow and requires compensating
updates when freeing unused surplus folios.
Consolidate node accounting around folio state transitions.
Increment NR_HUGETLB when taking a folio from the free pool or
allocating a fresh surplus or migration folio, and decrement it
when returning the folio to the pool or removing it from use.
Separate memcg statistics into mod_hugetlb_memcg_state(), updating
them after a successful charge and before uncharging. This keeps
node accounting independent of memcg charging and removes redundant
updates from the allocation entry points and surplus cleanup paths.
Suggested-by: Muchun Song <muchun.song@linux.dev>
Suggested-by: Oscar Salvador <osalvador@suse.de>
Signed-off-by: Kaitao Cheng <chengkaitao@kylinos.cn>
---
mm/hugetlb.c | 50 +++++++++++++++++++++++++++----------------------
mm/memcontrol.c | 6 +-----
2 files changed, 29 insertions(+), 27 deletions(-)
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 31a92ed4165a..70a2e55b2895 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -1288,6 +1288,8 @@ static struct folio *dequeue_hugetlb_folio_node_exact(struct hstate *h,
folio_clear_hugetlb_freed(folio);
h->free_huge_pages--;
h->free_huge_pages_node[nid]--;
+ mod_node_page_state(folio_pgdat(folio), NR_HUGETLB,
+ pages_per_huge_page(h));
return folio;
}
@@ -1423,6 +1425,9 @@ void remove_hugetlb_folio(struct hstate *h, struct folio *folio,
folio_clear_hugetlb_freed(folio);
h->free_huge_pages--;
h->free_huge_pages_node[nid]--;
+ } else {
+ mod_node_page_state(folio_pgdat(folio), NR_HUGETLB,
+ -(long)pages_per_huge_page(h));
}
if (adjust_surplus) {
h->surplus_huge_pages--;
@@ -1700,6 +1705,17 @@ struct hstate *size_to_hstate(unsigned long size)
return NULL;
}
+static void mod_hugetlb_memcg_state(struct folio *folio, int nr_pages)
+{
+ struct mem_cgroup *memcg;
+
+ guard(rcu)();
+ memcg = folio_memcg(folio);
+ if (memcg)
+ mod_memcg_lruvec_state(mem_cgroup_lruvec(memcg, folio_pgdat(folio)),
+ NR_HUGETLB, nr_pages);
+}
+
void free_huge_folio(struct folio *folio)
{
/*
@@ -1747,7 +1763,7 @@ void free_huge_folio(struct folio *folio)
pages_per_huge_page(h), folio);
hugetlb_cgroup_uncharge_folio_rsvd(hstate_index(h),
pages_per_huge_page(h), folio);
- lruvec_stat_mod_folio(folio, NR_HUGETLB, -pages_per_huge_page(h));
+ mod_hugetlb_memcg_state(folio, -pages_per_huge_page(h));
mem_cgroup_uncharge(folio);
if (restore_reserve)
h->resv_huge_pages++;
@@ -1763,6 +1779,8 @@ void free_huge_folio(struct folio *folio)
spin_unlock_irqrestore(&hugetlb_lock, flags);
update_and_free_hugetlb_folio(h, folio, true);
} else {
+ mod_node_page_state(folio_pgdat(folio), NR_HUGETLB,
+ -(long)pages_per_huge_page(h));
arch_clear_hugetlb_flags(folio);
enqueue_hugetlb_folio(h, folio);
spin_unlock_irqrestore(&hugetlb_lock, flags);
@@ -2130,6 +2148,9 @@ static struct folio *alloc_surplus_hugetlb_folio(struct hstate *h,
*/
account_new_hugetlb_folio(h, folio);
+ /* The overcommit recheck below can free this folio. */
+ mod_node_page_state(folio_pgdat(folio), NR_HUGETLB, pages_per_huge_page(h));
+
/*
* We could have raced with the pool size change.
* Double check that and simply deallocate the new page
@@ -2140,8 +2161,6 @@ static struct folio *alloc_surplus_hugetlb_folio(struct hstate *h,
if (h->surplus_huge_pages >= h->nr_overcommit_huge_pages) {
folio_set_hugetlb_temporary(folio);
spin_unlock_irq(&hugetlb_lock);
- /* Balance the NR_HUGETLB decrement in free_huge_folio(). */
- lruvec_stat_mod_folio(folio, NR_HUGETLB, pages_per_huge_page(h));
free_huge_folio(folio);
return NULL;
}
@@ -2169,6 +2188,7 @@ static struct folio *alloc_migrate_hugetlb_folio(struct hstate *h, gfp_t gfp_mas
spin_lock_irq(&hugetlb_lock);
account_new_hugetlb_folio(h, folio);
+ mod_node_page_state(folio_pgdat(folio), NR_HUGETLB, pages_per_huge_page(h));
spin_unlock_irq(&hugetlb_lock);
/* fresh huge pages are frozen */
@@ -2227,10 +2247,6 @@ struct folio *alloc_hugetlb_folio_reserve(struct hstate *h, int preferred_nid,
spin_unlock_irq(&hugetlb_lock);
- if (folio)
- lruvec_stat_mod_folio(folio, NR_HUGETLB,
- folio_nr_pages(folio));
-
return folio;
}
@@ -2258,9 +2274,6 @@ struct folio *alloc_hugetlb_folio_nodemask(struct hstate *h, int preferred_nid,
nmask);
}
- if (folio)
- lruvec_stat_mod_folio(folio, NR_HUGETLB, folio_nr_pages(folio));
-
return folio;
}
@@ -2378,6 +2391,8 @@ static int gather_surplus_pages(struct hstate *h, long delta)
if ((--needed) < 0)
break;
/* Add the page to the hugetlb allocator */
+ mod_node_page_state(folio_pgdat(folio), NR_HUGETLB,
+ -(long)pages_per_huge_page(h));
enqueue_hugetlb_folio(h, folio);
}
free:
@@ -2386,13 +2401,9 @@ static int gather_surplus_pages(struct hstate *h, long delta)
/*
* Free unnecessary surplus pages to the buddy allocator.
* Pages have no ref count, call free_huge_folio directly.
- * These pages were not accounted in NR_HUGETLB, so balance the
- * decrement in free_huge_folio().
*/
- list_for_each_entry_safe(folio, tmp, &surplus_list, lru) {
- lruvec_stat_mod_folio(folio, NR_HUGETLB, pages_per_huge_page(h));
+ list_for_each_entry_safe(folio, tmp, &surplus_list, lru)
free_huge_folio(folio);
- }
spin_lock_irq(&hugetlb_lock);
return ret;
@@ -2957,13 +2968,6 @@ struct folio *hugetlb_alloc_folio(struct hstate *h,
ret = mem_cgroup_charge_hugetlb(folio, mm,
gfp | __GFP_RETRY_MAYFAIL);
- /*
- * Unconditionally increment NR_HUGETLB here because if
- * mem_cgroup_charge_hugetlb failed, freeing the page will
- * decrement NR_HUGETLB.
- */
- lruvec_stat_mod_folio(folio, NR_HUGETLB, nr_pages);
-
if (ret == -ENOMEM) {
folio_put(folio);
/*
@@ -2978,6 +2982,8 @@ struct folio *hugetlb_alloc_folio(struct hstate *h,
return ERR_PTR(-ENOSPC);
}
+ mod_hugetlb_memcg_state(folio, nr_pages);
+
return folio;
err_uncharge_hugetlb_cgroup:
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index ac6c43ea8c5a..e8af131de67e 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -5440,11 +5440,7 @@ int mem_cgroup_charge_hugetlb(struct folio *folio, struct mm_struct *mm,
struct mem_cgroup *memcg = get_mem_cgroup_from_mm(mm);
int ret = 0;
- /*
- * Even memcg does not account for hugetlb, we still want to update
- * system-level stats via lruvec_stat_mod_folio. Return 0, and skip
- * charging the memcg.
- */
+ /* Skip charging unless hugetlb accounting is enabled for cgroup v2. */
if (mem_cgroup_disabled() || !memcg_accounts_hugetlb() ||
!memcg || !cgroup_subsys_on_dfl(memory_cgrp_subsys))
goto out;
--
2.53.0
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-11-06 10:06 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-06 10:05 [PATCH v3 0/4] Subject: [PATCH v3 0/4] mm/hugetlb: Fix CMA parsing, flags and usage accounting Kaitao Cheng
2026-11-06 10:05 ` [PATCH v3 1/4] mm/hugetlb_cma: fix incorrect hugetlb_cma_size assignment on malformed input Kaitao Cheng
2026-11-06 10:05 ` [PATCH v3 2/4] mm/hugetlb: Preserve persistent flags when returning folios to the pool Kaitao Cheng
2026-11-06 10:05 ` [PATCH v3 3/4] mm/hugetlb: fix NR_HUGETLB accounting for unused surplus folios Kaitao Cheng
2026-11-06 10:05 ` [PATCH v3 4/4] mm/hugetlb: Account NR_HUGETLB at folio state transitions Kaitao Cheng
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®