[Intel-gfx] [PATCH v6 1/3] drm/i915/pxp/mtl: Update pxp-firmware response timeout
kernel test robot
lkp at intel.com
Sat Sep 16 02:25:21 UTC 2023
Hi Alan,
kernel test robot noticed the following build errors:
[auto build test ERROR on cf1e91e884bb1113c653e654e9de1754fc1d4488]
url: https://github.com/intel-lab-lkp/linux/commits/Alan-Previn/drm-i915-pxp-mtl-Update-pxp-firmware-response-timeout/20230916-023150
base: cf1e91e884bb1113c653e654e9de1754fc1d4488
patch link: https://lore.kernel.org/r/20230915183051.1232026-2-alan.previn.teres.alexis%40intel.com
patch subject: [PATCH v6 1/3] drm/i915/pxp/mtl: Update pxp-firmware response timeout
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20230916/202309161030.TcQkW66y-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230916/202309161030.TcQkW66y-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309161030.TcQkW66y-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.c: In function 'gsccs_send_message':
>> drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.c:115:52: error: 'GSC_REPLY_LATENCY_MS' undeclared (first use in this function); did you mean 'GSC_HECI_REPLY_LATENCY_MS'?
115 | GSC_REPLY_LATENCY_MS);
| ^~~~~~~~~~~~~~~~~~~~
| GSC_HECI_REPLY_LATENCY_MS
drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.c:115:52: note: each undeclared identifier is reported only once for each function it appears in
vim +115 drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.c
99afb7cc8c4457 Alan Previn 2023-05-11 51
dc9ac125d81faf Alan Previn 2023-05-11 52 static int
dc9ac125d81faf Alan Previn 2023-05-11 53 gsccs_send_message(struct intel_pxp *pxp,
dc9ac125d81faf Alan Previn 2023-05-11 54 void *msg_in, size_t msg_in_size,
dc9ac125d81faf Alan Previn 2023-05-11 55 void *msg_out, size_t msg_out_size_max,
dc9ac125d81faf Alan Previn 2023-05-11 56 size_t *msg_out_len,
dc9ac125d81faf Alan Previn 2023-05-11 57 u64 *gsc_msg_handle_retry)
dc9ac125d81faf Alan Previn 2023-05-11 58 {
dc9ac125d81faf Alan Previn 2023-05-11 59 struct intel_gt *gt = pxp->ctrl_gt;
dc9ac125d81faf Alan Previn 2023-05-11 60 struct drm_i915_private *i915 = gt->i915;
dc9ac125d81faf Alan Previn 2023-05-11 61 struct gsccs_session_resources *exec_res = &pxp->gsccs_res;
dc9ac125d81faf Alan Previn 2023-05-11 62 struct intel_gsc_mtl_header *header = exec_res->pkt_vaddr;
dc9ac125d81faf Alan Previn 2023-05-11 63 struct intel_gsc_heci_non_priv_pkt pkt;
dc9ac125d81faf Alan Previn 2023-05-11 64 size_t max_msg_size;
dc9ac125d81faf Alan Previn 2023-05-11 65 u32 reply_size;
dc9ac125d81faf Alan Previn 2023-05-11 66 int ret;
dc9ac125d81faf Alan Previn 2023-05-11 67
dc9ac125d81faf Alan Previn 2023-05-11 68 if (!exec_res->ce)
dc9ac125d81faf Alan Previn 2023-05-11 69 return -ENODEV;
dc9ac125d81faf Alan Previn 2023-05-11 70
dc9ac125d81faf Alan Previn 2023-05-11 71 max_msg_size = PXP43_MAX_HECI_INOUT_SIZE - sizeof(*header);
dc9ac125d81faf Alan Previn 2023-05-11 72
dc9ac125d81faf Alan Previn 2023-05-11 73 if (msg_in_size > max_msg_size || msg_out_size_max > max_msg_size)
dc9ac125d81faf Alan Previn 2023-05-11 74 return -ENOSPC;
dc9ac125d81faf Alan Previn 2023-05-11 75
dc9ac125d81faf Alan Previn 2023-05-11 76 if (!exec_res->pkt_vma || !exec_res->bb_vma)
dc9ac125d81faf Alan Previn 2023-05-11 77 return -ENOENT;
dc9ac125d81faf Alan Previn 2023-05-11 78
dc9ac125d81faf Alan Previn 2023-05-11 79 GEM_BUG_ON(exec_res->pkt_vma->size < (2 * PXP43_MAX_HECI_INOUT_SIZE));
dc9ac125d81faf Alan Previn 2023-05-11 80
dc9ac125d81faf Alan Previn 2023-05-11 81 mutex_lock(&pxp->tee_mutex);
dc9ac125d81faf Alan Previn 2023-05-11 82
dc9ac125d81faf Alan Previn 2023-05-11 83 memset(header, 0, sizeof(*header));
dc9ac125d81faf Alan Previn 2023-05-11 84 intel_gsc_uc_heci_cmd_emit_mtl_header(header, HECI_MEADDRESS_PXP,
dc9ac125d81faf Alan Previn 2023-05-11 85 msg_in_size + sizeof(*header),
dc9ac125d81faf Alan Previn 2023-05-11 86 exec_res->host_session_handle);
dc9ac125d81faf Alan Previn 2023-05-11 87
dc9ac125d81faf Alan Previn 2023-05-11 88 /* check if this is a host-session-handle cleanup call (empty packet) */
dc9ac125d81faf Alan Previn 2023-05-11 89 if (!msg_in && !msg_out)
dc9ac125d81faf Alan Previn 2023-05-11 90 header->flags |= GSC_INFLAG_MSG_CLEANUP;
dc9ac125d81faf Alan Previn 2023-05-11 91
dc9ac125d81faf Alan Previn 2023-05-11 92 /* copy caller provided gsc message handle if this is polling for a prior msg completion */
dc9ac125d81faf Alan Previn 2023-05-11 93 header->gsc_message_handle = *gsc_msg_handle_retry;
dc9ac125d81faf Alan Previn 2023-05-11 94
dc9ac125d81faf Alan Previn 2023-05-11 95 /* NOTE: zero size packets are used for session-cleanups */
dc9ac125d81faf Alan Previn 2023-05-11 96 if (msg_in && msg_in_size)
dc9ac125d81faf Alan Previn 2023-05-11 97 memcpy(exec_res->pkt_vaddr + sizeof(*header), msg_in, msg_in_size);
dc9ac125d81faf Alan Previn 2023-05-11 98
dc9ac125d81faf Alan Previn 2023-05-11 99 pkt.addr_in = i915_vma_offset(exec_res->pkt_vma);
dc9ac125d81faf Alan Previn 2023-05-11 100 pkt.size_in = header->message_size;
dc9ac125d81faf Alan Previn 2023-05-11 101 pkt.addr_out = pkt.addr_in + PXP43_MAX_HECI_INOUT_SIZE;
dc9ac125d81faf Alan Previn 2023-05-11 102 pkt.size_out = msg_out_size_max + sizeof(*header);
dc9ac125d81faf Alan Previn 2023-05-11 103 pkt.heci_pkt_vma = exec_res->pkt_vma;
dc9ac125d81faf Alan Previn 2023-05-11 104 pkt.bb_vma = exec_res->bb_vma;
dc9ac125d81faf Alan Previn 2023-05-11 105
dc9ac125d81faf Alan Previn 2023-05-11 106 /*
dc9ac125d81faf Alan Previn 2023-05-11 107 * Before submitting, let's clear-out the validity marker on the reply offset.
dc9ac125d81faf Alan Previn 2023-05-11 108 * We use offset PXP43_MAX_HECI_INOUT_SIZE for reply location so point header there.
dc9ac125d81faf Alan Previn 2023-05-11 109 */
dc9ac125d81faf Alan Previn 2023-05-11 110 header = exec_res->pkt_vaddr + PXP43_MAX_HECI_INOUT_SIZE;
dc9ac125d81faf Alan Previn 2023-05-11 111 header->validity_marker = 0;
dc9ac125d81faf Alan Previn 2023-05-11 112
dc9ac125d81faf Alan Previn 2023-05-11 113 ret = intel_gsc_uc_heci_cmd_submit_nonpriv(>->uc.gsc,
dc9ac125d81faf Alan Previn 2023-05-11 114 exec_res->ce, &pkt, exec_res->bb_vaddr,
dc9ac125d81faf Alan Previn 2023-05-11 @115 GSC_REPLY_LATENCY_MS);
dc9ac125d81faf Alan Previn 2023-05-11 116 if (ret) {
dc9ac125d81faf Alan Previn 2023-05-11 117 drm_err(&i915->drm, "failed to send gsc PXP msg (%d)\n", ret);
dc9ac125d81faf Alan Previn 2023-05-11 118 goto unlock;
dc9ac125d81faf Alan Previn 2023-05-11 119 }
dc9ac125d81faf Alan Previn 2023-05-11 120
dc9ac125d81faf Alan Previn 2023-05-11 121 /* Response validity marker, status and busyness */
dc9ac125d81faf Alan Previn 2023-05-11 122 if (header->validity_marker != GSC_HECI_VALIDITY_MARKER) {
dc9ac125d81faf Alan Previn 2023-05-11 123 drm_err(&i915->drm, "gsc PXP reply with invalid validity marker\n");
dc9ac125d81faf Alan Previn 2023-05-11 124 ret = -EINVAL;
dc9ac125d81faf Alan Previn 2023-05-11 125 goto unlock;
dc9ac125d81faf Alan Previn 2023-05-11 126 }
dc9ac125d81faf Alan Previn 2023-05-11 127 if (header->status != 0) {
dc9ac125d81faf Alan Previn 2023-05-11 128 drm_dbg(&i915->drm, "gsc PXP reply status has error = 0x%08x\n",
dc9ac125d81faf Alan Previn 2023-05-11 129 header->status);
dc9ac125d81faf Alan Previn 2023-05-11 130 ret = -EINVAL;
dc9ac125d81faf Alan Previn 2023-05-11 131 goto unlock;
dc9ac125d81faf Alan Previn 2023-05-11 132 }
dc9ac125d81faf Alan Previn 2023-05-11 133 if (header->flags & GSC_OUTFLAG_MSG_PENDING) {
dc9ac125d81faf Alan Previn 2023-05-11 134 drm_dbg(&i915->drm, "gsc PXP reply is busy\n");
dc9ac125d81faf Alan Previn 2023-05-11 135 /*
dc9ac125d81faf Alan Previn 2023-05-11 136 * When the GSC firmware replies with pending bit, it means that the requested
dc9ac125d81faf Alan Previn 2023-05-11 137 * operation has begun but the completion is pending and the caller needs
dc9ac125d81faf Alan Previn 2023-05-11 138 * to re-request with the gsc_message_handle that was returned by the firmware.
dc9ac125d81faf Alan Previn 2023-05-11 139 * until the pending bit is turned off.
dc9ac125d81faf Alan Previn 2023-05-11 140 */
dc9ac125d81faf Alan Previn 2023-05-11 141 *gsc_msg_handle_retry = header->gsc_message_handle;
dc9ac125d81faf Alan Previn 2023-05-11 142 ret = -EAGAIN;
dc9ac125d81faf Alan Previn 2023-05-11 143 goto unlock;
dc9ac125d81faf Alan Previn 2023-05-11 144 }
dc9ac125d81faf Alan Previn 2023-05-11 145
dc9ac125d81faf Alan Previn 2023-05-11 146 reply_size = header->message_size - sizeof(*header);
dc9ac125d81faf Alan Previn 2023-05-11 147 if (reply_size > msg_out_size_max) {
5c315434fdb6ab Nathan Chancellor 2023-05-30 148 drm_warn(&i915->drm, "caller with insufficient PXP reply size %u (%zu)\n",
dc9ac125d81faf Alan Previn 2023-05-11 149 reply_size, msg_out_size_max);
dc9ac125d81faf Alan Previn 2023-05-11 150 reply_size = msg_out_size_max;
dc9ac125d81faf Alan Previn 2023-05-11 151 }
dc9ac125d81faf Alan Previn 2023-05-11 152
dc9ac125d81faf Alan Previn 2023-05-11 153 if (msg_out)
dc9ac125d81faf Alan Previn 2023-05-11 154 memcpy(msg_out, exec_res->pkt_vaddr + PXP43_MAX_HECI_INOUT_SIZE + sizeof(*header),
dc9ac125d81faf Alan Previn 2023-05-11 155 reply_size);
dc9ac125d81faf Alan Previn 2023-05-11 156 if (msg_out_len)
dc9ac125d81faf Alan Previn 2023-05-11 157 *msg_out_len = reply_size;
dc9ac125d81faf Alan Previn 2023-05-11 158
dc9ac125d81faf Alan Previn 2023-05-11 159 unlock:
dc9ac125d81faf Alan Previn 2023-05-11 160 mutex_unlock(&pxp->tee_mutex);
dc9ac125d81faf Alan Previn 2023-05-11 161 return ret;
dc9ac125d81faf Alan Previn 2023-05-11 162 }
dc9ac125d81faf Alan Previn 2023-05-11 163
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
More information about the Intel-gfx
mailing list