grpcfg
group->tc_a = group->grpcfg.flags.tc_a = 0;
group->grpcfg.flags.tc_a = group->tc_a;
group->tc_b = group->grpcfg.flags.tc_b = 1;
group->grpcfg.flags.tc_b = group->tc_b;
group->grpcfg.flags.use_rdbuf_limit = group->use_rdbuf_limit;
group->grpcfg.flags.rdbufs_reserved = group->rdbufs_reserved;
group->grpcfg.flags.rdbufs_allowed = group->rdbufs_allowed;
group->grpcfg.flags.desc_progress_limit = group->desc_progress_limit;
group->grpcfg.flags.batch_progress_limit = group->batch_progress_limit;
group->grpcfg.engines = 0;
group->grpcfg.engines |= BIT(eng->id);
group->grpcfg.wqs[j] = 0;
group->grpcfg.wqs[wq->id / 64] |= BIT(wq->id % 64);
group->grpcfg.wqs[i] = ioread64(idxd->reg_base + grpcfg_offset);
group->id, i, grpcfg_offset, group->grpcfg.wqs[i]);
if (group->grpcfg.wqs[i] & BIT(j)) {
group->grpcfg.engines = ioread64(idxd->reg_base + grpcfg_offset);
grpcfg_offset, group->grpcfg.engines);
if (group->grpcfg.engines & BIT(i)) {
group->grpcfg.flags.bits = ioread64(idxd->reg_base + grpcfg_offset);
group->id, grpcfg_offset, group->grpcfg.flags.bits);
memset(&group->grpcfg, 0, sizeof(group->grpcfg));
iowrite64(group->grpcfg.wqs[i], idxd->reg_base + grpcfg_offset);
iowrite64(group->grpcfg.engines, idxd->reg_base + grpcfg_offset);
iowrite64(group->grpcfg.flags.bits, idxd->reg_base + grpcfg_offset);
struct grpcfg grpcfg;
idxd->grpcfg_offset = offsets.grpcfg * IDXD_TABLE_MULT;
u64 grpcfg:16;
writeq(1, dsa->grpcfg_table + offsetof(struct grpcfg, wqs[0]));
writeq(1, dsa->grpcfg_table + offsetof(struct grpcfg, engines));
dsa->grpcfg_table = bar0 + dsa->table_offsets.grpcfg * IDXD_TABLE_MULT;
u64 grpcfg:16;