queue_work from interrupt Real time preemption2.6.11-rc2-RT-V0.7.37-03

From: Mark Gross
Date: Mon Feb 14 2005 - 15:47:23 EST


I'm working on a tweak to the preepmtive soft IRQ implementation using work
queues and I'm having problems with a BUG assert when trying to queue_work.

Souldn't I be able to call queue_work form ISR context?

--mgross

---------------------------
| preempt count: 00000001 ]
| 1-level deep critical section nesting:
----------------------------------------
.. [<c0140f5d>] .... print_traces+0x1d/0x60
.....[<c01042a3>] .. ( <= dump_stack+0x23/0x30)

BUG: sleeping function called from invalid context IRQ 20(2039) at kernel/rt.c
in_atomic():0 [00000000], irqs_disabled():1
[<c01042a3>] dump_stack+0x23/0x30 (20)
[<c011f315>] __might_sleep+0xe5/0x100 (36)
[<c013cd19>] __spin_lock+0x39/0x60 (24)
[<c013cded>] _spin_lock_irqsave+0x1d/0x30 (16)
[<c0134b32>] __queue_work+0x22/0x70 (28)
[<c0134bd8>] queue_work+0x58/0xa0 (32)
[<c01287cd>] __raise_softirq+0x2d/0x50 (12)
[<f898b944>] e100_intr+0x124/0x170 [e100] (36)
[<c0147ab9>] handle_IRQ_event+0x69/0xf0 (52)
[<c0148365>] do_hardirq+0xa5/0x110 (40)
[<c01484f1>] do_irqd+0x121/0x1f0 (48)
[<c013990b>] kthread+0xbb/0xc0 (48)
[<c01013f9>] kernel_thread_helper+0x5/0xc (154181652)
---------------------------

| preempt count: 00010001 ]
| 1-level deep critical section nesting:
----------------------------------------
.. [<c0140f5d>] .... print_traces+0x1d/0x60
.....[<c01042a3>] .. ( <= dump_stack+0x23/0x30)

BUG: sleeping function called from invalid context swapper(0) at kernel/rt.c:1
in_atomic():1 [00010000], irqs_disabled():1
[<c01042a3>] dump_stack+0x23/0x30 (20)
[<c011f315>] __might_sleep+0xe5/0x100 (36)
[<c013cd19>] __spin_lock+0x39/0x60 (24)
[<c013cded>] _spin_lock_irqsave+0x1d/0x30 (16)
[<c0134b32>] __queue_work+0x22/0x70 (28)
[<c0134bd8>] queue_work+0x58/0xa0 (32)
[<c0128aee>] raise_softirq+0x3e/0xb0 (20)
[<c012d395>] update_process_times+0x45/0x110 (32)
[<c01153ba>] smp_apic_timer_interrupt+0xea/0xf0 (36)
[<c0103e18>] apic_timer_interrupt+0x1c/0x24 (60)
[<c0101163>] cpu_idle+0x83/0x90 (24)
[<c0404a8d>] start_kernel+0x19d/0x1e0 (32)
[<c010020e>] 0xc010020e (1077727247)
---------------------------

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/