From: David Brownell <david-b@pacbell.net>
To: linux-pm@lists.osdl.org
Subject: [patch/rft 2.6.17-rc5-git 1/6] fix broken/dubious driver suspend() methods
Date: Mon, 5 Jun 2006 09:36:28 -0700 [thread overview]
Message-ID: <200606050936.28224.david-b@pacbell.net> (raw)
In-Reply-To: 20060527163837.GE4242@ucw.cz
[-- Attachment #1: Type: text/plain, Size: 877 bytes --]
Small driver suspend() updates in preparation for the upcoming FREEZE message;
- Only compare message events for equality against PM_EVENT_* codes;
not against integers, or using greater/less-than comparisons.
(PM_EVENT_* should really become a __bitwise thing.)
- Explicitly test for SUSPEND events (rather than not-something-else)
before suspending devices.
- Removes more of the confusion between a pm_message_t (wraps event code)
and a "state" ... suspend() originally took a target system state.
These updates are correct and appropriate even without new PM_EVENT codes.
---
drivers/ide/ppc/pmac.c | 14 ++++++++------
drivers/media/dvb/cinergyT2/cinergyT2.c | 2 +-
drivers/scsi/libata-core.c | 6 +++---
drivers/scsi/mesh.c | 7 ++++---
4 files changed, 16 insertions(+), 13 deletions(-)
[-- Attachment #2: prethaw-misc.patch --]
[-- Type: text/x-diff, Size: 5121 bytes --]
Small driver suspend() updates in preparation for the upcoming FREEZE message;
- Only compare message events for equality against PM_EVENT_* codes;
not against integers, or using greater/less-than comparisons.
(PM_EVENT_* should really become a __bitwise thing.)
- Explicitly test for SUSPEND events (rather than not-something-else)
before suspending devices.
- Removes more of the confusion between a pm_message_t (wraps event code)
and a "state" ... suspend() originally took a target system state.
These updates are correct and appropriate even without new PM_EVENT codes.
---
drivers/ide/ppc/pmac.c | 14 ++++++++------
drivers/media/dvb/cinergyT2/cinergyT2.c | 2 +-
drivers/scsi/libata-core.c | 6 +++---
drivers/scsi/mesh.c | 7 ++++---
4 files changed, 16 insertions(+), 13 deletions(-)
Index: scratch/drivers/ide/ppc/pmac.c
===================================================================
--- scratch.orig/drivers/ide/ppc/pmac.c 2006-06-05 09:06:00.000000000 -0700
+++ scratch/drivers/ide/ppc/pmac.c 2006-06-05 09:19:13.000000000 -0700
@@ -1495,15 +1495,16 @@ pmac_ide_macio_attach(struct macio_dev *
}
static int
-pmac_ide_macio_suspend(struct macio_dev *mdev, pm_message_t state)
+pmac_ide_macio_suspend(struct macio_dev *mdev, pm_message_t mesg)
{
ide_hwif_t *hwif = (ide_hwif_t *)dev_get_drvdata(&mdev->ofdev.dev);
int rc = 0;
- if (state.event != mdev->ofdev.dev.power.power_state.event && state.event >= PM_EVENT_SUSPEND) {
+ if (mesg.event != mdev->ofdev.dev.power.power_state.event
+ && mesg.event == PM_EVENT_SUSPEND) {
rc = pmac_ide_do_suspend(hwif);
if (rc == 0)
- mdev->ofdev.dev.power.power_state = state;
+ mdev->ofdev.dev.power.power_state = mesg;
}
return rc;
@@ -1599,15 +1600,16 @@ pmac_ide_pci_attach(struct pci_dev *pdev
}
static int
-pmac_ide_pci_suspend(struct pci_dev *pdev, pm_message_t state)
+pmac_ide_pci_suspend(struct pci_dev *pdev, pm_message_t mesg)
{
ide_hwif_t *hwif = (ide_hwif_t *)pci_get_drvdata(pdev);
int rc = 0;
- if (state.event != pdev->dev.power.power_state.event && state.event >= 2) {
+ if (mesg.event != pdev->dev.power.power_state.event
+ && mesg.event == PM_EVENT_SUSPEND) {
rc = pmac_ide_do_suspend(hwif);
if (rc == 0)
- pdev->dev.power.power_state = state;
+ pdev->dev.power.power_state = mesg;
}
return rc;
Index: scratch/drivers/scsi/libata-core.c
===================================================================
--- scratch.orig/drivers/scsi/libata-core.c 2006-06-05 09:06:16.000000000 -0700
+++ scratch/drivers/scsi/libata-core.c 2006-06-05 09:19:13.000000000 -0700
@@ -4313,19 +4313,19 @@ int ata_device_resume(struct ata_port *a
* ata_device_suspend - prepare a device for suspend
* @ap: port the device is connected to
* @dev: the device to suspend
- * @state: target power management state
+ * @mesg: power management request
*
* Flush the cache on the drive, if appropriate, then issue a
* standbynow command.
*/
-int ata_device_suspend(struct ata_port *ap, struct ata_device *dev, pm_message_t state)
+int ata_device_suspend(struct ata_port *ap, struct ata_device *dev, pm_message_t mesg)
{
if (!ata_dev_present(dev))
return 0;
if (dev->class == ATA_DEV_ATA)
ata_flush_cache(ap, dev);
- if (state.event != PM_EVENT_FREEZE)
+ if (mesg.event == PM_EVENT_SUSPEND)
ata_standby_drive(ap, dev);
ap->flags |= ATA_FLAG_SUSPENDED;
return 0;
Index: scratch/drivers/scsi/mesh.c
===================================================================
--- scratch.orig/drivers/scsi/mesh.c 2006-06-05 09:06:16.000000000 -0700
+++ scratch/drivers/scsi/mesh.c 2006-06-05 09:19:13.000000000 -0700
@@ -1761,12 +1761,13 @@ static void set_mesh_power(struct mesh_s
#ifdef CONFIG_PM
-static int mesh_suspend(struct macio_dev *mdev, pm_message_t state)
+static int mesh_suspend(struct macio_dev *mdev, pm_message_t mesg)
{
struct mesh_state *ms = (struct mesh_state *)macio_get_drvdata(mdev);
unsigned long flags;
- if (state.event == mdev->ofdev.dev.power.power_state.event || state.event < 2)
+ if (mesg.event == mdev->ofdev.dev.power.power_state.event
+ || mesg.event != PM_EVENT_SUSPEND)
return 0;
scsi_block_requests(ms->host);
@@ -1781,7 +1782,7 @@ static int mesh_suspend(struct macio_dev
disable_irq(ms->meshintr);
set_mesh_power(ms, 0);
- mdev->ofdev.dev.power.power_state = state;
+ mdev->ofdev.dev.power.power_state = mesg;
return 0;
}
Index: scratch/drivers/media/dvb/cinergyT2/cinergyT2.c
===================================================================
--- scratch.orig/drivers/media/dvb/cinergyT2/cinergyT2.c 2006-06-05 09:06:01.000000000 -0700
+++ scratch/drivers/media/dvb/cinergyT2/cinergyT2.c 2006-06-05 09:19:13.000000000 -0700
@@ -978,7 +978,7 @@ static int cinergyt2_suspend (struct usb
if (cinergyt2->disconnect_pending || mutex_lock_interruptible(&cinergyt2->sem))
return -ERESTARTSYS;
- if (state.event > PM_EVENT_ON) {
+ if (1) {
struct cinergyt2 *cinergyt2 = usb_get_intfdata (intf);
cinergyt2_suspend_rc(cinergyt2);
[-- Attachment #3: Type: text/plain, Size: 0 bytes --]
next prev parent reply other threads:[~2006-06-05 16:36 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-04-24 21:29 [patch/rft 2.6.17-rc2] swsusp resume must not device_suspend() David Brownell
2006-04-24 21:47 ` [linux-pm] " Rafael J. Wysocki
2006-04-24 22:47 ` David Brownell
2006-04-25 10:34 ` Nigel Cunningham
2006-04-25 14:41 ` Alan Stern
2006-04-25 17:37 ` [linux-pm] " David Brownell
2006-04-25 20:45 ` Alan Stern
2006-04-26 0:30 ` David Brownell
2006-04-27 8:20 ` Pavel Machek
2006-04-27 8:16 ` Pavel Machek
2006-04-27 8:08 ` Pavel Machek
2006-04-27 14:34 ` [linux-pm] " Alan Stern
2006-04-27 16:55 ` Patrick Mochel
2006-04-27 17:41 ` Alan Stern
2006-04-27 19:21 ` David Brownell
2006-04-27 20:35 ` Nigel Cunningham
2006-04-27 20:58 ` Pavel Machek
2006-04-25 16:56 ` David Brownell
2006-04-24 22:31 ` [linux-pm] " Nigel Cunningham
2006-04-25 8:32 ` Rafael J. Wysocki
2006-04-25 16:11 ` David Brownell
2006-04-25 18:56 ` Rafael J. Wysocki
2006-04-25 20:28 ` Nigel Cunningham
2006-04-25 20:53 ` [linux-pm] " Rafael J. Wysocki
2006-04-25 21:03 ` Nigel Cunningham
2006-04-25 22:06 ` Rafael J. Wysocki
2006-04-25 22:18 ` Nigel Cunningham
2006-04-25 22:34 ` Rafael J. Wysocki
2006-04-25 23:55 ` David Brownell
2006-04-26 1:16 ` Nigel Cunningham
2006-04-26 3:32 ` [linux-pm] " David Brownell
2006-04-26 3:44 ` Nigel Cunningham
2006-04-26 14:24 ` Alan Stern
2006-04-26 19:47 ` [linux-pm] " Nigel Cunningham
2006-04-25 21:04 ` David Brownell
2006-04-25 21:41 ` Pavel Machek
2006-04-25 23:13 ` [linux-pm] " David Brownell
2006-04-26 9:07 ` Pavel Machek
2006-04-25 21:55 ` Rafael J. Wysocki
2006-04-25 22:56 ` David Brownell
2006-04-26 11:26 ` Rafael J. Wysocki
2006-04-26 14:38 ` [linux-pm] " Alan Stern
2006-04-26 15:26 ` Rafael J. Wysocki
2006-04-26 15:38 ` Alan Stern
2006-04-26 16:09 ` Rafael J. Wysocki
2006-04-26 19:06 ` Alan Stern
2006-04-26 20:37 ` Rafael J. Wysocki
2006-04-26 21:31 ` David Brownell
2006-04-26 22:24 ` Rafael J. Wysocki
2006-04-27 19:44 ` David Brownell
2006-04-25 15:56 ` David Brownell
2006-04-27 10:54 ` Pavel Machek
2006-04-25 13:50 ` [linux-usb-devel] " Alan Stern
2006-04-25 15:49 ` David Brownell
2006-04-27 1:22 ` Patrick Mochel
2006-04-27 19:41 ` [linux-pm] " David Brownell
2006-05-02 16:12 ` Patrick Mochel
2006-05-26 3:06 ` David Brownell
2006-05-26 19:50 ` Rafael J. Wysocki
2006-05-26 23:16 ` Pavel Machek
2006-05-27 0:19 ` [linux-usb-devel] " David Brownell
2006-05-27 16:38 ` Pavel Machek
2006-06-05 15:31 ` David Brownell
2006-06-05 16:36 ` [patch/rft 2.6.17-rc5-git 0/6] PM_EVENT_PRETHAW David Brownell
2006-06-05 16:36 ` David Brownell [this message]
[not found] ` <20060530191140.GA4017@ucw.cz>
2006-06-07 0:53 ` [patch/rft 2.6.17-rc5-git 1/6] fix broken/dubious driver suspend() methods David Brownell
2006-06-05 16:37 ` [patch/rft 2.6.17-rc5-git 2/6] add PM_EVENT_PRETHAW David Brownell
2006-05-30 19:17 ` Pavel Machek
2006-06-07 1:02 ` David Brownell
2006-06-05 16:38 ` [patch/rft 2.6.17-rc5-git 3/6] PM_EVENT_PRETHAW, handle in IDE and PCI David Brownell
2006-05-30 19:21 ` Pavel Machek
2006-06-07 0:51 ` David Brownell
2006-06-05 16:38 ` [patch/rft 2.6.17-rc5-git 4/6] PM_EVENT_PRETHAW for various graphics cards David Brownell
2006-05-30 19:30 ` Pavel Machek
2006-06-07 1:24 ` David Brownell
2006-06-07 18:57 ` PM docs and API? bsmith
2006-06-07 22:58 ` David Brownell
2006-06-05 16:38 ` [patch/rft 2.6.17-rc5-git 5/6] PM_EVENT_PRETHAW, handle for USB David Brownell
2006-06-05 16:38 ` [patch/rft 2.6.17-rc5-git 6/6] PM_EVENT_PRETHAW, issue from PM core David Brownell
2006-05-30 19:28 ` Pavel Machek
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=200606050936.28224.david-b@pacbell.net \
--to=david-b@pacbell.net \
--cc=linux-pm@lists.osdl.org \
/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.