linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Kedar A Dongre <kedar.a.dongre@intel.com>,
	Lukas Wunner <lukas@wunner.de>,
	linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org
Subject: Re: [PATCH] PCI: Blacklist power management of Gigabyte X299 DESIGNARE EX PCIe ports
Date: Wed, 19 Dec 2018 17:15:58 +0200	[thread overview]
Message-ID: <20181219151558.GU2469@lahna.fi.intel.com> (raw)
In-Reply-To: <20181219144518.GC12763@google.com>

On Wed, Dec 19, 2018 at 08:45:19AM -0600, Bjorn Helgaas wrote:
> On Wed, Dec 19, 2018 at 03:23:24PM +0200, Mika Westerberg wrote:
> > On Tue, Dec 18, 2018 at 02:58:50PM -0600, Bjorn Helgaas wrote:
> > > > > For example, it looks like PCI_EXP_FLAGS_SLOT is set, but Linux
> > > > > basically ignores it.  Maybe if PCI_EXP_FLAGS_SLOT is set but we
> > > > > aren't using pciehp, we should assume any hotplug would be handled via
> > > > > acpiphp?  And in that case, we should avoid doing anything that would
> > > > > prevent platform firmware from enumerating things below the bridge?
> > > > 
> > > > I don't see why that would not work. This could cause "power regression"
> > > > on some systems but I think that's better than systems that do not work
> > > > at all.
> > > 
> > > Yeah, I think that would be better, assuming it wouldn't cause a flood
> > > of power regressions.  I'd even rather have a whitelist of systems
> > > where we use acpiphp and it's safe to do power management.
> > 
> > Actually it looks like it would break power management of other
> > components such as xHCI and Thunderbolt controller which are connected
> > to a downstream port that has "Slot implemented" set as well.
> 
> To be precise, I think you mean that if we avoided power management on
> ports with "Slot Implemented", ports leading to xHCI and Thunderbolt
> would consume more power but would work correctly, right?  And the
> theory is that those ports work even if the OS puts them into D3
> because the firmware is smart enough to wake them up before poking
> things below them?  Doesn't that make the port's power state out of
> sync with what the OS thinks it is?

I think better example where this fails is normal Thunderbolt device
(not host) which includes PCIe switch and there is an PCIe endpoint, say
network interface connected to one of the downstream ports. That
downstream port has "Slot implemented" set but is not hotplug capable.

So the device would work correctly but if you take the recent "Runtime
D3, RTD3" system such as Lenovo Carbon X1 6th gen it keeps the whole
PCIe hierarchy from entering D3cold. I would rather not to break that ;-)

> > I have another idea, though. Windows says the Gigabyte system platform
> > role is "Desktop" whereas on another system where Windows does power
> > manage the ports the role is "Mobile". I think this maps directly to
> > ACPI FADT table Preferred_PM_Profile field (there is sysfs attribute
> > /sys/firmware/acpi/pm_profile exposing this as well).
> > 
> > I wonder if we could use this information in pci_bridge_d3_possible() so
> > that anything with "Desktop" profile returns false when native PCIe
> > hotplug is not used?
> 
> Hmmmm.  I guess it's plausible that Windows might be more aggressive
> about power management for "Mobile" roles as opposed to "Desktop".
> But there's not really a logical connection to this situation (PCI
> hotplug is a rare, non-latency sensitive event, so why wouldn't we
> save power on the Desktop as well?), so it feels like a heuristic that
> might coincidentally work sometimes but is liable to break at others.

OK.

> Popping back up to the top of the stack, what's the situation on other
> systems?  On this system, PCI_EXP_SLTCAP_HPC is not set.  Do other systems
> have that set but clear OSC_PCI_EXPRESS_NATIVE_HP_CONTROL so we don't use
> pciehp?  Should this be some sort of quirk?  I guess that's morally
> equivalent to the blacklist.  But maybe it would be a more direct hint to
> BIOS writers that this is a defect?

Yes, typically these systems have PCI_EXP_SLTCAP_HPC set but BIOS does
not allow "PCIeHotplug" in _OSC which prevents pciehp from controlling
them.

I'm not sure if this is actually a defect in BIOS because again this
works fine in Windows and I don't see in any specs (ACPI/PCIe) saying
you cannot do this.

By a quirk you mean add DMI based quirk somewhere in drivers/pci/quirks.c
which makes this root port to have ->is_hotplug_bridge set?

  reply	other threads:[~2018-12-19 15:16 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-04 11:20 [PATCH] PCI: Blacklist power management of Gigabyte X299 DESIGNARE EX PCIe ports Mika Westerberg
2018-12-04 17:55 ` Rafael J. Wysocki
2018-12-04 18:34   ` Mika Westerberg
2018-12-04 20:40 ` Lukas Wunner
2018-12-05  9:20   ` Mika Westerberg
2018-12-05  9:48     ` Lukas Wunner
2018-12-05 10:40       ` Mika Westerberg
2018-12-05 13:22         ` Lukas Wunner
2018-12-05 13:46           ` Mika Westerberg
2018-12-14  9:24 ` Mika Westerberg
2018-12-17 20:28 ` Bjorn Helgaas
2018-12-18  8:55   ` Mika Westerberg
2018-12-18 20:58     ` Bjorn Helgaas
2018-12-19 13:23       ` Mika Westerberg
2018-12-19 14:45         ` Bjorn Helgaas
2018-12-19 15:15           ` Mika Westerberg [this message]
2018-12-19 17:09             ` Lukas Wunner
2018-12-20 10:06               ` Mika Westerberg
2018-12-20 10:23                 ` 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=20181219151558.GU2469@lahna.fi.intel.com \
    --to=mika.westerberg@linux.intel.com \
    --cc=helgaas@kernel.org \
    --cc=kedar.a.dongre@intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lukas@wunner.de \
    --cc=rjw@rjwysocki.net \
    /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).