[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20201130130315.GJ3092@hirez.programming.kicks-ass.net>
Date: Mon, 30 Nov 2020 14:03:15 +0100
From: Peter Zijlstra <peterz@...radead.org>
To: Sven Schnelle <svens@...ux.ibm.com>
Cc: Linus Torvalds <torvalds@...ux-foundation.org>,
Thomas Gleixner <tglx@...utronix.de>,
"Paul E. McKenney" <paulmck@...nel.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
the arch/x86 maintainers <x86@...nel.org>
Subject: Re: [GIT pull] locking/urgent for v5.10-rc6
On Mon, Nov 30, 2020 at 01:52:11PM +0100, Peter Zijlstra wrote:
> On Mon, Nov 30, 2020 at 01:31:33PM +0100, Sven Schnelle wrote:
> > [ 0.670280] ------------[ cut here ]------------
> > [ 0.670288] WARNING: CPU: 1 PID: 0 at kernel/rcu/tree.c:1054 rcu_irq_enter+0x7e/0xa8
> > [ 0.670293] Modules linked in:
> > [ 0.670299] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G W 5.10.0-rc6 #2263
> > [ 0.670304] Hardware name: IBM 2964 NC9 702 (z/VM 6.4.0)
> > [ 0.670309] Krnl PSW : 0404d00180000000 0000000000d8a8da (rcu_irq_enter+0x82/0xa8)
> > [ 0.670318] R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:3 CC:1 PM:0 RI:0 EA:3
> > [ 0.670325] Krnl GPRS: 0000000000000000 0000000080000002 0000000000000001 000000000101fcee
> > [ 0.670331] 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> > [ 0.670337] 000003e00029ff48 0000000000000000 00000000017212d8 0000000000000001
> > [ 0.670343] 0000000005ba0100 00000000000324bb 000003e00029fe40 000003e00029fe10
> >
> > [ 0.670358] Krnl Code: 0000000000d8a8ca: ec180013017e cij %r1,1,8,0000000000d8a8f0
> > [ 0.670358] 0000000000d8a8d0: ecb80005007e cij %r11,0,8,0000000000d8a8da
> > [ 0.670358] #0000000000d8a8d6: af000000 mc 0,0
> > [ 0.670358] >0000000000d8a8da: ebbff0a00004 lmg %r11,%r15,160(%r15)
> > [ 0.670358] 0000000000d8a8e0: c0f4ffffff68 brcl 15,0000000000d8a7b0
> > [ 0.670358] 0000000000d8a8e6: c0e5000038c1 brasl %r14,0000000000d91a68
> > [ 0.670358] 0000000000d8a8ec: a7f4ffdc brc 15,0000000000d8a8a4
> > [ 0.670358] 0000000000d8a8f0: c0e5000038bc brasl %r14,0000000000d91a68
> > [ 0.670392] Call Trace:
> > [ 0.670396] [<0000000000d8a8da>] rcu_irq_enter+0x82/0xa8
> > [ 0.670401] [<0000000000157f9a>] irq_enter+0x22/0x30
> > [ 0.670404] [<000000000010e51c>] do_IRQ+0x64/0xd0
> > [ 0.670408] [<0000000000d9a65a>] ext_int_handler+0x18e/0x194
> > [ 0.670412] [<0000000000d9a6a0>] psw_idle+0x40/0x48
> > [ 0.670416] ([<0000000000104202>] enabled_wait+0x22/0xf0)
> > [ 0.670419] [<00000000001046e2>] arch_cpu_idle+0x22/0x38
> > [ 0.670423] [<0000000000d986cc>] default_idle_call+0x74/0xd8
> > [ 0.670427] [<000000000019a94a>] do_idle+0xf2/0x1b0
> > [ 0.670431] [<000000000019ac7e>] cpu_startup_entry+0x36/0x40
> > [ 0.670435] [<0000000000118b9a>] smp_start_secondary+0x82/0x88
>
> But but but...
>
> do_idle() # IRQs on
> local_irq_disable(); # IRQs off
> defaul_idle_call() # IRQs off
lockdep_hardirqs_on(); # IRQs off, but lockdep things they're on
> arch_cpu_idle() # IRQs off
> enabled_wait() # IRQs off
> raw_local_save() # still off
> psw_idle() # very much off
> ext_int_handler # get an interrupt ?!?!
rcu_irq_enter() # lockdep thinks IRQs are on <- FAIL
I can't much read s390 assembler, but ext_int_handler() has a
TRACE_IRQS_OFF, which would be sufficient to re-align the lockdep state
with the actual state, but there's some condition before it, what's that
test and is that right?
Powered by blists - more mailing lists