From: Paul Mackerras <paulus@ozlabs.org>
To: Michael Ellerman <mpe@ellerman.id.au>
Cc: linuxppc-dev@lists.ozlabs.org, Nicholas Piggin <npiggin@gmail.com>
Subject: Re: Crash in __do_IRQ with gcc 15
Date: Tue, 13 May 2025 22:27:40 +1000 [thread overview]
Message-ID: <aCM6vKAdNrox9wjp@bruin> (raw)
In-Reply-To: <87y0v2sdwp.fsf@mpe.ellerman.id.au>
On Mon, May 12, 2025 at 01:31:34PM +1000, Michael Ellerman wrote:
> Are you building with pcrel? Otherwise r2 shouldn't be getting used as
> an ordinary register.
Yes, CONFIG_PPC_KERNEL_PCREL=y. I'll try with n and see what happens.
> Can you show the disassembly of where it's getting used?
c00000000000fc50 <__do_IRQ>:
c00000000000fc50: a6 02 08 7c mflr r0
c00000000000fc54: f0 ff c1 fb std r30,-16(r1)
c00000000000fc58: f8 ff e1 fb std r31,-8(r1)
c00000000000fc5c: 26 01 10 06 pla r2,19317860 # c00000000127c0c0 <__irq_regs>
c00000000000fc60: 64 c4 40 38
c00000000000fc64: 2e 01 10 06 pla r10,19857060 # c0000000012ffb08 <hardirq_ctx>
c00000000000fc68: a4 fe 40 39
c00000000000fc6c: 10 00 01 f8 std r0,16(r1)
c00000000000fc70: d1 ff 21 f8 stdu r1,-48(r1)
c00000000000fc74: 20 00 0d e9 ld r8,32(r13)
c00000000000fc78: 78 13 49 7c mr r9,r2
c00000000000fc7c: 2a 40 c9 7f ldx r30,r9,r8
c00000000000fc80: 2a 49 68 7c stdx r3,r8,r9
c00000000000fc84: 00 00 2d a1 lhz r9,0(r13)
c00000000000fc88: 24 1f 29 79 sldi r9,r9,3
c00000000000fc8c: 2a 48 ea 7f ldx r31,r10,r9
c00000000000fc90: 64 04 29 78 clrrdi r9,r1,14
c00000000000fc94: 40 48 3f 7c cmpld r31,r9
c00000000000fc98: 24 00 82 40 bne c00000000000fcbc <__do_IRQ+0x6c>
c00000000000fc9c: 78 0b 24 7c mr r4,r1
c00000000000fca0: e5 f9 ff 4b bl c00000000000f684 <__do_irq>
c00000000000fca4: 26 01 10 06 pla r2,19317788 # c00000000127c0c0 <__irq_regs>
c00000000000fca8: 1c c4 40 38
c00000000000fcac: 20 00 2d e9 ld r9,32(r13)
c00000000000fcb0: 30 00 21 38 addi r1,r1,48
c00000000000fcb4: 2a 11 c9 7f stdx r30,r9,r2
c00000000000fcb8: 4c c0 50 48 b c00000000051bd04 <_restgpr0_30>
c00000000000fcbc: e1 3f 3f f8 stdu r1,16352(r31)
c00000000000fcc0: 78 0b 24 7c mr r4,r1
c00000000000fcc4: 78 fb e1 7f mr r1,r31
c00000000000fcc8: bd f9 ff 4b bl c00000000000f684 <__do_irq>
c00000000000fccc: 00 00 21 e8 ld r1,0(r1)
c00000000000fcd0: dc ff ff 4b b c00000000000fcac <__do_IRQ+0x5c>
That's the whole of __do_IRQ(). It explodes at c00000000000fcb4 after
the return from the call to __do_irq() at c00000000000fcc8, which is
the one in the inline asm. The compiler does reload r2 after the
ordinary call to __do_irq() at c00000000000fca0.
> There was a change to r2 handling in GCC 15, but AFAICS it was meant to
> only affect pcrel code.
>
> Still it's likely our bug because we are being weird and calling a
> function inside an inline asm block.
Yep.
Thanks,
Paul.
next prev parent reply other threads:[~2025-05-13 12:27 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-10 1:35 Crash in __do_IRQ with gcc 15 Paul Mackerras
2025-05-11 13:02 ` Madhavan Srinivasan
2025-05-14 2:06 ` Paul Mackerras
2025-05-21 12:56 ` LEROY Christophe
2025-05-12 3:31 ` Michael Ellerman
2025-05-13 12:27 ` Paul Mackerras [this message]
2025-05-13 16:31 ` Segher Boessenkool
2025-05-12 18:13 ` LEROY Christophe
2025-05-13 10:08 ` Arnd Bergmann
2025-05-19 14:05 ` Arnd Bergmann
2025-05-24 18:34 ` Segher Boessenkool
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=aCM6vKAdNrox9wjp@bruin \
--to=paulus@ozlabs.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.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 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.