All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Len Brown <lenb@kernel.org>
Cc: ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Linux-pm mailing list <linux-pm@lists.linux-foundation.org>,
	Matthew Garrett <mjg59@srcf.ucam.org>,
	Maciej Rutecki <maciej.rutecki@gmail.com>
Subject: [PATCH 3/13] ACPI / PM: Prevent acpi_power_get_inferred_state() from making changes
Date: Thu, 25 Nov 2010 00:05:17 +0100	[thread overview]
Message-ID: <201011250005.17710.rjw@sisk.pl> (raw)
In-Reply-To: <201011250001.11297.rjw@sisk.pl>

From: Rafael J. Wysocki <rjw@sisk.pl>

acpi_power_get_inferred_state() should not update
device->power.state behind the back of its caller, so make it return
the state via a pointer instead.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/acpi/bus.c      |    3 ++-
 drivers/acpi/internal.h |    2 +-
 drivers/acpi/power.c    |   12 ++++--------
 3 files changed, 7 insertions(+), 10 deletions(-)

Index: linux-2.6/drivers/acpi/power.c
===================================================================
--- linux-2.6.orig/drivers/acpi/power.c
+++ linux-2.6/drivers/acpi/power.c
@@ -423,19 +423,16 @@ int acpi_disable_wakeup_device_power(str
                              Device Power Management
    -------------------------------------------------------------------------- */
 
-int acpi_power_get_inferred_state(struct acpi_device *device)
+int acpi_power_get_inferred_state(struct acpi_device *device, int *state)
 {
 	int result = 0;
 	struct acpi_handle_list *list = NULL;
 	int list_state = 0;
 	int i = 0;
 
-
-	if (!device)
+	if (!device || !state)
 		return -EINVAL;
 
-	device->power.state = ACPI_STATE_UNKNOWN;
-
 	/*
 	 * We know a device's inferred power state when all the resources
 	 * required for a given D-state are 'on'.
@@ -450,13 +447,12 @@ int acpi_power_get_inferred_state(struct
 			return result;
 
 		if (list_state == ACPI_POWER_RESOURCE_STATE_ON) {
-			device->power.state = i;
+			*state = i;
 			return 0;
 		}
 	}
 
-	device->power.state = ACPI_STATE_D3;
-
+	*state = ACPI_STATE_D3;
 	return 0;
 }
 
Index: linux-2.6/drivers/acpi/bus.c
===================================================================
--- linux-2.6.orig/drivers/acpi/bus.c
+++ linux-2.6/drivers/acpi/bus.c
@@ -222,7 +222,8 @@ int acpi_bus_get_power(acpi_handle handl
 		 * indirectly (via power resources).
 		 */
 		if (device->power.flags.power_resources) {
-			result = acpi_power_get_inferred_state(device);
+			result = acpi_power_get_inferred_state(device,
+							&device->power.state);
 			if (result)
 				return result;
 		} else if (device->power.flags.explicit_get) {
Index: linux-2.6/drivers/acpi/internal.h
===================================================================
--- linux-2.6.orig/drivers/acpi/internal.h
+++ linux-2.6/drivers/acpi/internal.h
@@ -41,7 +41,7 @@ static inline int acpi_debugfs_init(void
 int acpi_power_init(void);
 int acpi_device_sleep_wake(struct acpi_device *dev,
                            int enable, int sleep_state, int dev_state);
-int acpi_power_get_inferred_state(struct acpi_device *device);
+int acpi_power_get_inferred_state(struct acpi_device *device, int *state);
 int acpi_power_transition(struct acpi_device *device, int state);
 extern int acpi_power_nocheck;
 


  parent reply	other threads:[~2010-11-24 23:16 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-24 23:01 [PATCH 0/13] ACPI / PM: Rework power resources management Rafael J. Wysocki
2010-11-24 23:02 ` [PATCH 1/13] ACPI / PM: Check device state before refcounting power resources Rafael J. Wysocki
2010-11-24 23:02 ` Rafael J. Wysocki
2010-11-24 23:03 ` [PATCH 2/13] ACPI / PM: Do not refcount power resources that can't be turned on Rafael J. Wysocki
2010-11-24 23:03   ` Rafael J. Wysocki
2010-11-24 23:05 ` [PATCH 3/13] ACPI / PM: Prevent acpi_power_get_inferred_state() from making changes Rafael J. Wysocki
2010-11-24 23:05 ` Rafael J. Wysocki [this message]
2010-11-24 23:06 ` [PATCH 4/13] ACPI / PM: Add functions for manipulating lists of power resources Rafael J. Wysocki
2010-11-24 23:06 ` Rafael J. Wysocki
2010-11-24 23:06 ` [PATCH 5/13] ACPI / PM: Introduce function for refcounting device " Rafael J. Wysocki
2010-11-24 23:06   ` Rafael J. Wysocki
2010-11-24 23:07 ` [PATCH 6/13] ACPI / PM: Introduce __acpi_bus_get_power() Rafael J. Wysocki
2010-11-24 23:07   ` Rafael J. Wysocki
2010-11-24 23:08 ` [PATCH 7/13] ACPI / PM: Add function for device power state initialization Rafael J. Wysocki
2010-11-24 23:08 ` Rafael J. Wysocki
2010-11-24 23:09 ` [PATCH 8/13] ACPI / PM: Add function for updating device power state consistently Rafael J. Wysocki
2010-11-24 23:09 ` Rafael J. Wysocki
2010-11-24 23:10 ` [PATCH 9/13] ACPI / PM: Register acpi_power_driver early Rafael J. Wysocki
2010-11-24 23:10 ` Rafael J. Wysocki
2010-11-24 23:10 ` [PATCH 10/13] ACPI / PM: Register power resource devices as soon as they are needed Rafael J. Wysocki
2010-11-24 23:10 ` Rafael J. Wysocki
2010-11-24 23:11 ` [PATCH 11/13] ACPI / Fan: Rework the handling of power resources Rafael J. Wysocki
2010-11-24 23:11   ` Rafael J. Wysocki
2010-11-24 23:12 ` [PATCH 12/13] ACPI / PM: Drop acpi_bus_get_power() Rafael J. Wysocki
2010-11-24 23:12 ` Rafael J. Wysocki
2010-12-01 22:02   ` Len Brown
2010-12-01 22:02   ` Len Brown
2010-12-01 22:07     ` Rafael J. Wysocki
2010-12-01 22:07     ` Rafael J. Wysocki
2010-12-01 22:07       ` Rafael J. Wysocki
2010-11-24 23:12 ` [PATCH 13/13] ACPI / PM: Drop acpi_power_nocheck Rafael J. Wysocki
2010-11-24 23:12 ` Rafael J. Wysocki
2010-11-26 21:55 ` [PATCH] Platform / x86: Make fujitsu_laptop use acpi_bus_update_power() Rafael J. Wysocki
2010-12-01 22:07   ` Len Brown
2010-12-01 22:07   ` Len Brown
2010-11-26 21:55 ` Rafael J. Wysocki

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=201011250005.17710.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=maciej.rutecki@gmail.com \
    --cc=mjg59@srcf.ucam.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.