Lines Matching refs:dead
233 spin_lock_init(&ct->dead.lock); in xe_guc_ct_init_noalloc()
234 INIT_WORK(&ct->dead.worker, ct_dead_worker_func); in xe_guc_ct_init_noalloc()
505 spin_lock_irq(&ct->dead.lock); in xe_guc_ct_enable()
506 if (ct->dead.reason) { in xe_guc_ct_enable()
507 ct->dead.reason |= (1 << CT_DEAD_STATE_REARM); in xe_guc_ct_enable()
508 queue_work(system_unbound_wq, &ct->dead.worker); in xe_guc_ct_enable()
510 spin_unlock_irq(&ct->dead.lock); in xe_guc_ct_enable()
2107 if (ct->dead.reported) in ct_dead_capture()
2110 spin_lock_irqsave(&ct->dead.lock, flags); in ct_dead_capture()
2113 have_capture = ct->dead.reason & (1 << CT_DEAD_STATE_CAPTURE); in ct_dead_capture()
2114 ct->dead.reason |= (1 << reason_code) | in ct_dead_capture()
2117 spin_unlock_irqrestore(&ct->dead.lock, flags); in ct_dead_capture()
2125 spin_lock_irqsave(&ct->dead.lock, flags); in ct_dead_capture()
2127 if (ct->dead.snapshot_log || ct->dead.snapshot_ct) { in ct_dead_capture()
2132 ct->dead.snapshot_log = snapshot_log; in ct_dead_capture()
2133 ct->dead.snapshot_ct = snapshot_ct; in ct_dead_capture()
2136 spin_unlock_irqrestore(&ct->dead.lock, flags); in ct_dead_capture()
2138 queue_work(system_unbound_wq, &(ct)->dead.worker); in ct_dead_capture()
2141 static void ct_dead_print(struct xe_dead_ct *dead) in ct_dead_print() argument
2143 struct xe_guc_ct *ct = container_of(dead, struct xe_guc_ct, dead); in ct_dead_print()
2150 if (!dead->reason) { in ct_dead_print()
2157 drm_printf(&lp, "Reason: CTB is dead - 0x%X\n", dead->reason); in ct_dead_print()
2164 xe_guc_log_snapshot_print(dead->snapshot_log, &lp); in ct_dead_print()
2167 xe_guc_ct_snapshot_print(dead->snapshot_ct, &lp); in ct_dead_print()
2174 struct xe_guc_ct *ct = container_of(w, struct xe_guc_ct, dead.worker); in ct_dead_worker_func()
2176 if (!ct->dead.reported) { in ct_dead_worker_func()
2177 ct->dead.reported = true; in ct_dead_worker_func()
2178 ct_dead_print(&ct->dead); in ct_dead_worker_func()
2181 spin_lock_irq(&ct->dead.lock); in ct_dead_worker_func()
2183 xe_guc_log_snapshot_free(ct->dead.snapshot_log); in ct_dead_worker_func()
2184 ct->dead.snapshot_log = NULL; in ct_dead_worker_func()
2185 xe_guc_ct_snapshot_free(ct->dead.snapshot_ct); in ct_dead_worker_func()
2186 ct->dead.snapshot_ct = NULL; in ct_dead_worker_func()
2188 if (ct->dead.reason & (1 << CT_DEAD_STATE_REARM)) { in ct_dead_worker_func()
2190 ct->dead.reason = 0; in ct_dead_worker_func()
2191 ct->dead.reported = false; in ct_dead_worker_func()
2194 spin_unlock_irq(&ct->dead.lock); in ct_dead_worker_func()