freebsd-dev/sys/dev/pci
Eric van Gyzen 991d431fa8 PCIe HotPlug: Detect bridges that are not really HotPlug capable
Some devices report that they have an MRL when they actually
do not.  Since they always report that the MRL is open, child
devices would be ignored.  Try to detect these devices and
ignore their claim of HotPlug support.  Specifically,
if there is an open MRL but the Data Link Layer is active,
the MRL is not real.

Revert r303645 to re-enable HotPlug support for slots with
power controllers, since it works correctly in my testing.

Start the DLL state-change timer if Presence /or/ MRL state changes,
along with other conditions.  Previously, we started the timer iff
Presence changed.  If there is an MRL, it must be closed for power
to be turned on, so Presence is unlikely to change on an MRL-close event.

Add a printf() of interesting registers on HotPlug interrupts and
commands (one from erj@).  These were very useful for debugging.
Guard them with bootverbose, since they're spam in normal operation.

In collaboration with:	jhb
Reviewed by:	jhb
MFC after:	1 day
Relnotes:	yes (re-enable HotPlug support for slots with power controllers)
Sponsored by:	Dell Inc.
Differential Revision:	https://reviews.freebsd.org/D7509
2016-08-17 01:24:34 +00:00
..
eisa_pci.c Revert previous change. The magical constants can't be changed 2015-06-06 17:04:36 +00:00
fixup_pci.c
hostb_pci.c sys/dev: minor spelling fixes. 2016-05-03 03:41:25 +00:00
ignore_pci.c Revert previous change. The magical constants can't be changed 2015-06-06 17:04:36 +00:00
isa_pci.c Convert rman to use rman_res_t instead of u_long 2016-01-27 02:23:54 +00:00
pci_host_generic.c Remove support for the arm64 pre-INTRNG interrupt framework from the PCI 2016-07-14 16:52:18 +00:00
pci_host_generic.h Mark the ThunderX and generic PCI drivers as cache-coherent when we know 2016-05-31 09:15:21 +00:00
pci_if.m Permit the name of the /dev/iov entry to be set by the driver. 2016-08-03 17:09:12 +00:00
pci_iov_if.m
pci_iov_private.h Save and restore SRIOV-related config registers. 2016-05-03 19:45:24 +00:00
pci_iov_schema.c Clean up repeated "All rights reserved" 2016-03-14 17:41:17 +00:00
pci_iov.c Permit the name of the /dev/iov entry to be set by the driver. 2016-08-03 17:09:12 +00:00
pci_iov.h Permit the name of the /dev/iov entry to be set by the driver. 2016-08-03 17:09:12 +00:00
pci_pci.c PCIe HotPlug: Detect bridges that are not really HotPlug capable 2016-08-17 01:24:34 +00:00
pci_private.h Permit the name of the /dev/iov entry to be set by the driver. 2016-08-03 17:09:12 +00:00
pci_subr.c Use uintmax_t (typedef'd to rman_res_t type) for rman ranges. 2016-03-18 01:28:41 +00:00
pci_user.c Reliably return PCI_GETCONF_LAST_DEVICE from PCIOCGETCONF. 2016-08-09 17:57:11 +00:00
pci.c Add pci_get_max_payload() to fetch the PCI-express maximum payload size. 2016-06-24 17:26:42 +00:00
pcib_if.m Re-commit r299467 having fixed the build: 2016-05-16 09:15:50 +00:00
pcib_private.h Implement a proper detach method for the PCI-PCI bridge driver. 2016-05-20 00:03:22 +00:00
pcib_support.c Re-commit r299467 having fixed the build: 2016-05-16 09:15:50 +00:00
pcireg.h Native PCI-express HotPlug support. 2016-05-05 22:26:23 +00:00
pcivar.h Consistently use device_t 2016-08-09 19:32:06 +00:00
schema_private.h Clean up repeated "All rights reserved" 2016-03-14 17:41:17 +00:00
vga_pci.c Replace all resource occurrences of '0UL/~0UL' with '0/~0'. 2016-03-03 05:07:35 +00:00