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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]