#12030 NORM 12.1.0: XO-1.5 "irq 22: nobody cared" when going into suspend
Zarro Boogs per Child
bugtracker at laptop.org
Tue Jul 31 20:52:44 EDT 2012
#12030: XO-1.5 "irq 22: nobody cared" when going into suspend
--------------------------------+-------------------------------------------
Reporter: dsd | Owner: dsd
Type: defect | Status: new
Priority: normal | Milestone: 12.1.0
Component: kernel | Version: not specified
Resolution: | Keywords:
Next_action: diagnose | Verified: 0
Deployment_affected: | Blockedby:
Blocking: |
--------------------------------+-------------------------------------------
Comment(by dsd):
Looking a bit more, this would fit perfectly with the logs shown above.
The fact that the "nobody cared" message doesn't show sdhci as an IRQ
handler suggests that the suspend routine has already completed, and the
message that comes up soon after:
{{{
[ 3214.040024] mmc2: Timeout waiting for hardware interrupt.
}}}
comes from sdhci_timeout_timer which is the trigger for the timer in
question.
I think we can't just call del_timer_sync() here - we need to let the
command complete (or time out) and then pass the results back to whoever
invoked the command, etc. Looking for how to wait for completion of this
timer, it looks like the "finish condition" for this work is the call to
mmc_request_done(). So maybe the MMC layer should have finished all
requests when it was told to suspend. I guess we need some code like this
in mmc_suspend_host():
{{{
if (host->areq) {
mmc_wait_for_req_done(host, host->areq->mrq);
err = host->areq->err_check(host->card, host->areq);
if (err) {
/* post process the completed failed request */
mmc_post_req(host, host->areq->mrq, 0);
host->areq = NULL;
}
}
}}}
(the above comes from mmc_start_req)
--
Ticket URL: <http://dev.laptop.org/ticket/12030#comment:7>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system
More information about the Bugs
mailing list