Lines Matching refs:uc
18 static void uc_expand_default_options(struct intel_uc *uc) in uc_expand_default_options() argument
20 struct drm_i915_private *i915 = uc_to_gt(uc)->i915; in uc_expand_default_options()
49 static int __intel_uc_reset_hw(struct intel_uc *uc) in __intel_uc_reset_hw() argument
51 struct intel_gt *gt = uc_to_gt(uc); in __intel_uc_reset_hw()
73 static void __confirm_options(struct intel_uc *uc) in __confirm_options() argument
75 struct drm_i915_private *i915 = uc_to_gt(uc)->i915; in __confirm_options()
80 yesno(intel_uc_wants_guc(uc)), in __confirm_options()
81 yesno(intel_uc_wants_guc_submission(uc)), in __confirm_options()
82 yesno(intel_uc_wants_huc(uc)), in __confirm_options()
83 yesno(intel_uc_wants_guc_slpc(uc))); in __confirm_options()
86 GEM_BUG_ON(intel_uc_wants_guc(uc)); in __confirm_options()
87 GEM_BUG_ON(intel_uc_wants_guc_submission(uc)); in __confirm_options()
88 GEM_BUG_ON(intel_uc_wants_huc(uc)); in __confirm_options()
89 GEM_BUG_ON(intel_uc_wants_guc_slpc(uc)); in __confirm_options()
93 if (!intel_uc_supports_guc(uc)) in __confirm_options()
99 !intel_uc_supports_huc(uc)) in __confirm_options()
105 !intel_uc_supports_guc_submission(uc)) in __confirm_options()
116 void intel_uc_init_early(struct intel_uc *uc) in intel_uc_init_early() argument
118 uc_expand_default_options(uc); in intel_uc_init_early()
120 intel_guc_init_early(&uc->guc); in intel_uc_init_early()
121 intel_huc_init_early(&uc->huc); in intel_uc_init_early()
123 __confirm_options(uc); in intel_uc_init_early()
125 if (intel_uc_wants_guc(uc)) in intel_uc_init_early()
126 uc->ops = &uc_ops_on; in intel_uc_init_early()
128 uc->ops = &uc_ops_off; in intel_uc_init_early()
131 void intel_uc_init_late(struct intel_uc *uc) in intel_uc_init_late() argument
133 intel_guc_init_late(&uc->guc); in intel_uc_init_late()
136 void intel_uc_driver_late_release(struct intel_uc *uc) in intel_uc_driver_late_release() argument
147 void intel_uc_init_mmio(struct intel_uc *uc) in intel_uc_init_mmio() argument
149 intel_guc_init_send_regs(&uc->guc); in intel_uc_init_mmio()
152 static void __uc_capture_load_err_log(struct intel_uc *uc) in __uc_capture_load_err_log() argument
154 struct intel_guc *guc = &uc->guc; in __uc_capture_load_err_log()
156 if (guc->log.vma && !uc->load_err_log) in __uc_capture_load_err_log()
157 uc->load_err_log = i915_gem_object_get(guc->log.vma->obj); in __uc_capture_load_err_log()
160 static void __uc_free_load_err_log(struct intel_uc *uc) in __uc_free_load_err_log() argument
162 struct drm_i915_gem_object *log = fetch_and_zero(&uc->load_err_log); in __uc_free_load_err_log()
168 void intel_uc_driver_remove(struct intel_uc *uc) in intel_uc_driver_remove() argument
170 intel_uc_fini_hw(uc); in intel_uc_driver_remove()
171 intel_uc_fini(uc); in intel_uc_driver_remove()
172 __uc_free_load_err_log(uc); in intel_uc_driver_remove()
276 static void __uc_fetch_firmwares(struct intel_uc *uc) in __uc_fetch_firmwares() argument
280 GEM_BUG_ON(!intel_uc_wants_guc(uc)); in __uc_fetch_firmwares()
282 err = intel_uc_fw_fetch(&uc->guc.fw); in __uc_fetch_firmwares()
285 if (intel_uc_wants_huc(uc)) { in __uc_fetch_firmwares()
286 drm_dbg(&uc_to_gt(uc)->i915->drm, in __uc_fetch_firmwares()
288 intel_uc_fw_change_status(&uc->huc.fw, in __uc_fetch_firmwares()
295 if (intel_uc_wants_huc(uc)) in __uc_fetch_firmwares()
296 intel_uc_fw_fetch(&uc->huc.fw); in __uc_fetch_firmwares()
299 static void __uc_cleanup_firmwares(struct intel_uc *uc) in __uc_cleanup_firmwares() argument
301 intel_uc_fw_cleanup_fetch(&uc->huc.fw); in __uc_cleanup_firmwares()
302 intel_uc_fw_cleanup_fetch(&uc->guc.fw); in __uc_cleanup_firmwares()
305 static int __uc_init(struct intel_uc *uc) in __uc_init() argument
307 struct intel_guc *guc = &uc->guc; in __uc_init()
308 struct intel_huc *huc = &uc->huc; in __uc_init()
311 GEM_BUG_ON(!intel_uc_wants_guc(uc)); in __uc_init()
313 if (!intel_uc_uses_guc(uc)) in __uc_init()
316 if (i915_inject_probe_failure(uc_to_gt(uc)->i915)) in __uc_init()
323 if (intel_uc_uses_huc(uc)) { in __uc_init()
336 static void __uc_fini(struct intel_uc *uc) in __uc_fini() argument
338 intel_huc_fini(&uc->huc); in __uc_fini()
339 intel_guc_fini(&uc->guc); in __uc_fini()
342 static int __uc_sanitize(struct intel_uc *uc) in __uc_sanitize() argument
344 struct intel_guc *guc = &uc->guc; in __uc_sanitize()
345 struct intel_huc *huc = &uc->huc; in __uc_sanitize()
347 GEM_BUG_ON(!intel_uc_supports_guc(uc)); in __uc_sanitize()
352 return __intel_uc_reset_hw(uc); in __uc_sanitize()
356 static int uc_init_wopcm(struct intel_uc *uc) in uc_init_wopcm() argument
358 struct intel_gt *gt = uc_to_gt(uc); in uc_init_wopcm()
362 u32 huc_agent = intel_uc_uses_huc(uc) ? HUC_LOADING_AGENT_GUC : 0; in uc_init_wopcm()
371 GEM_BUG_ON(!intel_uc_supports_guc(uc)); in uc_init_wopcm()
409 static bool uc_is_wopcm_locked(struct intel_uc *uc) in uc_is_wopcm_locked() argument
411 struct intel_gt *gt = uc_to_gt(uc); in uc_is_wopcm_locked()
418 static int __uc_check_hw(struct intel_uc *uc) in __uc_check_hw() argument
420 if (!intel_uc_supports_guc(uc)) in __uc_check_hw()
428 if (uc_is_wopcm_locked(uc)) in __uc_check_hw()
434 static int __uc_init_hw(struct intel_uc *uc) in __uc_init_hw() argument
436 struct drm_i915_private *i915 = uc_to_gt(uc)->i915; in __uc_init_hw()
437 struct intel_guc *guc = &uc->guc; in __uc_init_hw()
438 struct intel_huc *huc = &uc->huc; in __uc_init_hw()
441 GEM_BUG_ON(!intel_uc_supports_guc(uc)); in __uc_init_hw()
442 GEM_BUG_ON(!intel_uc_wants_guc(uc)); in __uc_init_hw()
445 ret = __uc_check_hw(uc) || in __uc_init_hw()
447 intel_uc_wants_guc_submission(uc) ? in __uc_init_hw()
452 ret = uc_init_wopcm(uc); in __uc_init_hw()
470 ret = __uc_sanitize(uc); in __uc_init_hw()
495 if (intel_uc_uses_guc_submission(uc)) in __uc_init_hw()
498 if (intel_uc_uses_guc_slpc(uc)) { in __uc_init_hw()
508 enableddisabled(intel_uc_uses_guc_submission(uc))); in __uc_init_hw()
511 enableddisabled(intel_uc_uses_guc_slpc(uc))); in __uc_init_hw()
513 if (intel_uc_uses_huc(uc)) { in __uc_init_hw()
530 __uc_capture_load_err_log(uc); in __uc_init_hw()
532 __uc_sanitize(uc); in __uc_init_hw()
546 static void __uc_fini_hw(struct intel_uc *uc) in __uc_fini_hw() argument
548 struct intel_guc *guc = &uc->guc; in __uc_fini_hw()
553 if (intel_uc_uses_guc_submission(uc)) in __uc_fini_hw()
556 __uc_sanitize(uc); in __uc_fini_hw()
565 void intel_uc_reset_prepare(struct intel_uc *uc) in intel_uc_reset_prepare() argument
567 struct intel_guc *guc = &uc->guc; in intel_uc_reset_prepare()
569 uc->reset_in_progress = true; in intel_uc_reset_prepare()
572 if (!intel_uc_supports_guc(uc)) in intel_uc_reset_prepare()
579 if (intel_uc_uses_guc_submission(uc)) in intel_uc_reset_prepare()
583 __uc_sanitize(uc); in intel_uc_reset_prepare()
586 void intel_uc_reset(struct intel_uc *uc, bool stalled) in intel_uc_reset() argument
588 struct intel_guc *guc = &uc->guc; in intel_uc_reset()
591 if (intel_uc_uses_guc_submission(uc)) in intel_uc_reset()
595 void intel_uc_reset_finish(struct intel_uc *uc) in intel_uc_reset_finish() argument
597 struct intel_guc *guc = &uc->guc; in intel_uc_reset_finish()
599 uc->reset_in_progress = false; in intel_uc_reset_finish()
602 if (intel_guc_is_fw_running(guc) && intel_uc_uses_guc_submission(uc)) in intel_uc_reset_finish()
606 void intel_uc_cancel_requests(struct intel_uc *uc) in intel_uc_cancel_requests() argument
608 struct intel_guc *guc = &uc->guc; in intel_uc_cancel_requests()
611 if (intel_uc_uses_guc_submission(uc)) in intel_uc_cancel_requests()
615 void intel_uc_runtime_suspend(struct intel_uc *uc) in intel_uc_runtime_suspend() argument
617 struct intel_guc *guc = &uc->guc; in intel_uc_runtime_suspend()
634 void intel_uc_suspend(struct intel_uc *uc) in intel_uc_suspend() argument
636 struct intel_guc *guc = &uc->guc; in intel_uc_suspend()
643 with_intel_runtime_pm(&uc_to_gt(uc)->i915->runtime_pm, wakeref) { in intel_uc_suspend()
650 static int __uc_resume(struct intel_uc *uc, bool enable_communication) in __uc_resume() argument
652 struct intel_guc *guc = &uc->guc; in __uc_resume()
669 if (enable_communication && intel_uc_uses_guc_slpc(uc)) in __uc_resume()
681 int intel_uc_resume(struct intel_uc *uc) in intel_uc_resume() argument
687 return __uc_resume(uc, false); in intel_uc_resume()
690 int intel_uc_runtime_resume(struct intel_uc *uc) in intel_uc_runtime_resume() argument
696 return __uc_resume(uc, true); in intel_uc_runtime_resume()