On Monday 19 January 2015 11:17:59 Alan Stern wrote:
> On Mon, 19 Jan 2015, Heiko Przybyl wrote:
> > It seems to be related to keyboard input (at least it happens when using
> > the keyboard), without relation to system load. Can happen within a day
> > after boot or after several days of hibernated uptime. Unfortunately, I
> > haven't found a way to reliably reproduce the issue, yet.
> >
> > [..]
> >
> > My (pretty wild) guess is, that the corruption happens through a race in
> > the interrupt handler ohci_irq(), which calls ohci_work(), which calls
> > finish_urb(), which states:
> > " * PRECONDITION: ohci lock held, irqs blocked"
> >
> > But ohci_irq() seems to only spin_[un]lock(), not spin_[un]lock_irq[save|
> > restore](). All other functions that call ohci_work() do at least
> > spin_[un]lock_irq. So irqs could still be enabled and possibly the event
> > triggered twice, thus the double list add?
>
> That's easy enough to test. All you have to do is change the
> spin_lock/unlock statements to their irq_save/restore variants.
Well, thought about that as well, but I'm not sure when to take it as fixed and
when to take it as issue-just-didn't-happen-yet, because of the not-so-
deterministic occurrence of the error. But I can try it out anyway, just
wanted to have some feedback before trying.
>
> ohci_irq() is an interrupt handler. In the absence of threaded IRQs,
> he kernel should always call interrupt handlers with interrupts
> disabled. Do you specify "threadirqs" on your boot command line?
>
Never used "threadirqs".
# cat /proc/cmdline
BOOT_IMAGE=/boot/gentoo root=/dev/sda2 ro rootfstype=ext4 resume=/dev/sda3
init=/usr/lib/systemd/systemd quiet libahci.ignore_sss=1 i8042.nopnp
crashkernel=64M
> If that's not the explanation then we'll have to dig deeper.
I can still work on a saved vmcore dump of a crash. Btw. using crash(1) and
its command `bt -E`shows two kernel mode exceptions. Though, I can't figure out
where the first one originates from
CPU 3 IRQ STACK:
KERNEL-MODE EXCEPTION FRAME AT: ffff88022ecc3638
[exception RIP: _raw_spin_unlock_irqrestore+9]
RIP: ffffffff814774b9 RSP: ffff88022ecc36e8 RFLAGS: 00000202
RAX: ffff88022ecc36a8 RBX: ffff88022ecc36b0 RCX: ffffffff81290279
RDX: 0000000000002dff RSI: 0000000000000000 RDI: ffff88022ecc3788
RBP: ffff88022ecc36e8 R8: 0000000000000080 R9: 0000000000000023
R10: ffffffff813e6407 R11: ffffea000863ad80 R12: ffff88022ecc3658
R13: ffffffff81478b2a R14: ffff88022ecc36e8 R15: 0000000000000001
ORIG_RAX: ffffffff81471cfd CS: 0010 SS: 0018
0xffffffff814774b9 <+9>: decl %gs:0xa860
CPU 5 IRQ STACK:
KERNEL-MODE EXCEPTION FRAME AT: ffff88022ed43d98
[exception RIP: io_watchdog_func+112]
RIP: ffffffff81394b80 RSP: ffff88022ed43e48 RFLAGS: 00010006
RAX: ffff8800cb8aa598 RBX: 0000000000000296 RCX: ffff8800cbaa8030
RDX: dead000000100100 RSI: 00000000cbaa91e0 RDI: ffff8800cbaa8030
RBP: ffff88022ed43e88 R8: ffff8800cbaa7fe8 R9: 0000000000000205
R10: ffff8800cbaa8030 R11: ffff8800cb8aa5a0 R12: dead0000001000c0
R13: ffff8800cb8aa248 R14: ffff8800cb8aa5b8 R15: 0000000000000000
ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0000
> Alan Stern
Kind regards,
Heiko
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html