From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C03ED261B70 for ; Sun, 26 Apr 2026 21:47:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777240065; cv=none; b=PhEtkfRCV9G/iMlZ5JvU92dJzqj3GcNZeZNxAbc50oks8Hxe3ic+AMRfggqZTBbhWQf9aNwkgqKSv60bfSIC96/Qqa9j/YAholjT4J4wVc58eVvKD/ulMxZks803SagUbwec0df9Pp0EqLQd879/FeA6IoJouBn9wNwnvT1f7wo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777240065; c=relaxed/simple; bh=BxAAIgTOcFIabrBhXgct8q9SxWHk4OL7KtA+YehjDgA=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=O4HUw5xPOEN47zysItCx7wDz/Qk7zwzzpuT5cHLM/ucOJ2+ZdWo6qnLPXvDDY6VJSY02OLhh+3peYQvHP2SFQ925c95NuM+IFBe3WzqeqsrijK/SxvhXgBFv00nKuLM5euTBhBJQy/L5Pi+W58CvAJf6nF5Ub9oyAWiZrSUPsZE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=Llcte4yr; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=G/Faw3gB; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Llcte4yr"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="G/Faw3gB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777240062; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=xFat/tQU1LWbkfRr9XYlFioABzGDJGEMsD6O36sEfN8=; b=Llcte4yrHhUETUmPSla/1q4JOzSZROtoKsQoeD5g/X4W3SzBbvRMlqdpAdYzizYaeNEx0k dWWmsSFuXsMWDrG0eSLzZIOmQMaF7U2yrHt2mE9cHHse4ldxZk7dVE2vICG7A2HN3Gak4M JJf3munJIJZrf4DryCD5zxkSHOeYNsE= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-387-XRaKYWngM9G96IrKVr-4Ag-1; Sun, 26 Apr 2026 17:47:41 -0400 X-MC-Unique: XRaKYWngM9G96IrKVr-4Ag-1 X-Mimecast-MFC-AGG-ID: XRaKYWngM9G96IrKVr-4Ag_1777240060 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-4440c5944fbso448680f8f.2 for ; Sun, 26 Apr 2026 14:47:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1777240060; x=1777844860; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=xFat/tQU1LWbkfRr9XYlFioABzGDJGEMsD6O36sEfN8=; b=G/Faw3gBaxWN3U8PN8B9Qo5NamF4Ofj80kVE4wi5zgsRp4MYwxIhn1H45NaZr5j0bX KYSOMHuZO/LtpDbxPgwmjUAqQvnBwuebGenRyequKWVtZtbB2g4e5SfDNkQxiY2Jgfhu 3KUs1+jSKuZY5fipEkUhbHmWE30KnetSaRYpDi29ehaTO0qNFnaDbNvU6lHXe9NEOtn7 ZwAO9FbX/6shcDTp1qHOBSgdIHdVb34c8ZDPqnidq2dSVCZNLoTTnk3tA4vdJ05WoHE7 bB78wVTeb9aXzRHURpaGmSa4Pw2l7NHD9MZtLehNuwodcHSjfwC6080E6WwAM2sedGoi E09w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777240060; x=1777844860; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xFat/tQU1LWbkfRr9XYlFioABzGDJGEMsD6O36sEfN8=; b=XVOC7iCC7xhIY6C9ZlsFlf4X0DKe5FOl0Yzq2KTQqA1iAAwGD0IxVuXfR89Uo3dVFC B6HYCkLCU2MP1fqydGhd6rXC2nbljl5Ob6Ehlm14ZcJk1M8AN/gtlQoIUlDFZMgaazvW C5tfQQ1+2hQ1f0P1CKxsPugmUqsL5qGf6emib8MZW3d0yse5kKiHwvvMTEs1vMhmjNGi v/yG6JNRo6jMRvmSUenz+1UNCxsqNMZlAjfSXysPp2jVhskQlxj5xKn9ZTyOAPDLWlf4 SUtdl5A94DcdV24Z61IJeXO7eiXhPT1SG9LV1c0ecqygzcbt1xfupvguFrt4sUrvmj1v nh8g== X-Gm-Message-State: AOJu0YxcQ/mgGMoBfQDLuV73BkF/fDgVJVhScqDiwQLcsQsp9BvXMvN8 EBucV74W1FKPj1MkOCUmgP8CjkXAwC4qRWO+ZrVCVmf36bFwoV8h0lJTDexrF97RLpphVyRmXJy zfrEupGxkWbQgA7QBP/1m4NavssBK6mrby7Z4NXAe5DINDDadichjKGJDqSQwjoISoXRSVr6DTP tZY14HEIDWtPxqR3QJrzO+j/yI2eZr/AA+dAa1CAzu7JE= X-Gm-Gg: AeBDiesGvGkhZLr7KfiPJ+K9fWoPvMj7wr3wU3ezCKFmiektF+mkbh3W1rtmDa6fUG2 XJrb4GedjWy8s1G90gGmMqD1lJNpTU0F+fB53UyMlZ8RbyU7ZTr9QDzN8ZcpVNne21DclTJG+d5 YTGqrbeQfT+hD2s4paOKauhSLTEpk0+6PmVxAX6RJQi3BnjcIfARjg9B+ovYrD6XfVm9dVVp1dg /lmsXiEFM5ZyGxa7XLL7RyeqwKJJa8F2OhbD5W8H1WUbYFWT6SSkZH6DfRql25yqjrA2klhdhGp 4pU8P0JOZPusJkaF1YWta7pwGeBFDK3lV3LoRv8Ko54wtpXycjzytYHjdC0xqRoOfGm6VQskJ2G ZXWhYHTx0TTshkEXYTwErorCHeU0MuKX4zKDF0ff0Xe0WBKS4Q2oh4j1D X-Received: by 2002:a05:6000:2309:b0:43f:e211:6e6 with SMTP id ffacd0b85a97d-43fe3db9b6fmr62507629f8f.1.1777240060097; Sun, 26 Apr 2026 14:47:40 -0700 (PDT) X-Received: by 2002:a05:6000:2309:b0:43f:e211:6e6 with SMTP id ffacd0b85a97d-43fe3db9b6fmr62507584f8f.1.1777240059595; Sun, 26 Apr 2026 14:47:39 -0700 (PDT) Received: from redhat.com (IGLD-80-230-47-179.inter.net.il. [80.230.47.179]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-444eebec868sm795291f8f.31.2026.04.26.14.47.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 14:47:39 -0700 (PDT) Date: Sun, 26 Apr 2026 17:47:36 -0400 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Andrew Morton , David Hildenbrand , Vlastimil Babka , Brendan Jackman , Michal Hocko , Suren Baghdasaryan , Jason Wang , Andrea Arcangeli , Gregory Price , linux-mm@kvack.org, virtualization@lists.linux.dev, Johannes Weiner , Zi Yan , Lorenzo Stoakes , "Liam R. Howlett" , Mike Rapoport Subject: [PATCH RFC v4 02/22] mm: add vma_alloc_folio_user_addr Message-ID: <0652fa7c0ed9be9794f44cc1f10ad19ed5f3990a.1777223007.git.mst@redhat.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Add vma_alloc_folio_user_addr() which will be used in follow-up patches. It takes a separate user_addr parameter for the cache-friendly zeroing hint, independent of the addr used for NUMA policy lookup. The NUMA interleave index is computed from (addr - vma->vm_start) >> (PAGE_SHIFT + order), so addr must be folio-aligned for correct NUMA placement. But the zeroing hint wants the exact fault address for cache locality. vma_alloc_folio() becomes a thin wrapper that passes addr for both. Signed-off-by: Michael S. Tsirkin Assisted-by: Claude:claude-opus-4-6 --- include/linux/gfp.h | 4 ++++ mm/page_alloc.c | 17 +++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 7ccbda35b9ad..7069b810f171 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h @@ -320,6 +320,9 @@ static inline struct page *alloc_pages_node_noprof(int nid, gfp_t gfp_mask, struct folio *vma_alloc_folio_noprof(gfp_t gfp, int order, struct vm_area_struct *vma, unsigned long addr); +struct folio *vma_alloc_folio_user_addr_noprof(gfp_t gfp, int order, + struct vm_area_struct *vma, unsigned long addr, + unsigned long user_addr); #ifdef CONFIG_NUMA struct page *alloc_pages_noprof(gfp_t gfp, unsigned int order); struct folio *folio_alloc_noprof(gfp_t gfp, unsigned int order); @@ -345,6 +348,7 @@ static inline struct folio *folio_alloc_mpol_noprof(gfp_t gfp, unsigned int orde #define folio_alloc(...) alloc_hooks(folio_alloc_noprof(__VA_ARGS__)) #define folio_alloc_mpol(...) alloc_hooks(folio_alloc_mpol_noprof(__VA_ARGS__)) #define vma_alloc_folio(...) alloc_hooks(vma_alloc_folio_noprof(__VA_ARGS__)) +#define vma_alloc_folio_user_addr(...) alloc_hooks(vma_alloc_folio_user_addr_noprof(__VA_ARGS__)) #define alloc_page(gfp_mask) alloc_pages(gfp_mask, 0) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 0e6ec7310087..6d31a5c99e93 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5298,8 +5298,9 @@ struct folio *__folio_alloc_noprof(gfp_t gfp, unsigned int order, int preferred_ EXPORT_SYMBOL(__folio_alloc_noprof); #ifdef CONFIG_NUMA -struct folio *vma_alloc_folio_noprof(gfp_t gfp, int order, - struct vm_area_struct *vma, unsigned long addr) +struct folio *vma_alloc_folio_user_addr_noprof(gfp_t gfp, int order, + struct vm_area_struct *vma, unsigned long addr, + unsigned long user_addr) { struct mempolicy *pol; pgoff_t ilx; @@ -5314,8 +5315,9 @@ struct folio *vma_alloc_folio_noprof(gfp_t gfp, int order, return folio; } #else -struct folio *vma_alloc_folio_noprof(gfp_t gfp, int order, - struct vm_area_struct *vma, unsigned long addr) +struct folio *vma_alloc_folio_user_addr_noprof(gfp_t gfp, int order, + struct vm_area_struct *vma, unsigned long addr, + unsigned long user_addr) { if (vma->vm_flags & VM_DROPPABLE) gfp |= __GFP_NOWARN; @@ -5323,6 +5325,13 @@ struct folio *vma_alloc_folio_noprof(gfp_t gfp, int order, return folio_alloc_noprof(gfp, order); } #endif +EXPORT_SYMBOL(vma_alloc_folio_user_addr_noprof); + +struct folio *vma_alloc_folio_noprof(gfp_t gfp, int order, + struct vm_area_struct *vma, unsigned long addr) +{ + return vma_alloc_folio_user_addr_noprof(gfp, order, vma, addr, addr); +} EXPORT_SYMBOL(vma_alloc_folio_noprof); /* -- MST