Re: [PATCH] ACPI: Delay turning off unused resources after suspend till acpi_pm_end()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Saturday, May 06, 2017 07:47:58 PM Hans de Goede wrote:
> Hi,
> 
> On 05-05-17 22:07, Rafael J. Wysocki wrote:
> > On Sunday, April 30, 2017 10:54:16 PM Hans de Goede wrote:
> >> Commit 660b1113e0f3 ("ACPI / PM: Fix consistency check for power resources
> >> during resume") introduced a check for ACPI power resources which have
> >> been turned on by the BIOS during suspend and turns these back off again.
> >>
> >> This is causing problems on a Dell Venue Pro 11 7130 (i5-4300Y) it causes
> >> the following messages to show up in dmesg:
> >>
> >> [  131.014605] ACPI: Waking up from system sleep state S3
> >> [  131.150271] acpi LNXPOWER:07: Turning OFF
> >> [  131.150323] acpi LNXPOWER:06: Turning OFF
> >> [  131.150911] acpi LNXPOWER:00: Turning OFF
> >> [  131.169014] ACPI : EC: interrupt unblocked
> >> [  131.181811] xhci_hcd 0000:00:14.0: System wakeup disabled by ACPI
> >> [  133.535728] pci_raw_set_power_state: 76 callbacks suppressed
> >> [  133.535735] iwlwifi 0000:01:00.0: Refused to change power state,
> >>                 currently in D3
> >> [  133.597672] PM: noirq resume of devices complete after 2428.891 msecs
> >>
> >> Followed by a bunch of iwlwifi errors later on and the pcie device
> >> dropping from the bus (acpiphp thinks it has been unplugged).
> >>
> >> Disabling the turning off of unused power resources fixes this. Instead
> >> of adding a quirk for this system, this commit fixes this by moving the
> >> disabling of unused power resources to later in the resume sequence
> >> when the iwlwifi card has been moved out of D3 so the ref_count for
> >> its power resource no longer is 0.
> >>
> >> This new behavior seems to match the intend of the original commit which
> >> commit-msg says: "which means that no devices are going to need them
> >> any time soon) and we should turn them off".
> >>
> >> This also avoids power resources which we need when bringing devices out
> >> of D3 from getting bounced off and then back on again.
> >>
> >> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
> >> ---
> >>   drivers/acpi/power.c | 10 ++++++++++
> >>   drivers/acpi/sleep.c |  1 +
> >>   drivers/acpi/sleep.h |  1 +
> >>   3 files changed, 12 insertions(+)
> >>
> >> diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c
> >> index fcd4ce6..1d330a5 100644
> >> --- a/drivers/acpi/power.c
> >> +++ b/drivers/acpi/power.c
> >> @@ -863,6 +863,16 @@ void acpi_resume_power_resources(void)
> >>   
> >>   		mutex_unlock(&resource->resource_lock);
> >>   	}
> >> +
> >> +	mutex_unlock(&power_resource_list_lock);
> >> +}
> >> +
> >> +void acpi_turn_off_unused_power_resources(void)
> >> +{
> >> +	struct acpi_power_resource *resource;
> >> +
> >> +	mutex_lock(&power_resource_list_lock);
> >> +
> >>   	list_for_each_entry_reverse(resource, &acpi_power_resource_list, list_node) {
> >>   		int result, state;
> >>   
> >> diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
> >> index a4327af..097d630 100644
> >> --- a/drivers/acpi/sleep.c
> >> +++ b/drivers/acpi/sleep.c
> >> @@ -474,6 +474,7 @@ static void acpi_pm_start(u32 acpi_state)
> >>    */
> >>   static void acpi_pm_end(void)
> >>   {
> >> +	acpi_turn_off_unused_power_resources();
> >>   	acpi_scan_lock_release();
> >>   	/*
> >>   	 * This is necessary in case acpi_pm_finish() is not called during a
> >> diff --git a/drivers/acpi/sleep.h b/drivers/acpi/sleep.h
> >> index a9cc34e..a82ff74 100644
> >> --- a/drivers/acpi/sleep.h
> >> +++ b/drivers/acpi/sleep.h
> >> @@ -6,6 +6,7 @@ extern struct list_head acpi_wakeup_device_list;
> >>   extern struct mutex acpi_device_lock;
> >>   
> >>   extern void acpi_resume_power_resources(void);
> >> +extern void acpi_turn_off_unused_power_resources(void);
> >>   
> >>   static inline acpi_status acpi_set_waking_vector(u32 wakeup_address)
> >>   {
> >>
> > 
> > Makes sense to me, so applied.
> 
> Great, thank you. Do you plan to submit it as a fix for 4.12 ?
> 
> IMHO it may be slightly to adventurous for stable but it would
> be good to get it in 4.12.

Yes, I'm going to push it for 4.12.

Thanks,
Rafael

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux