Lines Matching +full:p +full:- +full:tile
1 // SPDX-License-Identifier: MIT
43 return &container_of(huc, struct xe_uc, huc)->guc; in huc_to_guc()
61 huc->gsc_pkt = bo; in huc_alloc_gsc_pkt()
69 struct xe_tile *tile = gt_to_tile(gt); in xe_huc_init() local
73 huc->fw.type = XE_UC_FW_TYPE_HUC; in xe_huc_init()
76 if (tile->media_gt && (gt != tile->media_gt)) { in xe_huc_init()
77 xe_uc_fw_change_status(&huc->fw, XE_UC_FIRMWARE_NOT_SUPPORTED); in xe_huc_init()
81 ret = xe_uc_fw_init(&huc->fw); in xe_huc_init()
85 if (!xe_uc_fw_is_enabled(&huc->fw)) in xe_huc_init()
91 if (huc->fw.has_gsc_headers) { in xe_huc_init()
97 xe_uc_fw_change_status(&huc->fw, XE_UC_FIRMWARE_LOADABLE); in xe_huc_init()
108 struct xe_tile *tile = gt_to_tile(huc_to_gt(huc)); in xe_huc_init_post_hwconfig() local
115 if (!xe_uc_fw_is_loadable(&huc->fw)) in xe_huc_init_post_hwconfig()
118 ret = xe_managed_bo_reinit_in_vram(xe, tile, &huc->fw.bo); in xe_huc_init_post_hwconfig()
127 if (!xe_uc_fw_is_loadable(&huc->fw)) in xe_huc_upload()
129 return xe_uc_fw_upload(&huc->fw, 0, HUC_UKERNEL); in xe_huc_upload()
146 sizeof(struct pxp43_new_huc_auth_in) - sizeof(struct pxp_cmd_header)); in huc_emit_pxp_auth_msg()
157 struct xe_bo *pkt = huc->gsc_pkt; in huc_auth_via_gsccs()
166 return -ENODEV; in huc_auth_via_gsccs()
170 wr_offset = xe_gsc_emit_header(xe, &pkt->vmap, 0, HECI_MEADDRESS_PXP, 0, in huc_auth_via_gsccs()
172 wr_offset = huc_emit_pxp_auth_msg(xe, &pkt->vmap, wr_offset, in huc_auth_via_gsccs()
173 xe_bo_ggtt_addr(huc->fw.bo), in huc_auth_via_gsccs()
174 xe_bo_size(huc->fw.bo)); in huc_auth_via_gsccs()
176 err = xe_gsc_pkt_submit_kernel(>->uc.gsc, ggtt_offset, wr_offset, in huc_auth_via_gsccs()
182 if (xe_gsc_check_and_update_pending(xe, &pkt->vmap, 0, &pkt->vmap, in huc_auth_via_gsccs()
184 err = -EBUSY; in huc_auth_via_gsccs()
187 } while (--retry && err == -EBUSY); in huc_auth_via_gsccs()
194 err = xe_gsc_read_out_header(xe, &pkt->vmap, PXP43_HUC_AUTH_INOUT_SIZE, in huc_auth_via_gsccs()
206 out_status = huc_auth_msg_rd(xe, &pkt->vmap, rd_offset, header.status); in huc_auth_via_gsccs()
209 return -EIO; in huc_auth_via_gsccs()
232 return xe_mmio_read32(>->mmio, huc_auth_modes[type].reg) & huc_auth_modes[type].val; in xe_huc_is_authenticated()
241 if (!xe_uc_fw_is_loadable(&huc->fw)) in xe_huc_auth()
244 /* On newer platforms the HuC survives reset, so no need to re-auth */ in xe_huc_auth()
246 xe_uc_fw_change_status(&huc->fw, XE_UC_FIRMWARE_RUNNING); in xe_huc_auth()
250 if (!xe_uc_fw_is_loaded(&huc->fw)) in xe_huc_auth()
251 return -ENOEXEC; in xe_huc_auth()
255 ret = xe_guc_auth_huc(guc, xe_bo_ggtt_addr(huc->fw.bo) + in xe_huc_auth()
256 xe_uc_fw_rsa_offset(&huc->fw)); in xe_huc_auth()
263 return -EINVAL; in xe_huc_auth()
271 ret = xe_mmio_wait32(>->mmio, huc_auth_modes[type].reg, huc_auth_modes[type].val, in xe_huc_auth()
278 xe_uc_fw_change_status(&huc->fw, XE_UC_FIRMWARE_RUNNING); in xe_huc_auth()
286 xe_uc_fw_change_status(&huc->fw, XE_UC_FIRMWARE_LOAD_FAIL); in xe_huc_auth()
293 xe_uc_fw_sanitize(&huc->fw); in xe_huc_sanitize()
296 void xe_huc_print_info(struct xe_huc *huc, struct drm_printer *p) in xe_huc_print_info() argument
301 xe_uc_fw_print(&huc->fw, p); in xe_huc_print_info()
303 if (!xe_uc_fw_is_enabled(&huc->fw)) in xe_huc_print_info()
310 drm_printf(p, "\nHuC status: 0x%08x\n", in xe_huc_print_info()
311 xe_mmio_read32(>->mmio, HUC_KERNEL_LOAD_INFO)); in xe_huc_print_info()