From: Philippe Gerum <rpm@xenomai.org>
To: ROSSIER Daniel <Daniel.Rossier@domain.hid>
Cc: xenomai@xenomai.org
Subject: Re: [Xenomai-core] Timer IRQ propagation
Date: Sun, 26 Mar 2006 20:27:19 +0200 [thread overview]
Message-ID: <4426DD07.9040904@domain.hid> (raw)
In-Reply-To: <FDBBB5CC70676540B3EF7CFE83FD94E004310B@EINT11.einet.ad.eivd.ch>
ROSSIER Daniel wrote:
>
>
> 2- When a timer IRQ is received, we understood that the IRQ is ack'd and masked by handle_irq()
and sent to the domains through walk_pipeline() including Linux; but we
have some doubts about that since
the timer ISR of Linux first acknowledges the interrupt, and it seems
that it acknowledges physically (hw ack);
we expected that the acknowledgement would be a virtual ack in the
Linux domain since the ack has been made
previously by handle_irq(). In our case (ARM arch), the ack actually
corresponds to a mask and therefore the
timer IRQ is masked by Linux once it gets, and we then suspect some
loss of timer interrupts.
>
> have we understood correctly the mechanism? Any idea about this behaviour? Is it normal?
>
>
>
>>Still unclear to me; the ack would be done in the timer ISR; however in the (ARM) patch we have,
ipipe performs a hardware ack; I've seen in the x86 patch that adeos
makes nothing within __ipipe_ack_system_irq().
Yes, it does actually, it's even its role as a fast acknowledge Adeos
handler for incoming hw IRQs. It acks the APIC when the APIC support is
built-in (I should have made the entire routine conditionally compiled
on CONFIG_X86_LOCAL_APIC actually). Since __ipipe_ack_system_irq() is
only called for APIC-controlled IRQs, this routine always touches the hw.
I guess the last behaviour is correct, isn't it?
>
Looking at Stelian's code in arm/mach-integrator/core.c, I see that
integrator_timer_interrupt does not acknowledge the timer IRQ, despite
the misleading comment. It only makes some bookkeeping for TSC emulation
when some higher domain in the pipeline has stolen the timer (e.g.
Xenomai). Otherwise, when the Ipipe is compiled in, the regular timer
tick handler does not touch the hw at all.
The logic is this one for all Adeos ports:
- some code intercepts the hw IRQs before they are passed to the regular
Linux handlers, and feeds __ipipe_handle_irq() with those.
- __ipipe_handle_irq() calls the fast acknowledge handler for the
incoming hw IRQ, which ends up being, e.g. __ipipe_ack_system_irq() for
APIC-controlled IRQs on x86 systems, or __ipipe_ack_timerirq() for the
timer IRQ in the ARM Integrator/CP port. Some IRQs might need different
fast ack handlers depending on their respective type.
- IRQs are virtualized, which means that they are marked for delivery in
the interrupt log, where they might linger for some time before the
I-pipe is allowed to dispatch them to the proper handler eventually.
- At some point in time, Linux ends up being notified of the IRQ, when
higher priority domains are done with it (e.g. Xenomai). This means that
the regular handler gets called, but Adeos ports always disable the
vanilla acknowledge code from such handlers, so that we always have one
and only one ack cycle for any given IRQ (i.e. the fast ack one from
__ipipe_handle_irq).
--
Philippe.
next prev parent reply other threads:[~2006-03-26 18:27 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-24 15:38 [Xenomai-core] Timer IRQ propagation ROSSIER Daniel
2006-03-26 11:19 ` ROSSIER Daniel
2006-03-26 12:17 ` Jan Kiszka
2006-03-26 18:27 ` Philippe Gerum [this message]
-- strict thread matches above, loose matches on Subject: below --
2006-03-27 6:54 ROSSIER Daniel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4426DD07.9040904@domain.hid \
--to=rpm@xenomai.org \
--cc=Daniel.Rossier@domain.hid \
--cc=xenomai@xenomai.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.