Lines Matching refs:acc
53 struct acc {
482 static void print_acc(struct xe_device *xe, struct acc *acc)
492 acc->access_type ? "AC_NTFY_VAL" : "AC_TRIG_VAL",
493 acc->asid, acc->vfid, acc->engine_class, acc->engine_instance,
494 granularity_in_byte(acc->granularity) / SZ_1K,
495 sub_granularity_in_byte(acc->granularity) / SZ_1K,
496 acc->sub_granularity, acc->va_range_base);
499 static struct xe_vma *get_acc_vma(struct xe_vm *vm, struct acc *acc)
501 u64 page_va = acc->va_range_base + (ffs(acc->sub_granularity) - 1) *
502 sub_granularity_in_byte(acc->granularity);
507 static int handle_acc(struct xe_gt *gt, struct acc *acc)
517 if (acc->access_type != ACC_TRIGGER)
522 vm = xa_load(&xe->usm.asid_to_vm, acc->asid);
532 vma = get_acc_vma(vm, acc);
565 static bool get_acc(struct acc_queue *acc_queue, struct acc *acc)
575 acc->granularity = FIELD_GET(ACC_GRANULARITY, desc->dw2);
576 acc->sub_granularity = FIELD_GET(ACC_SUBG_HI, desc->dw1) << 31 |
578 acc->engine_class = FIELD_GET(ACC_ENG_CLASS, desc->dw1);
579 acc->engine_instance = FIELD_GET(ACC_ENG_INSTANCE, desc->dw1);
580 acc->asid = FIELD_GET(ACC_ASID, desc->dw1);
581 acc->vfid = FIELD_GET(ACC_VFID, desc->dw2);
582 acc->access_type = FIELD_GET(ACC_TYPE, desc->dw0);
583 acc->va_range_base = make_u64(desc->dw3 & ACC_VIRTUAL_ADDR_RANGE_HI,
600 struct acc acc = {};
606 while (get_acc(acc_queue, &acc)) {
607 ret = handle_acc(gt, &acc);
609 print_acc(xe, &acc);