Using the RTDM api with Xen 2.6 to develop a linux driver.
Basically have an ISR registered using rtdm_irq_request() that is triggered
from a gpio pin. ISR works fine. Inside ISR, the only thing done is a
rtdm_event_signal() on an event.
Then, I have a task created using rtdm_task_init() that is waiting on the
event using rtdm_event_timedwait().
So far, so good...all works. But, in the task I am making an SPI call after
the event is signaled using spi_message_add_tail() and spi_sync() and that's
where I get this:
BUG: sleeping function called from invalid context at kernel/mutex.c:278
[ 98.449178] in_atomic(): 1, irqs_disabled(): 0, pid: -555875760, name:
vÿÿýÿ¿·½ÿ§ÿÿõ>ÿÿýw¿@ÞÞPÞÞ
[ 98.458686] INFO: lockdep is turned off.
[ 98.462811] [<c00572ac>] (unwind_backtrace+0x0/0xe0) from [<c04639bc>]
(mutex_lock_nested+0x24/0x384)
[ 98.472501] [<c04639bc>] (mutex_lock_nested+0x24/0x384) from [<c033ca48>]
(__spi_sync+0x88/0xd8)
[ 98.481730] [<c033ca48>] (__spi_sync+0x88/0xd8) from [<bf007180>]
(irqdrv_task+0x44/0xd4 [irqdrv])
[ 98.491149] [<bf007180>] (irqdrv_task+0x44/0xd4 [irqdrv]) from
[<c00e93d0>] (xnarch_thread_trampoline+0x20/0x2c)
[ 98.501845] [<c00e93d0>] (xnarch_thread_trampoline+0x20/0x2c) from
[<c00e5adc>] (__xnpod_schedule+0x5cc/0xa54)
[ 98.512355] [<c00e5adc>] (__xnpod_schedule+0x5cc/0xa54) from [<fff7febf>]
(0xfff7febf)
[ 98.520674] Xenomai: suspending kernel thread bf008180 ('irqdrvTask') at
0xc00a92f8 after exception #0x0
I have tried this inside a kthread and it works fine. I can also try the
spi stuff without being triggered by an IRQ, and I get the same error. I
know this is something simple???
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help