All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Ball <cjb@laptop.org>
To: Takashi Iwai <tiwai@suse.de>
Cc: Maxim Levitsky <maximlevitsky@gmail.com>,
	Oliver Neukum <oneukum@suse.de>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] mmc: Fix re-probing after hibernation
Date: Thu, 9 Dec 2010 01:53:03 +0000	[thread overview]
Message-ID: <20101209015303.GB19741@void.printf.net> (raw)
In-Reply-To: <1291821839-15088-1-git-send-email-tiwai@suse.de>

Hi Takashi,

On Wed, Dec 08, 2010 at 04:23:59PM +0100, Takashi Iwai wrote:
> The commit 4c2ef25fe0b847d2ae818f74758ddb0be1c27d8e
>   mmc: fix all hangs related to mmc/sd card insert/removal during
>   suspend/resume
> introduced a bug where the device probing no longer works after
> hibernation.  This was because the pm notifier expects
> PM_POST_HIBERNATION call while the system sends PM_POST_RESTORE
> instead, thus disable_rescan is kept as 1.
> 
> Cc: <stable@kernel.org>
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> ---
>  drivers/mmc/core/core.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
> index 31ae07a..30094f6 100644
> --- a/drivers/mmc/core/core.c
> +++ b/drivers/mmc/core/core.c
> @@ -1772,7 +1772,7 @@ int mmc_pm_notify(struct notifier_block *notify_block,
>  		break;
>  
>  	case PM_POST_SUSPEND:
> -	case PM_POST_HIBERNATION:
> +	case PM_POST_RESTORE:
>  
>  		spin_lock_irqsave(&host->lock, flags);
>  		host->rescan_disable = 0;

Thanks very much for tracking this down!  The code suggests that
POST_RESTORE is only emitted on a *failed* hibernation restore --
from include/linux/notifier.h:

/* Hibernation and suspend events */
#define PM_POST_HIBERNATION     0x0002 /* Hibernation finished */
#define PM_POST_SUSPEND         0x0004 /* Suspend finished */
#define PM_POST_RESTORE         0x0006 /* Restore failed */

So, this all suggests that we want to add the POST_RESTORE case but
also want to keep the POST_HIBERNATION case.  Do you agree?  Was the 
case you saw of failed probe after hibernation a failed restore from
hibernation image?

By the way, it looks like there are some other drivers which also
test for POST_HIBERNATION but not POST_RESTORE:

  drivers/media/video/tlg2300/pd-main.c
  drivers/s390/char/vmwatchdog.c
  drivers/s390/cio/css.c
  drivers/staging/brcm80211/brcmfmac/dhd_linux.c

Thanks,

- Chris.
-- 
Chris Ball   <cjb@laptop.org>   <http://printf.net/>
One Laptop Per Child

  parent reply	other threads:[~2010-12-09  1:53 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-08 15:23 [PATCH] mmc: Fix re-probing after hibernation Takashi Iwai
2010-12-08 22:04 ` Maxim Levitsky
2010-12-09  1:53 ` Chris Ball [this message]
     [not found]   ` <s5hlj3z1ksb.wl%tiwai@suse.de>
2010-12-09 20:37     ` Rafael J. Wysocki
2010-12-10  7:40       ` Takashi Iwai
2010-12-11 21:55         ` Chris Ball

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20101209015303.GB19741@void.printf.net \
    --to=cjb@laptop.org \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=maximlevitsky@gmail.com \
    --cc=oneukum@suse.de \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.