* Re: regression: 295f000 breaks suspend to disk
[not found] <1231797615.2797.5.camel@odie.local>
@ 2009-01-14 17:16 ` Bartlomiej Zolnierkiewicz
2009-01-14 17:44 ` Simon Holm Thøgersen
0 siblings, 1 reply; 2+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2009-01-14 17:16 UTC (permalink / raw)
To: Simon Holm Thøgersen; +Cc: linux-kernel, linux-ide
On Monday 12 January 2009, Simon Holm Thøgersen wrote:
> commit 295f000 ("ide: don't execute the next queued command from the
> hard-IRQ context (v2)") breaks suspend to disk for me. On
> 'echo disk > /sys/power/state' the systems hangs, letting me switch
> virtual consoles, but not responding to Alt+SysRq
Thanks, please try the patch below (it fixes the problem for me):
From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Subject: [PATCH] ide: fix suspend regression
On Monday 12 January 2009, Simon Holm Thøgersen wrote:
> commit 295f000 ("ide: don't execute the next queued command from the
> hard-IRQ context (v2)") breaks suspend to disk for me. On
> 'echo disk > /sys/power/state' the systems hangs, letting me switch
> virtual consoles, but not responding to Alt+SysRq
Restart the request queue early for REQ_TYPE_PM_RESUME requests
(though there is only one resume request for the whole resume
sequence it stays in the queue until is fully completed and now
depends on kblockd for processing consequential resume states).
Reported-and-bisected-by: Simon Holm Thøgersen <odie@cs.aau.dk>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
---
drivers/ide/ide-pm.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
Index: b/drivers/ide/ide-pm.c
===================================================================
--- a/drivers/ide/ide-pm.c
+++ b/drivers/ide/ide-pm.c
@@ -186,12 +186,10 @@ void ide_complete_pm_request(ide_drive_t
blk_pm_suspend_request(rq) ? "suspend" : "resume");
#endif
spin_lock_irqsave(q->queue_lock, flags);
- if (blk_pm_suspend_request(rq)) {
+ if (blk_pm_suspend_request(rq))
blk_stop_queue(q);
- } else {
+ else
drive->dev_flags &= ~IDE_DFLAG_BLOCKED;
- blk_start_queue(q);
- }
spin_unlock_irqrestore(q->queue_lock, flags);
drive->hwif->rq = NULL;
@@ -219,6 +217,8 @@ void ide_check_pm_state(ide_drive_t *dri
* point.
*/
ide_hwif_t *hwif = drive->hwif;
+ struct request_queue *q = drive->queue;
+ unsigned long flags;
int rc;
#ifdef DEBUG_PM
printk("%s: Wakeup request inited, waiting for !BSY...\n", drive->name);
@@ -231,5 +231,9 @@ void ide_check_pm_state(ide_drive_t *dri
rc = ide_wait_not_busy(hwif, 100000);
if (rc)
printk(KERN_WARNING "%s: drive not ready on wakeup\n", drive->name);
+
+ spin_lock_irqsave(q->queue_lock, flags);
+ blk_start_queue(q);
+ spin_unlock_irqrestore(q->queue_lock, flags);
}
}
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: regression: 295f000 breaks suspend to disk
2009-01-14 17:16 ` regression: 295f000 breaks suspend to disk Bartlomiej Zolnierkiewicz
@ 2009-01-14 17:44 ` Simon Holm Thøgersen
0 siblings, 0 replies; 2+ messages in thread
From: Simon Holm Thøgersen @ 2009-01-14 17:44 UTC (permalink / raw)
To: Bartlomiej Zolnierkiewicz; +Cc: linux-kernel, linux-ide
ons, 14 01 2009 kl. 18:16 +0100, skrev Bartlomiej Zolnierkiewicz:
> On Monday 12 January 2009, Simon Holm Thøgersen wrote:
> > commit 295f000 ("ide: don't execute the next queued command from the
> > hard-IRQ context (v2)") breaks suspend to disk for me. On
> > 'echo disk > /sys/power/state' the systems hangs, letting me switch
> > virtual consoles, but not responding to Alt+SysRq
>
> Thanks, please try the patch below (it fixes the problem for me):
And for me as well. Thanks!
Simon
>
> From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
> Subject: [PATCH] ide: fix suspend regression
>
> On Monday 12 January 2009, Simon Holm Thøgersen wrote:
> > commit 295f000 ("ide: don't execute the next queued command from the
> > hard-IRQ context (v2)") breaks suspend to disk for me. On
> > 'echo disk > /sys/power/state' the systems hangs, letting me switch
> > virtual consoles, but not responding to Alt+SysRq
>
> Restart the request queue early for REQ_TYPE_PM_RESUME requests
> (though there is only one resume request for the whole resume
> sequence it stays in the queue until is fully completed and now
> depends on kblockd for processing consequential resume states).
>
> Reported-and-bisected-by: Simon Holm Thøgersen <odie@cs.aau.dk>
> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
> ---
> drivers/ide/ide-pm.c | 12 ++++++++----
> 1 file changed, 8 insertions(+), 4 deletions(-)
>
> Index: b/drivers/ide/ide-pm.c
> ===================================================================
> --- a/drivers/ide/ide-pm.c
> +++ b/drivers/ide/ide-pm.c
> @@ -186,12 +186,10 @@ void ide_complete_pm_request(ide_drive_t
> blk_pm_suspend_request(rq) ? "suspend" : "resume");
> #endif
> spin_lock_irqsave(q->queue_lock, flags);
> - if (blk_pm_suspend_request(rq)) {
> + if (blk_pm_suspend_request(rq))
> blk_stop_queue(q);
> - } else {
> + else
> drive->dev_flags &= ~IDE_DFLAG_BLOCKED;
> - blk_start_queue(q);
> - }
> spin_unlock_irqrestore(q->queue_lock, flags);
>
> drive->hwif->rq = NULL;
> @@ -219,6 +217,8 @@ void ide_check_pm_state(ide_drive_t *dri
> * point.
> */
> ide_hwif_t *hwif = drive->hwif;
> + struct request_queue *q = drive->queue;
> + unsigned long flags;
> int rc;
> #ifdef DEBUG_PM
> printk("%s: Wakeup request inited, waiting for !BSY...\n", drive->name);
> @@ -231,5 +231,9 @@ void ide_check_pm_state(ide_drive_t *dri
> rc = ide_wait_not_busy(hwif, 100000);
> if (rc)
> printk(KERN_WARNING "%s: drive not ready on wakeup\n", drive->name);
> +
> + spin_lock_irqsave(q->queue_lock, flags);
> + blk_start_queue(q);
> + spin_unlock_irqrestore(q->queue_lock, flags);
> }
> }
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-01-14 17:44 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1231797615.2797.5.camel@odie.local>
2009-01-14 17:16 ` regression: 295f000 breaks suspend to disk Bartlomiej Zolnierkiewicz
2009-01-14 17:44 ` Simon Holm Thøgersen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).