From e0a680162d96bd4cfb6b1253fda6bc8917c2b357 Mon Sep 17 00:00:00 2001 From: Mark Collins Date: Mon, 18 Mar 2024 11:04:36 +0000 Subject: [PATCH] fd/replay: Add wrbuf support for KGSL/DXG The vector for wrbufs wasn't being initialized for KGSL and DXG leading to UB when they were used with it. Signed-off-by: Mark Collins Part-of: --- src/freedreno/decode/replay.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/freedreno/decode/replay.c b/src/freedreno/decode/replay.c index 09eef6d1746..633cc811b6d 100644 --- a/src/freedreno/decode/replay.c +++ b/src/freedreno/decode/replay.c @@ -749,6 +749,7 @@ device_create(uint64_t base_addr) rb_tree_init(&dev->buffers); util_vma_heap_init(&dev->vma, req.gpuaddr, ROUND_DOWN_TO(FAKE_ADDRESS_SPACE_SIZE, 4096)); u_vector_init(&dev->cmdstreams, 8, sizeof(struct cmdstream)); + u_vector_init(&dev->wrbufs, 8, sizeof(struct wrbuf)); struct kgsl_drawctxt_create drawctxt_req = { .flags = KGSL_CONTEXT_SAVE_GMEM | @@ -822,6 +823,8 @@ device_submit_cmdstreams(struct device *dev) device_print_cp_log(dev); device_dump_wrbuf(dev); + u_vector_finish(&dev->wrbufs); + u_vector_init(&dev->wrbufs, 8, sizeof(struct wrbuf)); device_free_buffers(dev); } @@ -1086,6 +1089,7 @@ device_create(uint64_t base_addr) rb_tree_init(&dev->buffers); util_vma_heap_init(&dev->vma, dev->va_iova, ROUND_DOWN_TO(alloc_size, 4096)); u_vector_init(&dev->cmdstreams, 8, sizeof(struct cmdstream)); + u_vector_init(&dev->wrbufs, 8, sizeof(struct wrbuf)); printf("Allocated iova at 0x%" PRIx64 "\n", dev->va_iova); @@ -1183,6 +1187,8 @@ device_submit_cmdstreams(struct device *dev) device_print_cp_log(dev); device_dump_wrbuf(dev); + u_vector_finish(&dev->wrbufs); + u_vector_init(&dev->wrbufs, 8, sizeof(struct wrbuf)); device_free_buffers(dev); }