From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (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 AD6053DDDD0 for ; Fri, 17 Jul 2026 23:33:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784331189; cv=none; b=K5z4bf3JwREInTx8tyeQhGayhirs9VT19n7JUs9jgqW2nZdWpizvPRK9cE2x+CjzsGPbJ3kAbwdeduY5IcHfivjFBkc0laoIJ+zbKMhO02mlyMdrgz0HRH1xO9AtQk1xraFjHqGmhUTrR3FSzyptZ0sC+LzkBWYIB0GcR5RTCi0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784331189; c=relaxed/simple; bh=TEMdKZg4KEifG3GYYRMv7C2bXIPR7Kfr8gDF+3F+4So=; h=Mime-Version:Content-Type:Date:Message-Id:From:To:Cc:Subject: References:In-Reply-To; b=XPpO5iaFc+m9NvRVNT6UhdXSHCdsz+wzk1EFrVbt4NXeDR3AZQBnP4nFtEer4ksbp7v24Xt+iEZlS0YsVToD0WS3sd6xonK293omrRBn7h6FSK+jhFaK6Dc0844nJd7ChDc9V0Kwi3qRzzXRkHYIAjGv2t1ga9QB+HRNL8hwFmo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=etsalapatis.com; spf=pass smtp.mailfrom=etsalapatis.com; dkim=pass (2048-bit key) header.d=etsalapatis-com.20251104.gappssmtp.com header.i=@etsalapatis-com.20251104.gappssmtp.com header.b=USfJSyRc; arc=none smtp.client-ip=209.85.214.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=etsalapatis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=etsalapatis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=etsalapatis-com.20251104.gappssmtp.com header.i=@etsalapatis-com.20251104.gappssmtp.com header.b="USfJSyRc" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-2ced3386430so47944185ad.1 for ; Fri, 17 Jul 2026 16:33:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etsalapatis-com.20251104.gappssmtp.com; s=20251104; t=1784331186; x=1784935986; darn=vger.kernel.org; h=in-reply-to:references:subject:cc:to:from:message-id:date :content-type:content-transfer-encoding:mime-version:from:to:cc :subject:date:message-id:reply-to:content-type; bh=84V6BymvtCbFj4DfL8xP1DyPKjZR0+mssoiC4CaKJs8=; b=USfJSyRcTFRqO6uNklw3ypC6WVQYyHwlwUC7TjBuAZagoA1aD5QGVt26A1Tq/PVnIJ gFOxgrT7koqhQHue919xUaCuaLntg6jJV/duclNOxcpFr1fq1saEuVS2NGkUCtAfl/E2 26Ypii8vjMCgJYqA3kVBIITKv5vFX+MVwh5c+nGIUDShoUtdatPVqgpzus1xTEq0WGoT WkmJYy/pVqou7Pn3kxXvOevni3kPME7XuUVOjYAMz8ACgIynIBU1gc1Ezpg2obdMSsvz pQQmCGciYvEre4pXw4phSVchV2h/U5JBm3x9pjOHcFr+aLCzjyG700ImejdPmAbctBkH HBqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784331186; x=1784935986; h=in-reply-to:references:subject:cc:to:from:message-id:date :content-type:content-transfer-encoding:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=84V6BymvtCbFj4DfL8xP1DyPKjZR0+mssoiC4CaKJs8=; b=rRUXVfJ0XjI01n3iwpSMMX3SH6dzn8D+UDVscUXzelBW+pWiTIEx8ATOuQFGlgc+r2 +aS1R77TrZ/u0N2rMDmJdzHVKWWz0DHXDxRpoMeCQz4ySfbKyn3IR+t5ySgneQqcY7Bt NvCx2clJAY2SgfPbtG22E0v5i5etrT1eMmxcDj1ml+CHQ45SvGHJ+9nH5g9bfPr5jjY5 ItAOeAPy7TPOa9u95BJ7k91Lirg8hekakv8nzCqLZg0abc0361PBYKlQu1mQ41DrlSqW Pokw2QVouLUO2IXMwWESUJ4+z33vm6SNvyeyYSs/JZOMkzzE2mPH5mxonzBIZmZEOk3E Ruug== X-Forwarded-Encrypted: i=1; AHgh+Rq9IxLK70dC+ebqKhuYxwSwf67nPgW/uR8jrMZayr4nbBlFsV0tBFOQphtr9eyzlsYw9WEK1tWkEJchSm4=@vger.kernel.org X-Gm-Message-State: AOJu0YxTQ1eweYTwJ1VnwNXU024G3aHKSIsvjSNZZYfE2SegZ4wa6UfS QytUjytEfELMNjzS/mBch+RfsNrnK8G7Kam6lRIMuHsiwmQYurD6tgpKJQ9mmoGnNn8= X-Gm-Gg: AfdE7cmS5bBCRSv7dtJak4j4mnhpSYVwGeqeH7elXgCGbyvpahHb7AkRZhO9ySjFhTE LedJov/DhP/97AD+MN651NAhVm85ThhY0895P8KPxrq9nR+G5aiKvP1opLSSSq5pt0I8dlwT7Jk gXxR+kbQ79PRRH/jXEv2+bwD0q83J0ubBuvYtipRmHTT/aP92FMzXIe9FrzFhd/ksHHWUOyl9A8 /EigKTJXehOtFws07/YJwAl2EqT6BjntFFUOyrQ5DDkF0vejK3e/JePmHwM3I/+MoU9k0NVxaxK PfBhm+tqeN9H09we+vLQ4pKD2vxWIOyq1/JPuJTIZXEh+KtObjuecA+WXrOrp0F5sO3/B5FohMU DnSwoa+7vVUcGdoGrAujLPsduQn0uLBvH2W+RLUER7Bfxu176qhHvkpiIV3A= X-Received: by 2002:a17:903:2287:b0:2ca:b8fd:1a8f with SMTP id d9443c01a7336-2cf349c2497mr53405745ad.39.1784331185827; Fri, 17 Jul 2026 16:33:05 -0700 (PDT) Received: from localhost ([2620:10d:c090:600::f5f9]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13ce2ddfb35sm9069068c88.14.2026.07.17.16.33.04 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 17 Jul 2026 16:33:05 -0700 (PDT) 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 Date: Fri, 17 Jul 2026 19:33:03 -0400 Message-Id: From: "Emil Tsalapatis" To: "Jiayuan Chen" , Cc: "Alexei Starovoitov" , "Daniel Borkmann" , "Andrii Nakryiko" , "Eduard Zingerman" , "Kumar Kartikeya Dwivedi" , "Martin KaFai Lau" , "Song Liu" , "Yonghong Song" , "Jiri Olsa" , "Emil Tsalapatis" , "Shuah Khan" , "Woojin Ji" , "Puranjay Mohan" , "Saket Kumar Bhaskar" , "Ihor Solodrai" , , Subject: Re: [PATCH bpf-next v2 2/4] bpf: Add memory usage for arena X-Mailer: aerc 0.21.0-0-g5549850facc2 References: <20260717114117.350851-1-jiayuan.chen@linux.dev> <20260717114117.350851-3-jiayuan.chen@linux.dev> In-Reply-To: <20260717114117.350851-3-jiayuan.chen@linux.dev> On Fri Jul 17, 2026 at 7:37 AM EDT, Jiayuan Chen wrote: > arena is the only map type whose map_mem_usage() still returns 0, so > "bpftool map show" and fdinfo always showed 0 memlock for an arena no > matter how many pages it had. > > Count the pages that are actually mapped into the arena: bump a counter i= n > apply_range_set_cb() when a page goes in and drop it in > apply_range_clear_cb() when a page goes out, both under the arena spinloc= k. > map_mem_usage() then just returns nr_pages << PAGE_SHIFT. > > Only real data pages are counted, not the scratch page. > > Signed-off-by: Jiayuan Chen Reviewed-by: Emil Tsalapatis > > --- > To sashiko: > 1. __bpf_alloc_page::can_alloc_pages already check whether we are under l= ock. > 2. apply_to_page_range() does not allocate page tables here. arena_map_al= loc() already did it. > --- > kernel/bpf/arena.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/kernel/bpf/arena.c b/kernel/bpf/arena.c > index 8dbc24460890..f046e878f7ae 100644 > --- a/kernel/bpf/arena.c > +++ b/kernel/bpf/arena.c > @@ -55,8 +55,10 @@ struct bpf_arena { > struct vm_struct *kern_vm; > struct page *scratch_page; > struct range_tree rt; > - /* protects rt */ > + /* protects rt and nr_pages */ > rqspinlock_t spinlock; > + /* number of pages currently populated in the arena */ > + u64 nr_pages; > struct list_head vma_list; > /* protects vma_list */ > struct mutex lock; > @@ -196,6 +198,7 @@ static int apply_range_set_cb(pte_t *pte, unsigned lo= ng addr, void *data) > set_pte_at(&init_mm, addr, pte, pteval); > #endif > d->i++; > + WRITE_ONCE(d->arena->nr_pages, d->arena->nr_pages + 1); > return 0; > } > =20 > @@ -231,6 +234,7 @@ static int apply_range_clear_cb(pte_t *pte, unsigned = long addr, void *data) > return 0; > =20 > __llist_add(&page->pcp_llist, d->free_pages); > + WRITE_ONCE(d->arena->nr_pages, d->arena->nr_pages - 1); > return 0; > } > =20 > @@ -413,7 +417,9 @@ static int arena_map_check_btf(struct bpf_map *map, c= onst struct btf *btf, > =20 > static u64 arena_map_mem_usage(const struct bpf_map *map) > { > - return 0; > + struct bpf_arena *arena =3D container_of(map, struct bpf_arena, map); > + > + return (u64)READ_ONCE(arena->nr_pages) << PAGE_SHIFT; > } > =20 > struct vma_list {