Bug 84391

Summary: Excessive "no hotplug settings from platform" messages
Product: Drivers Reporter: Bjorn Helgaas (bjorn)
Component: PCIAssignee: drivers_pci (drivers_pci)
Status: RESOLVED CODE_FIX    
Severity: normal    
Priority: P1    
Hardware: All   
OS: Linux   
URL: http://lkml.kernel.org/r/CA+55aFwH4UL-76-=ygDww4=vC9U=6_Yhs0D0H-nwtAkKXC6Vag@mail.gmail.com
Kernel Version: v3.17-rc2 Subsystem:
Regression: Yes Bisected commit-id:
Attachments: dmesg with excessive "no hotplug settings" messages

Description Bjorn Helgaas 2014-09-12 14:40:54 UTC
Linus reported at http://lkml.kernel.org/r/CA+55aFwH4UL-76-=ygDww4=vC9U=6_Yhs0D0H-nwtAkKXC6Vag@mail.gmail.com:

So I don't know when this started happening, and it may well be an
age-old issue, possibly made worse by configurations copied from
distro makers that enable various random PCI hotplug logic, but my
laptop dmesg is full of these annoying and worthless messages after
suspend/resume:

  ...
  pci 0000:00:00.0: no hotplug settings from platform
  pci 0000:00:00.0: using default PCI settings
  i915 0000:00:02.0: no hotplug settings from platform
  i915 0000:00:02.0: using default PCI settings
  ...

basically repeating mindlessly for each PCI device. It's insane. It
adds zero value. Why do we print out those inane messages?

The reason _seems_ to be that some ACPI hotplug logic basically ends
up doing "pci_configure_slot()" on every PCI slot, whether something
is hotpluggable or not. Trust me, those things aren't. Printing
pointless hotplug information for them is just crazy, and takes up
kernel message space and hides _real_ messages for no good reason.

Lookie here:

  [torvalds@vaio linux]$ dmesg | grep "no hotplug settings" | wc
     1006    8658   71574

yeah, that's a thousand lines of crap. There's another 568 lines of
the "using default PCI settings". In fact, there's *more* of this, but
there's been so much of it that it's scrolled off the kernel message
buffer.
Comment 1 Bjorn Helgaas 2014-09-12 14:46:07 UTC
Created attachment 149971 [details]
dmesg with excessive "no hotplug settings" messages

Here's a sample dmesg log from v3.17-rc2 on my laptop (HP EliteBook 840).  This is just a boot (no suspend/resume), but:

  $ egrep "no hotplug settings|using default" dmesg-pre | wc -l
  200
Comment 2 Bjorn Helgaas 2014-10-28 13:20:57 UTC
6a73336bde29 ("PCI: Remove "no hotplug settings from platform" warning") appeared in v3.17 and removed both these messages.

This series of related hotplug device configuration changes appeared in v3.18-rc1:


2f419d76599e "Merge branch 'pci/hotplug' into next":

    * pci/hotplug:
      PCI: pciehp: Prevent NULL dereference during probe
      PCI: pciehp: Reduce PCIe slot_ctrl to 16 bits
      PCI: Configure *all* devices, not just hot-added ones
      PCI: Preserve MPS and MRRS when applying _HPX settings
      PCI: Apply _HPP settings to all hot-added PCI devices
      PCI: Preserve BIOS PCI_COMMAND_SERR and PCI_COMMAND_PARITY settings
      PCI: Apply _HPP settings to PCIe devices as well as PCI and PCI-X
      PCI: Remove unused pci_configure_slot()
      ACPI / hotplug / PCI: Remove pci_configure_slot() usage
      PCI: shpchp: Remove pci_configure_slot() usage
      PCI: pciehp: Remove pci_configure_slot() usage
      PCI: Add pci_configure_device() during enumeration
      PCI: Move pci_configure_slot() to drivers/pci/probe.c
      PCI: Shuffle pci-acpi.c functions to group them logically
      PCI: Whitespace cleanup in pci-acpi.c
      PCI: Move pci_get_hp_params() to drivers/pci/pci-acpi.c
      PCI: pciehp: Configure hot-added display devices
      PCI: Remove "no hotplug settings from platform" warning