Lines Matching refs:xe
47 bool xe_pxp_is_supported(const struct xe_device *xe) in xe_pxp_is_supported() argument
49 return xe->info.has_pxp && IS_ENABLED(CONFIG_INTEL_MEI_GSC_PROXY); in xe_pxp_is_supported()
103 guard(xe_pm_runtime)(pxp->xe); in xe_pxp_get_readiness_status()
135 drm_dbg(&pxp->xe->drm, "Terminating PXP\n"); in pxp_terminate_hw()
168 struct xe_device *xe = pxp->xe; in pxp_terminate() local
172 drm_err(&xe->drm, "failed to wait for PXP start before termination\n"); in pxp_terminate()
208 drm_err(&xe->drm, "PXP termination failed: %pe\n", ERR_PTR(ret)); in pxp_terminate()
240 drm_err(&pxp->xe->drm, in pxp_terminate_complete()
253 struct xe_device *xe = pxp->xe; in pxp_irq_work() local
256 spin_lock_irq(&xe->irq.lock); in pxp_irq_work()
259 spin_unlock_irq(&xe->irq.lock); in pxp_irq_work()
268 if ((events & PXP_TERMINATION_REQUEST) && !xe_pm_runtime_get_if_active(xe)) in pxp_irq_work()
280 xe_pm_runtime_put(xe); in pxp_irq_work()
288 void xe_pxp_irq_handler(struct xe_device *xe, u16 iir) in xe_pxp_irq_handler() argument
290 struct xe_pxp *pxp = xe->pxp; in xe_pxp_irq_handler()
293 drm_err(&xe->drm, "PXP irq 0x%x received with PXP disabled!\n", iir); in xe_pxp_irq_handler()
297 lockdep_assert_held(&xe->irq.lock); in xe_pxp_irq_handler()
359 int xe_pxp_init(struct xe_device *xe) in xe_pxp_init() argument
361 struct xe_gt *gt = xe->tiles[0].media_gt; in xe_pxp_init()
365 if (!xe_pxp_is_supported(xe)) in xe_pxp_init()
369 if (xe->info.tile_count > 1 || !gt) in xe_pxp_init()
379 drm_info(&xe->drm, "skipping PXP init due to missing FW dependencies"); in xe_pxp_init()
389 if (xe->info.platform == XE_PANTHERLAKE && in xe_pxp_init()
391 drm_info(&xe->drm, "PXP requires PTL GSC build 1396 or newer\n"); in xe_pxp_init()
395 pxp = drmm_kzalloc(&xe->drm, sizeof(struct xe_pxp), GFP_KERNEL); in xe_pxp_init()
404 pxp->xe = xe; in xe_pxp_init()
436 xe->pxp = pxp; in xe_pxp_init()
438 return devm_add_action_or_reset(xe->drm.dev, pxp_fini, pxp); in xe_pxp_init()
445 drmm_kfree(&xe->drm, pxp); in xe_pxp_init()
447 drm_err(&xe->drm, "PXP initialization failed: %pe\n", ERR_PTR(err)); in xe_pxp_init()
464 drm_err(&pxp->xe->drm, "Failed to init PXP arb session: %pe\n", ERR_PTR(ret)); in __pxp_start_arb_session()
470 drm_err(&pxp->xe->drm, "PXP ARB session failed to go in play%pe\n", ERR_PTR(ret)); in __pxp_start_arb_session()
474 drm_dbg(&pxp->xe->drm, "PXP ARB session is active\n"); in __pxp_start_arb_session()
492 xe_assert(pxp->xe, type == DRM_XE_PXP_TYPE_HWDRM); in xe_pxp_exec_queue_set_type()
533 xe_assert(pxp->xe, type == DRM_XE_PXP_TYPE_HWDRM); in pxp_start()
587 drm_err(&pxp->xe->drm, "unexpected state during PXP start: %u\n", pxp->status); in pxp_start()
597 drm_err(&pxp->xe->drm, "PXP termination failed before start\n"); in pxp_start()
622 drm_err(&pxp->xe->drm, "unexpected state after PXP start: %u\n", pxp->status); in pxp_start()
666 xe_pm_runtime_get(pxp->xe); in xe_pxp_exec_queue_add()
682 xe_pm_runtime_put(pxp->xe); in xe_pxp_exec_queue_add()
709 xe_pm_runtime_put(pxp->xe); in __pxp_exec_queue_remove()
767 xe_assert(pxp->xe, !bo->pxp_key_instance); in xe_pxp_key_assign()
801 xe_assert(pxp->xe, bo->pxp_key_instance); in xe_pxp_bo_key_check()
835 struct xe_device *xe = xe_bo_device(bo); in xe_pxp_obj_key_check() local
836 struct xe_pxp *pxp = xe->pxp; in xe_pxp_obj_key_check()
930 xe_assert(pxp->xe, pxp->status == XE_PXP_SUSPENDED); in xe_pxp_pm_resume()