freebsd-dev/sys/conf
John Baldwin 82cb5c3b5b Native PCI-express HotPlug support.
PCI-express HotPlug support is implemented via bits in the slot
registers of the PCI-express capability of the downstream port along
with an interrupt that triggers when bits in the slot status register
change.

This is implemented for FreeBSD by adding HotPlug support to the
PCI-PCI bridge driver which attaches to the virtual PCI-PCI bridges
representing downstream ports on HotPlug slots. The PCI-PCI bridge
driver registers an interrupt handler to receive HotPlug events. It
also uses the slot registers to determine the current HotPlug state
and drive an internal HotPlug state machine. For simplicty of
implementation, the PCI-PCI bridge device detaches and deletes the
child PCI device when a card is removed from a slot and creates and
attaches a PCI child device when a card is inserted into the slot.

The PCI-PCI bridge driver provides a bus_child_present which claims
that child devices are present on HotPlug-capable slots only when a
card is inserted. Rather than requiring a timeout in the RC for
config accesses to not-present children, the pcib_read/write_config
methods fail all requests when a card is not present (or not yet
ready).

These changes include support for various optional HotPlug
capabilities such as a power controller, mechanical latch,
electro-mechanical interlock, indicators, and an attention button.
It also includes support for devices which require waiting for
command completion events before initiating a subsequent HotPlug
command. However, it has only been tested on ExpressCard systems
which support surprise removal and have none of these optional
capabilities.

PCI-express HotPlug support is conditional on the PCI_HP option
which is enabled by default on arm64, x86, and powerpc.

Reviewed by:	adrian, imp, vangyzen (older versions)
Relnotes:	yes
Differential Revision:	https://reviews.freebsd.org/D6136
2016-05-05 22:26:23 +00:00
..
config.mk Reduce duplicated logic from r291744. 2016-03-12 22:21:14 +00:00
dtb.mk
files [bwn] [bhnd] initial support for using bhnd for if_bwn devices. 2016-05-04 23:38:27 +00:00
files.amd64 hyperv: Deprecate HYPERV option by moving Hyper-V IDT vector into vmbus 2016-04-15 02:20:18 +00:00
files.arm Move arm's devmap to some generic place, so it can be used 2016-04-26 11:53:37 +00:00
files.arm64 Move arm's devmap to some generic place, so it can be used 2016-04-26 11:53:37 +00:00
files.i386 hyperv: Deprecate HYPERV option by moving Hyper-V IDT vector into vmbus 2016-04-15 02:20:18 +00:00
files.mips Implement FBT provider (MD part) for DTrace on MIPS. 2016-05-05 13:54:50 +00:00
files.pc98 Move i386/i386/autoconf.c to sys/x86/x86 and use it on both amd64 and i386. 2016-04-03 23:03:54 +00:00
files.powerpc Fix PowerPC LINT build after r297392 2016-04-01 09:07:18 +00:00
files.riscv o Add device tree files and kernel configuration files 2016-04-26 13:22:08 +00:00
files.sparc64 simplify compile-time default keyboard map generation 2016-03-28 19:51:45 +00:00
kern.mk We only support GCC 4.8 for these flags. 2016-03-13 19:17:48 +00:00
kern.opts.mk Remove the old depend (mkdep) code and make FAST_DEPEND the one true way. 2016-03-30 23:50:23 +00:00
kern.post.mk Revert r298357 2016-04-20 22:41:19 +00:00
kern.pre.mk Remove the old depend (mkdep) code and make FAST_DEPEND the one true way. 2016-03-30 23:50:23 +00:00
kmod_syms.awk
kmod.mk MFH 2016-04-04 23:55:32 +00:00
ldscript.amd64
ldscript.arm
ldscript.arm64
ldscript.i386
ldscript.mips
ldscript.mips.cfe
ldscript.mips.mips64
ldscript.mips.octeon1
ldscript.powerpc
ldscript.powerpc64
ldscript.riscv
ldscript.sparc64
Makefile.amd64
Makefile.arm
Makefile.arm64
Makefile.i386
Makefile.mips
Makefile.pc98
Makefile.powerpc
Makefile.riscv Add support for ddb(4). 2016-03-10 15:51:43 +00:00
Makefile.sparc64
makeLINT.mk
makeLINT.sed
newvers.sh newvers.sh: rationalize licence condition numbering 2016-04-07 20:30:46 +00:00
NOTES Native PCI-express HotPlug support. 2016-05-05 22:26:23 +00:00
options Native PCI-express HotPlug support. 2016-05-05 22:26:23 +00:00
options.amd64 hyperv: Deprecate HYPERV option by moving Hyper-V IDT vector into vmbus 2016-04-15 02:20:18 +00:00
options.arm Add support for the Allwinner A83T (sun8iw6p1) SoC. 2016-05-05 09:41:57 +00:00
options.arm64
options.i386 hyperv: Deprecate HYPERV option by moving Hyper-V IDT vector into vmbus 2016-04-15 02:20:18 +00:00
options.mips Rename ARM_INTRNG and MIPS_INTRNG to INTRNG. This will help with machine 2016-04-15 16:05:41 +00:00
options.pc98
options.powerpc
options.riscv Revert r298477 ("Clear the DDR memory"). 2016-04-25 13:20:57 +00:00
options.sparc64
systags.sh
WITHOUT_SOURCELESS
WITHOUT_SOURCELESS_HOST
WITHOUT_SOURCELESS_UCODE