Lines Matching refs:group
385 wq->group = NULL;
670 engine->group = NULL;
676 struct idxd_group *group;
681 group = idxd->groups[i];
682 memset(&group->grpcfg, 0, sizeof(group->grpcfg));
683 group->num_engines = 0;
684 group->num_wqs = 0;
685 group->use_rdbuf_limit = false;
690 group->rdbufs_allowed = idxd->max_rdbufs;
691 group->rdbufs_reserved = 0;
693 group->tc_a = 1;
694 group->tc_b = 1;
696 group->tc_a = -1;
697 group->tc_b = -1;
699 group->desc_progress_limit = 0;
700 group->batch_progress_limit = 0;
839 static void idxd_group_config_write(struct idxd_group *group)
841 struct idxd_device *idxd = group->idxd;
846 dev_dbg(dev, "Writing group %d cfg registers\n", group->id);
850 grpcfg_offset = GRPWQCFG_OFFSET(idxd, group->id, i);
851 iowrite64(group->grpcfg.wqs[i], idxd->reg_base + grpcfg_offset);
853 group->id, i, grpcfg_offset,
858 grpcfg_offset = GRPENGCFG_OFFSET(idxd, group->id);
859 iowrite64(group->grpcfg.engines, idxd->reg_base + grpcfg_offset);
860 dev_dbg(dev, "GRPCFG engs[%d: %#x]: %#llx\n", group->id,
864 grpcfg_offset = GRPFLGCFG_OFFSET(idxd, group->id);
865 iowrite64(group->grpcfg.flags.bits, idxd->reg_base + grpcfg_offset);
867 group->id, grpcfg_offset,
889 struct idxd_group *group = idxd->groups[i];
891 idxd_group_config_write(group);
913 if (!wq->group)
1017 struct idxd_group *group = idxd->groups[i];
1019 if (group->tc_a == -1)
1020 group->tc_a = group->grpcfg.flags.tc_a = 0;
1022 group->grpcfg.flags.tc_a = group->tc_a;
1023 if (group->tc_b == -1)
1024 group->tc_b = group->grpcfg.flags.tc_b = 1;
1026 group->grpcfg.flags.tc_b = group->tc_b;
1027 group->grpcfg.flags.use_rdbuf_limit = group->use_rdbuf_limit;
1028 group->grpcfg.flags.rdbufs_reserved = group->rdbufs_reserved;
1029 group->grpcfg.flags.rdbufs_allowed = group->rdbufs_allowed;
1030 group->grpcfg.flags.desc_progress_limit = group->desc_progress_limit;
1031 group->grpcfg.flags.batch_progress_limit = group->batch_progress_limit;
1039 struct idxd_group *group;
1042 group = idxd->groups[i];
1043 group->grpcfg.engines = 0;
1048 group = eng->group;
1050 if (!group)
1053 group->grpcfg.engines |= BIT(eng->id);
1066 struct idxd_group *group;
1071 group = idxd->groups[i];
1073 group->grpcfg.wqs[j] = 0;
1078 group = wq->group;
1080 if (!wq->group)
1089 group->grpcfg.wqs[wq->id / 64] |= BIT(wq->id % 64);
1159 static void idxd_group_load_config(struct idxd_group *group)
1161 struct idxd_device *idxd = group->idxd;
1172 grpcfg_offset = GRPWQCFG_OFFSET(idxd, group->id, i);
1173 group->grpcfg.wqs[i] = ioread64(idxd->reg_base + grpcfg_offset);
1175 group->id, i, grpcfg_offset, group->grpcfg.wqs[i]);
1188 /* Set group assignment for wq if wq bit is set */
1189 if (group->grpcfg.wqs[i] & BIT(j)) {
1191 wq->group = group;
1196 grpcfg_offset = GRPENGCFG_OFFSET(idxd, group->id);
1197 group->grpcfg.engines = ioread64(idxd->reg_base + grpcfg_offset);
1198 dev_dbg(dev, "GRPCFG engs[%d: %#x]: %#llx\n", group->id,
1199 grpcfg_offset, group->grpcfg.engines);
1206 if (group->grpcfg.engines & BIT(i)) {
1209 engine->group = group;
1213 grpcfg_offset = GRPFLGCFG_OFFSET(idxd, group->id);
1214 group->grpcfg.flags.bits = ioread64(idxd->reg_base + grpcfg_offset);
1216 group->id, grpcfg_offset, group->grpcfg.flags.bits);
1228 struct idxd_group *group = idxd->groups[i];
1230 idxd_group_load_config(group);
1380 if (!wq->group) {
1381 dev_dbg(dev, "wq %d not attached to group.\n", wq->id);