From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Subject: Re: [PATCH 2/7] s390/cio: Set vfio-ccw FSM state before ioeventfd References: <20190503134912.39756-1-farman@linux.ibm.com> <20190503134912.39756-3-farman@linux.ibm.com> <20190506165158.5da82576.cohuck@redhat.com> From: Eric Farman Date: Mon, 6 May 2019 12:36:46 -0400 MIME-Version: 1.0 In-Reply-To: <20190506165158.5da82576.cohuck@redhat.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Message-Id: <39a1efa5-5298-97b9-21fa-e9ed70a2b892@linux.ibm.com> Sender: kvm-owner@vger.kernel.org List-Archive: List-Post: To: Cornelia Huck Cc: Farhan Ali , Halil Pasic , Pierre Morel , linux-s390@vger.kernel.org, kvm@vger.kernel.org List-ID: On 5/6/19 10:51 AM, Cornelia Huck wrote: > On Fri, 3 May 2019 15:49:07 +0200 > Eric Farman wrote: > >> Otherwise, the guest can believe it's okay to start another I/O >> and bump into the non-idle state. This results in a cc=3 >> (or cc=2 with the pending async CSCH/HSCH code [1]) to the guest, > > I think you can now refer to cc=2, as the csch/hsch is on its way in :) Woohoo! :) > >> which is unfortunate since everything is otherwise working normally. >> >> [1] https://patchwork.kernel.org/comment/22588563/ >> >> Signed-off-by: Eric Farman >> >> --- >> >> I think this might've been part of Pierre's FSM cleanup? > > Not sure if I saw this before, but there have been quite a number of > patches going around... I guess I should have said his original cleanup from last year. I didn't find it, but it also seems familiar to me. > >> --- >> drivers/s390/cio/vfio_ccw_drv.c | 6 +++--- >> 1 file changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/s390/cio/vfio_ccw_drv.c b/drivers/s390/cio/vfio_ccw_drv.c >> index 0b3b9de45c60..ddd21b6149fd 100644 >> --- a/drivers/s390/cio/vfio_ccw_drv.c >> +++ b/drivers/s390/cio/vfio_ccw_drv.c >> @@ -86,11 +86,11 @@ static void vfio_ccw_sch_io_todo(struct work_struct *work) >> } >> memcpy(private->io_region->irb_area, irb, sizeof(*irb)); >> >> - if (private->io_trigger) >> - eventfd_signal(private->io_trigger, 1); >> - >> if (private->mdev && is_final) >> private->state = VFIO_CCW_STATE_IDLE; >> + >> + if (private->io_trigger) >> + eventfd_signal(private->io_trigger, 1); >> } >> >> /* >