Re: RPS vs. hard-irq-context netif_rx()
From: Luca Tettamanti <kronos.it@gmail.com>
Date: 2010-08-17 11:52:37
I got the following on a kvm instance I use for testing: [ 51.358803] WARNING: at kernel/lockdep.c:2327trace_hardirqs_on_caller+0x167/0x200() [ 51.360210] Hardware name: Bochs [ 51.360210] Modules linked in: [ 51.360210] Pid: 1546, comm: dhclient3 Tainted: G W 2.6.35-rc6-wl+ #588 [ 51.360210] Call Trace: [ 51.360210] <IRQ> [<ffffffff8104e87f>] warn_slowpath_common+0x7f/0xc0 [ 51.360210] [<ffffffff8104e8da>] warn_slowpath_null+0x1a/0x20 [ 51.360210] [<ffffffff81087977>] trace_hardirqs_on_caller+0x167/0x200 [ 51.360210] [<ffffffff81087a1d>] trace_hardirqs_on+0xd/0x10 [ 51.360210] [<ffffffff81056ade>] local_bh_enable+0x9e/0x130 [ 51.360210] [<ffffffff8139fa82>] netif_rx+0xc2/0x250 [ 51.360210] [<ffffffff813146d7>] ei_receive+0x1b7/0x2c0 [ 51.360210] [<ffffffff81314ca2>] __ei_interrupt+0x282/0x360 [ 51.360210] [<ffffffff81314dce>] ei_interrupt+0xe/0x10 [ 51.360210] [<ffffffff810abe85>] handle_IRQ_event+0x85/0x300 [ 51.360210] [<ffffffff810aead5>] handle_level_irq+0x95/0x120 [ 51.360210] [<ffffffff81005a12>] handle_irq+0x22/0x30 [ 51.360210] [<ffffffff814394b3>] do_IRQ+0x73/0xf0
[...]
So .. where's the bug? I'd point to CONFIG_RPS since it's newest.
Hello, I just hit the same warning, with 2.6.36-rc1: [ 228.001459] WARNING: at /home/kronos/src/linux-2.6.git/kernel/softirq.c:143 local_bh_enable+0x3c/0x9a() [ 228.004096] Hardware name: F3Sa [ 228.004175] Modules linked in: [...] [ 228.015974] Pid: 2818, comm: irqbalance Not tainted 2.6.36-rc1 #274 [ 228.015974] Call Trace: [ 228.015974] <IRQ> [<ffffffff81034b32>] warn_slowpath_common+0x80/0x98 [ 228.015974] [<ffffffff81034b5f>] warn_slowpath_null+0x15/0x17 [ 228.015974] [<ffffffff8103a009>] local_bh_enable+0x3c/0x9a [ 228.015974] [<ffffffff8120dc16>] netif_rx+0x75/0x145 [ 228.015974] [<ffffffff8115162f>] ? unmap_single+0x4a/0x52 [ 228.015974] [<ffffffff811e7fcd>] atl1_intr+0x96c/0xa35 [ 228.015974] [<ffffffff8104edf4>] ? hrtimer_wakeup+0x0/0x21 [ 228.015974] [<ffffffff810707b2>] handle_IRQ_event+0x20/0x9a [ 228.015974] [<ffffffff810723ba>] handle_edge_irq+0xf5/0x141 [ 228.015974] [<ffffffff81004d53>] handle_irq+0x83/0x8c [ 228.015974] [<ffffffff81004332>] do_IRQ+0x5e/0xc4 [ 228.015974] [<ffffffff812843d3>] ret_from_intr+0x0/0xa CONFIG_TREE_RCU=y CONFIG_RPS=y I never saw the warning with 2.6.35 and earlier kernels though. Luca