• Eric Farman's avatar
    vfio/ccw: Move FSM open/close to MDEV open/close · 204b394a
    Eric Farman authored
    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: default avatarJason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: default avatarEric Farman <farman@linux.ibm.com>
    Reviewed-by: default avatarJason Gunthorpe <jgg@nvidia.com>
    Reviewed-by: default avatarMatthew Rosato <mjrosato@linux.ibm.com>
    Link: https://lore.kernel.org/r/20220707135737.720765-12-farman@linux.ibm.comSigned-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    204b394a
vfio_ccw_ops.c 14.9 KB