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/i915/overlay: Use struct drm_gem_object as the type

Use 'struct drm_gem_object' for the BO instead of 'struct
drm_i915_gem_object', to avoid having the display side
know anything about the i915 specific BO type.

v2: Correctly handle the ERR_PTR returned by
i915_overlay_obj_lookup() (Jani)

Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20260226100738.29997-8-ville.syrjala@linux.intel.com

+19 -18
+19 -18
drivers/gpu/drm/i915/display/intel_overlay.c
··· 768 768 return cmd; 769 769 } 770 770 771 - static struct i915_vma *intel_overlay_pin_fb(struct drm_i915_gem_object *new_bo) 771 + static struct i915_vma *intel_overlay_pin_fb(struct drm_gem_object *obj) 772 772 { 773 + struct drm_i915_gem_object *new_bo = to_intel_bo(obj); 773 774 struct i915_gem_ww_ctx ww; 774 775 struct i915_vma *vma; 775 776 int ret; ··· 796 795 } 797 796 798 797 static int intel_overlay_do_put_image(struct intel_overlay *overlay, 799 - struct drm_i915_gem_object *new_bo, 798 + struct drm_gem_object *obj, 800 799 struct drm_intel_overlay_put_image *params) 801 800 { 802 801 struct intel_display *display = overlay->display; ··· 817 816 818 817 atomic_inc(&display->restore.pending_fb_pin); 819 818 820 - vma = intel_overlay_pin_fb(new_bo); 819 + vma = intel_overlay_pin_fb(obj); 821 820 if (IS_ERR(vma)) { 822 821 ret = PTR_ERR(vma); 823 822 goto out_pin_section; ··· 1017 1016 1018 1017 static int check_overlay_src(struct intel_display *display, 1019 1018 struct drm_intel_overlay_put_image *rec, 1020 - struct drm_i915_gem_object *new_bo) 1019 + struct drm_gem_object *obj) 1021 1020 { 1022 1021 int uv_hscale = uv_hsubsampling(rec->flags); 1023 1022 int uv_vscale = uv_vsubsampling(rec->flags); ··· 1102 1101 return -EINVAL; 1103 1102 1104 1103 tmp = rec->stride_Y*rec->src_height; 1105 - if (rec->offset_Y + tmp > new_bo->base.size) 1104 + if (rec->offset_Y + tmp > obj->size) 1106 1105 return -EINVAL; 1107 1106 break; 1108 1107 ··· 1113 1112 return -EINVAL; 1114 1113 1115 1114 tmp = rec->stride_Y * rec->src_height; 1116 - if (rec->offset_Y + tmp > new_bo->base.size) 1115 + if (rec->offset_Y + tmp > obj->size) 1117 1116 return -EINVAL; 1118 1117 1119 1118 tmp = rec->stride_UV * (rec->src_height / uv_vscale); 1120 - if (rec->offset_U + tmp > new_bo->base.size || 1121 - rec->offset_V + tmp > new_bo->base.size) 1119 + if (rec->offset_U + tmp > obj->size || 1120 + rec->offset_V + tmp > obj->size) 1122 1121 return -EINVAL; 1123 1122 break; 1124 1123 } ··· 1126 1125 return 0; 1127 1126 } 1128 1127 1129 - static struct drm_i915_gem_object * 1128 + static struct drm_gem_object * 1130 1129 i915_overlay_obj_lookup(struct drm_device *drm, 1131 1130 struct drm_file *file_priv, 1132 1131 u32 handle) ··· 1143 1142 return ERR_PTR(-EINVAL); 1144 1143 } 1145 1144 1146 - return bo; 1145 + return intel_bo_to_drm_bo(bo); 1147 1146 } 1148 1147 1149 1148 int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data, ··· 1153 1152 struct drm_intel_overlay_put_image *params = data; 1154 1153 struct intel_overlay *overlay; 1155 1154 struct drm_crtc *drmmode_crtc; 1155 + struct drm_gem_object *obj; 1156 1156 struct intel_crtc *crtc; 1157 - struct drm_i915_gem_object *new_bo; 1158 1157 int ret; 1159 1158 1160 1159 overlay = display->overlay; ··· 1176 1175 return -ENOENT; 1177 1176 crtc = to_intel_crtc(drmmode_crtc); 1178 1177 1179 - new_bo = i915_overlay_obj_lookup(dev, file_priv, params->bo_handle); 1180 - if (IS_ERR(new_bo)) 1181 - return PTR_ERR(new_bo); 1178 + obj = i915_overlay_obj_lookup(dev, file_priv, params->bo_handle); 1179 + if (IS_ERR(obj)) 1180 + return PTR_ERR(obj); 1182 1181 1183 1182 drm_modeset_lock_all(dev); 1184 1183 ··· 1225 1224 goto out_unlock; 1226 1225 } 1227 1226 1228 - ret = check_overlay_src(display, params, new_bo); 1227 + ret = check_overlay_src(display, params, obj); 1229 1228 if (ret != 0) 1230 1229 goto out_unlock; 1231 1230 ··· 1234 1233 if (ret != 0) 1235 1234 goto out_unlock; 1236 1235 1237 - ret = intel_overlay_do_put_image(overlay, new_bo, params); 1236 + ret = intel_overlay_do_put_image(overlay, obj, params); 1238 1237 if (ret != 0) 1239 1238 goto out_unlock; 1240 1239 1241 1240 drm_modeset_unlock_all(dev); 1242 - i915_gem_object_put(new_bo); 1241 + drm_gem_object_put(obj); 1243 1242 1244 1243 return 0; 1245 1244 1246 1245 out_unlock: 1247 1246 drm_modeset_unlock_all(dev); 1248 - i915_gem_object_put(new_bo); 1247 + drm_gem_object_put(obj); 1249 1248 1250 1249 return ret; 1251 1250 }