Lines Matching full:dead
226 spin_lock_init(&ct->dead.lock); in xe_guc_ct_init()
227 INIT_WORK(&ct->dead.worker, ct_dead_worker_func); in xe_guc_ct_init()
470 * after any existing dead state has been dumped. in xe_guc_ct_enable()
472 spin_lock_irq(&ct->dead.lock); in xe_guc_ct_enable()
473 if (ct->dead.reason) { in xe_guc_ct_enable()
474 ct->dead.reason |= (1 << CT_DEAD_STATE_REARM); in xe_guc_ct_enable()
475 queue_work(system_unbound_wq, &ct->dead.worker); in xe_guc_ct_enable()
477 spin_unlock_irq(&ct->dead.lock); in xe_guc_ct_enable()
1783 if (ct->dead.reported) in ct_dead_capture()
1786 spin_lock_irqsave(&ct->dead.lock, flags); in ct_dead_capture()
1789 have_capture = ct->dead.reason & (1 << CT_DEAD_STATE_CAPTURE); in ct_dead_capture()
1790 ct->dead.reason |= (1 << reason_code) | in ct_dead_capture()
1793 spin_unlock_irqrestore(&ct->dead.lock, flags); in ct_dead_capture()
1801 spin_lock_irqsave(&ct->dead.lock, flags); in ct_dead_capture()
1803 if (ct->dead.snapshot_log || ct->dead.snapshot_ct) { in ct_dead_capture()
1804 xe_gt_err(ct_to_gt(ct), "Got unexpected dead CT capture!\n"); in ct_dead_capture()
1808 ct->dead.snapshot_log = snapshot_log; in ct_dead_capture()
1809 ct->dead.snapshot_ct = snapshot_ct; in ct_dead_capture()
1812 spin_unlock_irqrestore(&ct->dead.lock, flags); in ct_dead_capture()
1814 queue_work(system_unbound_wq, &(ct)->dead.worker); in ct_dead_capture()
1817 static void ct_dead_print(struct xe_dead_ct *dead) in ct_dead_print() argument
1819 struct xe_guc_ct *ct = container_of(dead, struct xe_guc_ct, dead); in ct_dead_print()
1826 if (!dead->reason) { in ct_dead_print()
1827 xe_gt_err(gt, "CTB is dead for no reason!?\n"); in ct_dead_print()
1831 drm_printf(&lp, "CTB is dead - reason=0x%X\n", dead->reason); in ct_dead_print()
1841 xe_guc_log_snapshot_print(dead->snapshot_log, &lp); in ct_dead_print()
1844 xe_guc_ct_snapshot_print(dead->snapshot_ct, &lp); in ct_dead_print()
1851 struct xe_guc_ct *ct = container_of(w, struct xe_guc_ct, dead.worker); in ct_dead_worker_func()
1853 if (!ct->dead.reported) { in ct_dead_worker_func()
1854 ct->dead.reported = true; in ct_dead_worker_func()
1855 ct_dead_print(&ct->dead); in ct_dead_worker_func()
1858 spin_lock_irq(&ct->dead.lock); in ct_dead_worker_func()
1860 xe_guc_log_snapshot_free(ct->dead.snapshot_log); in ct_dead_worker_func()
1861 ct->dead.snapshot_log = NULL; in ct_dead_worker_func()
1862 xe_guc_ct_snapshot_free(ct->dead.snapshot_ct); in ct_dead_worker_func()
1863 ct->dead.snapshot_ct = NULL; in ct_dead_worker_func()
1865 if (ct->dead.reason & (1 << CT_DEAD_STATE_REARM)) { in ct_dead_worker_func()
1867 ct->dead.reason = 0; in ct_dead_worker_func()
1868 ct->dead.reported = false; in ct_dead_worker_func()
1871 spin_unlock_irq(&ct->dead.lock); in ct_dead_worker_func()