On 2024/05/02 4:02, Dmitry Osipenko wrote:
On 4/27/24 08:48, Akihiko Odaki wrote:

The VIRTIO_GPU_FILL_CMD() macro returns void and this macro is used by
every function processing commands. Changing process_cmd() to return
bool will require to change all those functions. Not worthwhile to
change it, IMO. >
The flag reflects the exact command status. The !finished + !suspended
means that command is fenced, i.e. these flags don't have exactly same
meaning.

It is not necessary to change the signature of process_cmd(). You can
just refer to !finished. No need to have the suspended flag.

Not sure what you're meaning. The !finished says that cmd is fenced,
this fenced command is added to the polling list and the fence is
checked periodically by the fence_poll timer, meanwhile next virgl
commands are executed in the same time.

This is completely different from the suspension where whole cmd
processing is blocked until command is resumed.


!finished means you have not sent a response with virtio_gpu_ctrl_response(). Currently such a situation only happens when a fence is requested and virtio_gpu_process_cmdq() exploits the fact, but we are adding a new case without a fence.

So we need to add code to check if we are fencing or not in virtio_gpu_process_cmdq(). This can be achieved by evaluating the following expression as done in virtio_gpu_virgl_process_cmd():
cmd->cmd_hdr.flags & VIRTIO_GPU_FLAG_FENCE

Reply via email to