An error occurred while fetching folder content.
PCI-Express Non-Transparent Bridge Support
Jon Mason authored
A PCI-Express non-transparent bridge (NTB) is a point-to-point PCIe bus
connecting 2 systems, providing electrical isolation between the two subsystems.
A non-transparent bridge is functionally similar to a transparent bridge except
that both sides of the bridge have their own independent address domains.  The
host on one side of the bridge will not have the visibility of the complete
memory or I/O space on the other side of the bridge.  To communicate across the
non-transparent bridge, each NTB endpoint has one (or more) apertures exposed to
the local system.  Writes to these apertures are mirrored to memory on the
remote system.  Communications can also occur through the use of doorbell
registers that initiate interrupts to the alternate domain, and scratch-pad
registers accessible from both sides.

The NTB device driver is needed to configure these memory windows, doorbell, and
scratch-pad registers as well as use them in such a way as they can be turned
into a viable communication channel to the remote system.  ntb_hw.[ch]
determines the usage model (NTB to NTB or NTB to Root Port) and abstracts away
the underlying hardware to provide access and a common interface to the doorbell
registers, scratch pads, and memory windows.  These hardware interfaces are
exported so that other, non-mainlined kernel drivers can access these.
ntb_transport.[ch] also uses the exported interfaces in ntb_hw.[ch] to setup a
communication channel(s) and provide a reliable way of transferring data from
one side to the other, which it then exports so that "client" drivers can access
them.  These client drivers are used to provide a standard kernel interface
(i.e., Ethernet device) to NTB, such that Linux can transfer data from one
system to the other in a standard way.
Signed-off-by: default avatarJon Mason <jon.mason@intel.com>
Reviewed-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
fce8a7bb
Name Last commit Last update
..
amba ARM: 7588/1: amba: create a resource parent registrator
bcma Drivers: bcma: remove __dev* attributes.
byteorder UAPI: Remove empty non-UAPI Kbuild files
can UAPI: Remove empty non-UAPI Kbuild files
ceph Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client
clk Merge tag 'mvebu' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
crush UAPI: (Scripted) Convert #include "..." to #include <path/...> in kernel system headers
decompress Fix common misspellings
dma dma: ipu: rename mach/ipu.h to include/linux/dma/ipu-dma.h
extcon extcon: adc_jack: adc-jack driver to support 3.5 pi or simliar devices
fsl dma: mxs-dma: make platform_device_id more generic
hsi UAPI: Remove empty Kbuild files
i2c Merge branch 'i2c-embedded/for-next' of git://git.pengutronix.de/git/wsa/linux
iio iio:imu: Add support for the ADIS16480 and similar IMUs
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
irqchip Merge tag 'dt2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
isdn UAPI: Remove empty non-UAPI Kbuild files
lockd LockD: pass actual network namespace to grace period management functions
mfd mfd: wm5102: Add microphone clamp control registers
mlx4 mlx4_core: Allow choosing flow steering mode
mmc Merge tag 'mmc-updates-for-3.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc
mtd mtd: nand: add NAND_BUSWIDTH_AUTO to autodetect bus width
netfilter UAPI: Remove empty non-UAPI Kbuild files
netfilter_arp UAPI: Remove empty non-UAPI Kbuild files
netfilter_bridge UAPI: Remove empty non-UAPI Kbuild files
netfilter_ipv4
netfilter_ipv6
nfsd
pinctrl
platform_data
power
raid
regulator
rtc
spi
ssb
sunrpc
tc_act
unaligned
usb
uwb
wimax
8250_pci.h
a.out.h
acct.h
acpi.h
acpi_gpio.h
acpi_io.h
acpi_pmtmr.h
adb.h
adfs_fs.h
aer.h
agp_backend.h
agpgart.h
ahci_platform.h
aio.h
alarmtimer.h
altera_jtaguart.h
altera_uart.h
amd-iommu.h
amifd.h
amifdreg.h
amigaffs.h
anon_inodes.h
apm-emulation.h
apm_bios.h
apple_bl.h
arcdevice.h
asn1.h
asn1_ber_bytecode.h
asn1_decoder.h
async.h
async_tx.h
ata.h
ata_platform.h
atalk.h
ath9k_platform.h
atm.h
atm_suni.h
atm_tcp.h
atmdev.h
atmel-mci.h
atmel-pwm-bl.h
atmel-ssc.h
atmel_pdc.h
atmel_pwm.h
atmel_serial.h
atmel_tc.h
atomic.h
attribute_container.h
audit.h
auto_dev-ioctl.h
auto_fs.h
auxvec.h
average.h
b1pcmcia.h
backing-dev.h
backlight.h
balloon_compaction.h
basic_mmio_gpio.h