From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>, Len Brown <lenb@kernel.org>,
Lukas Wunner <lukas@wunner.de>,
Keith Busch <keith.busch@intel.com>,
Ashok Raj <ashok.raj@intel.com>,
Mario.Limonciello@dell.com,
Anthony Wong <anthony.wong@canonical.com>,
"D . J . Bernstein" <djb@cr.yp.to>,
Linus Walleij <linus.walleij@linaro.org>,
linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org
Subject: Re: [PATCH 02/10] PCI / ACPI: Enable wake automatically for power managed bridges
Date: Tue, 11 Sep 2018 10:50:18 +0200 [thread overview]
Message-ID: <1654330.M3KingDFxV@aspire.rjw.lan> (raw)
In-Reply-To: <20180906155020.51700-3-mika.westerberg@linux.intel.com>
On Thursday, September 6, 2018 5:50:12 PM CEST Mika Westerberg wrote:
> We enable power management automatically for bridges where
> pci_bridge_d3_possible() returns true. However, these bridges may have
> ACPI methods such as _DSW that need to be called before D3 entry. For
> example in Lenovo Thinkpad X1 Carbon 6th _DSW method is used to prepare
> D3cold for the PCIe root port hosting Thunderbolt chain. Because wake is
> not enabled _DSW method is never called and the port does not enter
> D3cold properly consuming more power than necessary.
>
> Users can work this around by writing "enabled" to "wakeup" sysfs file
> under the device in question but that is not something an ordinary user
> is expected to do.
>
> Since we already automatically enable power management for PCIe ports
> with ->bridge_d3 set extend that to enable wake for them as well,
> assuming the port has any ACPI wakeup related objects implemented in the
> namespace (adev->wakeup.flags.valid is true). This ensures the necessary
> ACPI methods get called at appropriate times and allows the root port in
> Thinkpad X1 Carbon 6th to go into D3cold.
>
> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> ---
> drivers/pci/pci-acpi.c | 15 ++++++++++++++-
> 1 file changed, 14 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
> index c2ab57705043..a4a8c02deaa0 100644
> --- a/drivers/pci/pci-acpi.c
> +++ b/drivers/pci/pci-acpi.c
> @@ -762,19 +762,32 @@ static void pci_acpi_setup(struct device *dev)
> return;
>
> device_set_wakeup_capable(dev, true);
> + /*
> + * For bridges that can do D3 we enable wake automatically (as
> + * we do for the power management itself in that case). The
> + * reason is that the bridge may have additional methods such as
> + * _DSW that need to be called.
> + */
> + if (pci_dev->bridge_d3)
> + device_wakeup_enable(dev);
> +
> acpi_pci_wakeup(pci_dev, false);
> }
>
> static void pci_acpi_cleanup(struct device *dev)
> {
> struct acpi_device *adev = ACPI_COMPANION(dev);
> + struct pci_dev *pci_dev = to_pci_dev(dev);
>
> if (!adev)
> return;
>
> pci_acpi_remove_pm_notifier(adev);
> - if (adev->wakeup.flags.valid)
> + if (adev->wakeup.flags.valid) {
> + if (pci_dev->bridge_d3)
> + device_wakeup_disable(dev);
Add an empty line here?
> device_set_wakeup_capable(dev, false);
> + }
> }
>
> static bool pci_acpi_bus_match(struct device *dev)
>
Apart from the above nit this is fine by me:
Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
next prev parent reply other threads:[~2018-09-11 8:50 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-06 15:50 [PATCH 00/10] PCI: Allow D3cold for PCIe hierarchies Mika Westerberg
2018-09-06 15:50 ` [PATCH 01/10] PCI: Do not skip power managed bridges in pci_enable_wake() Mika Westerberg
2018-09-11 8:47 ` Rafael J. Wysocki
2018-09-11 9:09 ` Mika Westerberg
2018-09-06 15:50 ` [PATCH 02/10] PCI / ACPI: Enable wake automatically for power managed bridges Mika Westerberg
2018-09-11 8:50 ` Rafael J. Wysocki [this message]
2018-09-06 15:50 ` [PATCH 03/10] PCI: pciehp: Disable hotplug interrupt during suspend Mika Westerberg
2018-09-11 8:55 ` Rafael J. Wysocki
2018-09-06 15:50 ` [PATCH 04/10] PCI: pciehp: Do not handle events if interrupts are masked Mika Westerberg
2018-09-06 16:04 ` Lukas Wunner
2018-09-07 22:45 ` Keith Busch
2018-09-08 6:16 ` Lukas Wunner
2018-09-10 7:17 ` Mika Westerberg
2018-09-06 15:50 ` [PATCH 05/10] PCI: portdrv: Resume upon exit from system suspend if left runtime suspended Mika Westerberg
2018-09-11 8:00 ` Rafael J. Wysocki
2018-09-11 9:15 ` Mika Westerberg
2018-09-11 10:33 ` Rafael J. Wysocki
2018-09-11 10:41 ` Mika Westerberg
2018-09-11 8:29 ` Lukas Wunner
2018-09-11 9:08 ` Mika Westerberg
2018-09-11 9:26 ` Lukas Wunner
2018-09-11 9:41 ` Mika Westerberg
2018-09-11 9:53 ` Lukas Wunner
2018-09-11 10:23 ` Mika Westerberg
2018-09-06 15:50 ` [PATCH 06/10] PCI: portdrv: Add runtime PM hooks for port service drivers Mika Westerberg
2018-09-11 8:57 ` Rafael J. Wysocki
2018-09-06 15:50 ` [PATCH 07/10] PCI: pciehp: Implement runtime PM callbacks Mika Westerberg
2018-09-11 8:58 ` Rafael J. Wysocki
2018-09-06 15:50 ` [PATCH 08/10] PCI/PME: " Mika Westerberg
2018-09-11 8:59 ` Rafael J. Wysocki
2018-09-06 15:50 ` [PATCH 09/10] ACPI / property: Allow multiple property compatible _DSD entries Mika Westerberg
2018-09-11 9:00 ` Rafael J. Wysocki
2018-09-13 8:00 ` Sakari Ailus
2018-09-06 15:50 ` [PATCH 10/10] PCI / ACPI: Whitelist D3 for more PCIe hotplug ports Mika Westerberg
2018-09-11 9:01 ` 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=1654330.M3KingDFxV@aspire.rjw.lan \
--to=rjw@rjwysocki.net \
--cc=Mario.Limonciello@dell.com \
--cc=anthony.wong@canonical.com \
--cc=ashok.raj@intel.com \
--cc=bhelgaas@google.com \
--cc=djb@cr.yp.to \
--cc=keith.busch@intel.com \
--cc=lenb@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=mika.westerberg@linux.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 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).