From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) (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 5814E39D3D3 for ; Thu, 6 Aug 2026 01:12:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.70 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785978763; cv=none; b=AaV4XNV30qT8oZ97uiAMcNrDV8yRV8kU57+zp3M72ZJ1SAeTbmaiSKz4IWjJuMExeBkz9IZbqF7kflBTQeuQSmR/kGgaGS5Cucm7zgrbwl+KBZvwFSBFODwU3e54hlfyvB2vlTd3erau62c+9OiTCVttt5S9kryftFAw8rpNz5Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785978763; c=relaxed/simple; bh=G0VTn7/E6JNtaJ++FUifo8AfjJ8iv2RRmBBnKrLozpo=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=orG8r4V7pWfmx+b/bjJ4GcYnPPhcLIaBypVPKLBaqIqanNqIGGL81Ak3bSGMAETZUm9e7L7J2Q76Jn0jWk8gA/gJWLGlkWn1kUTR9IFAYAAplkWxoHfjs6DIh6sUBZBSOU3tKFPsQNBRBBtpUXNtPL5znF4mUzJbBemtwnPo0Y0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--jyescas.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=UTGm3NEQ; arc=none smtp.client-ip=209.85.216.70 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--jyescas.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="UTGm3NEQ" Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-38f97b3f853so1966196a91.3 for ; Wed, 05 Aug 2026 18:12:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1785978762; x=1786583562; 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=Vmtnxr/CFlJueuSd4faqGngHGq0KEMm5ZYo1LjMLsQA=; b=UTGm3NEQhWsUAih9oCWw+6YAW/E+H0Za+IdRhhdRFgHe0gQfzuuEtwQiH4t8GTX1Iv hixqUzpgVKAMDyrdfWQW70C2LEADTGZkYyd1JXq8SE3tueWdLNe/eNkXEfGQTVjqgEf3 j3lqRDe4s7xzxXXgtwd7hkL+gfcS0daCudlq6SIQZRrTGYHcAP7QYL5PdEyI0mjFYPh2 LDbldmZgLx3M8AYrVQZu+VogtFlBw/pCc1LbP3k5dENIGLH5k3OJzwPsuYnCHrnuSQNT zgknhEREM315E8vFGiVsFylI7rVCazyOLfMYLGx/IIvMq4QmOpQvmsuZXu6iQf/iCKJh KxVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785978762; x=1786583562; 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=Vmtnxr/CFlJueuSd4faqGngHGq0KEMm5ZYo1LjMLsQA=; b=YmgrkYSidIq6LEjN8fsgd+MrcPEgCMVIfA8nQ/S0AhXYYBubClqhkrwOFkSheRfjOJ S/rp6pmRTqO4eoOmiJXKM3S3qIPJwF4qH1VXperFXNKBhz6WOR8GFC8nIWyOFfq1LE6/ uBwsJX203yzWQg9wVdSyz1eek/nOknA5y3/NxaNssBbKqhnpqcq/bD6HFkDlY6ZsuQIy //jFRdkGccuCDq7sibPX/+GQ5UigQKeyr03oCPjzjD01XhQA9NTmha+QJY0uW6X2zan5 Aif8UT89Z0Xh+x0ljMuxa6THXFGoZEkHhTlQJygUzTHN5ot9G+QAVNAILKM+nf6Ww+4t Qzqg== X-Forwarded-Encrypted: i=1; AHgh+Rp3YLPAyBdrONswdOt58IheN3xaBBz9MNg2Y+yLucJU5x8dEU+Ok7E0vMUTi5wNtBLQKDk7Zbix26wbAVs=@vger.kernel.org X-Gm-Message-State: AOJu0YzKZ5XG0yJmAu/Fynu97xVeU2f2+9dr0fJzGwEXUutqHZ1higoY hD+LJ04qdYGSR5KlKMINOb0Av5XI6w7wo/Z/dbt6N0pCj0RwPPZ13yWGM1L2KcdpRe46G0HCXTa meGSmEhoZhQ== X-Received: from dybde36.prod.google.com ([2002:a05:7300:ae24:b0:311:4e0a:d4e1]) (user=jyescas job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:3847:b0:38e:b400:a860 with SMTP id 98e67ed59e1d1-3903c5a7285mr9799538a91.13.1785978761582; Wed, 05 Aug 2026 18:12:41 -0700 (PDT) Date: Wed, 5 Aug 2026 18:09:11 -0700 In-Reply-To: <20260806011048.517229-1-jyescas@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260806011048.517229-1-jyescas@google.com> X-Mailer: git-send-email 2.55.0.629.g250fe7f194-goog Message-ID: <20260806011048.517229-11-jyescas@google.com> Subject: [RFC PATCH v2 10/16] mm: Set the selected zone in gfp_t flags From: Juan Yescas To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , open list , "open list:MEMORY MANAGEMENT - CORE" Cc: jyescas@google.com, android-mm@google.com, ljs@kernel.org, fvdl@google.com, tkjos@google.com, minchan@google.com, dskiba@google.com, open list , "open list:MEMORY MANAGEMENT - CORE" Content-Type: text/plain; charset="UTF-8" This change sets the selected zone in gfp_t flags. Signed-off-by: Juan Yescas --- Changes in v2: - Use static for the set_zone_to_alloc_from function. mm/page_alloc_hogger.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/mm/page_alloc_hogger.c b/mm/page_alloc_hogger.c index 9b1eaf3814e1..0e9ac43e9868 100644 --- a/mm/page_alloc_hogger.c +++ b/mm/page_alloc_hogger.c @@ -127,6 +127,34 @@ struct page_alloc { static struct kmem_cache *req_alloc_cache; static struct kmem_cache *page_alloc_cache; +static inline void set_zone_to_alloc_from(int zone_idx, gfp_t *flags_ptr) +{ + switch (zone_idx) { +#ifdef CONFIG_ZONE_DMA + case ZONE_DMA: + *flags_ptr |= __GFP_DMA; + break; +#endif +#ifdef CONFIG_ZONE_DMA32 + case ZONE_DMA32: + *flags_ptr |= __GFP_DMA32; + break; +#endif +#ifdef CONFIG_HIGHMEM + case ZONE_HIGHMEM: + *flags_ptr |= __GFP_HIGHMEM; + break; +#endif + case ZONE_MOVABLE: + *flags_ptr |= __GFP_MOVABLE; + break; + case ZONE_NORMAL: + default: + *flags_ptr |= 0; + break; + } +} + /** * req_page_alloc_write() - Allocates the pages on the requested node, zone, * order and migrate type. Once the allocation is performed, a file is created @@ -135,8 +163,10 @@ static struct kmem_cache *page_alloc_cache; static ssize_t req_page_alloc_write(struct file *file, const char __user *ubuf, size_t cnt, loff_t *ppos) { + struct req_alloc *req = file->private_data; unsigned long nr_pages_allocs; unsigned long *allocs_ids; + gfp_t flags = 0; int ret; ret = kstrtoul_from_user(ubuf, cnt, 10, &nr_pages_allocs); @@ -148,6 +178,8 @@ static ssize_t req_page_alloc_write(struct file *file, const char __user *ubuf, if (!allocs_ids) return -ENOMEM; + set_zone_to_alloc_from(req->zone_idx, &flags); + kfree(allocs_ids); return cnt; -- 2.55.0.629.g250fe7f194-goog