OSDN Git Service

NTB: Introduce MSI library
authorLogan Gunthorpe <logang@deltatee.com>
Thu, 23 May 2019 22:30:56 +0000 (16:30 -0600)
committerJon Mason <jdmason@kudzu.us>
Thu, 13 Jun 2019 13:02:33 +0000 (09:02 -0400)
commit26b3a37b928457ba2cd98eaf6d7b0feca5a30fa6
tree828a124eb32052fd1603bb77f072a4b3fab1d27a
parentd217e07b32a6750e44f529e0218898c024b2c637
NTB: Introduce MSI library

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>
drivers/ntb/Kconfig
drivers/ntb/Makefile
drivers/ntb/msi.c [new file with mode: 0644]
include/linux/ntb.h