Re: omap3 cpuidle interrupt latency

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Premi, Sanjeev wrote:
-----Original Message-----
From: linux-omap-owner@xxxxxxxxxxxxxxx [mailto:linux-omap-owner@xxxxxxxxxxxxxxx] On Behalf Of Premi, Sanjeev
Sent: Tuesday, March 03, 2009 3:54 PM
To: Kevin Hilman
Cc: linux-omap@xxxxxxxxxxxxxxx
Subject: RE: omap3 cpuidle interrupt latency

-----Original Message-----
From: Kevin Hilman [mailto:khilman@xxxxxxxxxxxxxxxxxxx]
Sent: Tuesday, March 03, 2009 1:16 AM
To: Premi, Sanjeev
Cc: linux-omap@xxxxxxxxxxxxxxx
Subject: Re: omap3 cpuidle interrupt latency

"Premi, Sanjeev" <premi@xxxxxx> writes:

I have noticed large interrupt latency when the cpuidle
is enabled.
e.g. response time for ping goes from avg 10-20ms to 800-1000ms.
(I am at HEAD of the 'pm' branch)
Is it interrupt latency in general you are measuring? or just the interrupt latency for the smc network driver. I think what you are seeing is the result of the SMC IRQ not being configured as
a wakeup
source, thus a network interrupt will not wake the system,
but you end
up waiting for the next idle timer until the system wakes
and handles
the network interrupt.
I used SMC as an example. The read over USB is also slow...

I feel there is generic latency. Initially, I was suspecting the hrtimer functions taking long time. But that may not be the case.

By default, I don't believe the GPIO interrupt used by the smc is configured as a wakeup source. Have you configured that GPIO as a wakeup source?
My current measurements are based with all idle related flags 'sleep_while_idle', 'clocks_off_while_idle' and 'enable_off_mode'
set at 0.

Does WFI require a wakeup event? Even when system is not in 'off' stare?

For simple debug, I replaced the _omap_sram_idle() processing with:
	__asm__ ("dmb");
	__asm__ ("dsb");
	__asm__ ("wfi");

Here, again behavior was same for ethernet.

For more simplification, I focused on keypad and touchscreen.
1) Let the system stay idle for about 10secs
2) Press the keypad & tap the touchscreen
3) cat /proc/interrupts

While the keypad interrupts (via SYS_NIRQ) are getting updated;
most of the TS interrupts (via GPIO) seem to be missing; With a
busy loop in the background OR _omap_sram_idle() commented - not
doing WFI - changes the behavior. Each tap on the TS is registered
in /proc/interrupts.


IIUC, the keypad interrupts are making it all the way to the kernel, but the touchscreen ones are not, correct?

What happens if you enable IRQ wakeups for the TS interrupt?

Kevin
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux