From: Sathyanarayanan Kuppuswamy <sathyanarayanan.kuppuswamy@linux.intel.com>
To: Mario Limonciello <mario.limonciello@amd.com>,
Bjorn Helgaas <bhelgaas@google.com>,
Mika Westerberg <mika.westerberg@linux.intel.com>,
"Rafael J . Wysocki" <rafael@kernel.org>
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
S-k Shyam-sundar <Shyam-sundar.S-k@amd.com>,
Natikar Basavaraj <Basavaraj.Natikar@amd.com>,
Deucher Alexander <Alexander.Deucher@amd.com>,
linux-pm@vger.kernel.org, Lukas Wunner <lukas@wunner.de>,
Iain Lane <iain@orangesquash.org.uk>
Subject: Re: [PATCH v4 2/2] PCI: Don't assume root ports from > 2015 are power manageable
Date: Thu, 25 May 2023 09:03:01 -0700 [thread overview]
Message-ID: <9cf6d69c-7c14-e709-0cd7-d51f21c6141f@linux.intel.com> (raw)
In-Reply-To: <20230524190726.17012-2-mario.limonciello@amd.com>
On 5/24/23 12:07 PM, Mario Limonciello wrote:
This looks like a generic fix to me. So why talk about > 2015? IMO,
you can remove > 2015 from the title.
> Using a USB keyboard or mouse to wakeup the system from s2idle fails when
> that XHCI device is connected to a USB-C port for an AMD USB4 router.
>
> Due to commit 9d26d3a8f1b0 ("PCI: Put PCIe ports into D3 during suspend")
> all PCIe ports go into D3 during s2idle.
>
> When specific root ports are put into D3 over s2idle on some AMD platforms
> it is not possible for the platform to properly identify wakeup sources.
> This happens whether the root port goes into D3hot or D3cold.
I think Linux/Windows comparison is also not needed. But it is up to you.
>
> Comparing registers between Linux and Windows 11 this behavior to put
> these specific root ports into D3 at suspend is unique to Linux. On an
> affected system Windows does not put those specific root ports into D3
> over Modern Standby.
>
> Windows doesn't put the root ports into D3 because root ports are not
> power manageable.
>
> Linux shouldn't assume root ports support D3 just because they're on a
> machine newer than 2015, the ports should also be deemed power manageable.
> Add an extra check explicitly for root ports to ensure D3 isn't selected
> for these ports.
>
Other than above suggestions, rest looks good to me.
Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
> Fixes: 9d26d3a8f1b0 ("PCI: Put PCIe ports into D3 during suspend")
> Reported-by: Iain Lane <iain@orangesquash.org.uk>
> Closes: https://forums.lenovo.com/t5/Ubuntu/Z13-can-t-resume-from-suspend-with-external-USB-keyboard/m-p/5217121
> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
> ---
> v3->v4:
> * Move after refactor
> ---
> drivers/pci/pci.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index d1fa040bcea7..d293db963327 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -3015,6 +3015,14 @@ bool pci_bridge_d3_possible(struct pci_dev *bridge)
> if (dmi_check_system(bridge_d3_blacklist))
> return false;
>
> + /*
> + * It's not safe to put root ports that don't support power
> + * management into D3.
> + */
> + if (pci_pcie_type(bridge) == PCI_EXP_TYPE_ROOT_PORT &&
> + !platform_pci_power_manageable(bridge))
> + return false;
> +
> /*
> * It should be safe to put PCIe ports from 2015 or newer
> * to D3.
--
Sathyanarayanan Kuppuswamy
Linux Kernel Developer
next prev parent reply other threads:[~2023-05-25 16:03 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-24 19:07 [PATCH v4 1/2] PCI: Refactor pci_bridge_d3_possible() Mario Limonciello
2023-05-24 19:07 ` [PATCH v4 2/2] PCI: Don't assume root ports from > 2015 are power manageable Mario Limonciello
2023-05-25 14:15 ` Rafael J. Wysocki
2023-05-25 14:21 ` Limonciello, Mario
2023-05-25 16:03 ` Sathyanarayanan Kuppuswamy [this message]
2023-05-25 16:10 ` Limonciello, Mario
2023-05-26 12:17 ` Mika Westerberg
2023-05-25 13:48 ` [PATCH v4 1/2] PCI: Refactor pci_bridge_d3_possible() Rafael J. Wysocki
2023-05-26 12:12 ` Mika Westerberg
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=9cf6d69c-7c14-e709-0cd7-d51f21c6141f@linux.intel.com \
--to=sathyanarayanan.kuppuswamy@linux.intel.com \
--cc=Alexander.Deucher@amd.com \
--cc=Basavaraj.Natikar@amd.com \
--cc=Shyam-sundar.S-k@amd.com \
--cc=bhelgaas@google.com \
--cc=iain@orangesquash.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=mario.limonciello@amd.com \
--cc=mika.westerberg@linux.intel.com \
--cc=rafael@kernel.org \
/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.