Disable PCI hotplug support for slots with power controllers.

After further review of the spec, I do not think the current HotPlug
code handles slots with power controllers correctly.  In particular,
the power state of the slot is to be inferred from other events, not
from examining the state of the power control bit in SLOT_CTL.  For now,
disable PCI hotplug support on such slots.

PR:		211081
Tested by:	Jeffrey E Pieper <jeffrey.e.pieper@intel.com>
MFC after:	3 days
This commit is contained in:
John Baldwin 2016-08-01 22:19:23 +00:00
parent 1ada904147
commit 2611037c1c

View File

@ -932,6 +932,13 @@ pcib_probe_hotplug(struct pcib_softc *sc)
sc->pcie_link_cap = pcie_read_config(dev, PCIER_LINK_CAP, 4);
sc->pcie_slot_cap = pcie_read_config(dev, PCIER_SLOT_CAP, 4);
/*
* XXX: Handling of slots with a power controller needs to be
* reexamined. Ignore hotplug on such slots for now.
*/
if (sc->pcie_slot_cap & PCIEM_SLOT_CAP_PCP)
return;
if (sc->pcie_slot_cap & PCIEM_SLOT_CAP_HPC)
sc->flags |= PCIB_HOTPLUG;
}