| // SPDX-License-Identifier: GPL-2.0 |
| /* Copyright(c) 2023 Intel Corporation. All rights rsvd. */ |
| #include <linux/kernel.h> |
| #include "idxd.h" |
| |
| int idxd_load_iaa_device_defaults(struct idxd_device *idxd) |
| { |
| struct idxd_engine *engine; |
| struct idxd_group *group; |
| struct idxd_wq *wq; |
| |
| if (!test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags)) |
| return 0; |
| |
| wq = idxd->wqs[0]; |
| |
| if (wq->state != IDXD_WQ_DISABLED) |
| return -EPERM; |
| |
| /* set mode to "dedicated" */ |
| set_bit(WQ_FLAG_DEDICATED, &wq->flags); |
| wq->threshold = 0; |
| |
| /* only setting up 1 wq, so give it all the wq space */ |
| wq->size = idxd->max_wq_size; |
| |
| /* set priority to 10 */ |
| wq->priority = 10; |
| |
| /* set type to "kernel" */ |
| wq->type = IDXD_WQT_KERNEL; |
| |
| /* set wq group to 0 */ |
| group = idxd->groups[0]; |
| wq->group = group; |
| group->num_wqs++; |
| |
| /* set name to "iaa_crypto" */ |
| memset(wq->name, 0, WQ_NAME_SIZE + 1); |
| strscpy(wq->name, "iaa_crypto", WQ_NAME_SIZE + 1); |
| |
| /* set driver_name to "crypto" */ |
| memset(wq->driver_name, 0, DRIVER_NAME_SIZE + 1); |
| strscpy(wq->driver_name, "crypto", DRIVER_NAME_SIZE + 1); |
| |
| engine = idxd->engines[0]; |
| |
| /* set engine group to 0 */ |
| engine->group = idxd->groups[0]; |
| engine->group->num_engines++; |
| |
| return 0; |
| } |