From: Maxime Ripard <maxime.ripard@free-electrons.com>
To: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
Cc: Thomas Petazzoni <thomas@free-electrons.com>,
Nicolas Ferre <nicolas.ferre@atmel.com>,
Boris Brezillon <boris@free-electrons.com>,
Alexandre Belloni <alexandre.belloni@free-electrons.com>,
xenomai@xenomai.org
Subject: Re: [Xenomai] [PATCH] AT91: SAMA5D3: Adapt Ipipe for AIC5
Date: Fri, 4 Jul 2014 11:27:36 +0200 [thread overview]
Message-ID: <20140704092736.GC13487@lukather> (raw)
In-Reply-To: <53B30D96.60500@xenomai.org>
On Tue, Jul 01, 2014 at 09:35:50PM +0200, Gilles Chanteperdrix wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 07/01/2014 04:15 PM, Maxime Ripard wrote:
> > Hi Gilles,
> >
> > On Tue, Jul 01, 2014 at 12:59:51PM +0200, Gilles Chanteperdrix
> > wrote:
> >> On 07/01/2014 12:27 PM, Maxime Ripard wrote:
> >>> - - at91_pic_muter_register(); }
> >>
> >> Obviously, some if (soc_is_foo()) missing here.
> >
> > Right.
> >
> >>> +static void __maybe_unused at91_aic5_eoi(struct irq_data *d)
> >>> +{ + at91_aic_write(AT91_AIC5_EOICR, 0); +}
> >>
> >> You want to make that inline, so that the hold callback ends-up
> >> doing just two register writes without any function calls,
> >> improving interrupt latency.
> >>
> >>> + #ifdef CONFIG_IPIPE static void at91_aic_hold_irq(struct
> >>> irq_data *d) { @@ -258,13 +283,20 @@ static void
> >>> at91_aic_release_irq(struct irq_data *d) {
> >>> at91_aic_hard_unmask_irq(d); } -#endif /* CONFIG_IPIPE */
> >>>
> >>> -static void __maybe_unused at91_aic5_eoi(struct irq_data *d)
> >>> +static void at91_aic5_hold_irq(struct irq_data *d) { -
> >>> at91_aic_write(AT91_AIC5_EOICR, 0); +
> >>> at91_aic5_hard_mask_irq(d); + at91_aic5_eoi(d); }
> >>>
> >>> +static void at91_aic5_release_irq(struct irq_data *d) +{ +
> >>> at91_aic5_hard_unmask_irq(d); +}
> >>
> >> The ->release callback is called with irqs on, so you may want to
> >> call hard_local_irq_save / hard_local_irq_restore to make it
> >> atomic (note that the old at91s are also broken by the addition
> >> of the call to set_backup). Alternatively, you may move the
> >> clear_backup/set_bakcup calls to the linux mask/unmask routines,
> >> so that the register writes remain atomic, and you can avoid the
> >> save/restore and function calls and improve the interrupt
> >> latency.
> >
> > Ok, so, with the changes you mentionned, I can't make the system
> > crash anymore (or at least, not as easily as it used to be).
> >
> > But: - whenever the program mentionned above calls exit(), it
> > stalls. However, ctrl+c makes the program exit properly, and
> > everything seems fine otherwise - whenever we don't link it against
> > xenomai, it just hangs. I've not figured out why yet
> >
> > With CONFIG_XENOMAI and CONFIG_IPIPE disabled, it works fine.
>
> My answer was wrong, you probably need to keep the
> set_backup/clear_backup calls in he ->hold and ->release callbacks, as
> the linux interrupt may expect the backup areas to be in sync. Did you
> do this, or did you go for the alternative?
I went for the alternative. I'm sending you a v2 with what I have so
far, that shows the behaviour I was describing.
Maxime
--
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://www.xenomai.org/pipermail/xenomai/attachments/20140704/4512e9dc/attachment.sig>
next prev parent reply other threads:[~2014-07-04 9:27 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-01 10:27 [Xenomai] [PATCH] AT91: SAMA5D3: Adapt Ipipe for AIC5 Maxime Ripard
2014-07-01 10:59 ` Gilles Chanteperdrix
2014-07-01 14:15 ` Maxime Ripard
2014-07-01 19:35 ` Gilles Chanteperdrix
2014-07-04 9:27 ` Maxime Ripard [this message]
2014-07-05 8:13 ` Gilles Chanteperdrix
2014-07-07 16:02 ` Maxime Ripard
2014-07-07 16:07 ` Gilles Chanteperdrix
2014-07-08 12:55 ` Maxime Ripard
2014-07-08 14:04 ` Maxime Ripard
2014-07-08 17:30 ` Gilles Chanteperdrix
2014-07-10 15:05 ` Maxime Ripard
2014-07-10 17:04 ` Gilles Chanteperdrix
2014-07-16 16:18 ` Maxime Ripard
2014-07-16 19:47 ` Gilles Chanteperdrix
2014-07-17 10:18 ` Maxime Ripard
2014-07-17 10:54 ` Gilles Chanteperdrix
2014-07-17 11:59 ` Maxime Ripard
2014-07-17 22:21 ` Gilles Chanteperdrix
2014-07-10 18:27 ` Gilles Chanteperdrix
[not found] ` <20140710172702.5ba6511c@free-electrons.com>
2014-07-10 18:30 ` Gilles Chanteperdrix
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=20140704092736.GC13487@lukather \
--to=maxime.ripard@free-electrons.com \
--cc=alexandre.belloni@free-electrons.com \
--cc=boris@free-electrons.com \
--cc=gilles.chanteperdrix@xenomai.org \
--cc=nicolas.ferre@atmel.com \
--cc=thomas@free-electrons.com \
--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.