[PATCH 1/4] dmaengine: idxd: assign all engines to group 0 in IAA defaults

From: Vinicius Costa Gomes

Date: Tue Jul 14 2026 - 00:11:45 EST


From: Giovanni Cabiddu <giovanni.cabiddu@xxxxxxxxx>

The IAA device defaults only assigned engine 0 to group 0, leaving
engines 1 through max_engines-1 unassigned (group_id = -1). This means
that by default only a single engine processed descriptors, limiting
throughput to one engine's capacity.

Assign all available engines to group 0 so that the full hardware
parallelism is used out of the box without requiring manual
accel-config setup.

Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@xxxxxxxxx>
---
drivers/dma/idxd/defaults.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/dma/idxd/defaults.c b/drivers/dma/idxd/defaults.c
index 2bbbcd02a0da..26ebfa2ca144 100644
--- a/drivers/dma/idxd/defaults.c
+++ b/drivers/dma/idxd/defaults.c
@@ -8,6 +8,7 @@ int idxd_load_iaa_device_defaults(struct idxd_device *idxd)
struct idxd_engine *engine;
struct idxd_group *group;
struct idxd_wq *wq;
+ int i;

if (!test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags))
return 0;
@@ -41,11 +42,12 @@ int idxd_load_iaa_device_defaults(struct idxd_device *idxd)
/* set driver_name to "crypto" */
strscpy_pad(wq->driver_name, "crypto");

- engine = idxd->engines[0];
-
- /* set engine group to 0 */
- engine->group = idxd->groups[0];
- engine->group->num_engines++;
+ /* assign all engines to group 0 */
+ for (i = 0; i < idxd->max_engines; i++) {
+ engine = idxd->engines[i];
+ engine->group = group;
+ group->num_engines++;
+ }

return 0;
}

--
2.55.0