Re: Help needed, Re: [Bug #14334] pcmcia suspend regression from 2.6.31.1 to 2.6.31.2 - Dell Inspiron 600m

Rafael J. Wysocki
2009-10-31T09:29:39Z

On Saturday 31 October 2009, Benjamin Herrenschmidt wrote:
> On Fri, 2009-10-30 at 12:47 -0700, Linus Torvalds wrote:
> >
> > On Fri, 30 Oct 2009, Rafael J. Wysocki wrote:
> > >
> > >
> > > 1) Resume works if pcmcia_socket_dev_resume(dev) is moved to the "regular"
> > > resume phase, after resume_device_irqs().
> >
> > Hmm. We really probably shouldn't call pcmcia_socket_dev_resume() in
> > early_resume. It takes mutexes etc, and it calls "socket_resume()", which
> > sleeps etc. That per se should be ok these days (since we don't actualyl
> > disable CPU irq's, just device irqs), but it also does that whole card
> > insertion events etc. And _that_ code I wouldn't trust at all.
> >
> > The PCMCIA code is better than it used to be a long time ago, but some of
> > it is still pretty crazy.
> >
> > I get the feeling that we should just revert that commit 0c570cdeb, and
> > instead always do PCMCIA suspend as a "eject" event. That way we have no
> > driver behind it to resume at resume time - and we'll see any plugged-in
> > device as just a new insertion.
>
> To me the proper approach would be to split it so that

Well, agreed, but ...

> - early_resume() restores power & config space etc... so that existing
> devices can move on (might check for removal). There's no other hotplug
> activity

... that's exactly what doesn't work at the moment.

Thanks,
Rafael