freebsd-nq/sys
Dexuan Cui 871c968b3a hyperv/pcib: enable PCIe pass-through (a.k.a. Discrete Device Assignment)
The feature enables us to pass through physical PCIe devices to FreeBSD VM
running on Hyper-V (Windows Server 2016) to get near-native performance with
low CPU utilization.

The patch implements a PCI bridge driver to support the feature:

1) The pcib driver talks to the host to discover device(s) and presents
the device(s) to FreeBSD's pci driver via PCI configuration space (note:
to access the configuration space, we don't use the standard I/O port
0xCF8/CFC method; instead, we use an MMIO-based method supplied by Hyper-V,
which is very similar to the 0xCF8/CFC method).

2) The pcib driver allocates resources for the device(s) and initialize
the related BARs, when the device driver's attach method is invoked;

3) The pcib driver talks to the host to create MSI/MSI-X interrupt
remapping between the guest and the host;

4) The pcib driver supports device hot add/remove.

Reviewed by:	sephe
Approved by:	sephe (mentor)
MFC after:	1 week
Sponsored by:	Microsoft
Differential Revision:	https://reviews.freebsd.org/D8332
2016-11-16 09:25:00 +00:00
..
amd64 Fix improper use of "its". 2016-11-08 23:59:41 +00:00
arm On command error, reset only DMA and FIFO engines instead of the entire 2016-11-15 23:48:30 +00:00
arm64 Fix improper use of "its". 2016-11-08 23:59:41 +00:00
boot New driver for Broadcom NetXtreme-C and NetXtreme-E devices. 2016-11-15 20:35:29 +00:00
bsm
cam Fix improper use of "its". 2016-11-08 23:59:41 +00:00
cddl Remove most of the code for implementing PG_CACHED pages. (This change does 2016-11-15 18:22:50 +00:00
compat Tidy up ia32_sysvec sv_flags setting 2016-10-20 20:29:54 +00:00
conf hyperv/pcib: enable PCIe pass-through (a.k.a. Discrete Device Assignment) 2016-11-16 09:25:00 +00:00
contrib Simplify the page tracking for VA<->PA translations. 2016-11-16 05:24:42 +00:00
crypto Fix C++ includability of crypto headers with static array sizes 2016-10-18 23:20:49 +00:00
ddb Determine the operand/address size of %cs in a new function 2016-09-25 16:30:29 +00:00
dev hyperv/pcib: enable PCIe pass-through (a.k.a. Discrete Device Assignment) 2016-11-16 09:25:00 +00:00
fs Reduce NFS "NFSv4( mounted on)? fileid > 32bits" log spam. 2016-11-16 01:11:49 +00:00
gdb
geom Use providergone method to cover race between destroy and g_access(). 2016-11-13 03:56:26 +00:00
gnu Revert and redo r306083. 2016-09-22 15:17:36 +00:00
i386 Fix improper use of "its". 2016-11-08 23:59:41 +00:00
isa
kern Remove most of the code for implementing PG_CACHED pages. (This change does 2016-11-15 18:22:50 +00:00
kgssapi
libkern
mips [MIPS] Fix Config3[ULRI] printing 2016-11-15 20:44:19 +00:00
modules hyperv/pcib: enable PCIe pass-through (a.k.a. Discrete Device Assignment) 2016-11-16 09:25:00 +00:00
net Plug a lock leak in sysctl_ifmalist(). 2016-11-15 19:23:48 +00:00
net80211 [net80211] announce 11n capabilities in probe requests in IBSS mode. 2016-11-15 01:47:37 +00:00
netgraph Fix improper use of "its". 2016-11-08 23:59:41 +00:00
netinet Initialize ip6 pointer before use. 2016-11-06 02:33:04 +00:00
netinet6 Make ICMPv6 hard error handling for TCP consistent with the ICMPv4 2016-10-21 10:32:57 +00:00
netipsec Remove the 4.3BSD compatible macro m_copy(), use m_copym() instead. 2016-09-15 07:41:48 +00:00
netnatm
netpfil Remove the mbuf tag after use (for reinjected packets). 2016-11-03 00:26:58 +00:00
netsmb
nfs Hide the boottime and bootimebin globals, provide the getboottime(9) 2016-07-27 11:08:59 +00:00
nfsclient
nfsserver
nlm When sleeping waiting for either local or remote advisory lock, 2016-06-26 20:08:42 +00:00
ofed Move the ConnectX-3 and ConnectX-2 driver from sys/ofed into sys/dev/mlx4 2016-09-30 08:23:06 +00:00
opencrypto Add support for the fpu_kern(9) KPI on arm64. It hooks into the existing 2016-10-20 09:22:10 +00:00
pc98 Fix building on i386 and arm. But 'public domain' headers on the files 2016-10-13 06:56:23 +00:00
powerpc Simplify the page tracking for VA<->PA translations. 2016-11-16 05:24:42 +00:00
riscv Check if L2 entry exists for the given VA before loading L3 entry. 2016-11-14 18:30:03 +00:00
rpc Hide the boottime and bootimebin globals, provide the getboottime(9) 2016-07-27 11:08:59 +00:00
security Fix improper use of "its". 2016-11-08 23:59:41 +00:00
sparc64 Fix building on i386 and arm. But 'public domain' headers on the files 2016-10-13 06:56:23 +00:00
sys Move text dump version as it's not an architecture version. 2016-11-14 12:56:18 +00:00
teken
tests
tools Consider CROSS_BINUTILS_PREFIX environment variable so we use correct 2016-08-10 13:49:17 +00:00
ufs Provide simple mutual exclusion between mount point update and unmount. 2016-11-13 21:49:51 +00:00
vm Remove most of the code for implementing PG_CACHED pages. (This change does 2016-11-15 18:22:50 +00:00
x86 Fix improper use of "its". 2016-11-08 23:59:41 +00:00
xdr
xen xen: add a grant-table user-space device 2016-10-31 13:12:58 +00:00
Makefile