mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: NeilBrown <neilb@suse.de>, Chris Ball <cjb@laptop.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
	linux-mmc@vger.kernel.org,
	Linux PM mailing list <linux-pm@vger.kernel.org>,
	Thierry Reding <thierry.reding@avionic-design.de>
Subject: [PATCH] SDIO / PM: Add empty bus-level suspend/resume callbacks
Date: Sun, 02 Dec 2012 14:48:50 +0100	[thread overview]
Message-ID: <2147450.LFoExqrKEF@vostro.rjw.lan> (raw)
In-Reply-To: <20121202194625.5d66e239@notabene.brown>

On Sunday, December 02, 2012 07:46:25 PM NeilBrown wrote:
> On Mon, 26 Mar 2012 00:29:24 +0200 "Rafael J. Wysocki" <rjw@sisk.pl> wrote:
> 
> 
> > Thanks for the confirmation.
> > 
> > Below it goes again with a changelog and tags.
> > 
> > I don't really think that SDIO does the right thing here overall, but that's
> > all I can do to address the problem timely.
> > 
> > Thanks,
> > Rafael
> 
> Hi Rafael,
>  I just discovered that this patch has since been reverted - with an 'ack'
>  from you:
> ----------
> commit d8e2ac330f65bcf47e8894fe5331a7e8ee019c06
> Author: Thierry Reding <thierry.reding@avionic-design.de>
> Date:   Thu Aug 9 09:32:21 2012 +0000
> 
>     mmc: sdio: Fix PM_SLEEP related build warnings
>     
>     Power management callbacks defined by SIMPLE_DEV_PM_OPS are only used if
>     the PM_SLEEP Kconfig symbol has been defined. If not, the compiler will
>     complain about them being unused. However, since the callback for this
>     driver doesn't do anything it can just as well be dropped.
>     
>     Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
>     Acked-by: Rafael J. Wysocki <rjw@sisk.pl>
>     Signed-off-by: Chris Ball <cjb@laptop.org>
> -----------
> 
> Unsurprisingly the problem which your patch fixed has come back.
> 
> Do you think we could get the patch back in again.  This time maybe we should
> put some comments in there pointing out that having a function which does
> nothing is very different from not having any function at all?

Well, I agree.  I didn't remember that the callback had been added for
a purpose and hence my "ack" for that patch.

What about applying the appended patch (hopefully, the build warnings should
be fixed properly this time)?

Rafael


---
From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Subject: SDIO / PM: Add empty bus-level suspend/resume callbacks

Suspend methods provided by SDIO drivers are not supposed to be
called by the PM core.  Instead, when the SDIO core gets to suspend
a device's ancestor, it calls the device driver's suspend routine.
However, the PM core executes suspend callback routines directly for
device drivers whose bus types don't provide suspend callbacks.
In consequece, because the SDIO bus type doesn't provide a suspend
callback, the SDIO drivers' suspend routines will be executed by the
PM core (which shouldn't happen).

To prevent this from happening, add empty system suspend/resume
callbacks for the SDIO bus type.

An analogous change had been made already by commit (e841a7c mmc:
sdio: Use empty system suspend/resume callbacks at the bus level),
but then it was reverted inadvertently by commit (d8e2ac3 mmc: sdio:
Fix PM_SLEEP related build warnings) that attempted to fix build
warnings introduced by commit e841a7c.

Reported-by: NeilBrown <neilb@suse.de>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
 drivers/mmc/core/sdio_bus.c |   14 ++++++++++++++
 1 file changed, 14 insertions(+)

Index: linux/drivers/mmc/core/sdio_bus.c
===================================================================
--- linux.orig/drivers/mmc/core/sdio_bus.c
+++ linux/drivers/mmc/core/sdio_bus.c
@@ -193,7 +193,21 @@ static int sdio_bus_remove(struct device
 }
 
 #ifdef CONFIG_PM
+
+#ifdef CONFIG_PM_SLEEP
+static int pm_no_operation(struct device *dev)
+{
+	/*
+	 * Prevent the PM core from calling SDIO device drivers' suspend
+	 * callback routines, which it is not supposed to do, by using this
+	 * empty function as the bus type suspend callaback for SDIO.
+	 */
+	return 0;
+}
+#endif
+
 static const struct dev_pm_ops sdio_bus_pm_ops = {
+	SET_SYSTEM_SLEEP_PM_OPS(pm_no_operation, pm_no_operation)
 	SET_RUNTIME_PM_OPS(
 		pm_generic_runtime_suspend,
 		pm_generic_runtime_resume,


-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

  reply	other threads:[~2012-12-02 13:44 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-25  9:38 Recent "Run the driver callback directly" patch breaks libertas suspend NeilBrown
2012-03-25 15:18 ` [linux-pm] " Alan Stern
2012-03-25 21:10   ` Rafael J. Wysocki
2012-03-25 21:09 ` Rafael J. Wysocki
2012-03-25 21:25   ` Rafael J. Wysocki
2012-03-25 21:45     ` NeilBrown
2012-03-25 22:29       ` [PATCH] PM / SDIO: Use empty system suspend/resume callbacks at the bus level (was: Re: Recent ...) Rafael J. Wysocki
2012-03-26 19:59         ` Rafael J. Wysocki
2012-03-26 19:57           ` [PATCH] PM / SDIO: Use empty system suspend/resume callbacks at the bus level Chris Ball
2012-03-26 20:44             ` Rafael J. Wysocki
2012-12-02  8:46         ` [PATCH] PM / SDIO: Use empty system suspend/resume callbacks at the bus level (was: Re: Recent ...) NeilBrown
2012-12-02 13:48           ` Rafael J. Wysocki [this message]
2012-12-02 19:54             ` [PATCH] SDIO / PM: Add empty bus-level suspend/resume callbacks NeilBrown
2012-12-02 21:49               ` Chris Ball
2012-12-02 21:01             ` Thierry Reding

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=2147450.LFoExqrKEF@vostro.rjw.lan \
    --to=rjw@sisk.pl \
    --cc=cjb@laptop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=neilb@suse.de \
    --cc=thierry.reding@avionic-design.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®