From 89c54b83e56003beacfdc3a2935ed761dc1cc27c Mon Sep 17 00:00:00 2001 From: "Sun, Jing A" Date: Wed, 26 Jun 2024 05:33:40 +0000 Subject: [PATCH] Refine i915 PXP logging Tracked-On: OAM-120419 Signed-off-by: Sun, Jing A --- drivers/gpu/drm/i915/pxp/intel_pxp.c | 168 ++++++++++++++++------- drivers/gpu/drm/i915/pxp/intel_pxp_tee.c | 74 ++++++---- 2 files changed, 166 insertions(+), 76 deletions(-) diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp.c b/drivers/gpu/drm/i915/pxp/intel_pxp.c index d109a59578e91..5204d656b18e6 100644 --- a/drivers/gpu/drm/i915/pxp/intel_pxp.c +++ b/drivers/gpu/drm/i915/pxp/intel_pxp.c @@ -101,7 +101,7 @@ static int create_vcs_context(struct intel_pxp *pxp) I915_GEM_HWS_PXP_ADDR, &pxp_lock, "pxp_context"); if (IS_ERR(ce)) { - drm_err(>->i915->drm, "failed to create VCS ctx for PXP\n"); + drm_err(>->i915->drm, "Failed to create VCS ctx for PXP\n"); return PTR_ERR(ce); } @@ -201,9 +201,10 @@ int intel_pxp_init(struct drm_i915_private *i915) struct intel_gt *gt; bool is_full_feature = false; - if (intel_gt_is_wedged(to_gt(i915))) + if (intel_gt_is_wedged(to_gt(i915))) { + drm_err(&i915->drm, "Failed to init pxp due to not connected\n"); return -ENOTCONN; - + } /* * NOTE: Get the ctrl_gt before checking intel_pxp_is_supported since * we still need it if PXP's backend tee transport is needed. @@ -214,17 +215,20 @@ int intel_pxp_init(struct drm_i915_private *i915) else gt = find_gt_for_required_teelink(i915); - if (!gt) + if (!gt) { + drm_err(&i915->drm, "Failed to find gt to init pxp\n"); return -ENODEV; - + } /* * At this point, we will either enable full featured PXP capabilities * including session and object management, or we will init the backend tee * channel for internal users such as HuC loading by GSC */ i915->pxp = kzalloc(sizeof(*i915->pxp), GFP_KERNEL); - if (!i915->pxp) + if (!i915->pxp) { + drm_err(&i915->drm, "Failed to allocate pxp\n"); return -ENOMEM; + } /* init common info used by all feature-mode usages*/ i915->pxp->ctrl_gt = gt; @@ -313,7 +317,7 @@ static int __pxp_global_teardown_final(struct intel_pxp *pxp) if (!pxp->arb_session.is_valid) return 0; - drm_dbg(&pxp->ctrl_gt->i915->drm, "PXP: teardown for suspend/fini"); + drm_info(&pxp->ctrl_gt->i915->drm, "PXP: teardown for suspend/fini"); /* * To ensure synchronous and coherent session teardown completion * in response to suspend or shutdown triggers, don't use a worker. @@ -323,8 +327,10 @@ static int __pxp_global_teardown_final(struct intel_pxp *pxp) timeout = intel_pxp_get_backend_timeout_ms(pxp); - if (!wait_for_completion_timeout(&pxp->termination, msecs_to_jiffies(timeout))) + if (!wait_for_completion_timeout(&pxp->termination, msecs_to_jiffies(timeout))) { + drm_err(&pxp->ctrl_gt->i915->drm, "PXP: teardown timed out"); return -ETIMEDOUT; + } return 0; } @@ -336,7 +342,7 @@ static int __pxp_global_teardown_restart(struct intel_pxp *pxp) if (pxp->arb_session.is_valid) return 0; - drm_dbg(&pxp->ctrl_gt->i915->drm, "PXP: teardown for restart"); + drm_info(&pxp->ctrl_gt->i915->drm, "PXP: teardown for restart"); /* * The arb-session is currently inactive and we are doing a reset and restart * due to a runtime event. Use the worker that was designed for this. @@ -346,7 +352,7 @@ static int __pxp_global_teardown_restart(struct intel_pxp *pxp) timeout = intel_pxp_get_backend_timeout_ms(pxp); if (!wait_for_completion_timeout(&pxp->termination, msecs_to_jiffies(timeout))) { - drm_dbg(&pxp->ctrl_gt->i915->drm, "PXP: restart backend timed out (%d ms)", + drm_err(&pxp->ctrl_gt->i915->drm, "PXP: restart backend timed out (%d ms)", timeout); return -ETIMEDOUT; } @@ -367,7 +373,7 @@ void intel_pxp_end(struct intel_pxp *pxp) mutex_lock(&pxp->arb_mutex); if (__pxp_global_teardown_final(pxp)) - drm_dbg(&i915->drm, "PXP end timed out\n"); + drm_err(&i915->drm, "PXP end timed out\n"); mutex_unlock(&pxp->arb_mutex); @@ -401,14 +407,23 @@ static bool pxp_fw_dependencies_completed(struct intel_pxp *pxp) */ int intel_pxp_get_readiness_status(struct intel_pxp *pxp, int timeout_ms) { - if (!intel_pxp_is_enabled(pxp)) + if (!intel_pxp_is_enabled(pxp)) { + drm_err(&pxp->ctrl_gt->i915->drm, + "Failed to get readiness due to PXP not enabled\n"); return -ENODEV; + } - if (pxp_required_fw_failed(pxp)) + if (pxp_required_fw_failed(pxp)) { + drm_err(&pxp->ctrl_gt->i915->drm, + "Failed to get readiness due to failed fw\n"); return -ENODEV; + } - if (pxp->platform_cfg_is_bad) + if (pxp->platform_cfg_is_bad) { + drm_err(&pxp->ctrl_gt->i915->drm, + "Failed to get readiness due to bad cfg\n"); return -ENODEV; + } if (timeout_ms) { if (wait_for(pxp_fw_dependencies_completed(pxp), timeout_ms)) @@ -431,24 +446,32 @@ int intel_pxp_start(struct intel_pxp *pxp) ret = intel_pxp_get_readiness_status(pxp, PXP_READINESS_TIMEOUT); if (ret < 0) { - drm_dbg(&pxp->ctrl_gt->i915->drm, "PXP: tried but not-avail (%d)", ret); + drm_err(&pxp->ctrl_gt->i915->drm, + "PXP: tried but not-avail (%d)\n", ret); return ret; } else if (ret > 1) { + drm_err(&pxp->ctrl_gt->i915->drm, + "PXP: per UAPI spec user may retry later (%d)\n", ret); return -EIO; /* per UAPI spec, user may retry later */ } mutex_lock(&pxp->arb_mutex); ret = __pxp_global_teardown_restart(pxp); - if (ret) + if (ret) { + drm_err(&pxp->ctrl_gt->i915->drm, + "PXP: failed to restart (%d)\n", ret); goto unlock; + } /* make sure the compiler doesn't optimize the double access */ barrier(); - if (!pxp->arb_session.is_valid) + if (!pxp->arb_session.is_valid) { + drm_err(&pxp->ctrl_gt->i915->drm, + "PXP: invalid arb session\n"); ret = -EIO; - + } unlock: mutex_unlock(&pxp->arb_mutex); return ret; @@ -470,11 +493,13 @@ int intel_pxp_key_check(struct intel_pxp *pxp, struct drm_i915_gem_object *obj, bool assign) { - if (!intel_pxp_is_active(pxp)) + if (!intel_pxp_is_active(pxp)) { return -ENODEV; + } - if (!i915_gem_object_is_protected(obj)) + if (!i915_gem_object_is_protected(obj)) { return -EINVAL; + } GEM_BUG_ON(!pxp->key_instance); @@ -487,9 +512,10 @@ int intel_pxp_key_check(struct intel_pxp *pxp, if (!obj->pxp_key_instance && assign) obj->pxp_key_instance = pxp->key_instance; - if (obj->pxp_key_instance != pxp->key_instance) + if (obj->pxp_key_instance != pxp->key_instance) { + drm_err(&pxp->ctrl_gt->i915->drm, "PXP: unmatched key"); return -ENOEXEC; - + } return 0; } @@ -556,8 +582,11 @@ static int pxp_set_session_status(struct intel_pxp *pxp, u32 session_id; int ret = 0; - if (copy_from_user(¶ms, uparams, sizeof(params)) != 0) + if (copy_from_user(¶ms, uparams, sizeof(params)) != 0) { + drm_err(&pxp->ctrl_gt->i915->drm, + "Failed to get set_session_status params\n"); return -EFAULT; + } session_id = params.pxp_tag & PRELIM_DRM_I915_PXP_TAG_SESSION_ID_MASK; @@ -579,13 +608,22 @@ static int pxp_set_session_status(struct intel_pxp *pxp, ret = -EINVAL; } + drm_info(&pxp->ctrl_gt->i915->drm, + "Set pxp session status (req %d ret %d)\n", + params.req_session_state, ret); + if (ret >= 0) { pxp_ops->status = ret; - - if (copy_to_user(uparams, ¶ms, sizeof(params))) + if (copy_to_user(uparams, ¶ms, sizeof(params))) { + drm_err(&pxp->ctrl_gt->i915->drm, + "Failed to set set_session_status params\n"); ret = -EFAULT; - else + } else { ret = 0; + } + } else { + drm_err(&pxp->ctrl_gt->i915->drm, + "Failed to set session status (%d)\n", ret); } return ret; @@ -607,21 +645,26 @@ intel_pxp_ioctl_io_message(struct intel_pxp *pxp, struct drm_file *drmfile, if (!params->msg_in || !params->msg_out || !ioctl_buffer_size_valid(params->msg_out_buf_size) || - !ioctl_buffer_size_valid(params->msg_in_size)) + !ioctl_buffer_size_valid(params->msg_in_size)) { + drm_err(&i915->drm, "Invalid io message\n"); return -EINVAL; + } msg_in = kzalloc(params->msg_in_size, GFP_KERNEL); - if (!msg_in) + if (!msg_in) { + drm_err(&i915->drm, "Failed to allocate msg_in\n"); return -ENOMEM; + } msg_out = kzalloc(params->msg_out_buf_size, GFP_KERNEL); if (!msg_out) { + drm_err(&i915->drm, "Failed to allocate msg_out\n"); ret = -ENOMEM; goto end; } if (copy_from_user(msg_in, u64_to_user_ptr(params->msg_in), params->msg_in_size)) { - drm_dbg(&i915->drm, "Failed to copy_from_user for TEE message\n"); + drm_err(&i915->drm, "Failed to get io message\n"); ret = -EFAULT; goto end; } @@ -637,12 +680,15 @@ intel_pxp_ioctl_io_message(struct intel_pxp *pxp, struct drm_file *drmfile, msg_out, params->msg_out_buf_size, ¶ms->msg_out_ret_size); if (ret) { - drm_dbg(&i915->drm, "Failed to send/receive user TEE message\n"); + drm_err(&i915->drm, + "Failed to send/receive io message (%d)\n", ret); goto end; } + drm_info(&i915->drm, "Handled io message (%d)\n", ret); + if (copy_to_user(u64_to_user_ptr(params->msg_out), msg_out, params->msg_out_ret_size)) { - drm_dbg(&i915->drm, "Failed copy_to_user for TEE message\n"); + drm_err(&i915->drm, "Failed to set io message\n"); ret = -EFAULT; goto end; } @@ -663,19 +709,23 @@ static int pxp_send_tee_msg(struct intel_pxp *pxp, u64_to_user_ptr(pxp_ops->params); int ret = 0; - if (copy_from_user(¶ms, uparams, sizeof(params)) != 0) + if (copy_from_user(¶ms, uparams, sizeof(params)) != 0) { + drm_err(&i915->drm, "Failed to get tee message\n"); return -EFAULT; + } ret = intel_pxp_ioctl_io_message(pxp, drmfile, ¶ms); if (ret >= 0) { pxp_ops->status = ret; - if (copy_to_user(uparams, ¶ms, sizeof(params))) + if (copy_to_user(uparams, ¶ms, sizeof(params))) { + drm_err(&i915->drm, "Failed to set tee message\n"); ret = -EFAULT; - else + } else { ret = 0; + } } else { - drm_dbg(&i915->drm, "Failed to send user TEE IO message\n"); + drm_err(&i915->drm, "Failed to send tee message\n"); } return ret; @@ -688,18 +738,27 @@ static int pxp_query_tag(struct intel_pxp *pxp, struct prelim_drm_i915_pxp_ops * u64_to_user_ptr(pxp_ops->params); int ret = 0; - if (copy_from_user(¶ms, uparams, sizeof(params)) != 0) + if (copy_from_user(¶ms, uparams, sizeof(params)) != 0) { + drm_err(&pxp->ctrl_gt->i915->drm, "Failed to get query tag\n"); return -EFAULT; + } ret = intel_pxp_sm_ioctl_query_pxp_tag(pxp, ¶ms.session_is_alive, ¶ms.pxp_tag); + + drm_info(&pxp->ctrl_gt->i915->drm, + "Queried tag (is_alive %d pxp_tag %d ret %d)\n", + params.session_is_alive, params.pxp_tag, ret); + if (ret >= 0) { pxp_ops->status = ret; - - if (copy_to_user(uparams, ¶ms, sizeof(params))) + if (copy_to_user(uparams, ¶ms, sizeof(params))) { + drm_err(&pxp->ctrl_gt->i915->drm, + "Failed to set query tag\n"); ret = -EFAULT; - else + } else { ret = 0; + } } return ret; @@ -715,17 +774,24 @@ pxp_process_host_session_handle_request(struct intel_pxp *pxp, u64_to_user_ptr(pxp_ops->params); int ret = 0; - if (copy_from_user(¶ms, uparams, sizeof(params)) != 0) + if (copy_from_user(¶ms, uparams, sizeof(params)) != 0) { + drm_err(&pxp->ctrl_gt->i915->drm, + "Failed to get host handle request\n"); return -EFAULT; + } if (params.request_type != PRELIM_DRM_I915_PXP_GET_HOST_SESSION_HANDLE) { ret = PRELIM_DRM_I915_PXP_OP_STATUS_ERROR_INVALID; + drm_err(&pxp->ctrl_gt->i915->drm, + "Invalid host request type (%d)\n", params.request_type); goto error_out; } /* legacy hw doesn't use this - user space shouldn't be requesting this */ if (!HAS_ENGINE(pxp->ctrl_gt, GSC0)) { ret = PRELIM_DRM_I915_PXP_OP_STATUS_ERROR_INVALID; + drm_err(&pxp->ctrl_gt->i915->drm, + "Failed to handle host request due to no engine\n"); goto error_out; } @@ -733,17 +799,22 @@ pxp_process_host_session_handle_request(struct intel_pxp *pxp, ¶ms.host_session_handle); if (!params.host_session_handle) { ret = PRELIM_DRM_I915_PXP_OP_STATUS_ERROR_UNKNOWN; - drm_warn(&pxp->ctrl_gt->i915->drm, "Host Session Handle allocated 0x0\n"); + drm_err(&pxp->ctrl_gt->i915->drm, "Host Session Handle allocated 0x0\n"); } + drm_info(&pxp->ctrl_gt->i915->drm, "Handled host request (%d)\n", ret); + error_out: if (ret >= 0) { pxp_ops->status = ret; - if (copy_to_user(uparams, ¶ms, sizeof(params))) + if (copy_to_user(uparams, ¶ms, sizeof(params))) { + drm_err(&pxp->ctrl_gt->i915->drm, + "Failed to set host handle request\n"); ret = -EFAULT; - else + } else { ret = 0; + } } return ret; @@ -772,22 +843,25 @@ int i915_pxp_ops_ioctl(struct drm_device *dev, void *data, struct drm_file *drmf wakeref = intel_runtime_pm_get_if_in_use(&i915->runtime_pm); if (!wakeref) { - drm_dbg(&i915->drm, "pxp ioctl blocked due to state in suspend\n"); + drm_err(&i915->drm, "pxp ioctl blocked due to state in suspend\n"); pxp_ops->status = PRELIM_DRM_I915_PXP_OP_STATUS_SESSION_NOT_AVAILABLE; return 0; } if (pxp_action_needs_arb_session(pxp_ops->action)) { if (pxp->hw_state_invalidated) { - drm_dbg(&i915->drm, "pxp ioctl retry required due to state attacked\n"); + drm_err(&i915->drm, + "pxp ioctl retry required due to state attacked\n"); pxp_ops->status = PRELIM_DRM_I915_PXP_OP_STATUS_RETRY_REQUIRED; goto out_pm; } if (!intel_pxp_is_active(pxp)) { ret = intel_pxp_start(pxp); - if (ret) + if (ret) { + drm_err(&i915->drm, "Failed to start PXP\n"); goto out_pm; + } } } @@ -796,7 +870,7 @@ int i915_pxp_ops_ioctl(struct drm_device *dev, void *data, struct drm_file *drmf if (HAS_ENGINE(pxp->ctrl_gt, GSC0)) { ret = intel_gsccs_alloc_client_resources(pxp, drmfile); if (ret) { - drm_warn(&i915->drm, "GSCCS drm-client allocation failure\n"); + drm_err(&i915->drm, "GSCCS drm-client allocation failure\n"); goto out_unlock; } } diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c index 0dcb553188ce0..dbbe792880c5c 100644 --- a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c @@ -71,15 +71,17 @@ int intel_pxp_tee_io_message(struct intel_pxp *pxp, */ if (!pxp_component) { ret = -ENODEV; + drm_err(&i915->drm, "PXP component not found\n"); goto unlock; } if (pxp->mei_pxp_last_msg_interrupted) { /* read and drop data from the previous iteration */ ret = pxp_component->ops->recv(pxp_component->tee_dev, &tmp_drop_buf, 64, 1); - if (ret == -EINTR) + if (ret == -EINTR) { + drm_err(&i915->drm, "Failed to receive last tee message\n"); goto unlock; - + } pxp->mei_pxp_last_msg_interrupted = false; } @@ -89,7 +91,7 @@ int intel_pxp_tee_io_message(struct intel_pxp *pxp, /* flag on next msg to drop interrupted msg */ if (ret == -EINTR) pxp->mei_pxp_last_msg_interrupted = true; - drm_err(&i915->drm, "Failed to send PXP TEE message\n"); + drm_err(&i915->drm, "Failed to send tee message (%d)\n", ret); goto unlock; } @@ -98,13 +100,12 @@ int intel_pxp_tee_io_message(struct intel_pxp *pxp, /* flag on next msg to drop interrupted msg */ if (ret == -EINTR) pxp->mei_pxp_last_msg_interrupted = true; - drm_err(&i915->drm, "Failed to receive PXP TEE message\n"); + drm_err(&i915->drm, "Failed to receive tee message (%d)\n", ret); goto unlock; } if (ret > msg_out_max_size) { - drm_err(&i915->drm, - "Failed to receive PXP TEE message due to unexpected output size\n"); + drm_err(&i915->drm, "Unexpected tee message output size (%d)\n", ret); ret = -ENOSPC; goto unlock; } @@ -131,12 +132,14 @@ int intel_pxp_tee_stream_message(struct intel_pxp *pxp, struct scatterlist *sg; int ret; - if (msg_in_len > max_msg_size || msg_out_len > max_msg_size) + if (msg_in_len > max_msg_size || msg_out_len > max_msg_size) { + drm_err(&i915->drm, "Failed to stream TEE message due to invalid params\n"); return -ENOSPC; - + } mutex_lock(&pxp->tee_mutex); if (unlikely(!pxp_component || !pxp_component->ops->gsc_command)) { + drm_err(&i915->drm, "Invalid pxp component or gsc command\n"); ret = -ENODEV; goto unlock; } @@ -150,7 +153,7 @@ int intel_pxp_tee_stream_message(struct intel_pxp *pxp, ret = pxp_component->ops->gsc_command(pxp_component->tee_dev, client_id, fence_id, sg, msg_in_len, sg); if (ret < 0) - drm_err(&i915->drm, "Failed to send PXP TEE gsc command\n"); + drm_err(&i915->drm, "Failed to send PXP TEE gsc command (%d)\n", ret); else memcpy(msg_out, pxp->stream_cmd.vaddr, msg_out_len); @@ -181,8 +184,11 @@ static int i915_pxp_tee_component_bind(struct device *i915_kdev, if (!HAS_HECI_PXP(i915)) { pxp->dev_link = device_link_add(i915_kdev, tee_kdev, DL_FLAG_STATELESS); - if (drm_WARN_ON(&i915->drm, !pxp->dev_link)) + if (drm_WARN_ON(&i915->drm, !pxp->dev_link)) { + drm_err(&i915->drm, + "Failed to add device link for pxp component\n"); return -ENODEV; + } } mutex_lock(&pxp->tee_mutex); @@ -195,7 +201,8 @@ static int i915_pxp_tee_component_bind(struct device *i915_kdev, /* load huc via pxp */ ret = intel_huc_fw_load_and_auth_via_gsc(&uc->huc); if (ret < 0) - gt_probe_error(gt, "failed to load huc via gsc %d\n", ret); + gt_probe_error(gt, + "Failed to load huc via gsc (%d)\n", ret); } } @@ -255,20 +262,21 @@ static int alloc_streaming_command(struct intel_pxp *pxp) /* allocate lmem object of one page for PXP command memory and store it */ obj = i915_gem_object_create_lmem(i915, PAGE_SIZE, I915_BO_ALLOC_CONTIGUOUS); if (IS_ERR(obj)) { - drm_err(&i915->drm, "Failed to allocate pxp streaming command!\n"); + drm_err(&i915->drm, + "Failed to allocate pxp streaming command\n"); return PTR_ERR(obj); } err = i915_gem_object_pin_pages_unlocked(obj); if (err) { - drm_err(&i915->drm, "Failed to pin gsc message page!\n"); + drm_err(&i915->drm, "Failed to pin gsc message page\n"); goto out_put; } /* map the lmem into the virtual memory pointer */ cmd = i915_gem_object_pin_map_unlocked(obj, i915_coherent_map_type(i915, obj, true)); if (IS_ERR(cmd)) { - drm_err(&i915->drm, "Failed to map gsc message page!\n"); + drm_err(&i915->drm, "Failed to map gsc message page\n"); err = PTR_ERR(cmd); goto out_unpin; } @@ -358,18 +366,21 @@ int intel_pxp_tee_cmd_create_arb_session(struct intel_pxp *pxp, NULL); if (ret) { - drm_err(&i915->drm, "Failed to send tee msg init arb session, ret=[%d]\n", ret); + drm_err(&i915->drm, + "Failed to send tee msg init arb session (%d)\n", ret); } else if (msg_out.header.status != 0) { if (is_fw_err_platform_config(pxp, msg_out.header.status)) { - drm_info_once(&i915->drm, - "PXP init-arb-session-%d failed due to BIOS/SOC:0x%08x:%s\n", - arb_session_id, msg_out.header.status, - fw_err_to_string(msg_out.header.status)); + drm_err(&i915->drm, + "PXP init-arb-session-%d failed due to BIOS/SOC:0x%08x:%s\n", + arb_session_id, msg_out.header.status, + fw_err_to_string(msg_out.header.status)); } else { - drm_dbg(&i915->drm, "PXP init-arb-session--%d failed 0x%08x:%st:\n", + drm_err(&i915->drm, + "PXP init-arb-session--%d failed 0x%08x:%st:\n", arb_session_id, msg_out.header.status, fw_err_to_string(msg_out.header.status)); - drm_dbg(&i915->drm, " cmd-detail: ID=[0x%08x],API-Ver-[0x%08x]\n", + drm_err(&i915->drm, + " cmd-detail: ID=[0x%08x],API-Ver-[0x%08x]\n", msg_in.header.command_id, msg_in.header.api_version); } } @@ -401,23 +412,28 @@ static void intel_pxp_tee_end_one_fw_session(struct intel_pxp *pxp, u32 session_ NULL); /* Cleanup coherency between GT and Firmware is critical, so try again if it fails */ - if ((ret || msg_out.header.status != 0x0) && ++trials < 3) + if ((ret || msg_out.header.status != 0x0) && ++trials < 3) { + drm_err(&i915->drm, "Retried sending tee message\n"); goto try_again; + } if (ret) { - drm_err(&i915->drm, "Failed to send tee msg for inv-stream-key-%u, ret=[%d]\n", + drm_err(&i915->drm, + "Failed to send tee msg for inv-stream-key-%u (%d)\n", session_id, ret); } else if (msg_out.header.status != 0) { if (is_fw_err_platform_config(pxp, msg_out.header.status)) { - drm_info_once(&i915->drm, - "PXP inv-stream-key-%u failed due to BIOS/SOC :0x%08x:%s\n", - session_id, msg_out.header.status, - fw_err_to_string(msg_out.header.status)); + drm_err(&i915->drm, + "PXP inv-stream-key-%u failed due to BIOS/SOC :0x%08x:%s\n", + session_id, msg_out.header.status, + fw_err_to_string(msg_out.header.status)); } else { - drm_dbg(&i915->drm, "PXP inv-stream-key-%u failed 0x%08x:%s:\n", + drm_err(&i915->drm, + "PXP inv-stream-key-%u failed 0x%08x:%s:\n", session_id, msg_out.header.status, fw_err_to_string(msg_out.header.status)); - drm_dbg(&i915->drm, " cmd-detail: ID=[0x%08x],API-Ver-[0x%08x]\n", + drm_err(&i915->drm, + " cmd-detail: ID=[0x%08x],API-Ver-[0x%08x]\n", msg_in.header.command_id, msg_in.header.api_version); } }