Messages in this thread |  | | | Date | Thu, 29 Jun 2006 13:40:15 +0100 (BST) | | Subject | Re: [BUG] Linux-2.6.17-rt3 on arm ixdp465 | | From | Esben Nielsen <> |
| |
On Thu, 29 Jun 2006, Milan Svoboda wrote:
>>> >>>> Thank you for your answer, I look at it too... >>>> >>> >>> eepro100 seems to be SMP safe, so it shouldn't be there. >>> Have anyone else used eepro100 with preempt-realtime? > >> I use to use it a while back ago, when e100 would screw up my network >> card. But that has been fixed so I don't use eepro100 and I would >> recommend anyone else to switch to e100. > > I have been using it because the same reason as you, but simply didn't > noticed that e100 works now ;-) > > I switched to e100 and turned debug messages on and got many of these: > > BUG: scheduling with irqs disabled: softirq-net-rx//0x00000000/6 > caller is schedule+0x10/0x114 > [<c0024e24>] (dump_stack+0x0/0x28) from [<c01ae528>] (schedule+0xf8/0x114) > [<c01ae430>] (schedule+0x0/0x114) from [<c01afb60>] > (rt_lock_slowlock+0x100/0x240) > r5 = C01F070C r4 = C4150000 > [<c01afa60>] (rt_lock_slowlock+0x0/0x240) from [<c01aff28>] > (__lock_text_start+0x18/0x1c) > [<c01aff10>] (__lock_text_start+0x0/0x1c) from [<c0078b08>] > (kfree+0x2c/0x84) > [<c0078adc>] (kfree+0x0/0x84) from [<c002aab0>] > (dma_unmap_single+0x110/0x1a8) > r5 = C4124BE0 r4 = C7C4B6E0 > [<c002a9a0>] (dma_unmap_single+0x0/0x1a8) from [<c012766c>] > (e100_poll+0x2e0/0x59c) > r8 = C432A3A0 r7 = C41C9BA0 r6 = C41C9B60 r5 = 00000001 > r4 = FFC881C0 > [<c012738c>] (e100_poll+0x0/0x59c) from [<c0148280>] > (net_rx_action+0xa0/0x1a4) > [<c01481e0>] (net_rx_action+0x0/0x1a4) from [<c0039020>] > (ksoftirqd+0x110/0x1b0) > [<c0038f10>] (ksoftirqd+0x0/0x1b0) from [<c00490d8>] (kthread+0x110/0x13c) > [<c0048fc8>] (kthread+0x0/0x13c) from [<c0035054>] (do_exit+0x0/0x998) > r8 = 00000000 r7 = 00000000 r6 = 00000000 r5 = 00000000 > r4 = 00000000 > --------------------------- > | preempt count: 00000000 ] > | 0-level deep critical section nesting: > ---------------------------------------- >
It seems that dma_unmap_single() on arm contains local_irq_save(flags);
unmap_single(dev, dma_addr, size, dir);
local_irq_restore(flags);
I don't know the dma code on arm. It doesn't look like a per-cpu code but it seems to me that it is not SMP safe and therefore not preempt-realtime safe, either.
The hard thing is to figure out which datastructures exactly is protected by those irq-disable and put in a spinlock..
I added Deepak Saxena on CC as he seems to be the last one who touched the file.
Esben
> These messages are different as their source seems to be softirq-net-rx. I > cannot reproduce > the original bug now... > > > PS: Is latency tracing working on arm platform? I'm unable to get this > statistic... > > Milan > > - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |