profiling the resume path

Marcelo Tosatti marcelo at kvack.org
Mon Sep 3 22:43:12 EDT 2007


On Mon, Sep 03, 2007 at 12:40:43PM +0100, David Woodhouse wrote:
> On Mon, 2007-09-03 at 09:27 +0100, David Woodhouse wrote:
> > On Mon, 2007-09-03 at 04:05 -0400, Marcelo Tosatti wrote:
> > > > This interrupt scheduled for 233-40ms is what sounds wrong. It should
> > > > just continue to blaze off the EHCI resume path.
> > > 
> > > ... after 20ms have passed, not almost 200. 
> > 
> > Ah, right. Sorry, I missed the order of magnitude discrepancy. Are we
> > just miscalculating the setting of the wakeup interrupt? More debugging
> > of that calculation might be in order...
> 
> Can you comment out the 'if(tbase_get_deferrable(nte->base)) continue;'
> in __next_timer_interrupt() at about line 678 of kernel/timer.c ?

Actually with CONFIG_NO_HZ disabled what happens is:

[    0.061390] ohci_pci_resume+0x73/0x8a -> msleep+0xb/0x27
[    0.061390] msleep+0x16/0x27 -> msecs_to_jiffies+0x8/0x16
[    0.061391] msleep+0x21/0x27 -> schedule_timeout_uninterruptible+0x8/0x1d
...
[    0.000000] _spin_unlock_irq+0x13/0x33 -> _raw_spin_unlock+0xc/0x87
[    0.077128] schedule_timeout+0x80/0x97 -> del_timer+0xd/0x62 [    0.077129] mmc_go_idle+0x89/0xa0 -> mmc_set_chip_select+0xb/0x2f
[    0.077129] mmc_set_chip_select+0x2d/0x2f -> sdhci_set_ios+0xe/0xac
[    0.077130] sdhci_set_ios+0x24/0xac -> _spin_lock_irqsave+0xd/0x2b
[    0.077131] _spin_lock_irqsave+0x24/0x2b -> _raw_spin_lock+0xe/0x10e
[    0.077132] sdhci_set_ios+0x4c/0xac -> sdhci_set_clock+0xe/0xb1

Meaning that the kernel continues after 16ms (77-61) when a sdhci timer
expires. Resume time goes down from 1060ms to 815ms without dynamic
ticks.

Your suggested change did not help.. I'll RTFS, thanks.



More information about the Devel mailing list