Re: [PATCH] Fix J-core aic warning spam

Rob Landley <[email protected]>
Newsgroups gmane.linux.ports.sh.devel
Message-ID <[email protected]>

On 4/19/23 02:27, Geert Uytterhoeven wrote:
> On Tue, Apr 18, 2023 at 11:56 PM Rob Landley <[email protected]> wrote:
>>
>> On 4/18/23 04:16, Geert Uytterhoeven wrote:
>> > Hi Rob,
>> >
>> > On Tue, Apr 18, 2023 at 10:59 AM Rob Landley <[email protected]> wrote:
>> >> On 4/18/23 03:10, John Paul Adrian Glaubitz wrote:
>> >> > On Tue, 2023-04-18 at 03:09 -0500, Rob Landley wrote:
>> >> >> On 4/18/23 02:18, Geert Uytterhoeven wrote:
>> >> >> > On Tue, Apr 18, 2023 at 8:19 AM John Paul Adrian Glaubitz
>> >> >> > <[email protected]> wrote:
>> >> >> > > On Mon, 2023-04-17 at 23:23 -0500, Rob Landley wrote:
>> >> >> > > > From: Rich Felker <[email protected]>
>> >> >> > > > Signed-off-by: Rob Landley <[email protected]>
>> >> >> > > >
>> >> >> > > > Silence noisy boot messages (warning and stack dump for each IRQ) when booting
>> >> >> > > > on J2 SOC.
>> >> >> >
>> >> >> > > > --- a/drivers/irqchip/irq-jcore-aic.c
>> >> >> > > > +++ b/drivers/irqchip/irq-jcore-aic.c
>> >> >> > > > @@ -68,6 +68,7 @@ static int __init aic_irq_of_init(struct device_node *node,
>> >> >> > > >       unsigned min_irq = JCORE_AIC2_MIN_HWIRQ;
>> >> >> > > >       unsigned dom_sz = JCORE_AIC_MAX_HWIRQ+1;
>> >> >> > > >       struct irq_domain *domain;
>> >> >> > > > +     int rc;
>> >> >> > > >
>> >> >> > > >       pr_info("Initializing J-Core AIC\n");
>> >> >> > > >
>> >> >> > > > @@ -100,6 +101,11 @@ static int __init aic_irq_of_init(struct device_node *node,
>> >> >> > > >       jcore_aic.irq_unmask = noop;
>> >> >> > > >       jcore_aic.name = "AIC";
>> >> >> > > >
>> >> >> > > > +     rc = irq_alloc_descs(min_irq, min_irq, dom_sz - min_irq,
>> >> >> > > > +                          of_node_to_nid(node));
>> >> >> > > > +     if (rc < 0)
>> >> >> > > > +             pr_info("Cannot allocate irq_descs @ IRQ%d, assuming pre-allocated\n",
>> >> >> > > > +                     min_irq);
>> >> >> >
>> >> >> > This is a fatal error, so please bail out, instead of continuing.
>> >> >>
>> >> >> If it can continue, it's not a fatal error. (Some pieces of hardware might not
>> >> >> come up, but the board might still be usable.) If it can't continue, how does
>> >> >> the _type_ of failure matter?
>> >> >
>> >> > I would still consider it fatal if any of the integral board components failed to
>> >> > initialize. I don't think we want users to boot up their system into such an undefined
>> >> > state.
>> >>
>> >> So if the network card doesn't work, kernel panic? If it's fatal, why does the
>> >> function return? It could have called panic() instead. How does panicing _help_?
>> >> (If the driver loads and the hardware works, we're good. If it doesn't, it won't
>> >> work and they'll notice...)
>> >
>> > I didn't suggest to call panic(), just return rc.
>>
>> Ah, I misunderstood.
>>
>> > Diving deeper, irq_alloc_descs() can fail only when passing bad or severely
>> > out-of-range values, so that's very unlikely.
>> >
>> > BTW, what are the noisy boot messages? What's the call chain?
>>
>> I have a log lying around somewhere...
> 
> Thanks!
> 
> It was a bit too large for the list, so I only kept the first relevant
> part below...
> 
>> Initializing J-Core AIC
>> ------------[ cut here ]------------
>> error: virq16 is not allocated
>> WARNING: CPU: 0 PID: 0 at kernel/irq/irqdomain.c:571
>> irq_domain_associate+0x120/0x178
>>
>> CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.19.0-rc2 #1
>> PC is at irq_domain_associate+0x120/0x178
>> PR is at irq_domain_associate+0x120/0x178
>> PC  : 10049b90 SP  : 103bdec0 SR  : 400001f1
>> R0  : 0000001e R1  : 1042d024 R2  : 1042d024 R3  : 00000028
>> R4  : 00000001 R5  : 0006f1ff R6  : 00000008 R7  : 103bde04
>> R8  : 1200c000 R9  : 00000010 R10 : 00000000 R11 : 00000010
>> R12 : 10049a70 R13 : 103bfcac R14 : 1030a398
>> MACH: 00000000 MACL: 00057fa8 GBR : 00000000 PR  : 10049b90
>>
>> Call trace:
>>  [<100496f0>] __irq_domain_add+0x80/0x1dc
>>  [<10049cd2>] irq_domain_create_legacy+0x46/0x68
>>  [<10049a70>] irq_domain_associate+0x0/0x178
>>  [<104517da>] aic_irq_of_init+0x82/0xd8
>>  [<1020ab90>] of_iomap+0x0/0x30
>>  [<1031df1c>] _printk+0x0/0x24
>>  [<1045630c>] of_irq_init+0xe4/0x228
>>  [<100a5a10>] kfree+0x0/0x250
>>  [<10042376>] vprintk_emit+0xde/0x1fc
>>  [<1004239c>] vprintk_emit+0x104/0x1fc
>>  [<10309940>] strlen+0x0/0x60
>>  [<100424a6>] vprintk_default+0x12/0x20
>>  [<10309940>] strlen+0x0/0x60
>>  [<10002a2c>] arch_local_save_flags+0x0/0x8
>>  [<1031df1c>] _printk+0x0/0x24
>>  [<104456f8>] init_IRQ+0x14/0x28
>>  [<10309940>] strlen+0x0/0x60
>>  [<10002a2c>] arch_local_save_flags+0x0/0x8
>>  [<1031df1c>] _printk+0x0/0x24
>>  [<1044394c>] start_kernel+0x3b8/0x73c
>>  [<1044320c>] unknown_bootoption+0x0/0x170
>>  [<1000202a>] _stext+0x2a/0x34
>>
>> Code:
>>   10049b8a:  mov.l     10049bd8 <irq_domain_associate+0x168/0x178>, r4  !
>> 10393da0 <0x10393da0>
>>   10049b8c:  jsr       @r1
>>   10049b8e:  mov       r11, r5
>> ->10049b90:  trapa     #62
>>   10049b92:  bra       10049b0e
>>   10049b94:  mov       #-22, r12
>>   10049b96:  mov.l     10049bd0 <irq_domain_associate+0x160/0x178>, r1  !
>> 1031da2c <__warn_printk+0x0/0x38>
>>   10049b98:  mov.l     10049bdc <irq_domain_associate+0x16c/0x178>, r4  !
>> 10393dc0 <0x10393dc0>
>>   10049b9a:  jsr       @r1
>>
>> ---[ end trace 0000000000000000 ]---
> 
> OK, so virq 16-127 are non-functional without this fix.
> 
> One other thing to consider when sending a v2: v1 lacks an SoB
> from the original author.

Last I heard Rich and his family were on sabbatical in Indonesia. He pops up
from time to time but hasn't answered the last couple pokes I made at him.

He handed this patch off to Jeff Dionne who handed it off to me. Here is the
patch publicly posted on Rich's website two years ago:

  https://git.musl-libc.org/cgit/linux-sh/commit/?h=v5.16%2bj2&id=beb1f3ae8ad6

Does Linux require copyright assignments now? I thought even the FSF had finally
dropped that requirement...

Rob
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.