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 10C8EE95A86 for ; Sun, 8 Oct 2023 02:47:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2DE818D0018; Sat, 7 Oct 2023 22:47:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2674A8D0001; Sat, 7 Oct 2023 22:47:36 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 108E28D0018; Sat, 7 Oct 2023 22:47:36 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id F17A68D0001 for ; Sat, 7 Oct 2023 22:47:35 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id B64961402CF for ; Sun, 8 Oct 2023 02:47:35 +0000 (UTC) X-FDA: 81320758470.21.A069A15 Received: from dggsgout12.his.huawei.com (unknown [45.249.212.56]) by imf10.hostedemail.com (Postfix) with ESMTP id 137B7C001A for ; Sun, 8 Oct 2023 02:47:31 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=none; dmarc=none; spf=none (imf10.hostedemail.com: domain of houtao@huaweicloud.com has no SPF policy when checking 45.249.212.56) smtp.mailfrom=houtao@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1696733253; 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; bh=pxb4olwSZ3iAj6IslxYAdeCtrsRjULMkieLnmKwEE3g=; b=O8Nlqw05FQN9is7YUWaYvx7eNifKdsJHtIIDP3YwPUa3sJsyebfqsaK1uBf2R8++qr6Rdf zTXQhBracKI1nDBRQulXK2NXbVB935XTiUdBpj/tp+LFnvtoNWGy+v7g7QxVIcfAet0rHv pZN3hbau1N9KzK7HcM2A1WYwn89ok6I= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=none; dmarc=none; spf=none (imf10.hostedemail.com: domain of houtao@huaweicloud.com has no SPF policy when checking 45.249.212.56) smtp.mailfrom=houtao@huaweicloud.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1696733253; a=rsa-sha256; cv=none; b=4Js61kToJCc4bjGwHPYvHOh56jEy8M8L/Q1n1zYl/9Qz8GCt5ykvZcnHo0j1VbwROH6N8w EtgEqEThCjV+jYaBpi76a+nNbEO4/47ALbotjpj9jPHe/aGsJBU6tUsbQjFC7C/RqiHhYd MEI6iRVt2sYeUsRs3u3nqWQ8cMtpbAU= Received: from mail02.huawei.com (unknown [172.30.67.143]) by dggsgout12.his.huawei.com (SkyGuard) with ESMTP id 4S365D35l6z4f3jHs for ; Sun, 8 Oct 2023 10:47:12 +0800 (CST) Received: from [10.174.176.117] (unknown [10.174.176.117]) by APP4 (Coremail) with SMTP id gCh0CgB3_84yGCJlYSWkCQ--.61102S2; Sun, 08 Oct 2023 10:47:17 +0800 (CST) Subject: Re: [PATCH bpf-next 1/6] mm/percpu.c: introduce alloc_size_percpu() To: Andrew Morton 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 References: <20231007135106.3031284-1-houtao@huaweicloud.com> <20231007135106.3031284-2-houtao@huaweicloud.com> <20231007070458.dcd3dbc7ebb63d1a89d09325@linux-foundation.org> From: Hou Tao Message-ID: <3e6c42e6-c663-8242-8bfa-050008b40495@huaweicloud.com> Date: Sun, 8 Oct 2023 10:47:14 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 In-Reply-To: <20231007070458.dcd3dbc7ebb63d1a89d09325@linux-foundation.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Language: en-US X-CM-TRANSID:gCh0CgB3_84yGCJlYSWkCQ--.61102S2 X-Coremail-Antispam: 1UD129KBjvJXoW7Ww1fJw4DCrW3WFyftFy8uFg_yoW8Cr45pF W0ga4qkr40qr18Gw1Fvw1UXw4I9rs7GF4xJ3W5JF15CF9Ivr9xKFyvvrW5uFyrCr12vr12 vFZ0qan3AFZ8t3DanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUv2b4IE77IF4wAFF20E14v26ryj6rWUM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4 vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84ACjcxK6xIIjxv20xvEc7Cj xVAFwI0_Gr1j6F4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x 0267AKxVW0oVCq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG 6I80ewAv7VC0I7IYx2IY67AKxVWUGVWUXwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFV Cjc4AY6r1j6r4UM4x0Y48IcVAKI48JM4IIrI8v6xkF7I0E8cxan2IY04v7Mxk0xIA0c2IE e2xFo4CEbIxvr21l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxV Aqx4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r4a 6rW5MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6x kF7I0E14v26r4j6F4UMIIF0xvE42xK8VAvwI8IcIk0rVW3JVWrJr1lIxAIcVC2z280aVAF wI0_Jr0_Gr1lIxAIcVC2z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa 7IUbG2NtUUUUU== X-CM-SenderInfo: xkrx3t3r6k3tpzhluzxrxghudrp/ X-CFilter-Loop: Reflected X-Rspam-User: X-Stat-Signature: wi8ue81m9p7cqg1u4jso84tyscmsohws X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 137B7C001A X-HE-Tag: 1696733251-789589 X-HE-Meta: U2FsdGVkX1+Y+SINH0rMgapCQa591aj2nbxt3R0bugKhr5m3tw/tlzp9vuwlzr39eyK3oW8qpO66ET6b9IUzAGOqRtbtyPuMbhGrShoqBYecIAb/LbJ36IG1S1GrUn6Omt0iz2IacKoXNXAJqVCl/jYbn+QLe5XLk5rnMPKzGjM1gSSmUuIKfCPEVZxbC+GNfQyoCnWB4/bdF9nOL8OTon65ox7Modf1RAsA1S8pYYwIK0RzXdvSoymibpWB2dMVx54n7/SsPh4mbDp6+UmapTXQ+Es/ieMmJ5TUykBr9UDgcTy+S5QMzYZQ138adPy6bM0umBemia8YYXCCMo2nrg462HM2/A2g9jWhE4wzqEKZ0T6pJqarh1pV/RlltxBrfCpa108qRG8YA9Zuy3CL9O7OJA/q2nBrZldt8O6q/7swbV4gnkSIgoN0CeS+QlCxB4ctTiPIi13GpKxYkfIHXt6XEFFO7YACzl53tuMIf9oCeOpvGddECGzh6pTrlbFGahFuGnfsQ76rwyhlfbRDEBhtsNxax8jfSe5AUPYUF6IkNGtoKgTitXaHl6cPoXotfcbiKjrj/gbKwfUjaLJUeiQT6aycyxGUl1MgBtOSD1paoCYifb38mV+G/1EHNPVoooZJFomA5EIrW8yo8i+uLx0MZYWhywZvhMBuP3NgToxOsuFsemt7K5PIjCdreFG9GXuuF5+6ydoRqlVYkIbFR8shPdAc5HR4O4jOeh2ayXa7avkpYzF2eSQb1OVWj1hR+ELZHM7Q+WVb2G6FtCWfCwySS1tRfcaqIiBXWpjBlKepxltIPp4LeHAF+vO02tYO4P39wHX9IJf0pZxW5sUri0PyllAHS1Tg8pqz46s35d9qDAOw8gE9I6rPnktADMKZyWh3tzjmwH0EphzkGhiDZbOquXHTlob1x3tiC5vYOztGoa5l//808FRZPRObgsPvKFgFZd9xMITvFyKs4+N 3UZOVl/J WQRsutSoTq2H0njQbUZzpFMdKhBuhiRBC3n50Y4X8XQ18aY20AqreN431Mb6uUjtNa6oZzu6d2Nqwl9cvcmkn+bdKurNkzINTkR1flhC938XbxOEOOuwAqex1BRnb/qTvchYzBTRF5clYJ45LwuMqVhTkpOdDlriYxiEB5w4V9zvQKWqq9s6dYd+9my6AT54P+fHf9BkgprbWscb/5KRYqstd88WWZyi9ygqCXvXGveSsR8JRPuAac5YhIZu7Yb2r1QJ8f3XK4ljZeV9RA+jtsEK10KHBnOBTrOAKDcpcvU9sR7NbcaYmDhSyLdOmqaZF+bX7k6QCZoj7liXNQcK2uKBgqibOkV3POltT7VjoPaKrsthqcd4touoRWO0U8X3DZauu 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: Hi, On 10/7/2023 10:04 PM, Andrew Morton wrote: > 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. Thanks for this and all following suggestions. Will do in v2. > >> + 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. > >> +} >> +