From mboxrd@z Thu Jan 1 00:00:00 1970 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 269144C8FE6 for ; Thu, 2 Jul 2026 09:49:57 +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=1782985798; cv=none; b=Ev2Pz37YlJXFl9wNBxl7KZl0UfmK/OsOWQC7yyOm/A2U8G0+/Mw88zYMTv6hIfyUgJ2VDQFQ7ShQQb3LL92bIEsjIGbqdYJCaPBOr3JKxkMNsr3ssxlv6gOJgncNiuFqtHkwIwO+P5fnp7p0PxrirekOPVF7qB+ihj68wU2v4Vg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782985798; c=relaxed/simple; bh=EAqViwusgRTi6rLOc2U+A6N+6KHjf2l3Cyf0mwTMYBQ=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=FBq+3Ks1reWwteq/Qau74TA6WnsmOW9HjfTsaZO6s2pcFBgSiG8iffYNKZzTI/hlwnxBOOPpYDFn1ixTAGcJwsAGUVqkOl0RfHNAkHal24cwkdyqqDWAh4id39PqcvlSUU3P+XQ1f3yFnG/5MTO0gtPmiBha/V4RwJrLQnK8Sl8= 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=UMmdliuz; 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="UMmdliuz" Received: by mail-wr1-f74.google.com with SMTP id ffacd0b85a97d-475eba52438so1468476f8f.3 for ; Thu, 02 Jul 2026 02:49:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1782985795; x=1783590595; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to :content-type; bh=iEqy9OiYUm+VnjUsJ3u1JVAY+AlpaBr9qaiRjmcKytg=; b=UMmdliuzTMAjVnN1jO+Ko6djUj0zWA4E6L3N/EfbGrciBiY143VdLsqYWIRBSDPR5k hufVz30P2fFcMXEF7KRaKNmBYmdIfShw04dTT7XyIV59/L173qu5zRtKUEuPa9yDj6Ge z+c5r7FLaTK+pqi1iqdUNvTm3hY6q45a7oL+FSP0YMg91t1SrHi1NcxWSA4vAONd9lIz zxJWtw0Blv64WtCWVd0m/UOJpguL0Vu//cFvLHEblPzpS+k6zLEJh4K222s3eNvu65D8 Utt+Pr/0tRzem8KinFbc54fMNBbc7FachyhfPEjjctXeCn4EvT8FeObfWGRgA7RS/51t lLQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782985795; x=1783590595; h=content-type: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:content-type; bh=iEqy9OiYUm+VnjUsJ3u1JVAY+AlpaBr9qaiRjmcKytg=; b=MLc4rBXeW5dVDaQDWpoGgMKDXGxA0zXg20ORjiBuDehng9u6rAm0q1IiG6wpwBfRCy 8c/5sDUX4Zgr+qN0e68AWE4N9Rk8t28b1tgm23amSw31p16QnwE66AmC61jo4tIEX9N5 IMo3w3UrQ2kr8MdLrAt7dXJKivOb+fxhFnaRxdl1CcNo7RX63yBEvyHjKgO2ieQ0rJls BKwU0iOwkoidyxLUVPzOwQOSbjSXEWnDAyJX0Hye0KJekweze0GEdnC3d0XLtK3f2E64 mhI1vIlhxVwZ7dLza15MTldUqwn1eMriSuVjt1/MFL/5MK6szoTlV0pPUUHGjOQZxodS K3MA== X-Forwarded-Encrypted: i=1; AFNElJ//3XwiSUlDxajki/jBj53Ls5fNv4pIWssagmjGshWYIBoiW1/SIdYkXbj7ZeCW4CziuE3KbQDWmGOrYGQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxmnGRaIp7q9TVtYiIc3IkZvTgJbV9YvSTloJ+YPSA4rs7FIcTe soiReydIIkA04hBOiWulrM61wtpKv8F1BMZO3Gt9D1BPbyPYdWFWeiF6Bd/fCc8OZ8NAACe5q4B PUSPnM3UMV+9w0A== X-Received: from wmg3.prod.google.com ([2002:a05:600c:22c3:b0:492:4659:9cd8]) (user=jackmanb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:70a:b0:493:b967:178d with SMTP id 5b1f17b1804b1-493c3ceb426mr42271475e9.19.1782985795274; Thu, 02 Jul 2026 02:49:55 -0700 (PDT) Date: Thu, 02 Jul 2026 09:49:38 +0000 In-Reply-To: <20260702-alloc-trylock-v4-0-0af8ff387e80@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260702-alloc-trylock-v4-0-0af8ff387e80@google.com> X-Mailer: b4 0.15.2 Message-ID: <20260702-alloc-trylock-v4-7-0af8ff387e80@google.com> Subject: [PATCH v4 07/18] mm: move some stuff to mm/page_alloc.h From: Brendan Jackman To: Andrew Morton , Vlastimil Babka , Suren Baghdasaryan , Michal Hocko , Johannes Weiner , Zi Yan , Muchun Song , Oscar Salvador , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Mike Rapoport , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Ying Huang , Alistair Popple , Hao Li , Christoph Lameter , David Rientjes , Roman Gushchin , Sebastian Andrzej Siewior , Clark Williams , Steven Rostedt Cc: "Harry Yoo (Oracle)" , Gregory Price , Johannes Weiner , Alexei Starovoitov , Matthew Wilcox , Hao Ge , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev, derkling@google.com, reijiw@google.com, Brendan Jackman , Yosry Ahmed Content-Type: text/plain; charset="utf-8" Some of this stuff in the public header is only used internally so shrink the scope to avoid silently growing new users. drain_local_pages() is still used from kernel/power/snapshot.c so that needs to stay behind. Reviewed-by: Vlastimil Babka (SUSE) Signed-off-by: Brendan Jackman --- include/linux/gfp.h | 26 -------------------------- mm/page_alloc.h | 28 ++++++++++++++++++++++++++++ mm/vmstat.c | 1 + 3 files changed, 29 insertions(+), 26 deletions(-) diff --git a/include/linux/gfp.h b/include/linux/gfp.h index cdf95a9f0b87c..01d6d2591f49e 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h @@ -17,28 +17,6 @@ struct mempolicy; #define __default_gfp(a,b,...) b #define default_gfp(...) __default_gfp(,##__VA_ARGS__,GFP_KERNEL) -/* Convert GFP flags to their corresponding migrate type */ -#define GFP_MOVABLE_MASK (__GFP_RECLAIMABLE|__GFP_MOVABLE) -#define GFP_MOVABLE_SHIFT 3 - -static inline int gfp_migratetype(const gfp_t gfp_flags) -{ - VM_WARN_ON((gfp_flags & GFP_MOVABLE_MASK) == GFP_MOVABLE_MASK); - BUILD_BUG_ON((1UL << GFP_MOVABLE_SHIFT) != ___GFP_MOVABLE); - BUILD_BUG_ON((___GFP_MOVABLE >> GFP_MOVABLE_SHIFT) != MIGRATE_MOVABLE); - BUILD_BUG_ON((___GFP_RECLAIMABLE >> GFP_MOVABLE_SHIFT) != MIGRATE_RECLAIMABLE); - BUILD_BUG_ON(((___GFP_MOVABLE | ___GFP_RECLAIMABLE) >> - GFP_MOVABLE_SHIFT) != MIGRATE_HIGHATOMIC); - - if (unlikely(page_group_by_mobility_disabled)) - return MIGRATE_UNMOVABLE; - - /* Group based on mobility */ - return (__force unsigned long)(gfp_flags & GFP_MOVABLE_MASK) >> GFP_MOVABLE_SHIFT; -} -#undef GFP_MOVABLE_MASK -#undef GFP_MOVABLE_SHIFT - static inline bool gfpflags_allow_blocking(const gfp_t gfp_flags) { return !!(gfp_flags & __GFP_DIRECT_RECLAIM); @@ -395,10 +373,6 @@ extern void free_pages(unsigned long addr, unsigned int order); #define __free_page(page) __free_pages((page), 0) #define free_page(addr) free_pages((addr), 0) -void page_alloc_init_cpuhp(void); -bool decay_pcp_high(struct zone *zone, struct per_cpu_pages *pcp); -void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp); -void drain_all_pages(struct zone *zone); void drain_local_pages(struct zone *zone); void page_alloc_init_late(void); diff --git a/mm/page_alloc.h b/mm/page_alloc.h index a4f4b325381ad..6bb50bae3ba27 100644 --- a/mm/page_alloc.h +++ b/mm/page_alloc.h @@ -266,6 +266,34 @@ static inline bool free_area_empty(struct free_area *area, int migratetype) return list_empty(&area->free_list[migratetype]); } +/* Convert GFP flags to their corresponding migrate type */ +#define GFP_MOVABLE_MASK (__GFP_RECLAIMABLE|__GFP_MOVABLE) +#define GFP_MOVABLE_SHIFT 3 + +static inline int gfp_migratetype(const gfp_t gfp_flags) +{ + VM_WARN_ON((gfp_flags & GFP_MOVABLE_MASK) == GFP_MOVABLE_MASK); + BUILD_BUG_ON((1UL << GFP_MOVABLE_SHIFT) != ___GFP_MOVABLE); + BUILD_BUG_ON((___GFP_MOVABLE >> GFP_MOVABLE_SHIFT) != MIGRATE_MOVABLE); + BUILD_BUG_ON((___GFP_RECLAIMABLE >> GFP_MOVABLE_SHIFT) != MIGRATE_RECLAIMABLE); + BUILD_BUG_ON(((___GFP_MOVABLE | ___GFP_RECLAIMABLE) >> + GFP_MOVABLE_SHIFT) != MIGRATE_HIGHATOMIC); + + if (unlikely(page_group_by_mobility_disabled)) + return MIGRATE_UNMOVABLE; + + /* Group based on mobility */ + return (__force unsigned long)(gfp_flags & GFP_MOVABLE_MASK) >> GFP_MOVABLE_SHIFT; +} +#undef GFP_MOVABLE_MASK +#undef GFP_MOVABLE_SHIFT + +bool decay_pcp_high(struct zone *zone, struct per_cpu_pages *pcp); +void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp); +void drain_all_pages(struct zone *zone); +void drain_local_pages(struct zone *zone); + +void page_alloc_init_cpuhp(void); void page_alloc_sysctl_init(void); #endif /* __MM_PAGE_ALLOC_H */ diff --git a/mm/vmstat.c b/mm/vmstat.c index 7b93fbf9af092..3b5cb1031f720 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -30,6 +30,7 @@ #include #include "internal.h" +#include "page_alloc.h" #ifdef CONFIG_PROC_FS #ifdef CONFIG_NUMA -- 2.54.0