From: Segher Boessenkool <segher@kernel.crashing.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
Sathvika Vasireddy <sv@linux.ibm.com>,
nathan@kernel.org, nsc@kernel.org, maddy@linux.ibm.com,
mpe@ellerman.id.au, npiggin@gmail.com, jpoimboe@kernel.org,
ojeda@kernel.org, masahiroy@kernel.org, lossin@kernel.org,
tamird@kernel.org, thomas.weissschuh@linutronix.de,
rostedt@goodmis.org, ihor.solodrai@linux.dev, thuth@redhat.com,
pmladek@suse.com, aliceryhl@google.com, elver@google.com,
kees@kernel.org, legion@kernel.org, ardb@kernel.org,
yuxuan.zuo@outlook.com, alexghiti@rivosinc.com,
alexandre.chartre@oracle.com, bp@alien8.de,
linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v1 1/6] objtool/powerpc: Add build-time fixup of alternate feature branch targets
Date: Wed, 6 May 2026 09:28:30 -0500 [thread overview]
Message-ID: <aftQDiJBZ032-Oem@gate> (raw)
In-Reply-To: <20260506071753.GA3126523@noisy.programming.kicks-ass.net>
On Wed, May 06, 2026 at 09:17:53AM +0200, Peter Zijlstra wrote:
> On Tue, May 05, 2026 at 05:48:32PM +0200, Christophe Leroy (CS GROUP) wrote:
> > bclr (which is the return INSN_RETURN) has type 19
> >
> > By the way you can have a look at https://patchwork.ozlabs.org/project/linuxppc-dev/patch/bfa8364da047d8610a09458a1cd924a0566aedbb.1736955567.git.christophe.leroy@csgroup.eu/
>
> That is indeed more; isn't bcl something like COND_CALL ? (another one
> of them things we don't have).
Yeah, all of bc[l][a] are conditional branches. "a" (AA=1) means the
branch target is an absolute address (in the top or bottom 8kB of the
address space), and "l" (LK=1) means set LR to the NIA ("next
instruction address") before doing the branch.
The BO field describes the condition. 0x14 means "always". (But there
also are primary opcodes for b[l][a], with a bigger target field, 24
bits instead of the 14 bits of bc[l][a]; you do not have the BI and BO
fields then of course) ("branch index" and "branch option" btw).
> > That patch has all the objtool decoding. By the way objtool is missing a
> > INSN_CONDITIONAL_RETURN, also see https://patchwork.ozlabs.org/project/linuxppc-dev/patch/537e5d8f181b1f1c2b8918f1aefa1dba3f972c03.1736955567.git.christophe.leroy@csgroup.eu/
>
> Right, that is not something x86 has, but I don't see a reason we can't
> add that. With return thunks, Clang (and I've heard GCC is also
> considering this) does something very close to conditional return.
A conditional blr does not map well to most compiled languages. It is
nice for hand-written machine code though :-)
For compiled code you almost always want to make some of the associated
stack frame maintenance conditional as well (because the ABIs require
this, if nothing else!)
I guess we could add some special-case stuff for it, maybe a peephole,
but we probably would have to write a whole new pass for it, stuff with
branch instructions always requires special checks :-p
> That way we do the return checks, but don't terminate the control flow.
> After all, when the condition is taken, we had better have the stack
> frame in the same state etc.
Ugh, mixed abstractions again :-(
Segher
next prev parent reply other threads:[~2026-05-06 14:30 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-05 8:46 [PATCH v1 0/6] objtool: Fixup alternate feature relative addresses Sathvika Vasireddy
2026-05-05 8:46 ` [PATCH v1 1/6] objtool/powerpc: Add build-time fixup of alternate feature branch targets Sathvika Vasireddy
2026-05-05 14:45 ` Peter Zijlstra
2026-05-05 14:49 ` Peter Zijlstra
2026-05-05 15:48 ` Christophe Leroy (CS GROUP)
2026-05-06 7:17 ` Peter Zijlstra
2026-05-06 14:28 ` Segher Boessenkool [this message]
2026-05-05 15:56 ` Segher Boessenkool
2026-05-06 7:00 ` Peter Zijlstra
2026-05-06 13:58 ` Segher Boessenkool
2026-05-06 14:22 ` Peter Zijlstra
2026-05-06 14:42 ` Segher Boessenkool
2026-05-05 8:46 ` [PATCH v1 2/6] objtool: Set ELF_F_LAYOUT flag to preserve vmlinux segment layout Sathvika Vasireddy
2026-05-05 8:46 ` [PATCH v1 3/6] objtool: Fix "can't find starting instruction" warnings on vmlinux Sathvika Vasireddy
2026-05-05 8:46 ` [PATCH v1 4/6] objtool/powerpc: Skip jump destination analysis and unnanotated intra-function call warnings for --ftr-fixup Sathvika Vasireddy
2026-05-05 8:46 ` [PATCH v1 5/6] kbuild: Add objtool integration for PowerPC feature fixups Sathvika Vasireddy
2026-05-05 8:46 ` [PATCH v1 6/6] powerpc: Enable build-time feature fixup processing by default Sathvika Vasireddy
2026-05-05 9:05 ` [PATCH v1 0/6] objtool: Fixup alternate feature relative addresses Christophe Leroy (CS GROUP)
2026-05-05 11:40 ` Peter Zijlstra
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=aftQDiJBZ032-Oem@gate \
--to=segher@kernel.crashing.org \
--cc=alexandre.chartre@oracle.com \
--cc=alexghiti@rivosinc.com \
--cc=aliceryhl@google.com \
--cc=ardb@kernel.org \
--cc=bp@alien8.de \
--cc=chleroy@kernel.org \
--cc=elver@google.com \
--cc=ihor.solodrai@linux.dev \
--cc=jpoimboe@kernel.org \
--cc=kees@kernel.org \
--cc=legion@kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=lossin@kernel.org \
--cc=maddy@linux.ibm.com \
--cc=masahiroy@kernel.org \
--cc=mpe@ellerman.id.au \
--cc=nathan@kernel.org \
--cc=npiggin@gmail.com \
--cc=nsc@kernel.org \
--cc=ojeda@kernel.org \
--cc=peterz@infradead.org \
--cc=pmladek@suse.com \
--cc=rostedt@goodmis.org \
--cc=sv@linux.ibm.com \
--cc=tamird@kernel.org \
--cc=thomas.weissschuh@linutronix.de \
--cc=thuth@redhat.com \
--cc=yuxuan.zuo@outlook.com \
/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