v3dv: fix debug dump on BO free
We were resetting the BO struct right before dumping its data. Fix this by moving the reset later. Fixes:44fa8304d4
('v3dv: add a refcount mechanism to BOs') Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19672> (cherry picked from commit2c44597181
)
This commit is contained in:

committed by
Dylan Baker

parent
b8e787da4e
commit
2406718cc7
@@ -625,7 +625,7 @@
|
||||
"description": "v3dv: fix debug dump on BO free",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "44fa8304d45e775050a42f2fc85c02ad5ddb63bd"
|
||||
},
|
||||
|
@@ -134,16 +134,9 @@ bo_free(struct v3dv_device *device,
|
||||
assert(p_atomic_read(&bo->refcnt) == 0);
|
||||
assert(bo->map == NULL);
|
||||
|
||||
/* Our BO structs are stored in a sparse array in the physical device,
|
||||
* so we don't want to free the BO pointer, instead we want to reset it
|
||||
* to 0, to signal that array entry as being free.
|
||||
*/
|
||||
uint32_t handle = bo->handle;
|
||||
memset(bo, 0, sizeof(*bo));
|
||||
|
||||
struct drm_gem_close c;
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.handle = handle;
|
||||
c.handle = bo->handle;
|
||||
int ret = v3dv_ioctl(device->pdevice->render_fd, DRM_IOCTL_GEM_CLOSE, &c);
|
||||
if (ret != 0)
|
||||
fprintf(stderr, "close object %d: %s\n", bo->handle, strerror(errno));
|
||||
@@ -159,6 +152,12 @@ bo_free(struct v3dv_device *device,
|
||||
bo_dump_stats(device);
|
||||
}
|
||||
|
||||
/* Our BO structs are stored in a sparse array in the physical device,
|
||||
* so we don't want to free the BO pointer, instead we want to reset it
|
||||
* to 0, to signal that array entry as being free.
|
||||
*/
|
||||
memset(bo, 0, sizeof(*bo));
|
||||
|
||||
return ret == 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user