On Thu, Aug 29, 2019 at 04:44:49PM -0700, Chia-I Wu wrote:
The series is
Reviewed-by: Chia-I Wu olvaffe@gmail.com
Thanks.
However I ran into a deadlock with one GPU-heavy app. When I exits Unigine Valley benchmark with ctrl-c, the entire driver locks up probably 8 out of 10 times on my machine. When that happens, virtio_gpu_dequeue_ctrl_func does not return and is blocked inside virtio_gpu_array_put_free.
It seems, when the vq becomes full or near full between reclaim_vbufs and virtio_gpu_array_put_free, virtio_gpu_array_put_free can not free all of the objects because each call to virtio_gpu_free_object needs to add several commands to vq. One of the calls ends up being blocked at "wait_event(vgdev->ctrlq.ack_queue, ...)".
Probably it is simply the large number of objects released at once when killing the benchmark which causes the queue to fill up.
cheers, Gerd