Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/xe/display: Use scoped-cleanup

Eliminate some goto-based cleanup by utilizing scoped cleanup helpers.

v2:
- Eliminate unnecessary 'ret' variable in intel_hdcp_gsc_check_status()
(Gustavo)

Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
Link: https://patch.msgid.link/20251118164338.3572146-42-matthew.d.roper@intel.com
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>

+18 -36
+9 -14
drivers/gpu/drm/xe/display/xe_fb_pin.c
··· 210 210 /* TODO: Consider sharing framebuffer mapping? 211 211 * embed i915_vma inside intel_framebuffer 212 212 */ 213 - xe_pm_runtime_get_noresume(xe); 214 - ret = mutex_lock_interruptible(&ggtt->lock); 213 + guard(xe_pm_runtime_noresume)(xe); 214 + ACQUIRE(mutex_intr, lock)(&ggtt->lock); 215 + ret = ACQUIRE_ERR(mutex_intr, &lock); 215 216 if (ret) 216 - goto out; 217 + return ret; 217 218 218 219 align = XE_PAGE_SIZE; 219 220 if (xe_bo_is_vram(bo) && ggtt->flags & XE_GGTT_FLAGS_64K) ··· 224 223 vma->node = bo->ggtt_node[tile0->id]; 225 224 } else if (view->type == I915_GTT_VIEW_NORMAL) { 226 225 vma->node = xe_ggtt_node_init(ggtt); 227 - if (IS_ERR(vma->node)) { 228 - ret = PTR_ERR(vma->node); 229 - goto out_unlock; 230 - } 226 + if (IS_ERR(vma->node)) 227 + return PTR_ERR(vma->node); 231 228 232 229 ret = xe_ggtt_node_insert_locked(vma->node, xe_bo_size(bo), align, 0); 233 230 if (ret) { 234 231 xe_ggtt_node_fini(vma->node); 235 - goto out_unlock; 232 + return ret; 236 233 } 237 234 238 235 xe_ggtt_map_bo(ggtt, vma->node, bo, xe->pat.idx[XE_CACHE_NONE]); ··· 244 245 vma->node = xe_ggtt_node_init(ggtt); 245 246 if (IS_ERR(vma->node)) { 246 247 ret = PTR_ERR(vma->node); 247 - goto out_unlock; 248 + return ret; 248 249 } 249 250 250 251 ret = xe_ggtt_node_insert_locked(vma->node, size, align, 0); 251 252 if (ret) { 252 253 xe_ggtt_node_fini(vma->node); 253 - goto out_unlock; 254 + return ret; 254 255 } 255 256 256 257 ggtt_ofs = vma->node->base.start; ··· 264 265 rot_info->plane[i].dst_stride); 265 266 } 266 267 267 - out_unlock: 268 - mutex_unlock(&ggtt->lock); 269 - out: 270 - xe_pm_runtime_put(xe); 271 268 return ret; 272 269 } 273 270
+9 -22
drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
··· 36 36 struct xe_tile *tile = xe_device_get_root_tile(xe); 37 37 struct xe_gt *gt = tile->media_gt; 38 38 struct xe_gsc *gsc = &gt->uc.gsc; 39 - bool ret = true; 40 - unsigned int fw_ref; 41 39 42 40 if (!gsc || !xe_uc_fw_is_enabled(&gsc->fw)) { 43 41 drm_dbg_kms(&xe->drm, ··· 43 45 return false; 44 46 } 45 47 46 - xe_pm_runtime_get(xe); 47 - fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GSC); 48 - if (!fw_ref) { 48 + guard(xe_pm_runtime)(xe); 49 + CLASS(xe_force_wake, fw_ref)(gt_to_fw(gt), XE_FW_GSC); 50 + if (!fw_ref.domains) { 49 51 drm_dbg_kms(&xe->drm, 50 52 "failed to get forcewake to check proxy status\n"); 51 - ret = false; 52 - goto out; 53 + return false; 53 54 } 54 55 55 - if (!xe_gsc_proxy_init_done(gsc)) 56 - ret = false; 57 - 58 - xe_force_wake_put(gt_to_fw(gt), fw_ref); 59 - out: 60 - xe_pm_runtime_put(xe); 61 - return ret; 56 + return xe_gsc_proxy_init_done(gsc); 62 57 } 63 58 64 59 /*This function helps allocate memory for the command that we will send to gsc cs */ ··· 157 166 u32 addr_out_off, addr_in_wr_off = 0; 158 167 int ret, tries = 0; 159 168 160 - if (msg_in_len > max_msg_size || msg_out_len > max_msg_size) { 161 - ret = -ENOSPC; 162 - goto out; 163 - } 169 + if (msg_in_len > max_msg_size || msg_out_len > max_msg_size) 170 + return -ENOSPC; 164 171 165 172 msg_size_in = msg_in_len + HDCP_GSC_HEADER_SIZE; 166 173 msg_size_out = msg_out_len + HDCP_GSC_HEADER_SIZE; 167 174 addr_out_off = PAGE_SIZE; 168 175 169 176 host_session_id = xe_gsc_create_host_session_id(); 170 - xe_pm_runtime_get_noresume(xe); 177 + guard(xe_pm_runtime_noresume)(xe); 171 178 addr_in_wr_off = xe_gsc_emit_header(xe, &gsc_context->hdcp_bo->vmap, 172 179 addr_in_wr_off, HECI_MEADDRESS_HDCP, 173 180 host_session_id, msg_in_len); ··· 190 201 } while (++tries < 20); 191 202 192 203 if (ret) 193 - goto out; 204 + return ret; 194 205 195 206 xe_map_memcpy_from(xe, msg_out, &gsc_context->hdcp_bo->vmap, 196 207 addr_out_off + HDCP_GSC_HEADER_SIZE, 197 208 msg_out_len); 198 209 199 - out: 200 - xe_pm_runtime_put(xe); 201 210 return ret; 202 211 }