Lines Matching refs:ee
406 const struct drm_i915_error_engine *ee) in error_print_instdone() argument
412 ee->instdone.instdone); in error_print_instdone()
414 if (ee->engine_id != RCS || INTEL_GEN(m->i915) <= 3) in error_print_instdone()
418 ee->instdone.slice_common); in error_print_instdone()
426 ee->instdone.sampler[slice][subslice]); in error_print_instdone()
431 ee->instdone.row[slice][subslice]); in error_print_instdone()
465 const struct drm_i915_error_engine *ee, in error_print_engine() argument
471 engine_name(m->i915, ee->engine_id)); in error_print_engine()
472 err_printf(m, " IDLE?: %s\n", yesno(ee->idle)); in error_print_engine()
473 err_printf(m, " START: 0x%08x\n", ee->start); in error_print_engine()
474 err_printf(m, " HEAD: 0x%08x [0x%08x]\n", ee->head, ee->rq_head); in error_print_engine()
476 ee->tail, ee->rq_post, ee->rq_tail); in error_print_engine()
477 err_printf(m, " CTL: 0x%08x\n", ee->ctl); in error_print_engine()
478 err_printf(m, " MODE: 0x%08x\n", ee->mode); in error_print_engine()
479 err_printf(m, " HWS: 0x%08x\n", ee->hws); in error_print_engine()
481 (u32)(ee->acthd>>32), (u32)ee->acthd); in error_print_engine()
482 err_printf(m, " IPEIR: 0x%08x\n", ee->ipeir); in error_print_engine()
483 err_printf(m, " IPEHR: 0x%08x\n", ee->ipehr); in error_print_engine()
485 error_print_instdone(m, ee); in error_print_engine()
487 if (ee->batchbuffer) { in error_print_engine()
488 u64 start = ee->batchbuffer->gtt_offset; in error_print_engine()
489 u64 end = start + ee->batchbuffer->gtt_size; in error_print_engine()
497 (u32)(ee->bbaddr>>32), (u32)ee->bbaddr); in error_print_engine()
498 err_printf(m, " BB_STATE: 0x%08x\n", ee->bbstate); in error_print_engine()
499 err_printf(m, " INSTPS: 0x%08x\n", ee->instps); in error_print_engine()
501 err_printf(m, " INSTPM: 0x%08x\n", ee->instpm); in error_print_engine()
502 err_printf(m, " FADDR: 0x%08x %08x\n", upper_32_bits(ee->faddr), in error_print_engine()
503 lower_32_bits(ee->faddr)); in error_print_engine()
505 err_printf(m, " RC PSMI: 0x%08x\n", ee->rc_psmi); in error_print_engine()
506 err_printf(m, " FAULT_REG: 0x%08x\n", ee->fault_reg); in error_print_engine()
508 ee->semaphore_mboxes[0]); in error_print_engine()
510 ee->semaphore_mboxes[1]); in error_print_engine()
513 ee->semaphore_mboxes[2]); in error_print_engine()
516 err_printf(m, " GFX_MODE: 0x%08x\n", ee->vm_info.gfx_mode); in error_print_engine()
522 i, ee->vm_info.pdp[i]); in error_print_engine()
525 ee->vm_info.pp_dir_base); in error_print_engine()
528 err_printf(m, " seqno: 0x%08x\n", ee->seqno); in error_print_engine()
529 err_printf(m, " last_seqno: 0x%08x\n", ee->last_seqno); in error_print_engine()
530 err_printf(m, " waiting: %s\n", yesno(ee->waiting)); in error_print_engine()
531 err_printf(m, " ring->head: 0x%08x\n", ee->cpu_ring_head); in error_print_engine()
532 err_printf(m, " ring->tail: 0x%08x\n", ee->cpu_ring_tail); in error_print_engine()
533 err_printf(m, " hangcheck stall: %s\n", yesno(ee->hangcheck_stalled)); in error_print_engine()
535 hangcheck_action_to_str(ee->hangcheck_action)); in error_print_engine()
537 jiffies_to_msecs(ee->hangcheck_timestamp - epoch), in error_print_engine()
538 ee->hangcheck_timestamp, in error_print_engine()
539 ee->hangcheck_timestamp == epoch ? "; epoch" : ""); in error_print_engine()
540 err_printf(m, " engine reset count: %u\n", ee->reset_count); in error_print_engine()
542 for (n = 0; n < ee->num_ports; n++) { in error_print_engine()
544 error_print_request(m, " ", &ee->execlist[n], epoch); in error_print_engine()
547 error_print_context(m, " Active context: ", &ee->context); in error_print_engine()
759 const struct drm_i915_error_engine *ee = &error->engine[i]; in i915_error_state_to_str() local
761 obj = ee->batchbuffer; in i915_error_state_to_str()
764 if (ee->context.pid) in i915_error_state_to_str()
766 ee->context.comm, in i915_error_state_to_str()
767 ee->context.pid, in i915_error_state_to_str()
768 ee->context.handle, in i915_error_state_to_str()
769 ee->context.hw_id, in i915_error_state_to_str()
770 ee->context.ban_score, in i915_error_state_to_str()
771 bannable(&ee->context)); in i915_error_state_to_str()
778 for (j = 0; j < ee->user_bo_count; j++) in i915_error_state_to_str()
780 "user", ee->user_bo[j]); in i915_error_state_to_str()
782 if (ee->num_requests) { in i915_error_state_to_str()
785 ee->num_requests); in i915_error_state_to_str()
786 for (j = 0; j < ee->num_requests; j++) in i915_error_state_to_str()
788 &ee->requests[j], in i915_error_state_to_str()
792 if (IS_ERR(ee->waiters)) { in i915_error_state_to_str()
795 } else if (ee->num_waiters) { in i915_error_state_to_str()
798 ee->num_waiters); in i915_error_state_to_str()
799 for (j = 0; j < ee->num_waiters; j++) { in i915_error_state_to_str()
801 ee->waiters[j].seqno, in i915_error_state_to_str()
802 ee->waiters[j].comm, in i915_error_state_to_str()
803 ee->waiters[j].pid); in i915_error_state_to_str()
808 "ringbuffer", ee->ringbuffer); in i915_error_state_to_str()
811 "HW Status", ee->hws_page); in i915_error_state_to_str()
814 "HW context", ee->ctx); in i915_error_state_to_str()
817 "WA context", ee->wa_ctx); in i915_error_state_to_str()
820 "WA batchbuffer", ee->wa_batchbuffer); in i915_error_state_to_str()
823 "NULL context", ee->default_state); in i915_error_state_to_str()
916 struct drm_i915_error_engine *ee = &error->engine[i]; in __i915_gpu_state_free() local
918 for (j = 0; j < ee->user_bo_count; j++) in __i915_gpu_state_free()
919 i915_error_object_free(ee->user_bo[j]); in __i915_gpu_state_free()
920 kfree(ee->user_bo); in __i915_gpu_state_free()
922 i915_error_object_free(ee->batchbuffer); in __i915_gpu_state_free()
923 i915_error_object_free(ee->wa_batchbuffer); in __i915_gpu_state_free()
924 i915_error_object_free(ee->ringbuffer); in __i915_gpu_state_free()
925 i915_error_object_free(ee->hws_page); in __i915_gpu_state_free()
926 i915_error_object_free(ee->ctx); in __i915_gpu_state_free()
927 i915_error_object_free(ee->wa_ctx); in __i915_gpu_state_free()
929 kfree(ee->requests); in __i915_gpu_state_free()
930 if (!IS_ERR_OR_NULL(ee->waiters)) in __i915_gpu_state_free()
931 kfree(ee->waiters); in __i915_gpu_state_free()
1124 struct drm_i915_error_engine *ee) in gen6_record_semaphore_state() argument
1128 ee->semaphore_mboxes[0] = I915_READ(RING_SYNC_0(engine->mmio_base)); in gen6_record_semaphore_state()
1129 ee->semaphore_mboxes[1] = I915_READ(RING_SYNC_1(engine->mmio_base)); in gen6_record_semaphore_state()
1131 ee->semaphore_mboxes[2] = in gen6_record_semaphore_state()
1136 struct drm_i915_error_engine *ee) in error_record_engine_waiters() argument
1143 ee->num_waiters = 0; in error_record_engine_waiters()
1144 ee->waiters = NULL; in error_record_engine_waiters()
1150 ee->waiters = ERR_PTR(-EDEADLK); in error_record_engine_waiters()
1169 ee->waiters = ERR_PTR(-EDEADLK); in error_record_engine_waiters()
1173 ee->waiters = waiter; in error_record_engine_waiters()
1182 if (++ee->num_waiters == count) in error_record_engine_waiters()
1190 struct drm_i915_error_engine *ee) in error_record_engine_registers() argument
1195 ee->rc_psmi = I915_READ(RING_PSMI_CTL(engine->mmio_base)); in error_record_engine_registers()
1197 ee->fault_reg = I915_READ(GEN8_RING_FAULT_REG); in error_record_engine_registers()
1199 gen6_record_semaphore_state(engine, ee); in error_record_engine_registers()
1200 ee->fault_reg = I915_READ(RING_FAULT_REG(engine)); in error_record_engine_registers()
1205 ee->faddr = I915_READ(RING_DMA_FADD(engine->mmio_base)); in error_record_engine_registers()
1206 ee->ipeir = I915_READ(RING_IPEIR(engine->mmio_base)); in error_record_engine_registers()
1207 ee->ipehr = I915_READ(RING_IPEHR(engine->mmio_base)); in error_record_engine_registers()
1208 ee->instps = I915_READ(RING_INSTPS(engine->mmio_base)); in error_record_engine_registers()
1209 ee->bbaddr = I915_READ(RING_BBADDR(engine->mmio_base)); in error_record_engine_registers()
1211 ee->faddr |= (u64) I915_READ(RING_DMA_FADD_UDW(engine->mmio_base)) << 32; in error_record_engine_registers()
1212 ee->bbaddr |= (u64) I915_READ(RING_BBADDR_UDW(engine->mmio_base)) << 32; in error_record_engine_registers()
1214 ee->bbstate = I915_READ(RING_BBSTATE(engine->mmio_base)); in error_record_engine_registers()
1216 ee->faddr = I915_READ(DMA_FADD_I8XX); in error_record_engine_registers()
1217 ee->ipeir = I915_READ(IPEIR); in error_record_engine_registers()
1218 ee->ipehr = I915_READ(IPEHR); in error_record_engine_registers()
1221 intel_engine_get_instdone(engine, &ee->instdone); in error_record_engine_registers()
1223 ee->waiting = intel_engine_has_waiter(engine); in error_record_engine_registers()
1224 ee->instpm = I915_READ(RING_INSTPM(engine->mmio_base)); in error_record_engine_registers()
1225 ee->acthd = intel_engine_get_active_head(engine); in error_record_engine_registers()
1226 ee->seqno = intel_engine_get_seqno(engine); in error_record_engine_registers()
1227 ee->last_seqno = intel_engine_last_submit(engine); in error_record_engine_registers()
1228 ee->start = I915_READ_START(engine); in error_record_engine_registers()
1229 ee->head = I915_READ_HEAD(engine); in error_record_engine_registers()
1230 ee->tail = I915_READ_TAIL(engine); in error_record_engine_registers()
1231 ee->ctl = I915_READ_CTL(engine); in error_record_engine_registers()
1233 ee->mode = I915_READ_MODE(engine); in error_record_engine_registers()
1261 ee->hws = I915_READ(mmio); in error_record_engine_registers()
1264 ee->idle = intel_engine_is_idle(engine); in error_record_engine_registers()
1265 ee->hangcheck_timestamp = engine->hangcheck.action_timestamp; in error_record_engine_registers()
1266 ee->hangcheck_action = engine->hangcheck.action; in error_record_engine_registers()
1267 ee->hangcheck_stalled = engine->hangcheck.stalled; in error_record_engine_registers()
1268 ee->reset_count = i915_reset_engine_count(&dev_priv->gpu_error, in error_record_engine_registers()
1274 ee->vm_info.gfx_mode = I915_READ(RING_MODE_GEN7(engine)); in error_record_engine_registers()
1277 ee->vm_info.pp_dir_base = in error_record_engine_registers()
1280 ee->vm_info.pp_dir_base = in error_record_engine_registers()
1284 ee->vm_info.pdp[i] = in error_record_engine_registers()
1286 ee->vm_info.pdp[i] <<= 32; in error_record_engine_registers()
1287 ee->vm_info.pdp[i] |= in error_record_engine_registers()
1314 struct drm_i915_error_engine *ee) in engine_record_requests() argument
1326 ee->requests = kcalloc(count, sizeof(*ee->requests), GFP_ATOMIC); in engine_record_requests()
1327 if (!ee->requests) in engine_record_requests()
1330 ee->num_requests = count; in engine_record_requests()
1335 if (count >= ee->num_requests) { in engine_record_requests()
1354 record_request(request, &ee->requests[count++]); in engine_record_requests()
1356 ee->num_requests = count; in engine_record_requests()
1360 struct drm_i915_error_engine *ee) in error_record_engine_execlists() argument
1371 record_request(rq, &ee->execlist[n]); in error_record_engine_execlists()
1374 ee->num_ports = n; in error_record_engine_execlists()
1402 struct drm_i915_error_engine *ee) in request_record_user_bo() argument
1426 ee->user_bo = bo; in request_record_user_bo()
1427 ee->user_bo_count = count; in request_record_user_bo()
1456 struct drm_i915_error_engine *ee = &error->engine[i]; in gem_record_rings() local
1459 ee->engine_id = -1; in gem_record_rings()
1464 ee->engine_id = i; in gem_record_rings()
1466 error_record_engine_registers(error, engine, ee); in gem_record_rings()
1467 error_record_engine_waiters(engine, ee); in gem_record_rings()
1468 error_record_engine_execlists(engine, ee); in gem_record_rings()
1475 ee->vm = ctx->ppgtt ? &ctx->ppgtt->vm : &ggtt->vm; in gem_record_rings()
1477 record_context(&ee->context, ctx); in gem_record_rings()
1483 ee->batchbuffer = in gem_record_rings()
1487 ee->wa_batchbuffer = in gem_record_rings()
1490 request_record_user_bo(request, ee); in gem_record_rings()
1492 ee->ctx = in gem_record_rings()
1499 ee->rq_head = request->head; in gem_record_rings()
1500 ee->rq_post = request->postfix; in gem_record_rings()
1501 ee->rq_tail = request->tail; in gem_record_rings()
1504 ee->cpu_ring_head = ring->head; in gem_record_rings()
1505 ee->cpu_ring_tail = ring->tail; in gem_record_rings()
1506 ee->ringbuffer = in gem_record_rings()
1509 engine_record_requests(engine, request, ee); in gem_record_rings()
1512 ee->hws_page = in gem_record_rings()
1516 ee->wa_ctx = i915_error_object_create(i915, engine->wa_ctx.vma); in gem_record_rings()
1518 ee->default_state = capture_object(i915, engine->default_state); in gem_record_rings()
1557 struct drm_i915_error_engine *ee = &error->engine[i]; in capture_active_buffers() local
1560 if (!ee->vm) in capture_active_buffers()
1565 found = error->engine[j].vm == ee->vm; in capture_active_buffers()
1567 gem_capture_vm(error, ee->vm, cnt++); in capture_active_buffers()
1772 const struct drm_i915_error_engine *ee = &error->engine[i]; in capture_find_epoch() local
1774 if (ee->hangcheck_stalled && in capture_find_epoch()
1775 time_before(ee->hangcheck_timestamp, epoch)) in capture_find_epoch()
1776 epoch = ee->hangcheck_timestamp; in capture_find_epoch()