Re: Lost PCIe PME after a914ff2d78ce ("PCI/ASPM: Don't select CONFIG_PCIEASPM by default")

From: Bjorn Helgaas
Date: Mon Jun 01 2020 - 11:13:43 EST


On Sat, May 30, 2020 at 04:33:44AM -0700, Christoph Hellwig wrote:
> On Sat, May 30, 2020 at 08:14:34AM +0100, Matthew Garrett wrote:
> > On Sat, May 30, 2020 at 08:33:50AM +0200, Heiner Kallweit wrote:
> >
> > > It *was* default y. This changed with a914ff2d78ce ("PCI/ASPM: Don't
> > > select CONFIG_PCIEASPM by default") and that's what triggered the
> > > problem. If there's no easy solution, then maybe it's best to revert
> > > the change for now.
> >
> > Oh, sorry, I was looking at mainline. CONFIG_PCIEASPM should
> > *definitely* be enabled by default - platforms expect the OS to support
> > it. If we want to get rid of default y then I think it'd make more sense
> > to have a CONFIG_DISABLE_PCIEASPM that's under EXPERT, and people who
> > really want to disable the code can do so.
>
> I think the fact that the EXPERT didn't get removed in the above bug
> is a defintive bug. But I'd go further and think the CONFIG_PCIEASPM
> option should be removed entirely. There is absolutely no good reason
> to not build this small amount of code if PCIe support is enabled.

That might be a good solution. I don't really want a situation where
leaving CONFIG_PCIEASPM unset is "known to break PME."

ASPM support has historically been fragile, and it's actually a
significant amount of code (~10KB on my x86), which is larger than
many other things for which we have config options. But we do have
boot-time and run-time ways to disable it.

Another possibility might be to make it so Linux always advertises
ASPM support, but doesn't actually *do* anything unless
CONFIG_PCIEASPM is set. I don't think advertising ASPM support means
the OS is required to change whatever configuration firmware did.

Bjorn