XO-1.75/Kernel/Issues
hang, mmp2-pcm-audio.0 resume
This is a hang with the last serial console message:
mmp2-pcm-audio mmp2-pcm-audio.0: resume
No FIQ. No SysRq. Always preceeded by a PM: Some devices failed to suspend.
Jon Nettleton says known problem. Caused by interrupted suspend, and during the unwind of the resume it hangs.
Can be worked around by removing the audio driver from the kernel.
Disabling runin-sound has no effect.
Seen within half an hour if SUS_TIME is set to 3000. Rarely or never seen if SUS_TIME is set to 10000.
Theory: once a suspend takes too long, the RTC alarm goes off before suspend has finished, and the suspend is interrupted, leading to this issue.
Impact: may trigger also with other wake sources, leading to a failed runin.
Instances:
Might be fixed by http://dev.laptop.org/git/olpc-kernel/commit/?h=arm-3.0-wip-wfi&id=92ef8264199818b91518f7fe7af365c5998381fa
hang, dpm_resume
This is a hang shortly after the serial console message:
mmp2_pm_finish: Enable audio island
The time period may vary.
Only seen to occur with olpc-runin-tests in aggressive mode; a ten second awake time, followed by a ten second rtcwake suspend. Easily reproduced.
Instances from previous testing:
- http://dev.laptop.org/~quozl/z/1RiHT6.txt (75.904ms)
- http://dev.laptop.org/~greenfeld/temp/175bringup/os23-ff199462/screenlog.3-resumehang2ecmod.bz2 (80.341ms)
- http://dev.laptop.org/~greenfeld/temp/175bringup/os23-26f404e/screenlog.6-resumehang.bz2 (2.683ms)
- http://dev.laptop.org/~greenfeld/temp/175bringup/os23-26f404e/screenlog.3-ecfail1.bz2 (72.616ms)
- http://dev.laptop.org/~quozl/z/1Rhvmt.txt
- http://dev.laptop.org/~quozl/z/1RhvpV.txt
- http://dev.laptop.org/~quozl/z/1RiK9g.txt (proving it does not require the body of the function)
Analysis.
Tracing the point of hang by gradually adding printk has shown the problem occurs in dpm_resume(), before dpm_complete() is called by dpm_resume_end().
Adding a 60ms mdelay() per device within the dpm_resume() function, within the list processing, patch has shown results:
- C1 SKU201 after 27 suspend cycles,
- C1 SKU202 after 9 suspend cycles,
- C1 SKU202 after 123 suspend cycles,
- B1 after 211 suspend cycles,
- B4 after 137 suspend cycles.
- after 450 suspend cycles.
- a B1 that survived 1083 suspend cycles over 12 hours without hitting this.
- B1 that slowed right down in dpm_resume().
Note that the elapsed time shows no correlation with the previous instances of the issue ... which suggests that it is the operations being performed rather than the time they are performed.
James is using the watchdog on six units to capture as many instances of the hang as possible, to help in identifying next step in analysis. Results:
- 2701 suspend tests, 2571 successful resumes, 130 hung resumes, most frequent last messages before hang were mmcblk mmc2:0001: resume (49), input input9: type resume (32), input input8: type resume (4),