From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pg1-f181.google.com (mail-pg1-f181.google.com [209.85.215.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 183B237EFE3 for ; Fri, 12 Jun 2026 04:00:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.181 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781236814; cv=none; b=N43DZ9JAN2nbylNa1K3NSOaAwI3U8j8YVhsvid1Hd/3RslUCHeAGQzbD37gfZduM1dCpwzl/jOUYKHnyXdtsmW4HyRpaMd4qyTesuYuWf4js88fTWre1ACt6+Kl+UTWVVKnurID2ZdV8mwsQxBmLySwzN30i727Btpyt+ri5bkU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781236814; c=relaxed/simple; bh=MaJPnbygRu6T3ZEDxBt1wVVNiI8PeWURQNlCHAGotzQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KEP3VuEyviCHhrGUFDCGNo2R321Lpc4E6dqOTt3a+IKSmICqM/tecupIXi2kHxjSajfOvhUPIJjzl7i0VvG2VbRtwPclIac5FL5LTpXhhEMcUx043BexIiEoaGazQ3jlZQM4laWCc1ojEeCcjr+EzePexP4+V/Rps96os4OfylQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com; spf=pass smtp.mailfrom=bytedance.com; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b=GRTfOEHM; arc=none smtp.client-ip=209.85.215.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bytedance.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b="GRTfOEHM" Received: by mail-pg1-f181.google.com with SMTP id 41be03b00d2f7-c8584bbbf2cso303137a12.3 for ; Thu, 11 Jun 2026 21:00:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1781236812; x=1781841612; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Mz1pkfZLBXPZiMkWew4YPl94Bxp7XZrjgH0nwtCkmEk=; b=GRTfOEHMpmIyyb6DWPFdUc5cTUXHW1faxPEQ3h7AdQiIHbHGOaxFEfS5m8vOKtf0j5 1fjGkEQxRFO/+LCTvuD+xJMxUwTfBrLtf2XKgmsSBP+BLg9/AxrkgTb3NI39nNOtRlVb 01fIf+jRQs1xreCJvlA48EqwcYYjXLMWQoQZw14UiIx8G9kjGYazH2MxssZz4p8xDk7L MNXdhDn1u+eDbC2kvr+Ovtdb075S9+uHMoSjsrv/b6x8+irAXB4EkWPbyh6Dt3n/Pvfc Bk/JMl2TBqO+VHVNO3yTB/T8rUahRuqyjtdziDaAbSaAWX/JYrfmErhIfJBhwgsOKZU6 y+0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781236812; x=1781841612; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Mz1pkfZLBXPZiMkWew4YPl94Bxp7XZrjgH0nwtCkmEk=; b=L5XNZjk6P0GXEfwzVRd7sVCU35sX98PZgRCJKEWDjLdOzdkIbLB0wsTZThCPdRUvUh FcjV40oklMy2yAGliUYsBeweS8EA1k5ScBHsXCwcM42HsiOlltMCQGLVq7jG7lkvEGvz pxGNlGpwYqiu57emTRInKPY3PM4C0OF+CUR5vYRkQtOF/JbUhr2Nd8rCjh54gLp0IAzq rpO5ucxJNDxJwh8hfYSfPpUIMsuh8Sei22XTRtYlKxN4C8PJ8Dv9YjB/vKIE5iNdsolF Z7ebs+GYTttIQrIT7UT7QnRYNQJ08g06HIva33t9feMml2I5yC+fd8bDi70akeze0CIw /84w== X-Forwarded-Encrypted: i=1; AFNElJ+dkkujKjz3qRdXAI9lsEI9hkJ480Az3Qxt1ls3dEJrRniLekyjluzrAkJ8nzfXCefYVZGEnJHNCwvvKBA=@vger.kernel.org X-Gm-Message-State: AOJu0YwrLrK0i/h2csAeVeL469a7AbI3+kdCYkvoKlD9g+bQds44L/cJ 3rz4MYF3Ry8JthJLCk/iH34DW9jeLOeSLruOTFjRNPihjdqKOQgsSPLdl/8kV4HC5fk= X-Gm-Gg: Acq92OFkFX7JSe3wFkQRk6v3E77WItUSYFZHs3EScVWsaPEtJJ8QsYYDkGVDpwVQron WF5KMIJGXNPIGfxqOfYbLtfswG1HKKM2MqtbJwNe7zYp3x0vadQZjdp5xZFWdJiX+sf+ZGn4weZ 2WGN+7NLAo4IXP5OguvxOe2E7Hycv2mKRRcXT+/sho26vHpQddsTK4vhDYDRjE+PZ2ERn/aVwkT qGcbmW3JOaNk6DsFVrstq3bJnb8EseUVzdeP5nL8XsYPNeDfPLYrcZLssCx/ARekLNYFBmjSKHE efuq/NLBJ5w4h9LlRZZNo06ckqBtc3op0sHXQTb8/Af1HNIKyfvgIVgU6pC6xHF8vUCWwtciJS4 nLReB1qGw6/z9hyOF7HDT/aLqZlTS4bpWM3YVsi1cSNAHdpAlIuj/nzmZGIhagMgT4hAc+Oq4py kOJrJXfLjBIQrYVxxpCJb37K27T0CmRnaLzgNWT5NmOZA= X-Received: by 2002:a05:6a00:228f:b0:842:46a6:e2db with SMTP id d2e1a72fcca58-8434cd377f0mr1142768b3a.19.1781236811996; Thu, 11 Jun 2026 21:00:11 -0700 (PDT) Received: from n232-176-004.byted.org ([36.110.163.99]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8434ad03fdcsm643352b3a.24.2026.06.11.21.00.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jun 2026 21:00:11 -0700 (PDT) From: Muchun Song To: Oscar Salvador , David Hildenbrand , Andrew Morton , Madhavan Srinivasan , Michael Ellerman Cc: Muchun Song , Mike Rapoport , Lorenzo Stoakes , "Liam R . Howlett" , Vlastimil Babka , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Nicholas Piggin , Christophe Leroy , Ritesh Harjani , "Aneesh Kumar K . V" , linuxppc-dev@lists.ozlabs.org, Mike Kravetz , Muchun Song Subject: [PATCH v4 12/19] mm/hugetlb_cma: Validate hugetlb CMA range by zone at reserve time Date: Fri, 12 Jun 2026 11:58:56 +0800 Message-ID: <20260612035903.2468601-13-songmuchun@bytedance.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260612035903.2468601-1-songmuchun@bytedance.com> References: <20260612035903.2468601-1-songmuchun@bytedance.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Hugetlb CMA allocation currently has to cope with CMA areas that span multiple zones. Validate the reserved CMA range up front in hugetlb_cma_reserve() so later hugetlb CMA allocations can assume a zone-consistent area. Also drop the pfn_valid() check from cma_validate_zones(). mem_section is not fully initialized at this point, so the check can trigger false warnings. Keep the sanity check in cma_activate_area() instead. Acked-by: Mike Rapoport (Microsoft) Signed-off-by: Muchun Song Reviewed-by: Oscar Salvador (SUSE) --- mm/cma.c | 3 ++- mm/hugetlb_cma.c | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/mm/cma.c b/mm/cma.c index a13ce4999b39..31073738f2ac 100644 --- a/mm/cma.c +++ b/mm/cma.c @@ -126,7 +126,6 @@ bool cma_validate_zones(struct cma *cma) * to be in the same zone. Simplify by forcing the entire * CMA resv range to be in the same zone. */ - WARN_ON_ONCE(!pfn_valid(base_pfn)); if (pfn_range_intersects_zones(cma->nid, base_pfn, cmr->count)) { set_bit(CMA_ZONES_INVALID, &cma->flags); return false; @@ -165,6 +164,8 @@ static void __init cma_activate_area(struct cma *cma) bitmap_set(cmr->bitmap, 0, bitmap_count); } + WARN_ON_ONCE(!pfn_valid(cmr->base_pfn)); + for (pfn = early_pfn[r]; pfn < cmr->base_pfn + cmr->count; pfn += pageblock_nr_pages) init_cma_reserved_pageblock(pfn_to_page(pfn)); diff --git a/mm/hugetlb_cma.c b/mm/hugetlb_cma.c index 39344d6c78d8..ce999391cc14 100644 --- a/mm/hugetlb_cma.c +++ b/mm/hugetlb_cma.c @@ -231,9 +231,11 @@ void __init hugetlb_cma_reserve(void) res = cma_declare_contiguous_multi(size, gigantic_page_size, HUGETLB_PAGE_ORDER, name, &hugetlb_cma[nid], nid); - if (res) { - pr_warn("hugetlb_cma: reservation failed: err %d, node %d", + if (res || !cma_validate_zones(hugetlb_cma[nid])) { + pr_warn("hugetlb_cma: %s: err %d, node %d\n", + res ? "reservation failed" : "reserved area spans zones", res, nid); + hugetlb_cma[nid] = NULL; continue; } -- 2.54.0