All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Wu <lekensteyn@gmail.com>
To: Lv Zheng <lv.zheng@intel.com>
Cc: Len Brown <len.brown@intel.com>,
	Rafael J Wysocki <rafael.j.wysocki@intel.com>,
	linux-acpi@vger.kernel.org
Subject: Re: [PATCH] ACPI / PM: Add check preventing transitioning to non-D0 state from D3.
Date: Wed, 30 Jan 2013 18:53:46 +0100	[thread overview]
Message-ID: <4595012.aPT9n2OZdk@al> (raw)
In-Reply-To: <e4ec829902580af84cddbba6e98ef54b33052b85.1352953283.git.lv.zheng@intel.com>

Hi Lv Zheng,

I encounter a regression with your patch (Linux 3.8-rc5). On my Nvidia Optimus 
laptop, I use the bbswitch[1] kernel module to trigger a _PS3 ACPI method call 
to turn the video card off.

After this patch, I got the following in my kernel log:

    pci 0000:01:00.0: Refused to change power state, currently in D0
    ACPI: Cannot transition to non-D0 state from D3
    bbswitch: Succesfully loaded. Discrete card 0000:01:00.0 is on

The expected output would be "Discrete card 0000:01:00.0 is  off". Printing the 
contents of (acpi_device) device->power.state shows FF (ACPI_STATE_UNKNOWN). 
Should this condition be excluded from your check or is my hacky module 
outdated?

I currently workaround this issue by checking for ACPI_STATE_UNKNOWN. If that 
is the value, I assume on (overwrite device->power.state with ACPI_STATE_D0). 
Then I call pci_set_power_state(pci_dev, PCI_D3cold).

Regards,
Peter

 [1]: https://github.com/Bumblebee-Project/bbswitch

On Thursday 15 November 2012 12:25:01 Lv Zheng wrote:
> No power transitioning from D3 state to a non-D0 state is allowed.
> This patch also cleans up device power updating code in the
> acpi_device_set_power() as it should already been updated in the
> acpi_power_transition().
> 
> Signed-off-by: Lv Zheng <lv.zheng@intel.com>
> ---
>  drivers/acpi/bus.c |    7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
> index 07a20ee..12c1b51 100644
> --- a/drivers/acpi/bus.c
> +++ b/drivers/acpi/bus.c
> @@ -293,6 +293,12 @@ int acpi_device_set_power(struct acpi_device *device,
> int state) " state than parent\n");
>  		return -ENODEV;
>  	}
> +	if (device->parent->power.state >= ACPI_STATE_D3_HOT &&
> +	    state != ACPI_STATE_D0) {
> +		printk(KERN_WARNING PREFIX
> +			      "Cannot transition to non-D0 state from D3\n");
> +		return -ENODEV;
> +	}
> 
>  	/* For D3cold we should execute _PS3, not _PS4. */
>  	if (state == ACPI_STATE_D3_COLD)
> @@ -341,7 +347,6 @@ int acpi_device_set_power(struct acpi_device *device,
> int state) "Device [%s] failed to transition to %s\n",
>  			      device->pnp.bus_id, state_string(state));
>  	else {
> -		device->power.state = state;
>  		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
>  				  "Device [%s] transitioned to %s\n",
>  				  device->pnp.bus_id, state_string(state)));

  parent reply	other threads:[~2013-01-30 17:53 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-15  4:25 [PATCH] ACPI / PM: Add check preventing transitioning to non-D0 state from D3 Lv Zheng
2012-11-16  1:49 ` Rafael J. Wysocki
2012-11-19  2:31   ` Zheng, Lv
2013-01-30 17:53 ` Peter Wu [this message]
2013-01-30 21:55   ` Rafael J. Wysocki
2013-01-30 23:27     ` Rafael J. Wysocki
2013-01-31  0:58       ` 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=4595012.aPT9n2OZdk@al \
    --to=lekensteyn@gmail.com \
    --cc=len.brown@intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=lv.zheng@intel.com \
    --cc=rafael.j.wysocki@intel.com \
    /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.