I am having an issue where if two processes attempt to use the same engine, all DMA action stops. I am using the spdk-19.01.1 package on a Broadwell (D-1559) processor which has12 physical cores, 24 cores with hyperthreading, 4 DMA engines, and am running RedHat 7.4. First, is this the latest and greatest package (I can not find anything newer).
I can run a single application using the Intel DMA engines and that runs fine. The documentation (header files) states that the probe callback will attach to an engine if 'true' is returned and the probe callback will only be called if engines are available. It appears that if one task attaches to the engines, and while that task is using the engine(s), another task can probe the same engines and successfully attach as well. Once that second task starts to use the engines, everything stops.
Is there either a way to reserve an engine so no one else can use it, or to share the engines? A solution which supports either of these options would work.
Would you mind posting your question to the SPDK mailing list? Details can be found at https://lists.01.org/mailman/listinfo/spdk. That’s the best place to get help with questions about SPDK.
SPDK Core Maintainer