On Fri, 25 May 2018 12:21:14 +0200 Pierre Morel <pmorel@xxxxxxxxxxxxxxxxxx> wrote: > We use mutex around the FSM function call to make the FSM > event handling and state change atomic. I'm still not really clear as to what this mutex is supposed to serialize: - Modification of the state? - Any calls in the state machine? - A combination? (That would imply that we only deal with the state in the state machine.) > > Signed-off-by: Pierre Morel <pmorel@xxxxxxxxxxxxxxxxxx> > --- > drivers/s390/cio/vfio_ccw_drv.c | 3 +-- > drivers/s390/cio/vfio_ccw_private.h | 3 +++ > 2 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/s390/cio/vfio_ccw_drv.c b/drivers/s390/cio/vfio_ccw_drv.c > index 6b7112e..98951d5 100644 > --- a/drivers/s390/cio/vfio_ccw_drv.c > +++ b/drivers/s390/cio/vfio_ccw_drv.c > @@ -73,8 +73,6 @@ static void vfio_ccw_sch_io_todo(struct work_struct *work) > > private = container_of(work, struct vfio_ccw_private, io_work); > vfio_ccw_fsm_event(private, VFIO_CCW_EVENT_INTERRUPT); > - if (private->mdev) > - private->state = VFIO_CCW_STATE_IDLE; Looks like an unrelated change? If you want to do all state changes under the mutex, that should rather be moved than deleted, shouldn't it? > } > > static void vfio_ccw_sch_event_todo(struct work_struct *work)