Intel® ISA Extensions
Use hardware-based isolation and memory encryption to provide more code protection in your solutions.
1114 Discussions

Questions About Batch Processing in DSA (data streaming accelerator)

yun3319
Novice
403 Views

I have a few questions regarding the batching mechanism in DSA:

  1. Can batching in DSA handle non-contiguous descriptors in the virtual address space, similar to how scatter-gather lists work? Or does it only support submission of contiguous descriptors in the virtual address space?

  2. I'm wondering if batch processing simply supports submitting multiple descriptors in batches and processing them separately, or if they also support batch processing?
  3. Is batching supported in the kernel when using DSA? If so, can i get an example or how to use it? If batching is supported only at the user level, I would appreciate it if you could provide user level example code.

I'm using linux kernel version 6.6.47 and I'd appreciate any insights or guidance on this topic. Thank you!

0 Kudos
1 Solution
RNa
Employee
360 Views

1. A DSA batch descriptor allows you to specify a pointer to a list of descriptors in memory (descriptor list) which are then fetched and executed. So each entry in the list is a complete descriptor and can specify its own set of addresses, flags and operation to perform etc. There is no requirement about address contiguity between different descriptors within a list. So yes, you can do SG type operations using a batch, but you incur the overhead of a full descriptor creation (software) and consumption (hardware).

2. I think I may have answered this query above. If not, please restate your question.

3. While the hardware allows batch descriptors to be used from the kernel, this will need to be supported by the idxd driver for use through the dmaengine API. This is currently not supported in the upstream driver.

 

View solution in original post

0 Kudos
1 Reply
RNa
Employee
361 Views

1. A DSA batch descriptor allows you to specify a pointer to a list of descriptors in memory (descriptor list) which are then fetched and executed. So each entry in the list is a complete descriptor and can specify its own set of addresses, flags and operation to perform etc. There is no requirement about address contiguity between different descriptors within a list. So yes, you can do SG type operations using a batch, but you incur the overhead of a full descriptor creation (software) and consumption (hardware).

2. I think I may have answered this query above. If not, please restate your question.

3. While the hardware allows batch descriptors to be used from the kernel, this will need to be supported by the idxd driver for use through the dmaengine API. This is currently not supported in the upstream driver.

 

0 Kudos
Reply