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 0B941C76196 for ; Tue, 4 Apr 2023 02:32:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3CFE16B0071; Mon, 3 Apr 2023 22:32:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3589E6B0074; Mon, 3 Apr 2023 22:32:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1F96D6B0075; Mon, 3 Apr 2023 22:32:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 0B4F36B0071 for ; Mon, 3 Apr 2023 22:32:46 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id CA5834075B for ; Tue, 4 Apr 2023 02:32:45 +0000 (UTC) X-FDA: 80642135490.10.2906052 Received: from mail-qv1-f52.google.com (mail-qv1-f52.google.com [209.85.219.52]) by imf06.hostedemail.com (Postfix) with ESMTP id 0EE03180002 for ; Tue, 4 Apr 2023 02:32:43 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=HfQXWxzI; spf=pass (imf06.hostedemail.com: domain of yury.norov@gmail.com designates 209.85.219.52 as permitted sender) smtp.mailfrom=yury.norov@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1680575564; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=vCNpBaL/2sjk43glshlJ9dr/bfWByILp/8UnbydzX4U=; b=z1Wva1BZlRRvKH8SHaYV90iypiZ50BJsruTOwhHpgEdNg/KsrpqguIGlSV5oY9KWLS2UNK irk/vA+L+Eg1sXenYhilVhAGDhkiThhuJ804mYGyzlpLDhbUP9W3aIJICajB2DPhZ7oVWJ VgoqAB8p1kxiMlHuOaSovOtS3zgvGYg= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=HfQXWxzI; spf=pass (imf06.hostedemail.com: domain of yury.norov@gmail.com designates 209.85.219.52 as permitted sender) smtp.mailfrom=yury.norov@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1680575564; a=rsa-sha256; cv=none; b=3f/knizwC2upilIugOuzqvLPWi8k3NYxCH0O6LFuiZNuaUjasQDGLaYfyyIntY+CpLANnR OfFFMr6BWYcRd8qjc74Iy/53D32opfuR7IT2w4wFHK/w0Fu9Bes9ljsNf1+TLgQmrz7goj KDiSN0MDfOnqZ4HPMOa8nSUXqWMlkqU= Received: by mail-qv1-f52.google.com with SMTP id k12so3711166qvo.13 for ; Mon, 03 Apr 2023 19:32:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680575563; 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=vCNpBaL/2sjk43glshlJ9dr/bfWByILp/8UnbydzX4U=; b=HfQXWxzIQix+VIi881GeRfXBlQFa4xNJknc2QFY8fvVewOAR+SwFo9P7VOzoFHH/jP IzE8UBcIp//CKGgPdCdZeSi0lzAjLyCLVMQlsHXgX8NIRmLR0aHGL26RoIsHC91GyL1u ErgqCP+MwKMZoyx8JUAHJfiyVY2u532RnDZggR+obGjk7kwLbW6MGGxvyFmWhQpOD3b0 N2QV5nVzK6eC/bBVxgirphzpXM081O6lbgS5K3VRLXt+OaVADO1wt9207tw0j4Y5cMAF Jlv6ORh3LCUk6P10uMEncjhLY43irKtJQJxMdyGYnRTIh6TbTrcuKlAtYQwtMN2fsau7 UJVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680575563; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=vCNpBaL/2sjk43glshlJ9dr/bfWByILp/8UnbydzX4U=; b=X19omL9KdU5zB7ikjqdqN2FjBc+wPf7geRIYZl81MxFz9eg78IEVRTUB5OdC9Tw6V6 rNCPr+Ye7zYHCoky71m5NV2KVh43HJ8tIE8PXH1JHN/AeKfMvfppNw6BrLunPURD4p3u 7TemNFJxlLX0TjYQ9WQzhqHB3TQxY/5wklPvkeAML5Y2tfYgQN8kfZcISLJmQz4CrO4/ pbKqbfoWf+m2JX15iS2QfSHepKMM3oCuZuWyn6Plgma/Qg3+f6VzAdffrtrp8mu6L419 Jk19ECcLPAxzVK63HXpwPtWPs9gMFG3RMTPzHkDbp0Dvjhy/Js6VZwCk0HYZ5cQJPyOB g1HA== X-Gm-Message-State: AAQBX9cHpM1VwDXbpZOwZMiG8T6T4bIF+X9eBRnP8bhcdliuLhl1QQnV 2W4fQsZ1i3LtLsjh4/V/KmZvKD1DB4U= X-Google-Smtp-Source: AKy350aiI8VfU6NNjBRfNqhZFOMENHN2IpeCLyJp6i9s5cUHI/ZTkaJwNbsAPnzyX6uwHgc42xUNgg== X-Received: by 2002:a05:6808:148c:b0:386:ca25:9a9 with SMTP id e12-20020a056808148c00b00386ca2509a9mr812799oiw.7.1680575075248; Mon, 03 Apr 2023 19:24:35 -0700 (PDT) Received: from localhost ([12.97.180.36]) by smtp.gmail.com with ESMTPSA id x9-20020a05680801c900b003875e29808esm4606596oic.0.2023.04.03.19.24.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Apr 2023 19:24:34 -0700 (PDT) Date: Mon, 3 Apr 2023 19:24:32 -0700 From: Yury Norov To: Ye Bin Cc: dennis@kernel.org, tj@kernel.org, cl@linux.com, linux-mm@kvack.org, andriy.shevchenko@linux.intel.com, linux@rasmusvillemoes.dk, linux-kernel@vger.kernel.org, dchinner@redhat.com, yebin10@huawei.com Subject: Re: [PATCH 1/2] cpu/hotplug: introduce 'num_dying_cpus' to get dying CPUs count Message-ID: References: <20230404014206.3752945-1-yebin@huaweicloud.com> <20230404014206.3752945-2-yebin@huaweicloud.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230404014206.3752945-2-yebin@huaweicloud.com> X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 0EE03180002 X-Stat-Signature: fxmm5ip8ttrbzgquoqx1iptpsukp45aq X-HE-Tag: 1680575563-286702 X-HE-Meta: U2FsdGVkX1+rsyjVjt8TWPv5nc/OyDzU4A0z/z0NjFfJf45bcGnf5Y9M6Quwt7NZ+G8YlgremULxgv0AYWax0cKL6pT9Qrtw5hjn3lUyJ6mYib0krU9OPEXpIU3OwapeLk3iqRa8jEuQj5qs0m1pO4Fc7A06Xnp/7wl/9/ri3LDVOaNdR7S2s5fe9jPlgPvxRfm4gr05u0YTyByFhk6fFEjWb0Fku+58UWSDBCwHymBENEtS1PAhwj9KwjPRPztc1VC0xuBCF0lRxiZPnnh42gg76p2KUdG9pGe/Tt2yQ4Vst7Ual0ddf+lGweIC17ZRXgykyYU7BagrncLomJjllhmi4Gpg8UlnxIropxvyrxpwRfeZ8JHJ776OjFNTcEFe1QQnaRMQF/tigdyikoouae0F4CfhcxT0PjwiCdaIYE7Upn8BbKyMUL0F7ejty7i3KBCgmur9Jz3bndDcidMziS/3LLs51lH16iF4IbfU7ScuMIN/rPanwM8b2viSYXUB6M2OCHhroHSgPDXf1K1ZwJUxfdgoBfcF9GynvhMhAGiCk12Q4vI/R7oZKy+2empnXi0O4/CbSWDolWMOETdhf1M3yT4wEEOuZiwtAXbJn2obvoZwWuogo2pyc5w50bM6SzlEoV8Csnbspr6nfhlUIsVPhJPgzDlZwMdFeTZ6EU0Uqas0yOfzeUVQKL4igvmDFmIPdTVplIWYg0QJaQSw2PXQGyBU8R55Q5o8JsVDS7v5wOwaZda/mZK05ah7lxS01LEP7/QvnQwMm+aI85230otlTBaSXag4CVQYnr3RmNWpqGtP9T/Xu0G+lyhL8sfdeBBV2eUT3SQXdhspXGfWv202a0cudAYxAYsC116X89QBj2r+zes+cIKCdg3COgmTYKQGagIr1uF6AlReTHR8DkbrrA6u0tPSazXOYl0YgmYJwImXioRtcxH2ahtAPzvRhumt1/eIC7HNM/lmcU+ rX+QRMet N9IqowuWcBo+j9Y6aWKgSYzVHEuQzSsUTFZtmZAZfTnXVCrsPdaQSp82ZruRXU+GcCJ9Q3WK+DihZ6QelUdhONaPD7dZMpj+8fuv/BOi+YJdZ395BUGn/b5v6dKqjhSFZTGQWELiSwG+/5dCYIA4QZETHqbBIAZk2g026MKmCVt9dsI02mV4XvOdSeVBhVS1LyX/RLLw/ztAda45WioHc5ovPBhqBRrZqVpSX+rLH9cGYOBJCwXStMDPfrGa1alnzUjG5Rad1P2yAKnVMw0z6vDGVAGeg/5yRxt4epKJCd38Qm5OQKB3hGkEl/3qT4u8zTiH9Pjnn5r+b/N0PZ+ooDVWiV2uDMzt1Zk2GTF9F4EVO8qWMhEUIgrNPfUTkuXHT5tSEzSfFD5FBqD6xSxv9MXNK50cZ1WQiRa/Wlf+27RFBtzaXRj+L4BIlb/vZDsv6S5WvuKEE3ye5xfNYZpXk5w3Chr/Lym64AqYh5pFTd7hsIkiCMfBURwMtxBLWdLV6b4lKbqfCNBGrAkwCeypRq/iGGmQTnyaM19KJ9yXUhqPIrJ4= 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 Tue, Apr 04, 2023 at 09:42:05AM +0800, Ye Bin wrote: > From: Ye Bin > > Introduce '__num_dying_cpus' variable to cache the number of dying CPUs > in the core and just return the cached variable. > > Signed-off-by: Ye Bin > --- > include/linux/cpumask.h | 20 ++++++++++++++++---- > kernel/cpu.c | 2 ++ > 2 files changed, 18 insertions(+), 4 deletions(-) > > diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h > index 2a61ddcf8321..8127fd598f51 100644 > --- a/include/linux/cpumask.h > +++ b/include/linux/cpumask.h > @@ -135,6 +135,8 @@ extern struct cpumask __cpu_dying_mask; > > extern atomic_t __num_online_cpus; > > +extern atomic_t __num_dying_cpus; > + > extern cpumask_t cpus_booted_once_mask; > > static __always_inline void cpu_max_bits_warn(unsigned int cpu, unsigned int bits) > @@ -1018,10 +1020,14 @@ set_cpu_active(unsigned int cpu, bool active) > static __always_inline void > set_cpu_dying(unsigned int cpu, bool dying) > { > - if (dying) > - cpumask_set_cpu(cpu, &__cpu_dying_mask); > - else > - cpumask_clear_cpu(cpu, &__cpu_dying_mask); > + if (dying) { > + if (!cpumask_test_and_set_cpu(cpu, &__cpu_dying_mask)) > + atomic_inc(&__num_dying_cpus); > + } > + else { > + if (cpumask_test_and_clear_cpu(cpu, &__cpu_dying_mask)) > + atomic_dec(&__num_dying_cpus); > + } > } Corresponding set_cpu_online() is implemented in C-file probably for a reason. Are you sure that similar function for dying mask should reside in a header? If so, can you share your reasoning? Regardless, now that you added the identical function to set_cpu_online, I think it's worth to make it a general approach: void set_cpu_counted(unsigned int cpu, bool set, struct cpumask *mask, atomic_t *cnt); void __always_inline set_cpu_online(unsigned int cpu, bool online) { set_cpu_counted(cpu, online, &__cpu_online_mask, &__num_online_cpus); } void __always_inline set_cpu_dying(unsigned int cpu, bool dying) { set_cpu_counted(cpu, dying, &__cpu_dying_mask, &__num_dying_cpus); }