All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Laight <david.laight.linux@gmail.com>
To: Marco Elver <elver@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Will Deacon <will@kernel.org>, Ingo Molnar <mingo@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Boqun Feng <boqun.feng@gmail.com>,
	Waiman Long <longman@redhat.com>,
	Bart Van Assche <bvanassche@acm.org>,
	llvm@lists.linux.dev, Catalin Marinas <catalin.marinas@arm.com>,
	Arnd Bergmann <arnd@arndb.de>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/3] arm64: Optimize __READ_ONCE() with CONFIG_LTO=y
Date: Tue, 27 Jan 2026 10:13:34 +0000	[thread overview]
Message-ID: <20260127101334.352794d1@pumpkin> (raw)
In-Reply-To: <CANpmjNNUGzgLxSj78ptW-t5ux7WL7sq3q-h9acGEfJxC2u==hQ@mail.gmail.com>

On Tue, 27 Jan 2026 00:15:38 +0100
Marco Elver <elver@google.com> wrote:

> On Mon, 26 Jan 2026 at 12:16, David Laight <david.laight.linux@gmail.com> wrote:
> >
> > On Mon, 26 Jan 2026 01:25:11 +0100
> > Marco Elver <elver@google.com> wrote:
...
> > Also is the 'default' branch even needed?
> > READ_ONCE() rejects sizes other than 1, 2, 4 and 8.
> > A quick search only found one oversize read - for 'struct vcpu_runstate_info'
> > in arch/x86/kvm/xen.c
> > Requiring that code use a different define might make sense.
> >
> > I also did some x86-64 build timings with compiletime_assert_rwonce_type()
> > commented out.
> > Expanding and compiling that check seems to add just over 1% to the
> > build time.
> > So anything to shrink that define is likely to be noticeable.  
> 
> The compiletime_assert_rwonce_type() is for the benefit of the
> asm-generic variant, which is implemented like the 'default' case here
> by default.

True, but compiletime_assert_rwonce_type() stops you getting to the
'default' case in this version - unless code uses __READ_ONCE() and
I couldn't find any examples.
So the 'default' could probably just be a BUILD_BUG_ON().

Although part of the 'bloat' from compiletime_assert_rwonce_type() is
the repeated definition of the error function.

A few places define an 'error function' rather than using
compiletime_assert(), perhaps there should be:
#define compiletime_error_fn(name, msg) \
	__noreturn extern void name __compiletime_error(msg)
for consistency.
If compiletime_assert_rwonce_type() used a named function this code
could just call the same one.

> This here is only the arm64 override of all that with LTO.

I keep missing that conditional (and that it means clang) ...
It also explains why only a few builds get a signedness error from min()
because the 'atomic ? x : y' causes integer promotion to happen.

	David


  reply	other threads:[~2026-01-27 10:13 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-26  0:25 [PATCH 0/3] arm64: Fixes for __READ_ONCE() with CONFIG_LTO=y Marco Elver
2026-01-26  0:25 ` [PATCH 1/3] arm64: Fix non-atomic " Marco Elver
2026-01-26  0:25 ` [PATCH 2/3] arm64: Optimize " Marco Elver
2026-01-26  7:56   ` Arnd Bergmann
2026-01-26 19:54     ` Marco Elver
2026-01-26 22:24       ` Arnd Bergmann
2026-01-27 12:01         ` Marco Elver
2026-01-27 14:30           ` David Laight
2026-01-27 15:04             ` Marco Elver
2026-01-27 18:54               ` David Laight
2026-01-26 22:55       ` David Laight
2026-01-26 11:16   ` David Laight
2026-01-26 23:15     ` Marco Elver
2026-01-27 10:13       ` David Laight [this message]
2026-01-26  0:25 ` [PATCH 3/3] arm64, compiler-context-analysis: Permit alias analysis through " Marco Elver

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=20260127101334.352794d1@pumpkin \
    --to=david.laight.linux@gmail.com \
    --cc=arnd@arndb.de \
    --cc=boqun.feng@gmail.com \
    --cc=bvanassche@acm.org \
    --cc=catalin.marinas@arm.com \
    --cc=elver@google.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=longman@redhat.com \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=will@kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.