Jan Kiszka wrote:
vdkeybus wrote:

I've programmed an RTDM PCI driver using interrupts. However, I've a few questions regarding the programming practices (especially because I'm not getting the performance I want). 1. The PCI system assigns an interrupt 177 which is totally outside the range 0..15 I'm used to. Is it ok to pass this value to rtdm_irq_request
() ?

$ cat /proc/ipipe/Linux ?



Hmm, don't know if the underlying layers (Xenomai HAL, Ipipe patch) will
accept them.

Xeno will accept anything the I-pipe does accept. IRQ 177 means that the IO-APIC is enabled, and I would bet CONFIG_MSI is too. If there is no Linux handler for this interrupt, then the solution is to ask Xeno not to relay the IRQ down the pipeline to Linux when it sees it.

 RTDM just forwards this value without looking further at
it. If the return code is Ok but it doesn't work, someone else has to
blamed. ;)


2. Is it obligatory to use a rtdm_toseq_t in rtdm_event_timedwait() and friends. Or, in other words, can I do rtdm_event_timedwait(&evt, 10000, NULL); ?



The latter is fine for most scenarios and will not cause oopses.


3. Currently, I register my ISR in the open() function. I unregister it in close(), after I've disabled the card's interrupt line. Nevertheless, I get a kernel message right after shutting down:

irq 177: nobody cared (try booting with the "irqpoll" option)
[<c013a18f>] __report_bad_irq+0x24/0x7f
[<c013a26a>] note_interrupt+0x62/0xb8
[<c0139c70>] __do_IRQ+0xb7/0xc7
[<c010511b>] do_IRQ+0x53/0x8b
=======================
[<c011c045>] profile_tick+0x20/0x49
[<c0114908>] __ipipe_sync_stage+0xf1/0x13a
[<c011490d>] __ipipe_sync_stage+0xf6/0x13a
[<c0115187>] __ipipe_handle_irq+0x233/0x24c
[<c010104a>] default_idle+0x30/0x3b
[<c010101a>] default_idle+0x0/0x3b
[<c0103b30>] common_interrupt+0x18/0x30
[<c010101a>] default_idle+0x0/0x3b
[<c010104a>] default_idle+0x30/0x3b
[<c01010c2>] cpu_idle+0x3a/0x52
[<c0327785>] start_kernel+0x179/0x1df
[<c0327330>] unknown_bootoption+0x0/0x1b6
handlers:
[<f88ae638>] (snd_intel8x0_interrupt+0x0/0x23c [snd_intel8x0])
Disabling IRQ #177

After this message, it is impossible to reuse the interrupt line (after e.g. rmmod and insmod of driver and xeno_... modules) and the computer becomes very slow. Also note that I have traces of snd_intel8x0 appearing in this context.



Did you also disabled it inside your PCI hardware? Someone seems to
continue producing IRQs. Anyway, calling rtdm_irq_disable should disable
the line and prevent such alarms. What does the return value of the
disable call says?

Hmm, is that IRQ line shared with non-RT hardware BTW? This is typically
a no-go for hard-RT scenarios. Already tried to disable that sound
interface (e.g. in the BIOS if on-chip)?


4. How can I verify the status of running xenomai processes (and the driver). I would like to find out why I'm not meeting my interrupt deadlines.


$ cat /proc/xenomai/sched
$ cat /proc/xenomai/stat


Ha, that would be a good job for the latency tracer I recently posted.
Put some ipipe_trace_begin() in the IRQ handler and an ipipe_trace_end()
in the driver before waking up the user application (or just
ipipe_trace_freeze() here could also help). With the pre- and
post-tracing feature you will also be able to see what happens before
and after that, e.g. if something delayed your IRQ handler.

I don't think Philippe has already rolled out some ipipe version with
the patch included, but you can start with the version I posted two days
ago as add-on to an existing Xeno-kernel. Feel free to ask me if things
do not work - this could be a first interesting test case in the field! :)


I've just rolled out two patches, the first issue of the 1.1 series for x86, and the accompanying tracer patch. Apply them in that order:

http://download.gna.org/adeos/patches/v2.6/adeos/i386/adeos-ipipe-2.6.14-i386-1.1-00.patch
http://download.gna.org/adeos/patches/v2.6/adeos/i386/tracer/ipipe-tracer-2.6.14-i386-1.1-00.patch

The core patch does not include Dmitry's work on the shared IRQ issues yet, but -01 will.

Jan


------------------------------------------------------------------------

_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help


--

Philippe.

Reply via email to