lkml.org 
[lkml]   [2009]   [Jul]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [Bug #13663] suspend to ram regression (IDE related)
    From
    On Thu, Jul 2, 2009 at 12:29 AM, Bartlomiej
    Zolnierkiewicz<bzolnier@gmail.com> wrote:
    > Here is the more complete version, also taking into the account changes
    > in ide_intr() and ide_timer_expiry():

    This works great for. Survived STR, STD. I just applied on top vanilla
    latest Linus's git pull. Nothing else to revert.

    Thanks,
    Jeff.


    > ---
    >  drivers/ide/ide-io.c |   15 ++++++++++-----
    >  1 file changed, 10 insertions(+), 5 deletions(-)
    >
    > Index: b/drivers/ide/ide-io.c
    > ===================================================================
    > --- a/drivers/ide/ide-io.c
    > +++ b/drivers/ide/ide-io.c
    > @@ -532,7 +532,8 @@ repeat:
    >
    >                if (startstop == ide_stopped) {
    >                        rq = hwif->rq;
    > -                       hwif->rq = NULL;
    > +                       if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0)
    > +                               hwif->rq = NULL;
    >                        goto repeat;
    >                }
    >        } else
    > @@ -679,8 +680,10 @@ void ide_timer_expiry (unsigned long dat
    >                spin_lock_irq(&hwif->lock);
    >                enable_irq(hwif->irq);
    >                if (startstop == ide_stopped && hwif->polling == 0) {
    > -                       rq_in_flight = hwif->rq;
    > -                       hwif->rq = NULL;
    > +                       if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
    > +                               rq_in_flight = hwif->rq;
    > +                               hwif->rq = NULL;
    > +                       }
    >                        ide_unlock_port(hwif);
    >                        plug_device = 1;
    >                }
    > @@ -856,8 +859,10 @@ irqreturn_t ide_intr (int irq, void *dev
    >         */
    >        if (startstop == ide_stopped && hwif->polling == 0) {
    >                BUG_ON(hwif->handler);
    > -               rq_in_flight = hwif->rq;
    > -               hwif->rq = NULL;
    > +               if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
    > +                       rq_in_flight = hwif->rq;
    > +                       hwif->rq = NULL;
    > +               }
    >                ide_unlock_port(hwif);
    >                plug_device = 1;
    >        }
    >
    \
     
     \ /
      Last update: 2009-07-01 19:31    [W:4.417 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site