From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: Mario Limonciello <mario.limonciello@amd.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
Bjorn Helgaas <helgaas@kernel.org>,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
Len Brown <lenb@kernel.org>,
linux-acpi@vger.kernel.org, Iain Lane <iain@orangesquash.org.uk>,
Kuppuswamy Sathyanarayanan
<sathyanarayanan.kuppuswamy@linux.intel.com>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Subject: Re: [PATCH v7 2/2] PCI: Don't put non-power manageable PCIe root ports into D3
Date: Wed, 2 Aug 2023 17:31:42 +0300 [thread overview]
Message-ID: <20230802143142.GS14638@black.fi.intel.com> (raw)
In-Reply-To: <e82ec662-22d9-b331-0880-886bd28624eb@amd.com>
Hi,
On Wed, Aug 02, 2023 at 09:10:38AM -0500, Mario Limonciello wrote:
>
>
> On 8/2/23 00:26, Mika Westerberg wrote:
> > Hi Mario,
> >
> > On Tue, Aug 01, 2023 at 10:17:11PM -0500, Mario Limonciello wrote:
> > > > Consequently, platform_pci_bridge_d3() will return false and the only
> > > > thing that may allow the port to go into D0 is the dmi_get_bios_year()
> > > > check at the end of pci_bridge_d3_possible().
> > > >
> > > > However, that was added, because there are Intel platforms on which
> > > > Root Ports need to be programmed into D3hot on suspend (which allows
> > > > the whole platform to reduce power significantly) and there are no
> > > > ACPI device power management objects associated with them (Mika should
> > > > know the gory details related to this). It looks like under Windows
> > > > the additional power reduction would not be possible on those systems,
> > > > but that would be a problem, wouldn't it?
> > > >
> > >
> > > I've been thinking on this today, and I at least have a hypothesis about
> > > this behavior. Perhaps Windows is actually utilizing enabled PEP
> > > constraints to enforce what state device should be put into over Modern
> > > Standby cycles in the absence of ACPI objects.
> > >
> > > In the case of one of my problematic system the PEP constraints for the root
> > > port are:
> > >
> > > Package (0x04)
> > > {
> > > 0x00,
> > > "\\_SB.PCI0.GP17",
> > > 0x00,
> > > 0x00
> > > },
> > >
> > > That first 0x00 means the constraint isn't actually enabled for the root
> > > port.
> > >
> > > Mika,
> > >
> > > Could you get an acpidump from one of these problematic Intel systems so we
> > > can check the PEP constraints to see if this theory works? Or maybe you have
> > > some other ideas why this is different?
> >
> > The patch adding this was merged in 2016 and unfortunately I don't have
> > any of the ACPI dumps from them available anymore (and do not recall the
> > details either). I think these were Apollo Lake-P based systems with the
> > initial runtime D3cold and S0ix support at the time.
>
>
> I scoured the web looking for acpidumps a bit an Apollo Lake system and came
> across this random bug report:
>
> https://bugzilla.redhat.com/show_bug.cgi?id=1591307
>
> "Intel(R) Celeron(R) CPU N3450 @ 1.10GHz (family: 0x6, model: 0x5c,
> stepping: 0x9)"
>
> I looked at the acpidump, and I notice:
>
> Low Power S0 Idle (V5) : 0
>
> That means that Windows wouldn't actually be putting it into Modern Standby
> at suspend but would rather use S3.
Same goes for Linux AFAICT. The ones needed this actually used S0ix so
the bit should definitely be set.
> Considering that result, could we perhaps adjust the check to:
>
> if ((c->x86_vendor == X86_VENDOR_INTEL) && !(acpi_gbl_FADT.flags &
> ACPI_FADT_LOW_POWER_S0))
>
> Or could we quirk the PCI root ports from Apollo Lake to opt into D3?
It is not just Apollo Lake, but all "modern" systems as well (sorry if
this was unclear). Apollo Lake just was the first one that needed this.
We also have the Low Power S0 Idle bit set in recent systems too.
next prev parent reply other threads:[~2023-08-02 14:31 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-11 0:53 [PATCH v7 0/2] Fix wakeup problems on some AMD platforms Mario Limonciello
2023-07-11 0:53 ` [PATCH v7 1/2] PCI: Refactor pci_bridge_d3_possible() Mario Limonciello
2023-07-11 0:53 ` [PATCH v7 2/2] PCI: Don't put non-power manageable PCIe root ports into D3 Mario Limonciello
2023-07-11 22:14 ` Bjorn Helgaas
2023-07-11 22:54 ` Mario Limonciello
2023-07-12 12:13 ` Rafael J. Wysocki
2023-07-12 16:09 ` Limonciello, Mario
2023-07-14 19:17 ` Rafael J. Wysocki
2023-07-15 0:46 ` Limonciello, Mario
2023-08-01 3:25 ` Mario Limonciello
2023-08-01 10:15 ` Rafael J. Wysocki
2023-08-02 3:17 ` Mario Limonciello
2023-08-02 5:26 ` Mika Westerberg
2023-08-02 14:10 ` Mario Limonciello
2023-08-02 14:31 ` Mika Westerberg [this message]
2023-08-02 14:35 ` Mario Limonciello
2023-08-02 15:00 ` Mika Westerberg
[not found] ` <67fa2dda-f383-1864-57b8-08b86263bd02@amd.com>
2023-08-01 9:54 ` Rafael J. Wysocki
2023-07-12 11:48 ` Rafael J. Wysocki
2023-07-12 15:23 ` Andy Shevchenko
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=20230802143142.GS14638@black.fi.intel.com \
--to=mika.westerberg@linux.intel.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=helgaas@kernel.org \
--cc=iain@orangesquash.org.uk \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=mario.limonciello@amd.com \
--cc=rafael@kernel.org \
--cc=sathyanarayanan.kuppuswamy@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).