Re: Bugs in MMC [was: [Bug 10030] Suspend doesn't work when SD card is inserted]

David Brownell
2008-03-04T20:31:27Z

On Tuesday 04 March 2008, Alan Stern wrote:
> On Tue, 4 Mar 2008, David Brownell wrote:
>
> > > I don't understand this comment. Suppose a card was inserted while the
> > > system was hibernating. If the core didn't reprobe, when would that
> > > card be discovered?
> >
> > The host controller would tell the core to check for a card, exactly
> > like it does at all other times.
>
> But how would the host controller know to do that? Isn't card
> insertion detection often driven by interrupts? If a card is
> inserted while the computer is off, no interrupt will be generated.

I'm talking about Real Suspend States (tm), not hibernation.
The systems in question tend to not support hibernation.

In particular: system sleep states where IRQs work ... that's a
common way for non-x86 platforms to work.

> > That's the natural alternative to having the MMC core assume that card
> > detection was broken in low power states, so that the core needed to
> > forcibly remove the cards before suspend, and reprobe during resume
> > processing.
>
> Is that the assumption the MMC core was really making? Are you sure it
> wasn't assuming something else (perhaps equally as bad)?

On the systems I was looking at, that assumption seems equivalent to
what the latest MMC core is assuming. (I think this came as part of
the rewrite/refactoring a while back.) But since the assumptions aren't
documented as such, you could say all guesses are equal. ;)

> > Having the MMC core make such needless assumptions can cause problems
> > for the upper layers, including filesystems.
>
> What's wrong with a superfluous probe at resume time, besides the waste
> of a few milliseconds?

I'm more concerned with the undesirable removal of devices at suspend
time ... ones with mounted filesystems etc.

- Dave