Hi Zack, kernel test robot noticed the following build errors: [auto build test ERROR on drm-exynos/exynos-drm-next] [also build test ERROR on linus/master v6.14-rc5 next-20250305] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Zack-Rusin/drm-vmwgfx-Make-sure-the-dirty-tracker-is-released-on-surfaces/20250305-025105 base: https://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git exynos-drm-next patch link: https://lore.kernel.org/r/20250304184942.2127704-1-zack.rusin%40broadcom.com patch subject: [PATCH] drm/vmwgfx: Make sure the dirty tracker is released on surfaces config: arm64-randconfig-002-20250305 (https://download.01.org/0day-ci/archive/20250306/202503060226.Y7UvsIZE-lkp@xxxxxxxxx/config) compiler: aarch64-linux-gcc (GCC) 14.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250306/202503060226.Y7UvsIZE-lkp@xxxxxxxxx/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@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202503060226.Y7UvsIZE-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): drivers/gpu/drm/vmwgfx/vmwgfx_kms.c: In function 'vmw_framebuffer_surface_destroy': >> drivers/gpu/drm/vmwgfx/vmwgfx_kms.c:1236:39: error: invalid use of undefined type 'const struct vmw_res_func' 1236 | surf->res.func->dirty_free(&surf->res); | ^~ vim +1236 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c 1196 1197 1198 /** 1199 * vmw_du_connector_destroy_state - destroy connector state 1200 * @connector: DRM connector 1201 * @state: state object to destroy 1202 * 1203 * Destroys the connector state (both common and vmw-specific) for the 1204 * specified plane. 1205 */ 1206 void 1207 vmw_du_connector_destroy_state(struct drm_connector *connector, 1208 struct drm_connector_state *state) 1209 { 1210 drm_atomic_helper_connector_destroy_state(connector, state); 1211 } 1212 /* 1213 * Generic framebuffer code 1214 */ 1215 1216 /* 1217 * Surface framebuffer code 1218 */ 1219 1220 static void vmw_framebuffer_surface_destroy(struct drm_framebuffer *framebuffer) 1221 { 1222 struct vmw_framebuffer_surface *vfbs = 1223 vmw_framebuffer_to_vfbs(framebuffer); 1224 struct vmw_bo *bo = vmw_user_object_buffer(&vfbs->uo); 1225 struct vmw_surface *surf = vmw_user_object_surface(&vfbs->uo); 1226 1227 if (bo) { 1228 vmw_bo_dirty_release(bo); 1229 /* 1230 * bo->dirty is reference counted so it being NULL 1231 * means that the surface wasn't coherent to begin 1232 * with and so we have to free the dirty tracker 1233 * in the vmw_resource 1234 */ 1235 if (!bo->dirty && surf && surf->res.dirty) > 1236 surf->res.func->dirty_free(&surf->res); 1237 } 1238 drm_framebuffer_cleanup(framebuffer); 1239 vmw_user_object_unref(&vfbs->uo); 1240 1241 kfree(vfbs); 1242 } 1243 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki