In the past on another processor, i have seen sometimes disabling
power management has a very good impact on reducing the latency.
What i did was:
a) to disable cpu-idle - not to allow system to go to lower c states
b) operate at highest operating frequency by using ondemand or
performance governor - to eliminate voltage scaling etc.
I have not done it on AM processor, but these are generic enough
concepts to surely have an impact.
On Thu, Apr 18, 2013 at 8:38 AM, <
hken...@gmail.com> wrote:
> Hi,
>
> I'm trying to make linux 3.8 run on a Beaglebone, but I'm facing problems
> with high interrupt latency when using GPIO as interrupt source. I've
> extended the GPIO/UIO drivers (mostly gpiolib.c) with a feature that makes
> it possible to via sysfs configure which GPIO-pin(s) that should generate
> interrupt. This, in turn, could be used to trigger an "interrupt" on a
> /dev/uioX as usuall in the UIO driver.
>
> Attached are patches for the code. I started on plain 3.8.4, added the
> patches found on git://
github.com/beagleboard/kernel.git, branch
> remotes/origin/3.8 and then applied the attached patches.
>
> These patches add the feature:
>
> 0001-First-gpio......patch
> 0002--Cleanup......patch
>
> 0001-Testcode.....patch is a patch that toggles another gpio, just to be
> able to measure the interrupt latency on an oscilloscope.
>
> So what I later do is to set a GPIO as irq source (gpio 60 in the example
> below) and trigger an interrupt with another GPIO (48 in the example below)
> and the I can meassure the latency between GPIO60 (or 48) and GPIO 38.
>
> A jumper must be put between P9:12 and P9:15 on the BeagleBone when
> measuirng latency. (GPIO pin to generate a signal, and GPIO pin to generate
> irq)
>
> What I do on command line:
>
> cd /sys/class/gpio_uio_irq/
> echo "60 IRQ_TYPE_EDGE_RISING" > allocate_gpio_uio_irq
> cd ../gpio
> echo 48 > export
> cd gpio48/
> echo out > direction
> echo 1 > value ; echo 0 > value
>
> If I do this on a 3.2 kernel + TexasInstrument's SDK 05.07.00.00, I get app.
> 15-20 us latency, which is pretty much what I expect, according to TI's
> documentation.
>
> But if I do it on the sw level descibed above, 3.8.4 +
> "git://
github.com/beagleboard/kernel.git, branch remotes/origin/3.8" I get
> between 400 us and 2 ms, which is way too much. I use the kernel config for
> Beaglebone "as is" in the git://
github.com/beagleboard/kernel.git repo.
>
> Does anyone recognize this behaviour, when it comes to large interrupt
> latency ? It would be interesting to measure latency in general, not only
> for GPIO, but on the other hand, using GPIO as irq source in 3.2 + ...
> worked fine, so I don't see any obvoius reason why it should not work on 3.8
> + ...
>
> GPIO 60 is pin 12 on P9
> GPIO 48 is pin 15 on P9
> GPIO 38 is pin 3 on P8 (GPIO 38 is used as "measuring pin" in the testpatch)
>
> br Håkan Engblom
>
> --
> For more options, visit
http://beagleboard.org/discuss
> ---
> You received this message because you are subscribed to the Google Groups
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to
beagleboard...@googlegroups.com.
> For more options, visit
https://groups.google.com/groups/opt_out.
>
>