#11551 NORM 1.75-so: 1.75 audio hangs during recovery from aborted suspend
Zarro Boogs per Child
bugtracker at laptop.org
Thu Dec 15 16:53:33 EST 2011
#11551: 1.75 audio hangs during recovery from aborted suspend
--------------------+-------------------------------------------------------
Reporter: pgf | Owner: corbet
Type: defect | Status: new
Priority: normal | Milestone: 1.75-software
Component: kernel | Version: Development source as of this date
Keywords: | Next_action: diagnose
Verified: 0 | Deployment_affected:
Blockedby: | Blocking:
--------------------+-------------------------------------------------------
we use the pm_wakeup_event() mechanism to signal to the kernel that a
wakeup event has occurred. if such an event occurs while we're in the
process of suspending, suspend_enter() will abort the suspend in progress,
and unwind via all of the resume routines.
when this happens, we appear to hang during audio resume. this is easy to
reproduce.
{{{
bash-4.1#
bash-4.1# cat /sys/power/wakeup_count
8
bash-4.1# echo 8 > /sys/power/wakeup_count
bash-4.1# rtcwake -s1 -mmem
rtcwake: wakeup from "mem" using /dev/rtc0 at Thu Jan 1 00:02:31 1970
[ 792.330933] PM: Syncing filesystems ... done.
[ 792.484335] Freezing user space processes ... (elapsed 0.01 seconds)
done.
[ 792.506772] Freezing remaining freezable tasks ... (elapsed 0.01
seconds) done.
[ 792.527436] calling rfkill3+ @ 1479
[ 792.531004] call rfkill3+ returned 0 after 3468 usecs
[ 792.536035] calling phy3+ @ 1479
[ 792.539330] call phy3+ returned 0 after 3204 usecs
[ 792.539335] calling mmc1:0001:1+ @ 1479
[ 792.547995] call mmc1:0001:1+ returned 0 after 4 usecs
[ 792.548000] calling mmc1:0001+ @ 1479
[ 792.556837] call mmc1:0001+ returned 0 after 0 usecs
[ 792.556837] calling input10+ @ 1479
[ 792.565328] call input10+ returned 0 after 4 usecs
[ 792.570097] calling input9+ @ 1479
[ 792.573550] call input9+ returned 0 after 3370 usecs
[ 792.578500] calling 7-0021+ @ 1479
[ 792.581959] call 7-0021+ returned 0 after 3375 usecs
[ 792.586894] calling mmc2:0001+ @ 1479
[ 792.590633] call mmc2:0001+ returned 0 after 0 usecs
[ 792.595571] calling input8+ @ 1479
[ 792.599042] call input8+ returned 0 after 3375 usecs
[ 792.603975] calling input7+ @ 1479
[ 792.607447] call input7+ returned 0 after 1 usecs
[ 792.607452] calling soc-audio+ @ 1479
[ 792.618280] call soc-audio+ returned 0 after 2357 usecs
[ 792.623474] calling snd-soc-dummy+ @ 1479
[ 792.627554] call snd-soc-dummy+ returned 0 after 0 usecs
[ 792.632828] calling dcon-bl+ @ 1479
[ 792.636388] call dcon-bl+ returned 0 after 0 usecs
[ 792.636393] calling dcon+ @ 1479
[ 792.644451] call dcon+ returned 0 after 4 usecs
[ 792.644456] calling 6-000d+ @ 1479
[ 792.652430] dcon_source_switch to DCON
[ 792.689903] olpc-dcon: The DCON has control
[ 792.694080] call 6-000d+ returned 0 after 44067 usecs
[ 792.699104] calling storage+ @ 1479
[ 792.702662] call storage+ returned 0 after 0 usecs
[ 792.707423] calling mmc2::+ @ 1479
[ 792.710887] call mmc2::+ returned 0 after 0 usecs
[ 792.715565] calling mmc1::+ @ 1479
[ 792.719033] call mmc1::+ returned 0 after 3371 usecs
[ 792.723960] calling mmc0::+ @ 1479
[ 792.727433] call mmc0::+ returned 0 after 0 usecs
[ 792.732107] calling olpc-battery.0+ @ 1479
[ 792.736265] call olpc-battery.0+ returned 0 after 5 usecs
[ 792.736269] calling rtc1+ @ 1479
[ 792.745935] call rtc1+ returned 0 after 987 usecs
[ 792.745941] calling rtc0+ @ 1479
[ 792.753899] call rtc0+ returned 0 after 1 usecs
[ 792.758404] calling input6+ @ 1479
[ 792.761873] call input6+ returned 0 after 3375 usecs
[ 792.766857] calling 1-1+ @ 1157
[ 792.770119] calling input5+ @ 1479
[ 792.773575] call input5+ returned 0 after 3374 usecs
[ 792.778528] calling serio1+ @ 1479
[ 792.781981] call serio1+ returned 0 after 3372 usecs
[ 792.786938] calling serio0+ @ 1479
[ 792.790407] call serio0+ returned 0 after 3377 usecs
[ 792.795400] calling input4+ @ 1479
[ 792.798867] call input4+ returned 0 after 0 usecs
[ 792.798871] calling input3+ @ 1479
[ 792.807114] call input3+ returned 0 after 4 usecs
[ 792.811789] calling olpc-switch.0+ @ 1479
[ 792.815873] call olpc-switch.0+ returned 0 after 12 usecs
[ 792.821237] calling input2+ @ 1479
[ 792.824809] call input2+ returned 0 after 0 usecs
[ 792.824815] calling olpc-ols.0+ @ 1479
[ 792.833286] call olpc-ols.0+ returned 0 after 3715 usecs
[ 792.838571] calling input1+ @ 1479
[ 792.842043] call input1+ returned 0 after 1 usecs
[ 792.846792] calling input0+ @ 1479
[ 792.850258] call input0+ returned 0 after 0 usecs
[ 792.854951] calling lis3lv02d+ @ 1479
[ 792.858671] call lis3lv02d+ returned 0 after 0 usecs
[ 792.858671] calling alarmtimer+ @ 1479
[ 792.867533] call alarmtimer+ returned 0 after 5 usecs
[ 792.872580] calling regulatory.0+ @ 1479
[ 792.876739] call regulatory.0+ returned 0 after 4 usecs
[ 792.881954] calling 5-0019+ @ 1479
[ 792.885471] call 5-0019+ returned 0 after 3 usecs
[ 792.890162] calling 5-001d+ @ 1479
[ 792.893640] call 5-001d+ returned 0 after 6 usecs
[ 792.898520] calling i2c-5+ @ 1479
[ 792.901899] call i2c-5+ returned 0 after 3287 usecs
[ 792.906754] calling 0-001a+ @ 1479
[ 792.910230] call 0-001a+ returned 0 after 0 usecs
[ 792.914927] call 1-1+ returned 0 after 144574 usecs
[ 792.919766] calling usb1+ @ 1158
[ 792.923201] call usb1+ returned 0 after 3237 usecs
[ 792.927966] calling i2c-0+ @ 1479
[ 792.931348] call i2c-0+ returned 0 after 1 usecs
[ 792.935958] calling 1-0068+ @ 1479
[ 792.939428] call 1-0068+ returned 0 after 3378 usecs
[ 792.944366] calling i2c-1+ @ 1479
[ 792.947750] call i2c-1+ returned 0 after 0 usecs
[ 792.947754] calling 3-0030+ @ 1479
[ 792.955810] RAYDIUM_i2c_suspend, disable i2c irq
[ 792.960396] call 3-0030+ returned 0 after 4481 usecs
[ 792.965332] calling i2c-3+ @ 1479
[ 792.968711] call i2c-3+ returned 0 after 3289 usecs
[ 792.973558] calling 2-001e+ @ 1479
[ 792.977029] call 2-001e+ returned 0 after 4 usecs
[ 792.977034] calling i2c-2+ @ 1479
[ 792.985091] call i2c-2+ returned 0 after 0 usecs
[ 792.985091] calling i2c-6+ @ 1479
[ 792.993041] call i2c-6+ returned 0 after 3287 usecs
[ 792.997893] calling i2c-7+ @ 1479
[ 793.001268] call i2c-7+ returned 0 after 3287 usecs
[ 793.006120] calling vsram+ @ 1479
[ 793.009501] call vsram+ returned 0 after 0 usecs
[ 793.009501] calling mmp2-pcm-audio.0+ @ 1479
[ 793.018423] call mmp2-pcm-audio.0+ returned 0 after 4 usecs
[ 793.023955] calling mmp2-i2s.0+ @ 1479
[ 793.027768] call mmp2-i2s.0+ returned 0 after 5 usecs
[ 793.032788] calling sdhci-pxa.2+ @ 1479
[ 793.036801] call sdhci-pxa.2+ returned 0 after 93 usecs
[ 793.036808] calling sdhci-pxa.1+ @ 1479
[ 793.045907] libertas_sdio mmc1:0001:1: mmc1:0001:1: suspend: PM flags =
0x3
[ 793.052838] libertas_sdio mmc1:0001:1: Suspend without wake params --
powering down card
[ 794.075865] pm_wakeup_event: Added a wakeup event for mmp-rtc expiring
at 1000
[ 794.083086] pm_wakeup_event: Added a wakeup event for mmp-rtc expiring
at 1000
[ 794.094621] mmc1: card 0001 removed
[ 794.098272] call sdhci-pxa.1+ returned 0 after 1027705 usecs
[ 794.098280] PM: Some devices failed to suspend
[ 794.108411] calling usb1+ @ 1158
[ 794.111843] calling sdhci-pxa.1+ @ 1479
[ 794.115821] call sdhci-pxa.1+ returned 0 after 0 usecs
[ 794.115821] calling sdhci-pxa.2+ @ 1479
[ 794.144183] call usb1+ returned 0 after 34895 usecs
[ 794.149054] calling 1-1+ @ 5
[ 794.205541] call 1-1+ returned 0 after 55150 usecs
[ 794.228624] call sdhci-pxa.2+ returned 0 after 101341 usecs
[ 794.234184] calling mmp2-i2s.0+ @ 1479
[ 794.237999] call mmp2-i2s.0+ returned 0 after 3716 usecs
[ 794.243273] calling mmp2-pcm-audio.0+ @ 1479
}}}
the kernel used in the above failure log had "initcall_debug" on the
kernel commandline, and the following debug output had been added:
{{{
diff --git a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c
index 84f7c7d..e678e04 100644
--- a/drivers/base/power/wakeup.c
+++ b/drivers/base/power/wakeup.c
@@ -516,6 +516,8 @@ void __pm_wakeup_event(struct wakeup_source *ws,
unsigned int msec)
if (!ws)
return;
+ printk("pm_wakeup_event: Added a wakeup event for %s expiring at
%u\n",
+ ws->name, msec);
spin_lock_irqsave(&ws->lock, flags);
ws->event_count++;
}}}
--
Ticket URL: <http://dev.laptop.org/ticket/11551>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system
More information about the Bugs
mailing list