Can One Device Driver Capture the MSI-X Interrupt from Another Device?

I’m developing a driver for my PCIe device, and the driver using the Intel Xeon processor’s CBDMA to transmit data from system memory to my device. I want to capture the MSI-X interrupt of CBDMA when it completes the transfer.
Is it possible in KMDF? If possible, please give me some guides, such as links or docs whatever. Thanks a lot.

Hmmmm… from everything I know, support for I/O AT was short lived, applied only to network data moves (particularly in virtualized environments), was supported by a subset of Intel NiCs, and died a quiet death. You’re seriously trying to resurrect it?

In short, the answer to your question is “no.” For a lot of reasons. You don’t know what latent OS support there may be for this device, how parts of the BIOS and OS might access the device, or… anything, really.

I’d say memcpy is your friend here.

OTOH… I’m no expert in I/O AT. I’ve never used it. And it is barely possible there some mystic NDIS incantation you’re can invoke to make use of it. I’d say if you’re not writing a network driver there’s no chance at all.

Peter

Thank you, Peter.

I’m actually writing a driver for a PCIe NTB’s virtual point, the driver may be similar with a network driver. I hope the DMA can do me a favor to fasten the data transfer. The memcpy is not good enough.

Edgar

not good enough.

How do you know? Are you just guessing, or have you actually measured something? Remember, DMA doesn’t stream any faster than memcpy. They are both limited by bus speed.

If you are creating a PCIe device, then for God’s sake, just put a DMA engine in your device. That way, unlike CBDMA, it will be there on whatever machine you happen to plug in to, and it will always be available, with no contention from other users. It is a FAR better solution then relying on poorly supported limited resource, where you will HAVE to implement a fallback plan anyway.

Got it. Thank you Tim.