Messages in this thread | | | Date | Fri, 25 Sep 2015 14:16:06 +0200 (CEST) | From | Jiri Kosina <> | Subject | Re: [Linux v4.2] workqueue: llvmlinux: acpid: BUG: sleeping function called from invalid context at kernel/workqueue.c:2680 |
| |
On Fri, 25 Sep 2015, Sedat Dilek wrote:
> > This however: > > > > [ 24.824639] hardirqs last enabled at (7913): [<ffffffff8192a2b2>] _raw_spin_unlock_irq+0x32/0x60 > > [ 24.824646] hardirqs last disabled at (7914): [<ffffffff81120e37>] del_timer_sync+0x37/0x110 > > > > combined with the stacktrace above, doesn't still make too much sense; IRQ > > disable/enable is properly paired in del_timer_sync() and timer base lock > > locking. > > > > Could you look into the generated assembly whether the sequence > > > > local_irq_save(flags); > > lock_map_acquire(&timer->lockdep_map); > > lock_map_release(&timer->lockdep_map); > > local_irq_restore(flags); > > > > in del_timer_sync() hasn't been optimized in some damaging way? > > > > I am looking into my CLANG objdump... > > $ egrep -nr 'save|restore|acquire|release' > objdump-Dr_kernel-workqueue_o_CLANG-3-7.txt | egrep 'irq|map' > 5718: 4601: R_X86_64_PC32 _raw_spin_unlock_irqrestore-0x4 > 5766: 4699: R_X86_64_PC32 _raw_spin_lock_irqsave-0x4 > 6173: 4bd9: R_X86_64_PC32 _raw_spin_lock_irqsave-0x4 > 6265: 4d05: R_X86_64_PC32 _raw_spin_unlock_irqrestore-0x4 > > ...this is what I have. > > Does that help?
It doesn't. I am asking for disassembly of del_timer_sync() (that's in kernel/time/timer.o).
-- Jiri Kosina SUSE Labs
| |