On Thu, Jun 02, 2022 at 07:19:42PM +0200, Eric Farman wrote: > Part of the confusion that has existed is the FSM lifecycle of > subchannels between the common CSS driver and the vfio-ccw driver. > During configuration, the FSM state goes from NOT_OPER to STANDBY > to IDLE, but then back to NOT_OPER. For example: > > vfio_ccw_sch_probe: VFIO_CCW_STATE_NOT_OPER > vfio_ccw_sch_probe: VFIO_CCW_STATE_STANDBY > vfio_ccw_mdev_probe: VFIO_CCW_STATE_IDLE > vfio_ccw_mdev_remove: VFIO_CCW_STATE_NOT_OPER > vfio_ccw_sch_remove: VFIO_CCW_STATE_NOT_OPER > vfio_ccw_sch_shutdown: VFIO_CCW_STATE_NOT_OPER > > Rearrange the open/close events to align with the mdev open/close, > to better manage the memory and state of the devices as time > progresses. Specifically, make mdev_open() perform the FSM open, > and mdev_close() perform the FSM close instead of reset (which is > both close and open). > > This makes the NOT_OPER state a dead-end path, indicating the > device is probably not recoverable without fully probing and > re-configuring the device. > > This has the nice side-effect of removing a number of special-cases > where the FSM state is managed outside of the FSM itself (such as > the aforementioned mdev_close() routine). > > Suggested-by: Jason Gunthorpe <jgg@xxxxxxxxxx> > Signed-off-by: Eric Farman <farman@xxxxxxxxxxxxx> > --- > drivers/s390/cio/vfio_ccw_drv.c | 11 +++-------- > drivers/s390/cio/vfio_ccw_fsm.c | 30 ++++++++++++++++++++++-------- > drivers/s390/cio/vfio_ccw_ops.c | 26 +++++++++++--------------- > 3 files changed, 36 insertions(+), 31 deletions(-) Reviewed-by: Jason Gunthorpe <jgg@xxxxxxxxxx> Jason