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

Linus Torvalds
2009-10-30T19:47:38Z

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.

Linus