Lines Matching defs:uc

26 static void uc_expand_default_options(struct intel_uc *uc)
28 struct drm_i915_private *i915 = uc_to_gt(uc)->i915;
57 static int __intel_uc_reset_hw(struct intel_uc *uc)
59 struct intel_gt *gt = uc_to_gt(uc);
81 static void __confirm_options(struct intel_uc *uc)
83 struct intel_gt *gt = uc_to_gt(uc);
88 str_yes_no(intel_uc_wants_guc(uc)),
89 str_yes_no(intel_uc_wants_guc_submission(uc)),
90 str_yes_no(intel_uc_wants_huc(uc)),
91 str_yes_no(intel_uc_wants_guc_slpc(uc)));
94 GEM_BUG_ON(intel_uc_wants_guc(uc));
95 GEM_BUG_ON(intel_uc_wants_guc_submission(uc));
96 GEM_BUG_ON(intel_uc_wants_huc(uc));
97 GEM_BUG_ON(intel_uc_wants_guc_slpc(uc));
101 if (!intel_uc_supports_guc(uc))
106 !intel_uc_supports_guc_submission(uc))
115 void intel_uc_init_early(struct intel_uc *uc)
117 uc_expand_default_options(uc);
119 intel_guc_init_early(&uc->guc);
120 intel_huc_init_early(&uc->huc);
121 intel_gsc_uc_init_early(&uc->gsc);
123 __confirm_options(uc);
125 if (intel_uc_wants_guc(uc))
126 uc->ops = &uc_ops_on;
128 uc->ops = &uc_ops_off;
131 void intel_uc_init_late(struct intel_uc *uc)
133 intel_guc_init_late(&uc->guc);
134 intel_gsc_uc_load_start(&uc->gsc);
137 void intel_uc_driver_late_release(struct intel_uc *uc)
143 * @uc: the intel_uc structure
148 void intel_uc_init_mmio(struct intel_uc *uc)
150 intel_guc_init_send_regs(&uc->guc);
153 static void __uc_capture_load_err_log(struct intel_uc *uc)
155 struct intel_guc *guc = &uc->guc;
157 if (guc->log.vma && !uc->load_err_log)
158 uc->load_err_log = i915_gem_object_get(guc->log.vma->obj);
161 static void __uc_free_load_err_log(struct intel_uc *uc)
163 struct drm_i915_gem_object *log = fetch_and_zero(&uc->load_err_log);
169 void intel_uc_driver_remove(struct intel_uc *uc)
171 intel_uc_fini_hw(uc);
172 intel_uc_fini(uc);
173 __uc_free_load_err_log(uc);
275 static void __uc_fetch_firmwares(struct intel_uc *uc)
277 struct intel_gt *gt = uc_to_gt(uc);
280 GEM_BUG_ON(!intel_uc_wants_guc(uc));
282 err = intel_uc_fw_fetch(&uc->guc.fw);
285 if (intel_uc_wants_huc(uc)) {
287 intel_uc_fw_change_status(&uc->huc.fw,
291 if (intel_uc_wants_gsc_uc(uc)) {
293 intel_uc_fw_change_status(&uc->gsc.fw,
300 if (intel_uc_wants_huc(uc))
301 intel_uc_fw_fetch(&uc->huc.fw);
303 if (intel_uc_wants_gsc_uc(uc))
304 intel_uc_fw_fetch(&uc->gsc.fw);
307 static void __uc_cleanup_firmwares(struct intel_uc *uc)
309 intel_uc_fw_cleanup_fetch(&uc->gsc.fw);
310 intel_uc_fw_cleanup_fetch(&uc->huc.fw);
311 intel_uc_fw_cleanup_fetch(&uc->guc.fw);
314 static int __uc_init(struct intel_uc *uc)
316 struct intel_guc *guc = &uc->guc;
317 struct intel_huc *huc = &uc->huc;
320 GEM_BUG_ON(!intel_uc_wants_guc(uc));
322 if (!intel_uc_uses_guc(uc))
325 if (i915_inject_probe_failure(uc_to_gt(uc)->i915))
332 if (intel_uc_uses_huc(uc))
335 if (intel_uc_uses_gsc_uc(uc))
336 intel_gsc_uc_init(&uc->gsc);
341 static void __uc_fini(struct intel_uc *uc)
343 intel_gsc_uc_fini(&uc->gsc);
344 intel_huc_fini(&uc->huc);
345 intel_guc_fini(&uc->guc);
348 static int __uc_sanitize(struct intel_uc *uc)
350 struct intel_guc *guc = &uc->guc;
351 struct intel_huc *huc = &uc->huc;
353 GEM_BUG_ON(!intel_uc_supports_guc(uc));
358 return __intel_uc_reset_hw(uc);
362 static int uc_init_wopcm(struct intel_uc *uc)
364 struct intel_gt *gt = uc_to_gt(uc);
368 u32 huc_agent = intel_uc_uses_huc(uc) ? HUC_LOADING_AGENT_GUC : 0;
377 GEM_BUG_ON(!intel_uc_supports_guc(uc));
415 static bool uc_is_wopcm_locked(struct intel_uc *uc)
417 struct intel_gt *gt = uc_to_gt(uc);
424 static int __uc_check_hw(struct intel_uc *uc)
426 if (uc->fw_table_invalid)
429 if (!intel_uc_supports_guc(uc))
437 if (uc_is_wopcm_locked(uc))
452 static int __uc_init_hw(struct intel_uc *uc)
454 struct intel_gt *gt = uc_to_gt(uc);
456 struct intel_guc *guc = &uc->guc;
457 struct intel_huc *huc = &uc->huc;
461 GEM_BUG_ON(!intel_uc_supports_guc(uc));
462 GEM_BUG_ON(!intel_uc_wants_guc(uc));
466 if (intel_uc_uses_huc(uc))
470 ret = __uc_check_hw(uc) ||
472 intel_uc_wants_guc_submission(uc) ?
477 ret = uc_init_wopcm(uc);
493 intel_rps_raise_unslice(&uc_to_gt(uc)->rps);
500 ret = __uc_sanitize(uc);
534 if (intel_uc_uses_guc_submission(uc)) {
540 if (intel_uc_uses_guc_slpc(uc)) {
546 intel_rps_lower_unslice(&uc_to_gt(uc)->rps);
551 guc_info(guc, "submission %s\n", str_enabled_disabled(intel_uc_uses_guc_submission(uc)));
552 guc_info(guc, "SLPC %s\n", str_enabled_disabled(intel_uc_uses_guc_slpc(uc)));
562 __uc_capture_load_err_log(uc);
565 intel_rps_lower_unslice(&uc_to_gt(uc)->rps);
569 __uc_sanitize(uc);
583 static void __uc_fini_hw(struct intel_uc *uc)
585 struct intel_guc *guc = &uc->guc;
590 if (intel_uc_uses_guc_submission(uc))
593 __uc_sanitize(uc);
598 * @uc: the intel_uc structure
602 void intel_uc_reset_prepare(struct intel_uc *uc)
604 struct intel_guc *guc = &uc->guc;
606 uc->reset_in_progress = true;
609 if (!intel_uc_supports_guc(uc))
616 if (intel_uc_uses_guc_submission(uc))
620 __uc_sanitize(uc);
623 void intel_uc_reset(struct intel_uc *uc, intel_engine_mask_t stalled)
625 struct intel_guc *guc = &uc->guc;
628 if (intel_uc_uses_guc_submission(uc))
632 void intel_uc_reset_finish(struct intel_uc *uc)
634 struct intel_guc *guc = &uc->guc;
640 uc->reset_in_progress = false;
643 if (intel_uc_uses_guc_submission(uc))
647 void intel_uc_cancel_requests(struct intel_uc *uc)
649 struct intel_guc *guc = &uc->guc;
652 if (intel_uc_uses_guc_submission(uc))
656 void intel_uc_runtime_suspend(struct intel_uc *uc)
658 struct intel_guc *guc = &uc->guc;
677 void intel_uc_suspend(struct intel_uc *uc)
679 struct intel_guc *guc = &uc->guc;
684 intel_gsc_uc_flush_work(&uc->gsc);
695 with_intel_runtime_pm(&uc_to_gt(uc)->i915->runtime_pm, wakeref) {
702 static void __uc_resume_mappings(struct intel_uc *uc)
704 intel_uc_fw_resume_mapping(&uc->guc.fw);
705 intel_uc_fw_resume_mapping(&uc->huc.fw);
708 static int __uc_resume(struct intel_uc *uc, bool enable_communication)
710 struct intel_guc *guc = &uc->guc;
727 if (enable_communication && intel_uc_uses_guc_slpc(uc))
736 intel_gsc_uc_resume(&uc->gsc);
746 int intel_uc_resume(struct intel_uc *uc)
752 return __uc_resume(uc, false);
755 int intel_uc_runtime_resume(struct intel_uc *uc)
761 return __uc_resume(uc, true);