netdev
[Top] [All Lists]

Re: [patch] fix suspend/resume on b44

To: Andrew Morton <akpm@xxxxxxxx>
Subject: Re: [patch] fix suspend/resume on b44
From: Pavel Machek <pavel@xxxxxx>
Date: Wed, 21 Sep 2005 23:13:32 +0200
Cc: jgarzik@xxxxxxxxx, netdev@xxxxxxxxxxx, hmacht@xxxxxxx
In-reply-to: <20050921033653.05c448df.akpm@osdl.org>
References: <20050920132811.GA4563@elf.ucw.cz> <20050920162635.565e4b46.akpm@osdl.org> <20050921102054.GE25297@atrey.karlin.mff.cuni.cz> <20050921033653.05c448df.akpm@osdl.org>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mutt/1.5.9i
Hi!

> > > > diff --git a/drivers/net/b44.c b/drivers/net/b44.c
> > > > --- a/drivers/net/b44.c
> > > > +++ b/drivers/net/b44.c
> > > > @@ -1930,6 +1930,8 @@ static int b44_suspend(struct pci_dev *p
> > > >         b44_free_rings(bp);
> > > >  
> > > >         spin_unlock_irq(&bp->lock);
> > > > +
> > > > +       free_irq(dev->irq, dev);
> > > >         pci_disable_device(pdev);
> > > >         return 0;
> > > >  }
> > > > @@ -1946,6 +1948,9 @@ static int b44_resume(struct pci_dev *pd
> > > >         if (!netif_running(dev))
> > > >                 return 0;
> > > >  
> > > > +       if (request_irq(dev->irq, b44_interrupt, SA_SHIRQ, dev->name, 
> > > > dev))
> > > > +               printk(KERN_ERR PFX "%s: request_irq failed\n", 
> > > > dev->name);
> > > > +
> > > >         spin_lock_irq(&bp->lock);
> > > >  
> > > >         b44_init_rings(bp);
> > > > 
> > > 
> > > Why does it hang on suspend/resume?
> > > 
> > > This came up a while back and iirc we decided that adding free_irq() to
> > > every ->suspend() handler in the world was the wrong thing to do.  Do I
> > > misremember?
> > 
> > No, you remember right, but b44 needed that free_irq/request_irq even
> > because those ACPI changes. I'm not exactly sure why, something went
> > very wrong otherwise.
> 
> Well I guess we should work out what went wrong ;)
> 
> What are the symptoms?  Screaming interrupt?  Can't immediately see why. 
> Does the screaming interrupt detetor trigger and disable the IRQ Line?

No, it seems like BUG() triggers in
b44. https://bugzilla.novell.com/show_bug.cgi?id=116088 is for
basically 2.6.13 kernel (but it was in something as old as 2.6.5,
too).



Setting machine into suspend to disk with loaded module b44. While
resuming,
kernel oopses and machine freezes after reloading data from
swap. Image will be
appended.

If this can not be fixed in time, we could add this module to
UNLOAD_MODULES_BEFORE_SUSPEND in powersave configuratiion.

                                                                Pavel

-- 
if you have sharp zaurus hardware you don't need... you know my address

<Prev in Thread] Current Thread [Next in Thread>