All of lore.kernel.org
 help / color / mirror / Atom feed
From: Philippe Gerum <rpm@xenomai.org>
To: Lowell Gilbert <kludge@be-well.ilk.org>, xenomai@xenomai.org
Subject: Re: [Xenomai] interrupt service
Date: Thu, 26 Feb 2015 18:56:21 +0100	[thread overview]
Message-ID: <54EF5E45.30907@xenomai.org> (raw)
In-Reply-To: <447fv4sk55.fsf@lowell-desk.lan>

On 02/26/2015 05:38 PM, Lowell Gilbert wrote:
> Philippe Gerum <rpm@xenomai.org> writes:
> 
>> Your test code in user-space seems to enable the timing IRQ only for a
>> very short time, between the write and read calls to the driver which
>> happen in sequence.
>>
>> Those two interrupts are very close in the time line, i.e. 42 us:
>>
>> :|   +begin   0x90000000   -68	  0.960  __irq_svc+0x44
>> (ipipe_unstall_root+0x88)
>> ...
>> :|  + begin   0x90000000   -26+   1.006  __irq_svc+0x44
>> (__ipipe_restore_head+0xec)
> 
> My actual interrupts are (typically) 10 us apart. There are some

Do you intend to run an interrupt-driven work loop at 100Khz on your
A9-based, dual core board? If so, your system is most likely handling
too many interrupts on the CPU running the RTDM task, preventing this
task to run and therefore increment the counter.

Assuming the interrupt controller for your SoC is a GIC, unless you
explicitly set the IRQ affinity, the GIC distributor will dispatch your
timing IRQ to CPU0 by default, like all other SPIs.

The new task will be pinned to the CPU running rtdm_task_init() by
default, which is likely CPU0 as well.

To check this, I would set the global Xenomai affinity to CPU1 before
starting the test, so that your driver task ends up there.

# echo 2 > /proc/xenomai/affinity

At least you would have the timing IRQ and the task on a different CPU,
leaving some cycles to the latter. This said, 10 us between timer shots
is really too fast.

> I had used a counting semaphore (to account for possibly missed
> interrupts) in an earlier version of this code before changing it to an
> event when I found that the semaphore didn't work. I also tried a direct
> call to rtdm_task_unblock(), and that failed also.
> 

If you look at ksrc/drivers/testing/timerbench.c, you will see a typical
use of rtdm events with ISRs, this driver is used when running
latency -t2 for instance. I'm convinced the RTDM event API is not the issue.

-- 
Philippe.


  parent reply	other threads:[~2015-02-26 17:56 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-18 22:03 [Xenomai] interrupt service Lowell Gilbert
2015-02-18 22:08 ` Gilles Chanteperdrix
2015-02-19  4:44   ` Lowell Gilbert
2015-02-19 21:06     ` Lowell Gilbert
2015-02-20 19:38     ` Lowell Gilbert
2015-02-20 22:57       ` Gilles Chanteperdrix
2015-02-24 23:01         ` Lowell Gilbert
2015-02-24 23:34           ` Gilles Chanteperdrix
2015-02-25 16:22             ` Lowell Gilbert
2015-02-25 17:34               ` Philippe Gerum
2015-02-25 18:35                 ` Philippe Gerum
2015-02-25 20:41                 ` Lowell Gilbert
2015-02-25 21:02                   ` Lowell Gilbert
2015-02-26 11:19                     ` Philippe Gerum
2015-02-26 16:38                       ` Lowell Gilbert
2015-02-26 17:26                         ` Gilles Chanteperdrix
2015-02-26 17:56                         ` Philippe Gerum [this message]
2015-02-26 19:25                           ` Lowell Gilbert
2015-02-26 20:11                             ` Gilles Chanteperdrix
2015-02-26 21:58                               ` Lowell Gilbert
2015-02-26 22:37                                 ` Gilles Chanteperdrix
2015-02-26 23:12                                   ` Lowell Gilbert
2015-02-26 23:09                               ` Philippe Gerum
2015-03-06 22:57                               ` Lowell Gilbert
2015-03-06 22:58                               ` Lowell Gilbert
2015-03-08 15:52                                 ` Gilles Chanteperdrix
2015-03-09 13:28                                   ` Lowell Gilbert
2015-02-26 20:24                             ` Philippe Gerum
2015-02-26 22:55                               ` Lowell Gilbert
2015-02-26 23:17                                 ` Daniele Nicolodi
2015-02-26 23:21                                 ` Philippe Gerum
2015-02-27  7:15                                 ` Tom Evans
2015-02-25  8:30           ` Philippe Gerum
2015-02-25  9:36             ` Philippe Gerum

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=54EF5E45.30907@xenomai.org \
    --to=rpm@xenomai.org \
    --cc=kludge@be-well.ilk.org \
    --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.