From nobody Fri Jun 12 18:34:16 2026 Received: from mail-wr1-f74.google.com (mail-wr1-f74.google.com [209.85.221.74]) (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 D45BD423A83 for ; Wed, 13 May 2026 12:35:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675719; cv=none; b=H3+ODaisvsQhyluNCmak/F9En+EUxgThcUe194mDc8Q5ANDG1BG4DeN50BV6uGacto1RGL3hlcfG4kEFrSu1Zfmk7cJBfi7sDf02OGwIRm4y5LBsokAPZe33l7oCwTJafuC34lofBcT5UCupxQ/nQse4KUcxSXt2dehnSvH4hOc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675719; c=relaxed/simple; bh=wJKc2L/2gOFq+4ciJL13zwsEExRmStV9nRngieSP9CQ=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=l4UN5sWEvA0c0nk+2/UgohVVSQAWV2z52VC3YDyMcDQ5ndVbEkhD0WUgQ0cqLtLSYD3+2k4PkBT5PwGHj4zKLRnKtW/iV+qBJtRR7OxC0yIXp7eoAx3kylsTSS3MziBRSK9VuQrLWiCeJW3i6+rQHd03LZ7f5eLz2jekKmZELMQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--jackmanb.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=F301OG4s; arc=none smtp.client-ip=209.85.221.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--jackmanb.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="F301OG4s" Received: by mail-wr1-f74.google.com with SMTP id ffacd0b85a97d-44ffa15dc73so6425832f8f.1 for ; Wed, 13 May 2026 05:35:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1778675716; x=1779280516; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=4WWLXd62Tgfh1ZCpYAiYrTX8S2ssjZcjbx8zKPYKSN8=; b=F301OG4scjX+8cpGGiJSFlSFV5zfQqncClKPvFnbZEe8cl9d4WwBtsAg6x51B8Dur5 Wcv2RyH14MmpimSWwfuCC2aB/J50XwVepqlGUfm7my9LUcCN/dyR9Nsd+9yrvRFPqalO r7AHhXgs0JlKiR0+UZJP1Gfq09BpMcq/Ge25vXnhUBrpPkiAxTe8s8pRItpK6tNQPZlH ZeOlVIFI2CqTL/8BoaWFYc7IAWSvNq6+/VPY3Dqsdcd+vdN63CkKM1xC98OfngX/M58J ASZgaR9DteL2AqURtwuPX9R5RGiU+fkN7H5WJrBsnheahQbgXX7htGf7kGviC0w1TUQP iJdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778675716; x=1779280516; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=4WWLXd62Tgfh1ZCpYAiYrTX8S2ssjZcjbx8zKPYKSN8=; b=dsNH1SVkmMixQNDhMOGQd2o1C3zFsBVYYJmFIf3Sllr/lujTA5lqDanCQswy3SKDLM fMEpcNhX8qLrWH0HKD4rgWnRSkouCQkRFy2+iD3f3CYqxVVDJzM0lIbEaWn4+lEEmeNn Ir/jc2IFW43nwRpD7dCX/IKb6sMQHWxDpGEwGegbOP8o2+SYZXKMskox1VodGVF0LIgL QyU1Ic1+x5TAsBEgIHH/Jjz/4YV9wIpiA6VaB7LCEqFVHM0d+hwrFtVA4RwisTSa78yW uUSqvjXQFOlMQkVNdnqRmTttgRfLcjdrP/RFzlQvx4WR+J6TpDcunsDleX47fVMfqLEn RMdg== X-Forwarded-Encrypted: i=1; AFNElJ9auVgBlhcrMgV4x3F4midW7uXl6TXrTeZMHQAEZu+dmpMk72Lz8Njnmt6M/m2LJhtFMCLStm5R5LhO7/I=@vger.kernel.org X-Gm-Message-State: AOJu0Ywh5oamf9M6b3sA2uHTOiRxyJ/UCa8/AX4TYUsEi0IGQglHWTgK e7Ky6s6MKx4qxXsVQcP8vU7SKCVYZ5ecQJoBWyUKla0fKFbxFyNxyn53LZwNsHDI5EnjFXnACWh 5QWpSBtkiPoKIew== X-Received: from wmpj8.prod.google.com ([2002:a05:600c:4888:b0:48e:914f:1eff]) (user=jackmanb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:8b86:b0:48a:563c:c8c5 with SMTP id 5b1f17b1804b1-48fce9ab28emr38271865e9.8.1778675716013; Wed, 13 May 2026 05:35:16 -0700 (PDT) Date: Wed, 13 May 2026 12:35:13 +0000 In-Reply-To: <20260513-page_alloc-unmapped-prep-v1-0-dacdf5402be8@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260513-page_alloc-unmapped-prep-v1-0-dacdf5402be8@google.com> X-Mailer: b4 0.14.2 Message-ID: <20260513-page_alloc-unmapped-prep-v1-1-dacdf5402be8@google.com> Subject: [PATCH 1/4] mm: introduce for_each_free_list() From: Brendan Jackman To: Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , "Rafael J. Wysocki" , Pavel Machek , Len Brown , Johannes Weiner , Zi Yan Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Brendan Jackman Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable There are a couple of places that iterate over the freelists with awareness of the data structures' layout. It seems ideally, code outside of mm should not be aware of the page allocator's freelists at all. But, this patch just doesn't hide them completely, it's just a meek incremental step in that direction: provide a macro to iterate over it without needing to be aware of the actual struct fields. Signed-off-by: Brendan Jackman Acked-by: Mike Rapoport (Microsoft) Reviewed-by: Vlastimil Babka (SUSE) --- include/linux/mmzone.h | 9 ++++++--- kernel/power/snapshot.c | 8 ++++---- mm/mm_init.c | 11 +++++++---- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 9adb2ad21da599354600b48b4f3f9a4158efa049..1331a7b93f33c67c6e07df1fd8c= 5e4504dc28e80 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -177,9 +177,12 @@ static inline bool migratetype_is_mergeable(int mt) return mt < MIGRATE_PCPTYPES; } =20 -#define for_each_migratetype_order(order, type) \ - for (order =3D 0; order < NR_PAGE_ORDERS; order++) \ - for (type =3D 0; type < MIGRATE_TYPES; type++) +#define for_each_free_list(list, zone, order) \ + for (order =3D 0; order < NR_PAGE_ORDERS; order++) \ + for (unsigned int __type =3D 0; \ + __type < MIGRATE_TYPES && \ + (list =3D &(zone)->free_area[order].free_list[__type], 1); \ + __type++) =20 extern int page_group_by_mobility_disabled; =20 diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c index a564650734dcdceda7193ca3c1bc6b347cc1ec8b..d933b5b2c05d453bbda93c72813= 6fc2a76758fc7 100644 --- a/kernel/power/snapshot.c +++ b/kernel/power/snapshot.c @@ -1244,8 +1244,9 @@ unsigned int snapshot_additional_pages(struct zone *z= one) static void mark_free_pages(struct zone *zone) { unsigned long pfn, max_zone_pfn, page_count =3D WD_PAGE_COUNT; + struct list_head *free_list; unsigned long flags; - unsigned int order, t; + unsigned int order; struct page *page; =20 if (zone_is_empty(zone)) @@ -1269,9 +1270,8 @@ static void mark_free_pages(struct zone *zone) swsusp_unset_page_free(page); } =20 - for_each_migratetype_order(order, t) { - list_for_each_entry(page, - &zone->free_area[order].free_list[t], buddy_list) { + for_each_free_list(free_list, zone, order) { + list_for_each_entry(page, free_list, buddy_list) { unsigned long i; =20 pfn =3D page_to_pfn(page); diff --git a/mm/mm_init.c b/mm/mm_init.c index bd466a3c10c8e204dddd881c5334364e3d47d612..db5568cf36e12b6fe52854b274f= c331d9b36cac3 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -1429,11 +1429,14 @@ static void __meminit zone_init_internals(struct zo= ne *zone, enum zone_type idx, =20 static void __meminit zone_init_free_lists(struct zone *zone) { - unsigned int order, t; - for_each_migratetype_order(order, t) { - INIT_LIST_HEAD(&zone->free_area[order].free_list[t]); + struct list_head *list; + unsigned int order; + + for_each_free_list(list, zone, order) + INIT_LIST_HEAD(list); + + for (order =3D 0; order < NR_PAGE_ORDERS; order++) zone->free_area[order].nr_free =3D 0; - } =20 #ifdef CONFIG_UNACCEPTED_MEMORY INIT_LIST_HEAD(&zone->unaccepted_pages); --=20 2.51.2 From nobody Fri Jun 12 18:34:16 2026 Received: from mail-wr1-f73.google.com (mail-wr1-f73.google.com [209.85.221.73]) (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 5E875426D13 for ; Wed, 13 May 2026 12:35:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675720; cv=none; b=XtYoI+nWMIycoq93SSSphoMND7E7zQ+0Up0wELVxNOGbhgr4OC9FfctB8BGeZbtiycuZh8qEX6vZ1XxT3RLQqHdr4kmyI4cPvzQOnGlyxpwUWXxgroIX7O4d46Ubox9tI/yO332PjpALBlYbf4/1vR9NjypkM76L5ST2oTJT7vk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675720; c=relaxed/simple; bh=GLXrR2CnFpsGBxuXjZDHjUzrzViyjISnFoJLrUty2bw=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=oZsm6J2iw5+4Vpm6P5qYQ4Awzdqw3iaDqaurfShdNZD++HdJmp6sz2qUKmWB6AZL2yh7t2zLOMX3q6HDcwy758+zWe+GvnI/FKEEQUJ7qhFiliHH4z/85Hgo1FiwBIkz2llntT2KaRiynnWoMVLSVGvRiicDhygqXHDZK21Ttcs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--jackmanb.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=XV7LkcLk; arc=none smtp.client-ip=209.85.221.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--jackmanb.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="XV7LkcLk" Received: by mail-wr1-f73.google.com with SMTP id ffacd0b85a97d-44d9ace59efso4468147f8f.1 for ; Wed, 13 May 2026 05:35:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1778675718; x=1779280518; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=jK8oWMUhgh8u2h0g/pQlZW0WDLVUtUJGpIoHocj5R7o=; b=XV7LkcLk/aiR2GO78oa13cdzKKm1xGbKho3YHZUucoD8jNs/6ZCZZvIyWjaFWM9kwq ndIDWdu0UOZMC2VyhI0QJSoBDn1y62CVOjaJHJxtrBt/bJkPM0RwmZ07k7w/WMJ/8NiL hxs4oSZxf6gRrQK4VRJgfhEaakA+2cudnUaPHQs34vblCGFs9j7Wl3BKnNugGr7DnbPP 4aJlfRNpz303Se9x5RmYv37RjABvoF2QQqV0hmOLKRLZKvficpTJtXDpfuq3nhsHq727 zj1Hru5H4yR/cv5/PlNlnzF14S+athMWn+TDvkXaw0V7WkCxMvWRqA8qAgWLdlu0fYIE WpZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778675718; x=1779280518; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=jK8oWMUhgh8u2h0g/pQlZW0WDLVUtUJGpIoHocj5R7o=; b=rCCbkTb8bG1JSp53FCKXrlay8Iu5JDpA8FAfWoeSuZDRDWDy6PYc7BTuCFyfo7zl7x GDqfOqqPwYQJ1wR5ssbyHLbgLex1Xto+qkcvrqzuiu0AcEt9B4pPtKRZvzmUk3VPl0TF OAtfAhFX0HPe2L7ozihHKMtDXPhCWLkJXlhVvLrK1PsMCy+PbYuWSQ7BYONZXKcDtRN5 Vlhp3/jxlbI6ITa1WDvhgl8/4SHlLP0+/XrO/THSWfc2Km/C0MdZC5dkKwI4nDyxcobh Bnwf3FJc9L+/J1uvNS+dUSLfB6Zsafd7MDPUWG8J4FA3pXWYwv0zD5hi7xqZgaIAGLgM 06TA== X-Forwarded-Encrypted: i=1; AFNElJ9UWxqfyl3Laz5xft9+9EStM2p6XQjmE7XrO5yVtTFkqpJK3AeWu58+3gYE0syQcBge4rQCP7aXdKKT9dI=@vger.kernel.org X-Gm-Message-State: AOJu0Yz6ENem3hyITBk5HPzAhbZyPsdj2EwTbGwEKclfc/71CPm/k4Le BYyDhVw9kffnYBNEKQ8zTG2AJ+aaoXKBe7JtetdztjQ2bblu+NXlPUx/tCEvPEvjG0zxU6FRhFP Z8vf5VGs1PAAEAw== X-Received: from wrbdf7.prod.google.com ([2002:a5d:5b87:0:b0:44b:16d7:6b87]) (user=jackmanb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6000:1acd:b0:44b:c220:f8ce with SMTP id ffacd0b85a97d-45c5762d633mr4903489f8f.6.1778675717362; Wed, 13 May 2026 05:35:17 -0700 (PDT) Date: Wed, 13 May 2026 12:35:14 +0000 In-Reply-To: <20260513-page_alloc-unmapped-prep-v1-0-dacdf5402be8@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260513-page_alloc-unmapped-prep-v1-0-dacdf5402be8@google.com> X-Mailer: b4 0.14.2 Message-ID: <20260513-page_alloc-unmapped-prep-v1-2-dacdf5402be8@google.com> Subject: [PATCH 2/4] mm/page_alloc: don't overload migratetype in find_suitable_fallback() From: Brendan Jackman To: Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , "Rafael J. Wysocki" , Pavel Machek , Len Brown , Johannes Weiner , Zi Yan Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Brendan Jackman Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable This function currently returns a signed integer that encodes status in-band, as negative numbers, along with a migratetype. Switch to a more explicit/verbose style that encodes the status and migratetype separately. In the spirit of making things more explicit, also create an enum to avoid using magic integer literals with special meanings. This enables documenting the values at their definition instead of in one of the callers. Reviewed-by: Vlastimil Babka (SUSE) Signed-off-by: Brendan Jackman --- mm/compaction.c | 3 ++- mm/internal.h | 14 +++++++++++--- mm/page_alloc.c | 40 +++++++++++++++++++++++----------------- 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/mm/compaction.c b/mm/compaction.c index 3648ce22c80728b894cffce502d8caa3e4532406..168e63940b78247e08aef8b177a= 4c68adb36db31 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -2340,7 +2340,8 @@ static enum compact_result __compact_finished(struct = compact_control *cc) * Job done if allocation would steal freepages from * other migratetype buddy lists. */ - if (find_suitable_fallback(area, order, migratetype, true) >=3D 0) + if (find_suitable_fallback(area, order, migratetype, true, NULL) + =3D=3D FALLBACK_FOUND) /* * Movable pages are OK in any pageblock. If we are * stealing for a non-movable allocation, make sure diff --git a/mm/internal.h b/mm/internal.h index 5a2ddcf68e0b6d1a9fbaeae07670dd252729f96a..09931b1e535f3f71887b5b6473f= 93ed21a41c7e7 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -1104,9 +1104,17 @@ static inline void init_cma_pageblock(struct page *p= age) } #endif =20 - -int find_suitable_fallback(struct free_area *area, unsigned int order, - int migratetype, bool claimable); +enum fallback_result { + /* Found suitable migratetype, *mt_out is valid. */ + FALLBACK_FOUND, + /* No fallback found in requested order. */ + FALLBACK_EMPTY, + /* Passed @claimable, but claiming whole block is a bad idea. */ + FALLBACK_NOCLAIM, +}; +enum fallback_result +find_suitable_fallback(struct free_area *area, unsigned int order, + int migratetype, bool claimable, int *mt_out); =20 static inline bool free_area_empty(struct free_area *area, int migratetype) { diff --git a/mm/page_alloc.c b/mm/page_alloc.c index c9edffe968ac25b8cd9f6f983bf4c9ba21e73a11..91d83c967bd478982e0161a99d4= 7d3a76bd89992 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -2249,25 +2249,29 @@ static bool should_try_claim_block(unsigned int ord= er, int start_mt) * we would do this whole-block claiming. This would help to reduce * fragmentation due to mixed migratetype pages in one pageblock. */ -int find_suitable_fallback(struct free_area *area, unsigned int order, - int migratetype, bool claimable) +enum fallback_result +find_suitable_fallback(struct free_area *area, unsigned int order, + int migratetype, bool claimable, int *mt_out) { int i; =20 if (claimable && !should_try_claim_block(order, migratetype)) - return -2; + return FALLBACK_NOCLAIM; =20 if (area->nr_free =3D=3D 0) - return -1; + return FALLBACK_EMPTY; =20 for (i =3D 0; i < MIGRATE_PCPTYPES - 1 ; i++) { int fallback_mt =3D fallbacks[migratetype][i]; =20 - if (!free_area_empty(area, fallback_mt)) - return fallback_mt; + if (!free_area_empty(area, fallback_mt)) { + if (mt_out) + *mt_out =3D fallback_mt; + return FALLBACK_FOUND; + } } =20 - return -1; + return FALLBACK_EMPTY; } =20 /* @@ -2377,16 +2381,16 @@ __rmqueue_claim(struct zone *zone, int order, int s= tart_migratetype, */ for (current_order =3D MAX_PAGE_ORDER; current_order >=3D min_order; --current_order) { - area =3D &(zone->free_area[current_order]); - fallback_mt =3D find_suitable_fallback(area, current_order, - start_migratetype, true); + enum fallback_result result; =20 - /* No block in that order */ - if (fallback_mt =3D=3D -1) + area =3D &(zone->free_area[current_order]); + result =3D find_suitable_fallback(area, current_order, + start_migratetype, true, &fallback_mt); + + if (result =3D=3D FALLBACK_EMPTY) continue; =20 - /* Advanced into orders too low to claim, abort */ - if (fallback_mt =3D=3D -2) + if (result =3D=3D FALLBACK_NOCLAIM) break; =20 page =3D get_page_from_free_area(area, fallback_mt); @@ -2416,10 +2420,12 @@ __rmqueue_steal(struct zone *zone, int order, int s= tart_migratetype) int fallback_mt; =20 for (current_order =3D order; current_order < NR_PAGE_ORDERS; current_ord= er++) { + enum fallback_result result; + area =3D &(zone->free_area[current_order]); - fallback_mt =3D find_suitable_fallback(area, current_order, - start_migratetype, false); - if (fallback_mt =3D=3D -1) + result =3D find_suitable_fallback(area, current_order, start_migratetype, + false, &fallback_mt); + if (result =3D=3D FALLBACK_EMPTY) continue; =20 page =3D get_page_from_free_area(area, fallback_mt); --=20 2.51.2 From nobody Fri Jun 12 18:34:16 2026 Received: from mail-wm1-f73.google.com (mail-wm1-f73.google.com [209.85.128.73]) (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 65E0F427A06 for ; Wed, 13 May 2026 12:35:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675721; cv=none; b=qxgKnW2zOnLn0qxrLvw4cCo+ZljiKrtYPE44Pi5AJu2cZEl4n1cYmo8gPxxUJaIfxiq0DgtK+x0gJR1LZJzydGAmNgwNYtFLsIGoWdLSwKFgO8TW7fYvjzE5Axv9/GXiT3qrjDt1NqpclZblzaMzWYTWejOu1TfLNhYsA+SOrVA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675721; c=relaxed/simple; bh=6oBZEPvbhbq0m4/sCOO1SmKKtanv3Zg0HUty27Kvidk=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=UmE9T4CoUou+uh8uE69mkDq0nfpL7+3ISYpCrvqxMZYgC5os80viqyM+7X+AwAm6D/CqQsPU8gN8L8uxLXTk9VrUXBU0fL7wV1cSn7ynsuvr1ZYKlTrJXyzESplblr/eiF70A47szjUw4RFR09Js9am8WfQwJiTOWktoAaVhi2g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--jackmanb.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=b/i59tdZ; arc=none smtp.client-ip=209.85.128.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--jackmanb.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="b/i59tdZ" Received: by mail-wm1-f73.google.com with SMTP id 5b1f17b1804b1-48fc9084562so12239395e9.0 for ; Wed, 13 May 2026 05:35:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1778675719; x=1779280519; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=QLzi6slHGxfhu4Y8NlwXvD2GZX7MC6Ih+pKGkr9pVTY=; b=b/i59tdZQRofgZu2NK7bQsHu/OS164z0IkSbBIXtTZeYY5QiRYnWaHppswrlT73Nop ucgq/aGXGt5H/ghh3Y1aQ+HoCJpLpzW9d4PeIwrkAkv7FKJkpjD/xHW9JpFBBcS/DmWR /QzIV/zMtORyrjZ8SNNco6qha124vptNImAVpDvmztwI7LxAX2E2T8+XNEznUupgXIGf XNk0yotBWODdW9gftAVzOD5IzExQN2zsfg4Tq4+fx2BqBUgGAUTuk6ZVjNotCVXd52DX i88rGx9+lgt4bG4R5RKs3+9LCL6uzyXZ/jLC+11vnNyhluj0SHEaBTpjiT0sA88g1q8y uAxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778675719; x=1779280519; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=QLzi6slHGxfhu4Y8NlwXvD2GZX7MC6Ih+pKGkr9pVTY=; b=ERaBRUY2yXrqHy4TnAX/ImfZhGLXyAfzbNUSmagkC7jEHn5wU0c8LzfISXJsajaabQ vHKRySyMZhaXthIPHZ4cNyHp2aEazPP573lZEeUn3YjvWQXcAA8efvZCNrkfw+AXjgTq 6y87wR6jsloQLzqix3xKOHP/a6XPtx54I2Uig8VRufwvnHqewIUKn7PVokBsJO/XalDY 67ZSx/MuUUv5Yhj8+uHVTQquvuu+twj4AprWEWIuxHwxKzrY8eDzG84PeONiZT/PX5Pi 09Q0Hz6Pm+LjgNL5RrcRsNieAKH12aDZ9PKXTYHez4GsODn7R3gTqI6dxXu807AZTdlE LEJA== X-Forwarded-Encrypted: i=1; AFNElJ9u9icEu3mtrqEOwmibnr7et6lHZlBx/wzLa4nMtn/FDTnrEZzxnD4hhhokdR3ORKoSuu6FAg2IqGz16c0=@vger.kernel.org X-Gm-Message-State: AOJu0Yyaxfg8mgmz/20alnA69IkED1no63PwuQCH2Q+mlb3MYBY9yAv0 z80WSOInoEV9FT0wrF/kvHmb98/4s7mEdHfShJkpdIY40lCmYobp6HfxiQY0bo7MjK4tL+td4Gt cvYY5uxbSR5BkIQ== X-Received: from wmbjd23.prod.google.com ([2002:a05:600c:68d7:b0:48a:5e23:da86]) (user=jackmanb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600d:1c:b0:48e:526e:1012 with SMTP id 5b1f17b1804b1-48fce99dc29mr26844625e9.5.1778675718495; Wed, 13 May 2026 05:35:18 -0700 (PDT) Date: Wed, 13 May 2026 12:35:15 +0000 In-Reply-To: <20260513-page_alloc-unmapped-prep-v1-0-dacdf5402be8@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260513-page_alloc-unmapped-prep-v1-0-dacdf5402be8@google.com> X-Mailer: b4 0.14.2 Message-ID: <20260513-page_alloc-unmapped-prep-v1-3-dacdf5402be8@google.com> Subject: [PATCH 3/4] mm: rejig pageblock mask definitions From: Brendan Jackman To: Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , "Rafael J. Wysocki" , Pavel Machek , Len Brown , Johannes Weiner , Zi Yan Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Brendan Jackman Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable - Add a PAGEBLOCK_ prefix to the names to avoid polluting the "global namespace" too much. - This new prefix makes MIGRATETYPE_AND_ISO_MASK look pretty long. Well, that global mask only exists for quite a specific purpose, and is quite a weird thing to have a name for anyway. So drop it and take advantage of the newly-defined PAGEBLOCK_ISO_MASK. Reviewed-by: Vlastimil Babka (SUSE) Signed-off-by: Brendan Jackman --- include/linux/pageblock-flags.h | 6 +++--- mm/page_alloc.c | 18 +++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/include/linux/pageblock-flags.h b/include/linux/pageblock-flag= s.h index e046278a01fa8c37d898df94114d088933b6747f..9a6c3ea17684d821fde9ec272b0= 802dfb78249a9 100644 --- a/include/linux/pageblock-flags.h +++ b/include/linux/pageblock-flags.h @@ -36,12 +36,12 @@ enum pageblock_bits { =20 #define NR_PAGEBLOCK_BITS (roundup_pow_of_two(__NR_PAGEBLOCK_BITS)) =20 -#define MIGRATETYPE_MASK (BIT(PB_migrate_0)|BIT(PB_migrate_1)|BIT(PB_migra= te_2)) +#define PAGEBLOCK_MIGRATETYPE_MASK (BIT(PB_migrate_0)|BIT(PB_migrate_1)|BI= T(PB_migrate_2)) =20 #ifdef CONFIG_MEMORY_ISOLATION -#define MIGRATETYPE_AND_ISO_MASK (MIGRATETYPE_MASK | BIT(PB_migrate_isolat= e)) +#define PAGEBLOCK_ISO_MASK BIT(PB_migrate_isolate) #else -#define MIGRATETYPE_AND_ISO_MASK MIGRATETYPE_MASK +#define PAGEBLOCK_ISO_MASK 0 #endif =20 #if defined(CONFIG_HUGETLB_PAGE) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 91d83c967bd478982e0161a99d47d3a76bd89992..5d6144c8860ed10fd641184f389= c4953465d5178 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -364,7 +364,7 @@ get_pfnblock_bitmap_bitidx(const struct page *page, uns= igned long pfn, #else BUILD_BUG_ON(NR_PAGEBLOCK_BITS !=3D 4); #endif - BUILD_BUG_ON(__MIGRATE_TYPE_END > MIGRATETYPE_MASK); + BUILD_BUG_ON(__MIGRATE_TYPE_END > PAGEBLOCK_MIGRATETYPE_MASK); VM_BUG_ON_PAGE(!zone_spans_pfn(page_zone(page), pfn), page); =20 bitmap =3D get_pageblock_bitmap(page, pfn); @@ -437,7 +437,7 @@ bool get_pfnblock_bit(const struct page *page, unsigned= long pfn, __always_inline enum migratetype get_pfnblock_migratetype(const struct page *page, unsigned long pfn) { - unsigned long mask =3D MIGRATETYPE_AND_ISO_MASK; + unsigned long mask =3D PAGEBLOCK_MIGRATETYPE_MASK | PAGEBLOCK_ISO_MASK; unsigned long flags; =20 flags =3D __get_pfnblock_flags_mask(page, pfn, mask); @@ -446,7 +446,7 @@ get_pfnblock_migratetype(const struct page *page, unsig= ned long pfn) if (flags & BIT(PB_migrate_isolate)) return MIGRATE_ISOLATE; #endif - return flags & MIGRATETYPE_MASK; + return flags & PAGEBLOCK_MIGRATETYPE_MASK; } =20 /** @@ -534,11 +534,11 @@ static void set_pageblock_migratetype(struct page *pa= ge, } VM_WARN_ONCE(get_pageblock_isolate(page), "Use clear_pageblock_isolate() to unisolate pageblock"); - /* MIGRATETYPE_AND_ISO_MASK clears PB_migrate_isolate if it is set */ + /* PAGEBLOCK_ISO_MASK clears PB_migrate_isolate if it is set */ #endif __set_pfnblock_flags_mask(page, page_to_pfn(page), (unsigned long)migratetype, - MIGRATETYPE_AND_ISO_MASK); + PAGEBLOCK_MIGRATETYPE_MASK | PAGEBLOCK_ISO_MASK); } =20 void __meminit init_pageblock_migratetype(struct page *page, @@ -564,7 +564,7 @@ void __meminit init_pageblock_migratetype(struct page *= page, flags |=3D BIT(PB_migrate_isolate); #endif __set_pfnblock_flags_mask(page, page_to_pfn(page), flags, - MIGRATETYPE_AND_ISO_MASK); + PAGEBLOCK_MIGRATETYPE_MASK | PAGEBLOCK_ISO_MASK); } =20 #ifdef CONFIG_DEBUG_VM @@ -2130,15 +2130,15 @@ static bool __move_freepages_block_isolate(struct z= one *zone, } =20 move: - /* Use MIGRATETYPE_MASK to get non-isolate migratetype */ + /* Use PAGEBLOCK_MIGRATETYPE_MASK to get non-isolate migratetype */ if (isolate) { from_mt =3D __get_pfnblock_flags_mask(page, page_to_pfn(page), - MIGRATETYPE_MASK); + PAGEBLOCK_MIGRATETYPE_MASK); to_mt =3D MIGRATE_ISOLATE; } else { from_mt =3D MIGRATE_ISOLATE; to_mt =3D __get_pfnblock_flags_mask(page, page_to_pfn(page), - MIGRATETYPE_MASK); + PAGEBLOCK_MIGRATETYPE_MASK); } =20 __move_freepages_block(zone, start_pfn, from_mt, to_mt); --=20 2.51.2 From nobody Fri Jun 12 18:34:16 2026 Received: from mail-wr1-f74.google.com (mail-wr1-f74.google.com [209.85.221.74]) (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 DEE26428492 for ; Wed, 13 May 2026 12:35:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675724; cv=none; b=qt347cMsnGLMUan2uoagMM9arfbM4Ebhbj7Z/A5/JBaF0QMjm9BLOgfsa0uctU2zoCcdfaM5ZFKSzeyzZIj4iNDr10F+Movhhev/Ji2UweZRpGP+sPcqvvFbqXhLiOQjSP6tDdIpfz1VnINyO8Tn0jjTM0OPbWNUAF8C6k9AGi0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675724; c=relaxed/simple; bh=hIW5qNVwHhdoiSIcY8kmhcu+ilfQ1veen9WmaiIpw3E=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=Po12iJCb39tdVUj1Alc5LTjcnCaZZ1BiL3x4jNadzJmEaQ0UBEHKo0Fnm7ezrpdwc0Eur/E4Sc59Bx0Zl7BOEfJABJQVgrUHDqyVgolKzfNgGvsfEU1h8klENwhX0qI8qORhEzy6C0NFiqAlfW/GTgis1bmwQvxY2eNbuyJj05o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--jackmanb.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=UPZ3Xt40; arc=none smtp.client-ip=209.85.221.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--jackmanb.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="UPZ3Xt40" Received: by mail-wr1-f74.google.com with SMTP id ffacd0b85a97d-44dad1b938fso4036666f8f.1 for ; Wed, 13 May 2026 05:35:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1778675720; x=1779280520; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=aQev7kNyu1JquEWKDjbbV4w/SlArzFcQsccQoFbUKmI=; b=UPZ3Xt40JEvPAhBQkoWpAbJrBarPTucEUyakCkE5IxroyrTCxLKdXOCle2svZF2el/ yyAMUo3CTTgxNwEIu4K3v4A8gommdk1kD25g+fazvHV/6Dnzj+w0uhusfGi+FCUHxvPE zNqmUWIYpzAfSOyI3Z62bYC7ql8YN1natO1qywJqZ/UvyZlnhrFLyL3mUBSiq1/054/g jYrrzn+t2hRyADrSgTrg/5n5TY7dHaDv3IP5E6l43PMAf5lpG6z1+urKiR5Sxrae1zDW rmVbNsDTAik7eWJSRpMO9WP0g302mbP8T22vl9ico3Kw/I6TIKxfiiWBmpcw3kxbaELh LfXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778675720; x=1779280520; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=aQev7kNyu1JquEWKDjbbV4w/SlArzFcQsccQoFbUKmI=; b=WGGiYR7itzv+flJJ3rkKZMIg1bo6Bg31bPFu8JhBS1XLNKpbiyXr4/c7Njs6Euth2c hFK79PxfGFTHezUXwHVCPRP/9uxcUeCSCtMIh+AJsV47mPlQoponppMtFrim0VQWe4+z zwLhQtT3xgICslIelt2JRQFur6KxQMeQXFQlkHtrEISi1SXxiU+x/kiJHif7AsY8q8e3 nb5lsJQT9RYQXZMNoLMIpdHgB2bO4y4VaP1J0QtrHlyJGOjXGuc8nyMn1YkZihI7FfG+ Yuq+XzVVJKfMh+X/FWlZ4RSpWakcaZISo0ZOrmQVK2eb/nYmf7z2fjUOYiCDcvCS3vFs tZqQ== X-Forwarded-Encrypted: i=1; AFNElJ+//WGA0XOeDGqKYkTQzjsvvMsqKW/5KfTWnD8wbEqgfLNxdK9HEUmcLJ2sTTMSzRTDFaTMFM3nHDoY1og=@vger.kernel.org X-Gm-Message-State: AOJu0YzubOJJ0J0Nq+3/6KnedYQalLARIKa57L8t/gla9HS4OSLlk2Xj Ssu2twwSmblr5yWb8ndkH4/tj6ERlm9CjISsuDHHof7mV2OKyrRvDuhysf17wXs/ALe+zvLQbL1 dSBil9OZWOc2X2A== X-Received: from wruh9.prod.google.com ([2002:a5d:6889:0:b0:444:bd72:fec6]) (user=jackmanb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6000:144c:b0:44b:cd2f:a3c8 with SMTP id ffacd0b85a97d-45c580ce3abmr4261824f8f.4.1778675719914; Wed, 13 May 2026 05:35:19 -0700 (PDT) Date: Wed, 13 May 2026 12:35:16 +0000 In-Reply-To: <20260513-page_alloc-unmapped-prep-v1-0-dacdf5402be8@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260513-page_alloc-unmapped-prep-v1-0-dacdf5402be8@google.com> X-Mailer: b4 0.14.2 Message-ID: <20260513-page_alloc-unmapped-prep-v1-4-dacdf5402be8@google.com> Subject: [PATCH 4/4] mm/page_alloc: remove ifdefs from pindex helpers From: Brendan Jackman To: Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , "Rafael J. Wysocki" , Pavel Machek , Len Brown , Johannes Weiner , Zi Yan Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Brendan Jackman Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The ifdefs are not technically needed here, everything used here is always defined. Switching to IS_ENABLED() makes the code a bit less tiresome to read. Reviewed-by: Vlastimil Babka (SUSE) Signed-off-by: Brendan Jackman --- mm/page_alloc.c | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 5d6144c8860ed10fd641184f389c4953465d5178..2985ad0ab1044bdfda8ccc7aaed= 2ded19b5ac7ed 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -650,19 +650,17 @@ static void bad_page(struct page *page, const char *r= eason) =20 static inline unsigned int order_to_pindex(int migratetype, int order) { + if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE)) { + bool movable =3D migratetype =3D=3D MIGRATE_MOVABLE; =20 -#ifdef CONFIG_TRANSPARENT_HUGEPAGE - bool movable; - if (order > PAGE_ALLOC_COSTLY_ORDER) { - VM_BUG_ON(!is_pmd_order(order)); + if (order > PAGE_ALLOC_COSTLY_ORDER) { + VM_BUG_ON(!is_pmd_order(order)); =20 - movable =3D migratetype =3D=3D MIGRATE_MOVABLE; - - return NR_LOWORDER_PCP_LISTS + movable; + return NR_LOWORDER_PCP_LISTS + movable; + } + } else { + VM_BUG_ON(order > PAGE_ALLOC_COSTLY_ORDER); } -#else - VM_BUG_ON(order > PAGE_ALLOC_COSTLY_ORDER); -#endif =20 return (MIGRATE_PCPTYPES * order) + migratetype; } @@ -671,12 +669,12 @@ static inline int pindex_to_order(unsigned int pindex) { int order =3D pindex / MIGRATE_PCPTYPES; =20 -#ifdef CONFIG_TRANSPARENT_HUGEPAGE - if (pindex >=3D NR_LOWORDER_PCP_LISTS) - order =3D HPAGE_PMD_ORDER; -#else - VM_BUG_ON(order > PAGE_ALLOC_COSTLY_ORDER); -#endif + if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE)) { + if (pindex >=3D NR_LOWORDER_PCP_LISTS) + order =3D HPAGE_PMD_ORDER; + } else { + VM_BUG_ON(order > PAGE_ALLOC_COSTLY_ORDER); + } =20 return order; } --=20 2.51.2