Re: [PATCH v3 6/6] vfio-ccw: add handling for async channel instructions

Halil Pasic
2019-01-30T17:09:31Z

On Wed, 30 Jan 2019 14:22:12 +0100
Cornelia Huck <cohuck@redhat.com> wrote:

> +static void fsm_async_retry(struct vfio_ccw_private *private,
> + enum vfio_ccw_event event)
> +{
> + private->cmd_region->ret_code = -EAGAIN;
> +}
> +

This is essentially dead code at the moment, isn't it? I mean we hold the
io_mutex whenever we are in state VFIO_CCW_STATE_CP_PROCESSING, and we
call vfio_ccw_fsm_event() with the very same mutex held.

> @@ -213,26 +323,31 @@ fsm_func_t *vfio_ccw_jumptable[NR_VFIO_CCW_STATES][NR_VFIO_CCW_EVENTS] = {
> [VFIO_CCW_STATE_NOT_OPER] = {
> [VFIO_CCW_EVENT_NOT_OPER] = fsm_nop,
> [VFIO_CCW_EVENT_IO_REQ] = fsm_io_error,
> + [VFIO_CCW_EVENT_ASYNC_REQ] = fsm_async_error,
> [VFIO_CCW_EVENT_INTERRUPT] = fsm_disabled_irq,
> },
> [VFIO_CCW_STATE_STANDBY] = {
> [VFIO_CCW_EVENT_NOT_OPER] = fsm_notoper,
> [VFIO_CCW_EVENT_IO_REQ] = fsm_io_error,
> + [VFIO_CCW_EVENT_ASYNC_REQ] = fsm_async_error,
> [VFIO_CCW_EVENT_INTERRUPT] = fsm_irq,
> },
> [VFIO_CCW_STATE_IDLE] = {
> [VFIO_CCW_EVENT_NOT_OPER] = fsm_notoper,
> [VFIO_CCW_EVENT_IO_REQ] = fsm_io_request,
> + [VFIO_CCW_EVENT_ASYNC_REQ] = fsm_async_request,
> [VFIO_CCW_EVENT_INTERRUPT] = fsm_irq,
> },
> [VFIO_CCW_STATE_CP_PROCESSING] = {
> [VFIO_CCW_EVENT_NOT_OPER] = fsm_notoper,
> [VFIO_CCW_EVENT_IO_REQ] = fsm_io_retry,
> + [VFIO_CCW_EVENT_ASYNC_REQ] = fsm_async_retry,

Used here.

Regards,
Halil

> [VFIO_CCW_EVENT_INTERRUPT] = fsm_irq,
> },