public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] acpi: Disable explicit power state retrieval on fans
@ 2009-11-10 20:09 Matthew Garrett
  2009-11-24 14:36 ` Matthew Garrett
  2009-12-11  3:52 ` Zhang Rui
  0 siblings, 2 replies; 6+ messages in thread
From: Matthew Garrett @ 2009-11-10 20:09 UTC (permalink / raw)
  To: linux-acpi; +Cc: lenb, Matthew Garrett

https://bugzilla.redhat.com/show_bug.cgi?id=531916 describes a system
with a _PSC method for the fan that always returns "on". There's no
benefit in us always requesting the state of the fan when performing
transitions - we want to do everything we can to ensure that the fan turns
on when it should do, not risk hardware damage by believing the hardware
when it tells us the fan is already on. Given that the Leading Other OS(tm)
works fine on this machine, it seems likely that it behaves in much this
way.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
---
 drivers/acpi/fan.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/acpi/fan.c b/drivers/acpi/fan.c
index f419849..835b55e 100644
--- a/drivers/acpi/fan.c
+++ b/drivers/acpi/fan.c
@@ -256,6 +256,7 @@ static int acpi_fan_add(struct acpi_device *device)
 		goto end;
 	}
 
+	device->power.flags.explicit_get = 0;
 	device->flags.force_power_state = 1;
 	acpi_bus_set_power(device->handle, state);
 	device->flags.force_power_state = 0;
-- 
1.6.5.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] acpi: Disable explicit power state retrieval on fans
  2009-11-10 20:09 [PATCH] acpi: Disable explicit power state retrieval on fans Matthew Garrett
@ 2009-11-24 14:36 ` Matthew Garrett
  2009-12-11  3:52 ` Zhang Rui
  1 sibling, 0 replies; 6+ messages in thread
From: Matthew Garrett @ 2009-11-24 14:36 UTC (permalink / raw)
  To: linux-acpi; +Cc: lenb

Any feedback?

-- 
Matthew Garrett | mjg59@srcf.ucam.org

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] acpi: Disable explicit power state retrieval on fans
  2009-11-10 20:09 [PATCH] acpi: Disable explicit power state retrieval on fans Matthew Garrett
  2009-11-24 14:36 ` Matthew Garrett
@ 2009-12-11  3:52 ` Zhang Rui
  2009-12-17  8:02   ` Zhang Rui
  1 sibling, 1 reply; 6+ messages in thread
From: Zhang Rui @ 2009-12-11  3:52 UTC (permalink / raw)
  To: Matthew Garrett; +Cc: linux-acpi@vger.kernel.org, lenb@kernel.org

On Wed, 2009-11-11 at 04:09 +0800, Matthew Garrett wrote:
> https://bugzilla.redhat.com/show_bug.cgi?id=531916 describes a system
> with a _PSC method for the fan that always returns "on". There's no
> benefit in us always requesting the state of the fan when performing
> transitions - we want to do everything we can to ensure that the fan turns
> on when it should do, not risk hardware damage by believing the hardware
> when it tells us the fan is already on. Given that the Leading Other OS(tm)
> works fine on this machine, it seems likely that it behaves in much this
> way.
> 
sounds reasonable.
But how can we get the power state if power resources is not available?

In acpi_bus_get_power, why not make acpi_power_get_inferred_state as the
first choice, instead of evaluating _PSC? like the patch attached.

---
 drivers/acpi/bus.c |   11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

Index: linux-2.6/drivers/acpi/bus.c
===================================================================
--- linux-2.6.orig/drivers/acpi/bus.c
+++ linux-2.6/drivers/acpi/bus.c
@@ -190,16 +190,17 @@ int acpi_bus_get_power(acpi_handle handl
 		 * Get the device's power state either directly (via _PSC) or
 		 * indirectly (via power resources).
 		 */
-		if (device->power.flags.explicit_get) {
+
+		if (device->power.flags.power_resources) {
+			result = acpi_power_get_inferred_state(device);
+			if (result)
+				return result;
+		} else if (device->power.flags.explicit_get) {
 			status = acpi_evaluate_integer(device->handle, "_PSC",
 						       NULL, &psc);
 			if (ACPI_FAILURE(status))
 				return -ENODEV;
 			device->power.state = (int)psc;
-		} else if (device->power.flags.power_resources) {
-			result = acpi_power_get_inferred_state(device);
-			if (result)
-				return result;
 		}
 
 		*state = device->power.state;


> Signed-off-by: Matthew Garrett <mjg@redhat.com>
> ---
>  drivers/acpi/fan.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/acpi/fan.c b/drivers/acpi/fan.c
> index f419849..835b55e 100644
> --- a/drivers/acpi/fan.c
> +++ b/drivers/acpi/fan.c
> @@ -256,6 +256,7 @@ static int acpi_fan_add(struct acpi_device *device)
>  		goto end;
>  	}
>  
> +	device->power.flags.explicit_get = 0;
>  	device->flags.force_power_state = 1;
>  	acpi_bus_set_power(device->handle, state);
>  	device->flags.force_power_state = 0;

at least we should clear the explicit_get flag 6 lines above, i.e.
before getting the fan state?

thanks,
rui


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] acpi: Disable explicit power state retrieval on fans
  2009-12-11  3:52 ` Zhang Rui
@ 2009-12-17  8:02   ` Zhang Rui
       [not found]     ` <20091217191353.GA11041@srcf.ucam.org>
  2009-12-29  2:47     ` Len Brown
  0 siblings, 2 replies; 6+ messages in thread
From: Zhang Rui @ 2009-12-17  8:02 UTC (permalink / raw)
  To: Matthew Garrett; +Cc: linux-acpi@vger.kernel.org, lenb@kernel.org

On Fri, 2009-12-11 at 11:52 +0800, Zhang Rui wrote:
> On Wed, 2009-11-11 at 04:09 +0800, Matthew Garrett wrote:
> > https://bugzilla.redhat.com/show_bug.cgi?id=531916 describes a system
> > with a _PSC method for the fan that always returns "on". There's no
> > benefit in us always requesting the state of the fan when performing
> > transitions - we want to do everything we can to ensure that the fan turns
> > on when it should do, not risk hardware damage by believing the hardware
> > when it tells us the fan is already on. Given that the Leading Other OS(tm)
> > works fine on this machine, it seems likely that it behaves in much this
> > way.
> > 
> sounds reasonable.
> But how can we get the power state if power resources is not available?
> 
> In acpi_bus_get_power, why not make acpi_power_get_inferred_state as the
> first choice, instead of evaluating _PSC? like the patch attached.
> 
Matthew,

how about this one?


If the ACPI power state can be got both directly and indirectly,
we prefer to get it indirectly.

https://bugzilla.redhat.com/show_bug.cgi?id=531916 describes a
system with a _PSC method for the fan that always returns "on".
There's no benefit in us always requesting the state of the fan
when performing transitions - we want to do everything we can
to ensure that the fan turns on when it should do, not risk
hardware damage by believing the hardware when it tells us the
fan is already on. Given that the Leading Other OS(tm) works fine
on this machine, it seems likely that it behaves in much this way.

Signed-off-by: Zhang Rui <rui.zhang@intel.com>
---
 drivers/acpi/bus.c |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Index: linux-2.6/drivers/acpi/bus.c
===================================================================
--- linux-2.6.orig/drivers/acpi/bus.c
+++ linux-2.6/drivers/acpi/bus.c
@@ -190,16 +190,16 @@ int acpi_bus_get_power(acpi_handle handl
 		 * Get the device's power state either directly (via _PSC) or
 		 * indirectly (via power resources).
 		 */
-		if (device->power.flags.explicit_get) {
+		if (device->power.flags.power_resources) {
+			result = acpi_power_get_inferred_state(device);
+			if (result)
+				return result;
+		} else if (device->power.flags.explicit_get) {
 			status = acpi_evaluate_integer(device->handle, "_PSC",
 						       NULL, &psc);
 			if (ACPI_FAILURE(status))
 				return -ENODEV;
 			device->power.state = (int)psc;
-		} else if (device->power.flags.power_resources) {
-			result = acpi_power_get_inferred_state(device);
-			if (result)
-				return result;
 		}
 
 		*state = device->power.state;




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] acpi: Disable explicit power state retrieval on fans
       [not found]     ` <20091217191353.GA11041@srcf.ucam.org>
@ 2009-12-18  1:02       ` Zhang Rui
  0 siblings, 0 replies; 6+ messages in thread
From: Zhang Rui @ 2009-12-18  1:02 UTC (permalink / raw)
  To: Matthew Garrett; +Cc: linux-acpi@vger.kernel.org, Len Brown

On Fri, 2009-12-18 at 03:13 +0800, Matthew Garrett wrote:
> On Thu, Dec 17, 2009 at 04:02:08PM +0800, Zhang Rui wrote:
> 
> > If the ACPI power state can be got both directly and indirectly,
> > we prefer to get it indirectly.
> 
> I guess this would be fine, but it seems to be a rather bigger change - 
> I'd feel safer limiting it to fans. We might as well give it a go, 
> though.
> 
only ACPI fan and several other devices that invokes
acpi_bus_set/get_power.
If it brings some problems, it won't take us a lot of efforts to debug.
I think it's a good candidate for -rc1.

thanks,
rui



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] acpi: Disable explicit power state retrieval on fans
  2009-12-17  8:02   ` Zhang Rui
       [not found]     ` <20091217191353.GA11041@srcf.ucam.org>
@ 2009-12-29  2:47     ` Len Brown
  1 sibling, 0 replies; 6+ messages in thread
From: Len Brown @ 2009-12-29  2:47 UTC (permalink / raw)
  To: Zhang Rui; +Cc: Matthew Garrett, linux-acpi@vger.kernel.org

applied to acpi-test

thanks,
Len Brown, Intel Open Source Technology Center

On Thu, 17 Dec 2009, Zhang Rui wrote:

> On Fri, 2009-12-11 at 11:52 +0800, Zhang Rui wrote:
> > On Wed, 2009-11-11 at 04:09 +0800, Matthew Garrett wrote:
> > > https://bugzilla.redhat.com/show_bug.cgi?id=531916 describes a system
> > > with a _PSC method for the fan that always returns "on". There's no
> > > benefit in us always requesting the state of the fan when performing
> > > transitions - we want to do everything we can to ensure that the fan turns
> > > on when it should do, not risk hardware damage by believing the hardware
> > > when it tells us the fan is already on. Given that the Leading Other OS(tm)
> > > works fine on this machine, it seems likely that it behaves in much this
> > > way.
> > > 
> > sounds reasonable.
> > But how can we get the power state if power resources is not available?
> > 
> > In acpi_bus_get_power, why not make acpi_power_get_inferred_state as the
> > first choice, instead of evaluating _PSC? like the patch attached.
> > 
> Matthew,
> 
> how about this one?
> 
> 
> If the ACPI power state can be got both directly and indirectly,
> we prefer to get it indirectly.
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=531916 describes a
> system with a _PSC method for the fan that always returns "on".
> There's no benefit in us always requesting the state of the fan
> when performing transitions - we want to do everything we can
> to ensure that the fan turns on when it should do, not risk
> hardware damage by believing the hardware when it tells us the
> fan is already on. Given that the Leading Other OS(tm) works fine
> on this machine, it seems likely that it behaves in much this way.
> 
> Signed-off-by: Zhang Rui <rui.zhang@intel.com>
> ---
>  drivers/acpi/bus.c |   10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> Index: linux-2.6/drivers/acpi/bus.c
> ===================================================================
> --- linux-2.6.orig/drivers/acpi/bus.c
> +++ linux-2.6/drivers/acpi/bus.c
> @@ -190,16 +190,16 @@ int acpi_bus_get_power(acpi_handle handl
>  		 * Get the device's power state either directly (via _PSC) or
>  		 * indirectly (via power resources).
>  		 */
> -		if (device->power.flags.explicit_get) {
> +		if (device->power.flags.power_resources) {
> +			result = acpi_power_get_inferred_state(device);
> +			if (result)
> +				return result;
> +		} else if (device->power.flags.explicit_get) {
>  			status = acpi_evaluate_integer(device->handle, "_PSC",
>  						       NULL, &psc);
>  			if (ACPI_FAILURE(status))
>  				return -ENODEV;
>  			device->power.state = (int)psc;
> -		} else if (device->power.flags.power_resources) {
> -			result = acpi_power_get_inferred_state(device);
> -			if (result)
> -				return result;
>  		}
>  
>  		*state = device->power.state;
> 
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-12-29  2:47 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-10 20:09 [PATCH] acpi: Disable explicit power state retrieval on fans Matthew Garrett
2009-11-24 14:36 ` Matthew Garrett
2009-12-11  3:52 ` Zhang Rui
2009-12-17  8:02   ` Zhang Rui
     [not found]     ` <20091217191353.GA11041@srcf.ucam.org>
2009-12-18  1:02       ` Zhang Rui
2009-12-29  2:47     ` Len Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox