From nobody Tue Dec 2 01:07:43 2025 Received: from mail-qk1-f171.google.com (mail-qk1-f171.google.com [209.85.222.171]) (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 B05972FDC3D for ; Fri, 21 Nov 2025 19:15:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763752556; cv=none; b=fX21wsAyht5e8eAZzkE5Qc3uP85Fqtb/O6lbzzbkLX0oYhDJnv5wLtoyAqE15OMdUkqROWKxzT+0gUDGQOikUQKqVh56n/twQpOPYSJTMa2w3rIg0HjIVCz3DBMWV+mdt9+diMYw4tMxCO0VWB7vYlmkemArkXqPR50rw/04idU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763752556; c=relaxed/simple; bh=EUxrbM9xIwKGgOID2OcstDCRa8ZDXyP7bydDyQMGmVg=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Nne8utC6+bvcvButUZazihi9DqqCuyNwVYCJESPl/UQb+fz8+DMn/X87yruR6chjDmYTRQRiVFuXQXA+ghq0SZpqAU7Q3ZNBB8KxCtbgwJMo3pcMxo1Ro/ITnHYR/i16s5nvkusOCHPEtB/5OPi0pPzEKgjaaxp1vX6etIqXoMI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=gourry.net; spf=pass smtp.mailfrom=gourry.net; dkim=pass (2048-bit key) header.d=gourry.net header.i=@gourry.net header.b=Y+VZX9k0; arc=none smtp.client-ip=209.85.222.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=gourry.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gourry.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gourry.net header.i=@gourry.net header.b="Y+VZX9k0" Received: by mail-qk1-f171.google.com with SMTP id af79cd13be357-8b0f54370ecso229748785a.2 for ; Fri, 21 Nov 2025 11:15:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gourry.net; s=google; t=1763752552; x=1764357352; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=9cVYU0jUAAREbxmzQINLjsxcIyu995p8YVRTggmw3AA=; b=Y+VZX9k0Hswer/CLVnynISGVp3f/Z8i4vHtThLdZGzlFjJvnWzkyEvTRpFwWTJYPUZ F1GO+NlJ+UYih3NcS5NqANgYdjpDPUaaLpkV3vGkgJ8DJWHnjG+lNnD7cQ/uIi/pQ2iE yWDKw0hgAtbgJqPt79hPOeGwo69gowIiPE74H7y9PnL1TDFJxje7fsVxKlPJqhRpw5X5 /5fEIqnBNTTcNoC9mVwCfxdB0cLkiyqMjlFTefQLu3Vt9pfYj080F8Svvoh5QVrDS/lN soKfzH1harL+/NhgMQRP9LXJtwQzXbm7emNQierAhgE9Qb5RfKl5T65yvuFrIjTxCgSg n6Eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763752552; x=1764357352; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=9cVYU0jUAAREbxmzQINLjsxcIyu995p8YVRTggmw3AA=; b=kFjKVipTdoNCaCIjj8gd2i+5B6pj1Io9rCTc/MSjbjwffTJErYFeDtXWH6CjfYAm31 yPtkfvkq4+0wvDIIW2HeidvR990PsXznGrIYdTtQtPs76PbKbtMfJv9jsSxfOTI5HT9r wvndOLxuVW1pmbYO87RxdeXwWVHictKEykLCtuZWvjG5V1Sn6qwnyycOPSKrsgQ5LOgE bWzAAcipvl/yWTtbFRzKSMl8rWBbfqXLd2qwiuH0TdUiAXHz8WXdPSGPqIWmKcOqxzmb oY9J9OKu8Wg7uxIawgOXIi8cySFQHkrJNRzNepI0sghU9g7AtF/dmHkuwmQTmjrRkTUH TQbQ== X-Forwarded-Encrypted: i=1; AJvYcCVBS+q0XJ7cf4o2RQEVylg06CvyWvJIQ3aC9MZqrA9wMy8L0NYtjBqcjxMkKn8+L1pxOIuDcYjb6C69D1U=@vger.kernel.org X-Gm-Message-State: AOJu0Yz7kQVE6xS5Y5zW23Xg9eWakwWo6IE+iX2NF4YDQpZGW0npt8md 1uMN3bNG1m4Ez/298F9paYA01SUSi9mLFGmNuxZatkW+CP2hJ8xN7L0u7Jqj9eDEVFkrISO6PTL Qpcpd X-Gm-Gg: ASbGncteeHotp2ZMvaSe4Ok622JSqwbE6n0mD0FAmLC6lhLmHyzN/I1FP9///XVIGlR vq4YHk4tn7/Cun4amimwFlAaI/8yPHzKux8MvEuTSvAhRSdkLBuYcNXTIlqvbHEgsaIbOvx534r qgcjE0w47lGU5RLAHQwmIHUbDtkHwbD11A3l5EOIcNhfhVeK1/7kBSp0YX0zYz2AG9AZ/TFmi1l 2sSh3VspIyQYP4wUFdOSGOrq4lOzxEaTRl1sgwQKpZJYbD8e168wJ8pmN8TbR+2YKQQxnY2hF9x VQRNZkhD18V3EgAJzzdcoS3OYyInV+I2xhJdvYY4pxwvMji+VuV4aIxz81gWw1lTmp83p5mUhEK 6DR7l9DVkhAVNKiR/j/hFiMJMPD1NzIEknirtmtEDSa5ftiVlWyxbN5QpUV3P37VL1Dw6Tzqex/ /CkO2Fo6StnLT/pFXw5OEbtqOI6IdISo7jdzloGjB5xLa26uc53wEOIdK7WwjbpZAL/JS70CnQ6 wE= X-Google-Smtp-Source: AGHT+IHGxru2CeM0UwntAB24WPxuCHNhlq6gHLLMl+FmJCEu8WPvfGmLBmspbe2MpbNhPjRQEiuKTA== X-Received: by 2002:ad4:576d:0:b0:7e3:cc6e:3c89 with SMTP id 6a1803df08f44-8847c574370mr57405366d6.56.1763752551838; Fri, 21 Nov 2025 11:15:51 -0800 (PST) Received: from gourry-fedora-PF4VCD3F.lan (pool-96-255-20-138.washdc.ftas.verizon.net. [96.255.20.138]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-8846e48f0d8sm44826996d6.25.2025.11.21.11.15.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 11:15:51 -0800 (PST) From: Gregory Price To: linux-mm@kvack.org, akpm@linux-foundation.org Cc: kernel-team@meta.com, vbabka@suse.cz, surenb@google.com, mhocko@suse.com, jackmanb@google.com, hannes@cmpxchg.org, ziy@nvidia.com, linux-kernel@vger.kernel.org, David Hildenbrand , Wei Yang , Oscar Salvador , David Rientjes Subject: [PATCH v3] page_alloc: allow migration of smaller hugepages during contig_alloc Date: Fri, 21 Nov 2025 14:15:40 -0500 Message-ID: <20251121191540.253624-1-gourry@gourry.net> X-Mailer: git-send-email 2.51.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" We presently skip regions with hugepages entirely when trying to do contiguous page allocation. Instead, if hugepage migration is enabled, consider regions with hugepages smaller than the target contiguous allocation request as valid targets for allocation. isolate_migrate_pages_block() already expects requests with hugepages to originate from alloc_contig, and hugetlb code also does a migratable check when isolating in folio_isolate_hugetlb(). Suggested-by: David Hildenbrand Signed-off-by: Gregory Price Reviewed-by: Zi Yan Reviewed-by: Wei Yang Reviewed-by: Oscar Salvador Acked-by: David Rientjes Acked-by: David Hildenbrand Tested-by: Joshua Hahn --- mm/page_alloc.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) --- v3: changelog updates and tags, no code changes diff --git a/mm/page_alloc.c b/mm/page_alloc.c index a6fe1e9b9594..3b0f47f1f144 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -6849,8 +6849,19 @@ static bool pfn_range_valid_contig(struct zone *z, u= nsigned long start_pfn, if (PageReserved(page)) return false; =20 - if (PageHuge(page)) - return false; + if (PageHuge(page)) { + unsigned int order; + + if (!IS_ENABLED(CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION)) + return false; + + /* Don't consider moving same size/larger pages */ + page =3D compound_head(page); + order =3D compound_order(page); + if ((order >=3D MAX_FOLIO_ORDER) || + (nr_pages <=3D (1 << order))) + return false; + } } return true; } --=20 2.51.1