Re: [PATCH 04/10] vfio: ccw: replace IO_REQ event with SSCH_REQ event

From: Cornelia Huck
Date: Wed May 02 2018 - 04:22:26 EST


On Wed, 2 May 2018 15:46:22 +0800
Dong Jia Shi <bjsdjshi@xxxxxxxxxxxxxxxxxx> wrote:

> * Cornelia Huck <cohuck@xxxxxxxxxx> [2018-04-30 17:33:05 +0200]:
>
> > On Thu, 26 Apr 2018 15:48:06 +0800
> > Dong Jia Shi <bjsdjshi@xxxxxxxxxxxxxxxxxx> wrote:
> >
> > > * Dong Jia Shi <bjsdjshi@xxxxxxxxxxxxxxxxxx> [2018-04-26 15:30:54 +0800]:
> > >
> > > [...]
> > >
> > > > > @@ -179,7 +160,7 @@ static int fsm_irq(struct vfio_ccw_private *private,
> > > > > if (private->io_trigger)
> > > > > eventfd_signal(private->io_trigger, 1);
> > > > >
> > > > > - return private->state;
> > > > > + return VFIO_CCW_STATE_IDLE;
> > > > This is not right. For example, if we are in STANDBY state (subch driver
> > > > is probed, but mdev device is not created), we can not jump to IDLE
> > > > state.
> > > >
> > > I see my problem, for STANDBY state, we should introduce another event
> > > callback for VFIO_CCW_EVENT_INTERRUPT. It doesn't make sense to call
> > > fsm_irq() which tries to signal userspace with interrupt notification
> > > when mdev is not created yet... So we'd need a separated fix for this
> > > issue too.
> >
> > But how do we even get into that situation when we don't have an mdev
> > yet?
> >
> We cann't... So let's assign fsm_nop() as the interrupt callback for
> STANDBY state?

Either that, or have a special fsm_should_not_happen() function that
can pop out a trace message and then continue to do nothing.