Lines Matching refs:uc

24 uc_to_gt(struct xe_uc *uc)  in uc_to_gt()  argument
26 return container_of(uc, struct xe_gt, uc); in uc_to_gt()
30 uc_to_xe(struct xe_uc *uc) in uc_to_xe() argument
32 return gt_to_xe(uc_to_gt(uc)); in uc_to_xe()
36 int xe_uc_init_noalloc(struct xe_uc *uc) in xe_uc_init_noalloc() argument
40 ret = xe_guc_init_noalloc(&uc->guc); in xe_uc_init_noalloc()
48 xe_gt_err(uc_to_gt(uc), "Failed to early initialize uC (%pe)\n", ERR_PTR(ret)); in xe_uc_init_noalloc()
52 int xe_uc_init(struct xe_uc *uc) in xe_uc_init() argument
60 ret = xe_guc_init(&uc->guc); in xe_uc_init()
64 ret = xe_huc_init(&uc->huc); in xe_uc_init()
68 ret = xe_gsc_init(&uc->gsc); in xe_uc_init()
72 if (!xe_device_uc_enabled(uc_to_xe(uc))) in xe_uc_init()
75 if (!IS_SRIOV_VF(uc_to_xe(uc))) { in xe_uc_init()
76 ret = xe_wopcm_init(&uc->wopcm); in xe_uc_init()
81 ret = xe_guc_min_load_for_hwconfig(&uc->guc); in xe_uc_init()
87 xe_gt_err(uc_to_gt(uc), "Failed to initialize uC (%pe)\n", ERR_PTR(ret)); in xe_uc_init()
97 int xe_uc_init_post_hwconfig(struct xe_uc *uc) in xe_uc_init_post_hwconfig() argument
102 if (!xe_device_uc_enabled(uc_to_xe(uc))) in xe_uc_init_post_hwconfig()
105 err = xe_uc_sanitize_reset(uc); in xe_uc_init_post_hwconfig()
109 err = xe_guc_init_post_hwconfig(&uc->guc); in xe_uc_init_post_hwconfig()
113 err = xe_huc_init_post_hwconfig(&uc->huc); in xe_uc_init_post_hwconfig()
117 return xe_gsc_init_post_hwconfig(&uc->gsc); in xe_uc_init_post_hwconfig()
120 static int uc_reset(struct xe_uc *uc) in uc_reset() argument
122 struct xe_device *xe = uc_to_xe(uc); in uc_reset()
125 ret = xe_guc_reset(&uc->guc); in uc_reset()
134 static void xe_uc_sanitize(struct xe_uc *uc) in xe_uc_sanitize() argument
136 xe_huc_sanitize(&uc->huc); in xe_uc_sanitize()
137 xe_guc_sanitize(&uc->guc); in xe_uc_sanitize()
140 int xe_uc_sanitize_reset(struct xe_uc *uc) in xe_uc_sanitize_reset() argument
142 xe_uc_sanitize(uc); in xe_uc_sanitize_reset()
144 return uc_reset(uc); in xe_uc_sanitize_reset()
147 static int vf_uc_load_hw(struct xe_uc *uc) in vf_uc_load_hw() argument
151 err = xe_uc_sanitize_reset(uc); in vf_uc_load_hw()
155 err = xe_guc_enable_communication(&uc->guc); in vf_uc_load_hw()
159 err = xe_gt_sriov_vf_connect(uc_to_gt(uc)); in vf_uc_load_hw()
163 uc->guc.submission_state.enabled = true; in vf_uc_load_hw()
165 err = xe_guc_opt_in_features_enable(&uc->guc); in vf_uc_load_hw()
169 err = xe_gt_record_default_lrcs(uc_to_gt(uc)); in vf_uc_load_hw()
176 xe_guc_sanitize(&uc->guc); in vf_uc_load_hw()
184 int xe_uc_load_hw(struct xe_uc *uc) in xe_uc_load_hw() argument
189 if (!xe_device_uc_enabled(uc_to_xe(uc))) in xe_uc_load_hw()
192 if (IS_SRIOV_VF(uc_to_xe(uc))) in xe_uc_load_hw()
193 return vf_uc_load_hw(uc); in xe_uc_load_hw()
195 ret = xe_huc_upload(&uc->huc); in xe_uc_load_hw()
199 ret = xe_guc_upload(&uc->guc); in xe_uc_load_hw()
203 ret = xe_guc_enable_communication(&uc->guc); in xe_uc_load_hw()
207 ret = xe_gt_record_default_lrcs(uc_to_gt(uc)); in xe_uc_load_hw()
211 ret = xe_guc_post_load_init(&uc->guc); in xe_uc_load_hw()
215 ret = xe_guc_pc_start(&uc->guc.pc); in xe_uc_load_hw()
219 xe_guc_engine_activity_enable_stats(&uc->guc); in xe_uc_load_hw()
222 ret = xe_huc_auth(&uc->huc, XE_HUC_AUTH_VIA_GUC); in xe_uc_load_hw()
223 xe_gt_assert(uc_to_gt(uc), !ret); in xe_uc_load_hw()
226 xe_gsc_load_start(&uc->gsc); in xe_uc_load_hw()
231 xe_guc_sanitize(&uc->guc); in xe_uc_load_hw()
235 int xe_uc_reset_prepare(struct xe_uc *uc) in xe_uc_reset_prepare() argument
238 if (!xe_device_uc_enabled(uc_to_xe(uc))) in xe_uc_reset_prepare()
241 return xe_guc_reset_prepare(&uc->guc); in xe_uc_reset_prepare()
244 void xe_uc_gucrc_disable(struct xe_uc *uc) in xe_uc_gucrc_disable() argument
246 XE_WARN_ON(xe_guc_pc_gucrc_disable(&uc->guc.pc)); in xe_uc_gucrc_disable()
249 void xe_uc_stop_prepare(struct xe_uc *uc) in xe_uc_stop_prepare() argument
251 xe_gsc_stop_prepare(&uc->gsc); in xe_uc_stop_prepare()
252 xe_guc_stop_prepare(&uc->guc); in xe_uc_stop_prepare()
255 void xe_uc_stop(struct xe_uc *uc) in xe_uc_stop() argument
258 if (!xe_device_uc_enabled(uc_to_xe(uc))) in xe_uc_stop()
261 xe_guc_stop(&uc->guc); in xe_uc_stop()
264 int xe_uc_start(struct xe_uc *uc) in xe_uc_start() argument
267 if (!xe_device_uc_enabled(uc_to_xe(uc))) in xe_uc_start()
270 return xe_guc_start(&uc->guc); in xe_uc_start()
273 static void uc_reset_wait(struct xe_uc *uc) in uc_reset_wait() argument
278 xe_guc_reset_wait(&uc->guc); in uc_reset_wait()
280 ret = xe_uc_reset_prepare(uc); in uc_reset_wait()
285 void xe_uc_suspend_prepare(struct xe_uc *uc) in xe_uc_suspend_prepare() argument
287 xe_gsc_wait_for_worker_completion(&uc->gsc); in xe_uc_suspend_prepare()
288 xe_guc_stop_prepare(&uc->guc); in xe_uc_suspend_prepare()
291 int xe_uc_suspend(struct xe_uc *uc) in xe_uc_suspend() argument
294 if (!xe_device_uc_enabled(uc_to_xe(uc))) in xe_uc_suspend()
297 uc_reset_wait(uc); in xe_uc_suspend()
299 xe_uc_stop(uc); in xe_uc_suspend()
301 return xe_guc_suspend(&uc->guc); in xe_uc_suspend()
311 void xe_uc_declare_wedged(struct xe_uc *uc) in xe_uc_declare_wedged() argument
313 xe_gt_assert(uc_to_gt(uc), uc_to_xe(uc)->wedged.mode); in xe_uc_declare_wedged()
315 xe_guc_declare_wedged(&uc->guc); in xe_uc_declare_wedged()