Messages in this thread | | | Date | Fri, 25 Sep 2015 14:47:35 +0200 | Subject | Re: [Linux v4.2] workqueue: llvmlinux: acpid: BUG: sleeping function called from invalid context at kernel/workqueue.c:2680 | From | Sedat Dilek <> |
| |
On Fri, Sep 25, 2015 at 2:40 PM, Jiri Kosina <jikos@kernel.org> wrote: > On Fri, 25 Sep 2015, Sedat Dilek wrote: > >> >> $ 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). >> > >> >> See attached file. > > The sequence looks correct. So I don't really see what call sequence could > lead to calling flush_work() from __cancel_work_timer() with IRQs > disabled (which is what your stacktrace is suggesting). > > The fact that this doesn't happen with GCC-compiled kernels is really > suspicious. >
Hm, and now?
Shall I try a different OptLevel than default -O2?
CONFIG_LOCKDEP=n ?
- Sedat -
| |