Page MenuHomeFreeBSD

PCIe HotPlug: Detect bridges that are not really HotPlug capable
ClosedPublic

Authored by vangyzen on Aug 15 2016, 7:30 PM.

Details

Summary

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
Relnotes: yes (re-enable HotPlug support for slots with power controllers)
MFC after: 1 day
Sponsored by: Dell Inc.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

vangyzen retitled this revision from to PCIe HotPlug: Detect bridges that are not really HotPlug capable.
vangyzen updated this object.
vangyzen edited the test plan for this revision. (Show Details)
vangyzen added a reviewer: jhb.
jhb edited edge metadata.

Thanks,

sys/dev/pci/pci_pci.c
1126 ↗(On Diff #19303)

Space around |

This revision is now accepted and ready to land.Aug 16 2016, 10:14 PM
This revision was automatically updated to reflect the committed changes.