From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=95.215.58.121 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793589076; b=vHP/yBSjxXP/uyy7TG1D7sWp+NLu0VV4EY3gY+s8+dkERkS8t26zExs30OktvFTThKhh EcfSbOzIHeDndKGknxb9yLMdLgPY3iHFLf+aUG41hpzMP5nqduDspBuSKlqsNevEsitPb 0ucE8riAThkA7Fo98Ek521XctVpvaONK4pO0KENFXeh3zrgKcADe0ckxl0hhsvfPw7ZH0 HNGSQfZOK3Ap7gFQSL33lDPxB/EyNel0ea74OYJBcT/bMBzW1mD1PSuwD/uBbEv4BlMiG 8iubEWB25ArHA5sddrl5vXgls5v1v1v6xfk4Xhet/exzerHDscR+bKldJMuXESNi3BA== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793589076; h=DMARC-Filter:X-Envelope-To:DKIM-Signature:X-Envelope-To:Received: X-Mizu-Trace-ID:X-Migadu-Flow:Content-Type:Mime-Version:Subject:From: In-Reply-To:Date:Cc:Content-Transfer-Encoding:Message-Id:References: To:X-Mailer; bh=HDhZoiU2k7hzH5EQ8QltiF8pnal5BaZYHkxarnC+U5E=; b=uZ/Xp0VEbcIAn1appi8S2Kulpi7q/GNp9nI1oITqcCF7uZ3PoStY6o+yhq8buGw6vroP Yp5v5b/dKVPHdpxxNz8WyhqXLG+1YrqfaamK6L79SxwmFbS2UfXq3krxOy+cVMLLn5ANi gBUfkRgctjAgVCHRhwBT3d0ekrLpRastbuAevQXBp/AaGY6zu/NXNDoMYGdGDeUHAhBBB r31tWzo16/92QTEfTFK4de22GIa2Rl4zHAvJ8vr8cm5D2T43nIrYav4bxqnVARo55vUhh nAG+INo0vIZWt4xLKPfaKbjHw9tgY9EUmpn4AfJxlGCLyK517sRp5wzDcqvojZOCgEg== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass header.d=linux.dev header.i=@linux.dev header.a=rsa-sha256 header.s=key1 header.b=n0k3Hqlr; arc=none smtp.remote-ip=95.215.58.121 Received: from mta1.migadu.com (out-121.mta1.migadu.com [95.215.58.121]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 483C0606A326 for ; Mon, 2 Nov 2026 03:11:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 483C0606A326 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key, unprotected) header.d=linux.dev header.i=@linux.dev header.a=rsa-sha256 header.s=key1 header.b=n0k3Hqlr X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=2ep7chL4yiYBSxOtKkATYD7E9Kan5MnJyt74PbsbY2s=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1793589067; v=1; x=1794193867; b=n0k3HqlrjwV2Tsu/afxxjlV4pD44YtWJfaVfNxqkf9f5BRb34TxDBhYIPNPv3UVWsbdtWpzv nDY1ZRbtXmCXX/EiHWE91drrqkdYXLA1t2WmPrqsfw75Lx6z5Vd+3cOAqiCXrqIBDsAChjqAXdA 0N4xoivwgBDZlGU5lKOUjChM= X-Envelope-To: linux-kernel@vger.kernel.org Received: by mta10.migadu.com with ESMTPS id 13887cf09f90baa8; Mon, 02 Nov 2026 03:11:07 +0000 X-Mizu-Trace-ID: 13887cf09f90baa8 X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset=us-ascii X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3901.200.71.1.16\)) Subject: Re: [PATCH v2 2/3] mm/hugetlb: Preserve persistent flags when returning folios to the pool From: Muchun Song In-Reply-To: <20261102024910.31486-3-kaitao.cheng@linux.dev> Date: Mon, 2 Nov 2026 11:10:47 +0800 Cc: Oscar Salvador , David Hildenbrand , Andrew Morton , Mike Rapoport , Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Mani Tofigh , Zi Yan , Mike Kravetz , Baolin Wang , Miaohe Lin , Naoya Horiguchi , Frank van der Linden , Chris Down , Joshua Hahn , linux-mm@kvack.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, Kaitao Cheng Content-Transfer-Encoding: quoted-printable Message-Id: <80F17A68-8C3B-4BA5-9E70-838846BFAAB2@linux.dev> References: <20261102024910.31486-1-kaitao.cheng@linux.dev> <20261102024910.31486-3-kaitao.cheng@linux.dev> To: Kaitao Cheng X-Mailer: Apple Mail (2.3901.200.71.1.16) > On Nov 2, 2026, at 10:49, Kaitao Cheng wrote: >=20 > From: Kaitao Cheng >=20 > 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. >=20 > 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. >=20 > 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. >=20 > 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. >=20 > 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 > Suggested-by: Muchun Song > Suggested-by: Zi Yan > Signed-off-by: Kaitao Cheng Acked-by: Muchun Song But, > --- > mm/hugetlb.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) >=20 > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index 4a008afaedf9..931ca3a30773 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -1443,6 +1443,12 @@ void add_hugetlb_folio(struct hstate *h, struct = folio *folio, >=20 > lockdep_assert_held(&hugetlb_lock); >=20 > + /* Callers must clear transient flags before returning to the = pool. */ > + VM_WARN_ON_ONCE_FOLIO((unsigned long)folio->private & > + ~(BIT(HPG_vmemmap_optimized) | It looks like the parameters aren't aligned. A space missing before "~"? Thanks. > + BIT(HPG_raw_hwp_unreliable) | > + BIT(HPG_cma)), folio); > + > INIT_LIST_HEAD(&folio->lru); > h->nr_huge_pages++; > h->nr_huge_pages_node[nid]++; > @@ -1453,9 +1459,6 @@ void add_hugetlb_folio(struct hstate *h, struct = folio *folio, > } >=20 > __folio_set_hugetlb(folio); > - /* Clear all folio->private flags except = hugetlb_vmemmap_optimized. */ > - folio->private =3D NULL; > - folio_set_hugetlb_vmemmap_optimized(folio); >=20 > arch_clear_hugetlb_flags(folio); > enqueue_hugetlb_folio(h, folio); > @@ -1743,6 +1746,7 @@ void free_huge_folio(struct folio *folio) > h->resv_huge_pages++; >=20 > 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); > --=20 > 2.54.0 (Apple Git-157) >=20