Hey Dmitry, On 2023/03/24, Dmitry Osipenko wrote: > Move virtio_gpu_execbuffer_ioctl() into separate virtgpu_submit.c file > and refactor the code along the way to ease addition of new features to > the ioctl. > At a glance, we have a handful of no-op as well as some functional changes - let's split those up in separate patches. > Reviewed-by: Rob Clark <robdclark@xxxxxxxxx> > Signed-off-by: Dmitry Osipenko <dmitry.osipenko@xxxxxxxxxxxxx> > --- > +static int virtio_gpu_dma_fence_wait(struct virtio_gpu_submit *submit, > + struct dma_fence *fence) > +{ > + struct dma_fence_unwrap itr; > + struct dma_fence *f; > + int err; > + > + dma_fence_unwrap_for_each(f, &itr, fence) { The dma_fence_unwrap_for_each() change should be a separate patch, highlighting why we want it. > + err = virtio_gpu_do_fence_wait(submit, f); > + if (err) > + return err; > + } > + > + return 0; > +} > + > + ret = virtio_gpu_init_submit(&submit, exbuf, dev, file, > + fence_ctx, ring_idx); > + if (ret) > + goto cleanup; > + > + ret = virtio_gpu_wait_in_fence(&submit); > + if (ret) > + goto cleanup; > + We have reshuffled the order around in_fence waiting, out_fence install, handles, cmdbuf, drm events, etc. Can we get that split up a bit, with some comments. If it were me, I would keep the wait_in_fence early and inline virtio_gpu_init_submit (the nesting/abstraction seems a bit much). This means one can omit the virtio_gpu_submit::exbuf all together. HTH Emil