mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
26b3a37b92
The NTB MSI library allows passing MSI interrupts across a memory window. This offers similar functionality to doorbells or messages except will often have much better latency and the client can potentially use significantly more remote interrupts than typical hardware provides for doorbells. (Which can be important in high-multiport setups.) The library utilizes one memory window per peer and uses the highest index memory windows. Before any ntb_msi function may be used, the user must call ntb_msi_init(). It may then setup and tear down the memory windows when the link state changes using ntb_msi_setup_mws() and ntb_msi_clear_mws(). The peer which receives the interrupt must call ntb_msim_request_irq() to assign the interrupt handler (this function is functionally similar to devm_request_irq()) and the returned descriptor must be transferred to the peer which can use it to trigger the interrupt. The triggering peer, once having received the descriptor, can trigger the interrupt by calling ntb_msi_peer_trigger(). Signed-off-by: Logan Gunthorpe <logang@deltatee.com> Cc: Dave Jiang <dave.jiang@intel.com> Cc: Allen Hubbe <allenbh@gmail.com> Signed-off-by: Jon Mason <jdmason@kudzu.us>
40 lines
1.2 KiB
Plaintext
40 lines
1.2 KiB
Plaintext
menuconfig NTB
|
|
tristate "Non-Transparent Bridge support"
|
|
depends on PCI
|
|
help
|
|
The PCI-E Non-transparent bridge hardware is a point-to-point PCI-E bus
|
|
connecting 2 systems. When configured, writes to the device's PCI
|
|
mapped memory will be mirrored to a buffer on the remote system. The
|
|
ntb Linux driver uses this point-to-point communication as a method to
|
|
transfer data from one system to the other.
|
|
|
|
If unsure, say N.
|
|
|
|
if NTB
|
|
|
|
config NTB_MSI
|
|
bool "MSI Interrupt Support"
|
|
depends on PCI_MSI
|
|
help
|
|
Support using MSI interrupt forwarding instead of (or in addition to)
|
|
hardware doorbells. MSI interrupts typically offer lower latency
|
|
than doorbells and more MSI interrupts can be made available to
|
|
clients. However this requires an extra memory window and support
|
|
in the hardware driver for creating the MSI interrupts.
|
|
|
|
If unsure, say N.
|
|
source "drivers/ntb/hw/Kconfig"
|
|
|
|
source "drivers/ntb/test/Kconfig"
|
|
|
|
config NTB_TRANSPORT
|
|
tristate "NTB Transport Client"
|
|
help
|
|
This is a transport driver that enables connected systems to exchange
|
|
messages over the ntb hardware. The transport exposes a queue pair api
|
|
to client drivers.
|
|
|
|
If unsure, say N.
|
|
|
|
endif # NTB
|