Messages in this thread | | | Date | Fri, 3 Oct 2008 08:36:18 -0700 (PDT) | From | Linus Torvalds <> | Subject | Re: [regression] Latest git has WARN_ON storm with e1000e driver |
| |
On Fri, 3 Oct 2008, Christian Borntraeger wrote: > > Very good point indeed. Seems my analysis was wrong. I made a short test and > preempt_count() returns 1 when the WARN_ON triggers. So its either a spinlock > or something else that increased my preempt_count.
Ok, I can repro it. I couldn't see it before because I usually don't have PREEMPT even enabled. Enabling PREEMPT and PREEMPT_DEBUG gets me the messages too. Jesse?
The call trace is much better with frame pointers enabled, loke so (with the '?' entries removed as stale):
Call Trace: warn_on_slowpath+0x53/0x7a e1000_acquire_swflag_ich8lan+0x2d/0xe1 e1000_read_nvm_ich8lan+0x4f/0xee e1000e_read_pba_num+0x4e/0x69 e1000_probe+0xa32/0xb71 pci_device_probe+0x4c/0x72 driver_probe_device+0xc0/0x16e __driver_attach+0x4f/0x79 bus_for_each_dev+0x4f/0x89 driver_attach+0x1c/0x1e bus_add_driver+0xb7/0x1f4 driver_register+0xa8/0x128 __pci_register_driver+0x66/0x9d e1000_init_module+0x4f/0x6b _stext+0x47/0x13f kernel_init+0x127/0x17b child_rip+0xa/0x11
and yes, there's quite a lot of them. I'm not seeing what disables preemption, though. I'll look at it some more, but I decided I should post that cleaned-up call chain so that others can do so too..
Linus
| |