From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1720AE95A63 for ; Sat, 7 Oct 2023 14:05:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 846F76B02A1; Sat, 7 Oct 2023 10:05:11 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7CD086B02A4; Sat, 7 Oct 2023 10:05:11 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 66D7E6B02A5; Sat, 7 Oct 2023 10:05:11 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 52FBA6B02A1 for ; Sat, 7 Oct 2023 10:05:11 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 1C051C0278 for ; Sat, 7 Oct 2023 14:05:11 +0000 (UTC) X-FDA: 81318837222.25.EA7FE81 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf30.hostedemail.com (Postfix) with ESMTP id C68D78001D for ; Sat, 7 Oct 2023 14:05:08 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=Xc948M9j; dmarc=none; spf=pass (imf30.hostedemail.com: domain of akpm@linux-foundation.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1696687509; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=hk9hbMUEXhAODWoBJeeDxxtv/byBdFRr6pe5JfyE7P4=; b=3wrosfTkVLTbVFsW8fTHIYzpL6kUFyCaG/KelNArRgnP5XY5opPNt9RzGFTKZvx3ZZJDdh N21Br3uiOvxbBQGGyb1/TnkrktgWM/ZYzGqzgtxrd66mS/ZXO5BeU7ooBqK2OuQn141Ua4 kpyOCTE4AdT+g5YMtfUvBi1fcucygtw= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=Xc948M9j; dmarc=none; spf=pass (imf30.hostedemail.com: domain of akpm@linux-foundation.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1696687509; a=rsa-sha256; cv=none; b=Gd/B8dNTEk8t8/jg1ecpz0/Pe8KkGBNCwetdvzfp96ROYR0McBXS1gyK3vKkeuap1arTmP DiwR1GFTU9muL4GUXtfSpEueHkYdUB14Hh74THf8fpNOWSuuxQGRko/4FPC+Xy+fUBHxjZ 4PiGk6SgzcpzyYmkpnDaim1wZCqx2gA= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 9191CCE0F11; Sat, 7 Oct 2023 14:05:05 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 222D1C433C7; Sat, 7 Oct 2023 14:05:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1696687504; bh=TXOjA+Agd74J8rmdkEBR95cIiet2rNUu8041DrQChKc=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Xc948M9jX9aKrqVhVnqDtgcXkAk/ihHXD0NAgceg6QK/2XjNsrBsDvGsQv+793RYd Ff/MB0NV5Gm9F3yZooF3TqRuSLavDNp358VtYbJsZ3W+GpoRuWjuqHPhJF6SNQWvT1 Ok33UEBMlSrFRR/Jm33uXyZFwolpK61pDIBf7TVc= Date: Sat, 7 Oct 2023 07:04:58 -0700 From: Andrew Morton To: Hou Tao Cc: bpf@vger.kernel.org, linux-mm@kvack.org, Martin KaFai Lau , Alexei Starovoitov , Andrii Nakryiko , Song Liu , Hao Luo , Yonghong Song , Daniel Borkmann , KP Singh , Stanislav Fomichev , Jiri Olsa , John Fastabend , houtao1@huawei.com, Dennis Zhou , Tejun Heo , Christoph Lameter Subject: Re: [PATCH bpf-next 1/6] mm/percpu.c: introduce alloc_size_percpu() Message-Id: <20231007070458.dcd3dbc7ebb63d1a89d09325@linux-foundation.org> In-Reply-To: <20231007135106.3031284-2-houtao@huaweicloud.com> References: <20231007135106.3031284-1-houtao@huaweicloud.com> <20231007135106.3031284-2-houtao@huaweicloud.com> X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: C68D78001D X-Stat-Signature: n9ucwdygora7ioaqk6pt5yy6a5swchn6 X-Rspam-User: X-HE-Tag: 1696687508-574872 X-HE-Meta: U2FsdGVkX18+pMdt9gDMzG1mAPYr1BKxz54yafwmy+TcRXdhNUp8gJBe7LpJiUUoGDVMobFhHAdpzPctA3H2pEulA7SwQyJjRyoiKk3XTtj5VDh7ta4vNoVGNmXBcFv/WUIhBOBpAyiTaY+kD20pDIo4/bqT7sblo5vMKcgIVq6RwnK4jNbK/3ExPofTN44LeiTUGW8NJaUA12qYE6IR9nz5N8ZCM0GHcJGj9XLHv/hOG1iytbEZ0p49cHT+W6qVf86ZjZLlQv03Eyh3actv+MFdynpLklrN4A6+E0FxF+OJZRuCx/xbUCIeIsx5TqQEzJP6IKA4tCMxkKhe85AS/B81EWLfvmcu1tprcVJhdY2ZRqvT9ycXm9TMukUUbLCqZdzg3PXCZRmfunmg0JPuNxm46uhNBI0yZdoJvgYYf5JVFyV/+R0+W4ciJtnkZIaHdEjOFMjwYN5W0sB+O1LxYgUOkN47AWkJTMQ78VoXXRYRh28kDI6W/gD4ev/gzGZYzC+9jMutdkcqDVKDsKvC6R4QFFUK72ROqCS4cq+8rYaN6/V/mskR4nblbJK9/94KwFgSAiUZjTKC92HtIBfX1XHZhSXMmKaotNMUFn6ezjZ9jPqk+8WH+kXyJywZ529wDYbowDg8/evDRj8hibcrqW2oo4d18Jqld4YO26V6QujP82bKfr8HArPQ+1HU42oSQAvIatHQUEqNsxafApVaxHPaP+OURS+nNG10ano3OSI6skpUve3tkDwy8o/AH6+ZU0nNPIrLMq9z5sc1J0+5juozAI+aNvq2RjW5z34BIFFcOCzp0+c5j9bth8Or8sLezwSzBOffgK1nK/A6wY3MpXDc/XDFUR9qirQQxWqueYqJ9DsGGAD8rFDo1p39zgNAleFI5Q/BDZP5HIiama1U0AMnz/icr0NRyrnXgkRHgvQoNHDuZEop3ss3C2Fj+++6C3Xn1kAqKVqcny/07ly iA7nTqSS KEAqvcpoWBeUEyc5Dx3M+BGO0Q+3CTJHqOkvNoPKi4BDxnmNuF8swqDVu0qdPESy3HueNEbLumLst5UkBx+4qvVMjeXKOeCGqDKCgaLCk9INKFLnv7dj5MN3kyaUGFoGTxAFy+Hfwh/DxRFpaGVWc6a0Nr1TPcuspQYMB8CzpM+j+db6R5xLzYr5WkKmgLNjzczTpvN0Y+Ec3MsPq5B0k/0BK5cMn0Cye00HrB3chd7vgNQZP2KmsxRjVqq06Pnvmh9xSlBGE2Ii47zTCsQATVYYiSWL3J3k4pjTDrlaUp2T9L+0Fnv6816o2S8IEbRKz5uKzlVIXwBBVKzFtCcZN+hhHyY2XhtHCaBm2wJfvXYCSdM9UOmWq6BhkeFfT5LJ0v5cChsz9KsGr68EPtDcp3SKui2Dx4NN+HDY0Ms1WGZL6rGcLVsEk62whNA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Sat, 7 Oct 2023 21:51:01 +0800 Hou Tao wrote: > From: Hou Tao > > Introduce alloc_size_percpu() to get the size of the dynamic per-cpu > area. It will be used by bpf memory allocator in the following patches. > BPF memory allocator maintains multiple per-cpu area caches for multiple > area sizes and it needs the size of dynamic per-cpu area to select the > corresponding cache when bpf program frees the dynamic per-cpu area. > > --- a/mm/percpu.c > +++ b/mm/percpu.c > @@ -2244,6 +2244,35 @@ static void pcpu_balance_workfn(struct work_struct *work) > mutex_unlock(&pcpu_alloc_mutex); > } > > +/** > + * alloc_size_percpu - the size of the dynamic percpu area > + * @ptr: pointer to the dynamic percpu area > + * > + * Return the size of the dynamic percpu area @ptr. > + * > + * RETURNS: > + * The size of the dynamic percpu area. > + * > + * CONTEXT: > + * Can be called from atomic context. > + */ > +size_t alloc_size_percpu(void __percpu *ptr) > +{ > + struct pcpu_chunk *chunk; > + int bit_off, end; It's minor, but I'd suggest unsigned long for both. > + void *addr; > + > + if (!ptr) > + return 0; > + > + addr = __pcpu_ptr_to_addr(ptr); > + /* No pcpu_lock here: ptr has not been freed, so chunk is still alive */ > + chunk = pcpu_chunk_addr_search(addr); > + bit_off = (addr - chunk->base_addr) / PCPU_MIN_ALLOC_SIZE; void* - void* is a ptrdiff_t, which is long or int. > + end = find_next_bit(chunk->bound_map, pcpu_chunk_map_bits(chunk), bit_off + 1); find_next_bit takes an unsigned long > + return (end - bit_off) * PCPU_MIN_ALLOC_SIZE; And then we don't need to worry about signedness issues. > +} > +