linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Yury Norov <yury.norov@gmail.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-sh@vger.kernel.org, Jaroslav Kysela <perex@perex.cz>,
	Hans Verkuil <hverkuil@xs4all.nl>,
	"Md. Haris Iqbal" <haris.iqbal@ionos.com>,
	"K. Y. Srinivasan" <kys@microsoft.com>,
	Bart Van Assche <bvanassche@acm.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Jiri Pirko <jiri@resnulli.us>,
	Christian Brauner <brauner@kernel.org>,
	Nicholas Piggin <npiggin@gmail.com>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Thomas Gleixner <tglx@linutronix.de>,
	Karsten Keil <isdn@linux-pingi.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-usb@vger.kernel.org, linux-wireless@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	GR-QLogic-Storage-Upstream@marvell.com,
	Andrew Morton <akpm@linux-foundation.org>,
	Mark Rutland <mark.rutland@arm.com>,
	alsa-devel@alsa-project.org,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Eric Dumazet <edumazet@google.com>,
	Gregory Greenman <gregory.greenman@intel.com>,
	linux-s390@vger.kernel.org,
	Valentin Schneider <vschneid@redhat.com>,
	Leon Romanovsky <leon@kernel.org>, Will Deacon <will@kernel.org>,
	mpi3mr-linuxdrv.pdl@broadcom.com, Hugh Dickins <hughd@google.com>,
	iommu@lists.linux.dev, Martin Habets <habetsm.xilinx@gmail.com>,
	linux-media@vger.kernel.org, Stanislaw Gruszka <stf_xl@wp.pl>,
	linux-arm-msm@vger.kernel.org,
	Wenjia Zhang <wenjia@linux.ibm.com>,
	linux-m68k@lists.linux-m68k.org,
	linux-arm-kernel@lists.infradead.org,
	Sean Christopherson <seanjc@google.com>,
	Oliver Neukum <oneukum@suse.com>,
	Mirsad Todorovac <mirsad.todorovac@alu.unizg.hr>,
	linux-pci@vger.kernel.org,
	Rasmus Villemoes <linux@rasmusvillemoes.dk>,
	linux-hyperv@vger.kernel.org,
	Matthew Wilcox <willy@infradead.org>,
	Jiri Slaby <jirislaby@kernel.org>, Rob Herring <robh@kernel.org>,
	linux-rdma@vger.kernel.org,
	Damien Le Moal <damien.lemoal@opensource.wdc.com>,
	ath10k@lists.infradead.org, David Disseldorp <ddiss@suse.de>,
	Paolo Abeni <pabeni@redhat.com>,
	Fenghua Yu <fenghua.yu@intel.com>,
	Kees Cook <keescook@chromium.org>,
	"James E.J. Bottomley" <jejb@linux.ibm.com>,
	Akinobu Mita <akinobu.mita@gmail.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Borislav Petkov <bp@alien8.de>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Edward Cree <ecree.xilinx@gmail.com>,
	Shuai Xue <xueshuai@linux.alibaba.com>,
	netdev@vger.kernel.org, "David S. Miller" <davem@davemloft.net>,
	Rich Felker <dalias@libc.org>, Jan Kara <jack@suse.cz>,
	kvm@vger.kernel.org, Peter Zijlstra <peterz@infradead.org>,
	"H. Peter Anvin" <hpa@zytor.com>,
	sparclinux@vger.kernel.org,
	Alexey Klimov <alexey.klimov@linaro.org>,
	Ping-Ke Shih <pkshih@realtek.com>,
	linux-scsi@vger.kernel.org, linux-net-drivers@amd.com,
	x86@kernel.org, Jason Gunthorpe <jgg@ziepe.ca>,
	Ingo Molnar <mingo@redhat.com>,
	linux-serial@vger.kernel.org, Jakub Kicinski <kuba@kernel.org>,
	Chaitanya Kulkarni <kch@nvidia.com>,
	Kalle Valo <kvalo@kernel.org>,
	linux-block@vger.kernel.org, Hans de Goede <hdegoede@redhat.com>,
	linux-sound@vger.kernel.org, Jens Axboe <axboe@kernel.dk>,
	Michal Simek <monstr@monstr.eu>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Robin Murphy <robin.murphy@arm.com>,
	Bjorn Andersson <andersson@kernel.org>,
	linux-mips@vger.kernel.org, linux-bluetooth@vger.kernel.org,
	dmaengine@vger.kernel.org, Paolo Bonzini <pbonzini@redhat.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	linuxppc-dev@lists.ozlabs.org,
	Karsten Graul <kgraul@linux.ibm.com>
Subject: Re: [PATCH v4 00/40] lib/find: add atomic find_bit() primitives
Date: Thu, 20 Jun 2024 13:20:20 -0700	[thread overview]
Message-ID: <ZnSPBFW5wL0D0b86@yury-ThinkPad> (raw)
In-Reply-To: <CAHk-=wjv-DkukaKb7f04WezyPjRERp=xfxv34j5fA8cDQ_JudA@mail.gmail.com>

On Thu, Jun 20, 2024 at 12:26:18PM -0700, Linus Torvalds wrote:
> On Thu, 20 Jun 2024 at 11:32, Yury Norov <yury.norov@gmail.com> wrote:
> >
> > Is that in master already? I didn't get any email, and I can't find
> > anything related in the master branch.
> 
> It's 5d272dd1b343 ("cpumask: limit FORCE_NR_CPUS to just the UP case").

FORCE_NR_CPUS helped to generate a better code for me back then. I'll
check again against the current kernel.

The 5d272dd1b343 is wrong. Limiting FORCE_NR_CPUS to UP case makes no
sense because in UP case nr_cpu_ids is already a compile-time macro:

#if (NR_CPUS == 1) || defined(CONFIG_FORCE_NR_CPUS)
#define nr_cpu_ids ((unsigned int)NR_CPUS)
#else
extern unsigned int nr_cpu_ids;
#endif

I use FORCE_NR_CPUS for my Rpi. (used, until I burnt it)

> > > New rule: before you send some optimization, you need to have NUMBERS.
> >
> > I tried to underline that it's not a performance optimization at my
> > best.
> 
> If it's not about performance, then it damn well shouldn't be 90%
> inline functions in a header file.
> 
> If it's a helper function, it needs to be a real function elsewhere. Not this:
> 
>  include/linux/find_atomic.h                  | 324 +++++++++++++++++++
> 
> because either performance really matters, in which case you need to
> show profiles, or performance doesn't matter, in which case it damn
> well shouldn't have special cases for small bitsets that double the
> size of the code.

This small_const_nbits() thing is a compile-time optimization for a
single-word bitmap with a compile-time length.

If the bitmap is longer, or nbits is not known at compile time, the
inline part goes away entirely at compile time.

In the other case, outline part goes away. So those converting from
find_bit() + test_and_set_bit() will see no new outline function
calls.

This inline + outline implementation is traditional for bitmaps, and
for some people it's important. For example, Sean Christopherson
explicitly asked to add a notice that converting to the new API will
still generate inline code. See patch #13.

  reply	other threads:[~2024-06-21  6:04 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-20 17:56 [PATCH v4 00/40] lib/find: add atomic find_bit() primitives Yury Norov
2024-06-20 17:56 ` [PATCH v4 01/40] " Yury Norov
2024-06-20 17:56 ` [PATCH v4 02/40] lib/find: add test for atomic find_bit() ops Yury Norov
2024-06-20 17:56 ` [PATCH v4 18/40] powerpc: optimize arch code by using atomic find_bit() API Yury Norov
2024-06-20 17:57 ` [PATCH v4 37/40] KVM: PPC: Book3s HV: drop locking around kvmppc_uvmem_bitmap Yury Norov
2024-06-20 17:57 ` [PATCH v4 40/40] powerpc/xive: drop locking around IRQ map Yury Norov
2024-06-20 18:00 ` [PATCH v4 00/40] lib/find: add atomic find_bit() primitives Linus Torvalds
2024-06-20 18:32   ` Yury Norov
2024-06-20 19:26     ` Linus Torvalds
2024-06-20 20:20       ` Yury Norov [this message]
2024-06-20 20:32         ` Linus Torvalds

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZnSPBFW5wL0D0b86@yury-ThinkPad \
    --to=yury.norov@gmail.com \
    --cc=GR-QLogic-Storage-Upstream@marvell.com \
    --cc=akinobu.mita@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexey.klimov@linaro.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=andersson@kernel.org \
    --cc=ath10k@lists.infradead.org \
    --cc=axboe@kernel.dk \
    --cc=bp@alien8.de \
    --cc=brauner@kernel.org \
    --cc=bvanassche@acm.org \
    --cc=dalias@libc.org \
    --cc=damien.lemoal@opensource.wdc.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=davem@davemloft.net \
    --cc=ddiss@suse.de \
    --cc=dmaengine@vger.kernel.org \
    --cc=ecree.xilinx@gmail.com \
    --cc=edumazet@google.com \
    --cc=fenghua.yu@intel.com \
    --cc=geert@linux-m68k.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=gregory.greenman@intel.com \
    --cc=habetsm.xilinx@gmail.com \
    --cc=haris.iqbal@ionos.com \
    --cc=hdegoede@redhat.com \
    --cc=hpa@zytor.com \
    --cc=hughd@google.com \
    --cc=hverkuil@xs4all.nl \
    --cc=iommu@lists.linux.dev \
    --cc=isdn@linux-pingi.de \
    --cc=jack@suse.cz \
    --cc=jejb@linux.ibm.com \
    --cc=jgg@ziepe.ca \
    --cc=jiri@resnulli.us \
    --cc=jirislaby@kernel.org \
    --cc=kch@nvidia.com \
    --cc=keescook@chromium.org \
    --cc=kgraul@linux.ibm.com \
    --cc=kuba@kernel.org \
    --cc=kvalo@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=kys@microsoft.com \
    --cc=leon@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-m68k@lists.linux-m68k.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-net-drivers@amd.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mark.rutland@arm.com \
    --cc=mchehab@kernel.org \
    --cc=mingo@redhat.com \
    --cc=mirsad.todorovac@alu.unizg.hr \
    --cc=monstr@monstr.eu \
    --cc=mpi3mr-linuxdrv.pdl@broadcom.com \
    --cc=netdev@vger.kernel.org \
    --cc=npiggin@gmail.com \
    --cc=oneukum@suse.com \
    --cc=pabeni@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=perex@perex.cz \
    --cc=peterz@infradead.org \
    --cc=pkshih@realtek.com \
    --cc=robh@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=rostedt@goodmis.org \
    --cc=s.shtylyov@omp.ru \
    --cc=seanjc@google.com \
    --cc=sparclinux@vger.kernel.org \
    --cc=stf_xl@wp.pl \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=tsbogend@alpha.franken.de \
    --cc=vkuznets@redhat.com \
    --cc=vschneid@redhat.com \
    --cc=wenjia@linux.ibm.com \
    --cc=will@kernel.org \
    --cc=willy@infradead.org \
    --cc=x86@kernel.org \
    --cc=xueshuai@linux.alibaba.com \
    --cc=ysato@users.sourceforge.jp \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).