Re: [1/2] [NET] link_watch: Move link watch list into net_device
From: Andrew Morton <akpm@linux-foundation.org>
Date: 2007-05-10 22:16:47
Also in:
lkml, virtualization
On Thu, 10 May 2007 15:00:05 -0700 Jeremy Fitzhardinge [off-list ref] wrote:
Herbert Xu wrote:quoted
[NET] link_watch: Move link watch list into net_device These days the link watch mechanism is an integral part of the network subsystem as it manages the carrier status. So it now makes sense to allocate some memory for it in net_device rather than allocating it on demand.I think there's a problem with one of these two patches. I've been noticing that one of my events/X threads has been going into a spin for about 5 mins after boot. I added some debugging to kernel/workqueue.c:run_workqueue, since its that loop which seems to be spinning due to list corruption. When I look to see if that loop has iterated for more than 100 times in one go (which seems unlikely), I get this: BUG: cpu 3, count=101 list screwup on c04babe4, func c03217e8 func=linkwatch_event+0x0/0x2a [<c0109173>] show_trace_log_lvl+0x1a/0x30 [<c0109c7f>] show_trace+0x12/0x14 [<c0109d0c>] dump_stack+0x16/0x18 [<c0137c25>] run_workqueue+0x97/0x18c [<c01386a4>] worker_thread+0xe5/0xf5 [<c013afe9>] kthread+0x3b/0x62 [<c0108d47>] kernel_thread_helper+0x7/0x10 ======================= I wonder if the problem is that the linkwatch_work is being rescheduled when its already been scheduled, or something like that?
Five minutes after boot is when jiffies wraps. Are you sure it's a list-screwup rather than a jiffy-wrap screwup?