linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [Resend][PATCH] ACPI / PM: Do not power manage devices in unknown initial states
@ 2013-01-31 22:32 Rafael J. Wysocki
  2013-02-01 18:23 ` Peter Wu
  0 siblings, 1 reply; 5+ messages in thread
From: Rafael J. Wysocki @ 2013-01-31 22:32 UTC (permalink / raw)
  To: ACPI Devel Maling List; +Cc: LKML, Len Brown, Mika Westerberg, Peter Wu

From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

In general, for ACPI device power management to work, the initial
power states of devices must be known (otherwise, we wouldn't be able
to keep track of power resources, for example).  Hence, if it is
impossible to determine the initial ACPI power states of some
devices, they can't be regarded as power-manageable using ACPI.

For this reason, modify acpi_bus_get_power_flags() to clear the
power_manageable flag if acpi_bus_init_power() fails and add some
extra fallback code to acpi_bus_init_power() to cover broken
BIOSes that provide _PS0/_PS3 without _PSC for some devices.

Verified to work on my HP nx6325 that has this problem.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
 drivers/acpi/device_pm.c |    6 ++++++
 drivers/acpi/scan.c      |    5 ++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

Index: linux-pm/drivers/acpi/device_pm.c
===================================================================
--- linux-pm.orig/drivers/acpi/device_pm.c
+++ linux-pm/drivers/acpi/device_pm.c
@@ -330,6 +330,12 @@ int acpi_bus_init_power(struct acpi_devi
 		result = acpi_dev_pm_explicit_set(device, state);
 		if (result)
 			return result;
+	} else if (state == ACPI_STATE_UNKNOWN) {
+		/* No power resources and missing _PSC? Try to force D0. */
+		state = ACPI_STATE_D0;
+		result = acpi_dev_pm_explicit_set(device, state);
+		if (result)
+			return result;
 	}
 	device->power.state = state;
 	return 0;
Index: linux-pm/drivers/acpi/scan.c
===================================================================
--- linux-pm.orig/drivers/acpi/scan.c
+++ linux-pm/drivers/acpi/scan.c
@@ -1175,7 +1175,10 @@ static void acpi_bus_get_power_flags(str
 			device->power.flags.power_resources)
 		device->power.states[ACPI_STATE_D3_COLD].flags.os_accessible = 1;
 
-	acpi_bus_init_power(device);
+	if (acpi_bus_init_power(device)) {
+		acpi_free_power_resources_lists(device);
+		device->flags.power_manageable = 0;
+	}
 }
 
 static void acpi_bus_get_flags(struct acpi_device *device)


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

* Re: [Resend][PATCH] ACPI / PM: Do not power manage devices in unknown initial states
  2013-01-31 22:32 [Resend][PATCH] ACPI / PM: Do not power manage devices in unknown initial states Rafael J. Wysocki
@ 2013-02-01 18:23 ` Peter Wu
  2013-02-01 21:44   ` Rafael J. Wysocki
  0 siblings, 1 reply; 5+ messages in thread
From: Peter Wu @ 2013-02-01 18:23 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: ACPI Devel Maling List, LKML, Len Brown, Mika Westerberg

On Thursday 31 January 2013 23:32:40 Rafael J. Wysocki wrote:
> In general, for ACPI device power management to work, the initial
> power states of devices must be known (otherwise, we wouldn't be able
> to keep track of power resources, for example).  Hence, if it is
> impossible to determine the initial ACPI power states of some
> devices, they can't be regarded as power-manageable using ACPI.
> 
> For this reason, modify acpi_bus_get_power_flags() to clear the
> power_manageable flag if acpi_bus_init_power() fails and add some
> extra fallback code to acpi_bus_init_power() to cover broken
> BIOSes that provide _PS0/_PS3 without _PSC for some devices.
> 
> Verified to work on my HP nx6325 that has this problem.
> 
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

Tested-by: Peter Wu <lekensteyn@gmail.com>

I applied it on top of branch linux-next of repo linux-pm.

Fixes the issue I had with bbswitch in Linux 3.8. Can a backport patch be made 
available for 3.8?

Regards,
Peter

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

* Re: [Resend][PATCH] ACPI / PM: Do not power manage devices in unknown initial states
  2013-02-01 18:23 ` Peter Wu
@ 2013-02-01 21:44   ` Rafael J. Wysocki
  2013-03-04 14:37     ` Peter Wu
  2013-03-09 12:09     ` Peter Wu
  0 siblings, 2 replies; 5+ messages in thread
From: Rafael J. Wysocki @ 2013-02-01 21:44 UTC (permalink / raw)
  To: Peter Wu; +Cc: ACPI Devel Maling List, LKML, Len Brown, Mika Westerberg

On Friday, February 01, 2013 07:23:52 PM Peter Wu wrote:
> On Thursday 31 January 2013 23:32:40 Rafael J. Wysocki wrote:
> > In general, for ACPI device power management to work, the initial
> > power states of devices must be known (otherwise, we wouldn't be able
> > to keep track of power resources, for example).  Hence, if it is
> > impossible to determine the initial ACPI power states of some
> > devices, they can't be regarded as power-manageable using ACPI.
> > 
> > For this reason, modify acpi_bus_get_power_flags() to clear the
> > power_manageable flag if acpi_bus_init_power() fails and add some
> > extra fallback code to acpi_bus_init_power() to cover broken
> > BIOSes that provide _PS0/_PS3 without _PSC for some devices.
> > 
> > Verified to work on my HP nx6325 that has this problem.
> > 
> > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> 
> Tested-by: Peter Wu <lekensteyn@gmail.com>
> 
> I applied it on top of branch linux-next of repo linux-pm.
> 
> Fixes the issue I had with bbswitch in Linux 3.8. Can a backport patch be made 
> available for 3.8?

Yes, after this commit enters the mainline.  Please ping me some time around
3.9-rc1.

Thanks,
Rafael


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

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

* Re: [Resend][PATCH] ACPI / PM: Do not power manage devices in unknown initial states
  2013-02-01 21:44   ` Rafael J. Wysocki
@ 2013-03-04 14:37     ` Peter Wu
  2013-03-09 12:09     ` Peter Wu
  1 sibling, 0 replies; 5+ messages in thread
From: Peter Wu @ 2013-03-04 14:37 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: ACPI Devel Maling List, LKML, Len Brown, Mika Westerberg

On Friday 01 February 2013 22:44:55 Rafael J. Wysocki wrote:
> On Friday, February 01, 2013 07:23:52 PM Peter Wu wrote:
> > On Thursday 31 January 2013 23:32:40 Rafael J. Wysocki wrote:
> > > In general, for ACPI device power management to work, the initial
> > > power states of devices must be known (otherwise, we wouldn't be able
> > > to keep track of power resources, for example).  Hence, if it is
> > > impossible to determine the initial ACPI power states of some
> > > devices, they can't be regarded as power-manageable using ACPI.
> > >
> > > 
> > >
> > > For this reason, modify acpi_bus_get_power_flags() to clear the
> > > power_manageable flag if acpi_bus_init_power() fails and add some
> > > extra fallback code to acpi_bus_init_power() to cover broken
> > > BIOSes that provide _PS0/_PS3 without _PSC for some devices.
> > >
> > > 
> > >
> > > Verified to work on my HP nx6325 that has this problem.
> > >
> > > 
> > >
> > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> >
> > 
> >
> > Tested-by: Peter Wu <lekensteyn@gmail.com>
> >
> > 
> >
> > I applied it on top of branch linux-next of repo linux-pm.
> >
> > 
> >
> > Fixes the issue I had with bbswitch in Linux 3.8. Can a backport patch be
> > made  available for 3.8?
> 
> Yes, after this commit enters the mainline.  Please ping me some time around
> 3.9-rc1.

Now that this patch has entered 3.9-rc1, can this be backported to the 3.8 
series?

commit b3785492268f9f3cdaa9722facb84b266dcf8bf6
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Fri Feb 1 23:43:02 2013 +0100

Regards,
Peter

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

* Re: [Resend][PATCH] ACPI / PM: Do not power manage devices in unknown initial states
  2013-02-01 21:44   ` Rafael J. Wysocki
  2013-03-04 14:37     ` Peter Wu
@ 2013-03-09 12:09     ` Peter Wu
  1 sibling, 0 replies; 5+ messages in thread
From: Peter Wu @ 2013-03-09 12:09 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: ACPI Devel Maling List, LKML, Len Brown, Mika Westerberg

On Friday 01 February 2013 22:44:55 Rafael J. Wysocki wrote:
> On Friday, February 01, 2013 07:23:52 PM Peter Wu wrote:
> > On Thursday 31 January 2013 23:32:40 Rafael J. Wysocki wrote:
> > > In general, for ACPI device power management to work, the initial
> > > power states of devices must be known (otherwise, we wouldn't be able
> > > to keep track of power resources, for example).  Hence, if it is
> > > impossible to determine the initial ACPI power states of some
> > > devices, they can't be regarded as power-manageable using ACPI.
> > >
> > > 
> > >
> > > For this reason, modify acpi_bus_get_power_flags() to clear the
> > > power_manageable flag if acpi_bus_init_power() fails and add some
> > > extra fallback code to acpi_bus_init_power() to cover broken
> > > BIOSes that provide _PS0/_PS3 without _PSC for some devices.
> > >
> > > 
> > >
> > > Verified to work on my HP nx6325 that has this problem.
> > >
> > > 
> > >
> > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> >
> > 
> >
> > Tested-by: Peter Wu <lekensteyn@gmail.com>
> >
> > 
> >
> > I applied it on top of branch linux-next of repo linux-pm.
> >
> > 
> >
> > Fixes the issue I had with bbswitch in Linux 3.8. Can a backport patch be
> > made  available for 3.8?
> 
> Yes, after this commit enters the mainline.  Please ping me some time around
> 3.9-rc1.

This patch does not apply on 3.8.2, any suggestions?

Regards,
Peter

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

end of thread, other threads:[~2013-03-09 12:09 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-31 22:32 [Resend][PATCH] ACPI / PM: Do not power manage devices in unknown initial states Rafael J. Wysocki
2013-02-01 18:23 ` Peter Wu
2013-02-01 21:44   ` Rafael J. Wysocki
2013-03-04 14:37     ` Peter Wu
2013-03-09 12:09     ` Peter Wu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).