All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Farman <farman@linux.ibm.com>
To: Matthew Rosato <mjrosato@linux.ibm.com>
Cc: Jason Gunthorpe <jgg@nvidia.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Cornelia Huck <cohuck@redhat.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	kvm@vger.kernel.org, linux-s390@vger.kernel.org,
	Eric Farman <farman@linux.ibm.com>
Subject: [PATCH v2 02/10] vfio/ccw: Fix FSM state if mdev probe fails
Date: Wed, 15 Jun 2022 22:33:10 +0200	[thread overview]
Message-ID: <20220615203318.3830778-3-farman@linux.ibm.com> (raw)
In-Reply-To: <20220615203318.3830778-1-farman@linux.ibm.com>

The FSM is in STANDBY state when arriving in vfio_ccw_mdev_probe(),
and this routine converts it to IDLE as part of its processing.
The error exit sets it to IDLE (again) but clears the private->mdev
pointer.

The FSM should of course be managing the state itself, but the
correct thing for vfio_ccw_mdev_probe() to do would be to put
the state back the way it found it.

The corresponding check of private->mdev in vfio_ccw_sch_io_todo()
can be removed, since the distinction is unnecessary at this point.

Fixes: 3bf1311f351ef ("vfio/ccw: Convert to use vfio_register_emulated_iommu_dev()")
Signed-off-by: Eric Farman <farman@linux.ibm.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
---
 drivers/s390/cio/vfio_ccw_drv.c | 5 +++--
 drivers/s390/cio/vfio_ccw_ops.c | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/s390/cio/vfio_ccw_drv.c b/drivers/s390/cio/vfio_ccw_drv.c
index 35055eb94115..179eb614fa5b 100644
--- a/drivers/s390/cio/vfio_ccw_drv.c
+++ b/drivers/s390/cio/vfio_ccw_drv.c
@@ -106,9 +106,10 @@ static void vfio_ccw_sch_io_todo(struct work_struct *work)
 	/*
 	 * Reset to IDLE only if processing of a channel program
 	 * has finished. Do not overwrite a possible processing
-	 * state if the final interrupt was for HSCH or CSCH.
+	 * state if the interrupt was unsolicited, or if the final
+	 * interrupt was for HSCH or CSCH.
 	 */
-	if (private->mdev && cp_is_finished)
+	if (cp_is_finished)
 		private->state = VFIO_CCW_STATE_IDLE;
 
 	if (private->io_trigger)
diff --git a/drivers/s390/cio/vfio_ccw_ops.c b/drivers/s390/cio/vfio_ccw_ops.c
index 0e05bff78b8e..9a05dadcbb75 100644
--- a/drivers/s390/cio/vfio_ccw_ops.c
+++ b/drivers/s390/cio/vfio_ccw_ops.c
@@ -146,7 +146,7 @@ static int vfio_ccw_mdev_probe(struct mdev_device *mdev)
 	vfio_uninit_group_dev(&private->vdev);
 	atomic_inc(&private->avail);
 	private->mdev = NULL;
-	private->state = VFIO_CCW_STATE_IDLE;
+	private->state = VFIO_CCW_STATE_STANDBY;
 	return ret;
 }
 
-- 
2.32.0


  parent reply	other threads:[~2022-06-15 20:34 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-15 20:33 [PATCH v2 00/10] s390/vfio-ccw rework Eric Farman
2022-06-15 20:33 ` [PATCH v2 01/10] vfio/ccw: Remove UUID from s390 debug log Eric Farman
2022-06-15 20:57   ` Kirti Wankhede
2022-06-15 20:33 ` Eric Farman [this message]
2022-06-15 20:33 ` [PATCH v2 03/10] vfio/ccw: Do not change FSM state in subchannel event Eric Farman
2022-06-16 15:35   ` Matthew Rosato
2022-06-16 17:13     ` Eric Farman
2022-06-15 20:33 ` [PATCH v2 04/10] vfio/ccw: Remove private->mdev Eric Farman
2022-06-16 15:36   ` Matthew Rosato
2022-06-23 14:59   ` Jason Gunthorpe
2022-06-15 20:33 ` [PATCH v2 05/10] vfio/ccw: Pass enum to FSM event jumptable Eric Farman
2022-06-15 20:33 ` [PATCH v2 06/10] vfio/ccw: Flatten MDEV device (un)register Eric Farman
2022-06-15 20:33 ` [PATCH v2 07/10] vfio/ccw: Create an OPEN FSM Event Eric Farman
2022-06-16 16:33   ` Matthew Rosato
2022-06-16 17:14     ` Eric Farman
2022-06-16 17:18       ` Matthew Rosato
2022-06-15 20:33 ` [PATCH v2 08/10] vfio/ccw: Create a CLOSE FSM event Eric Farman
2022-06-16 16:48   ` Matthew Rosato
2022-06-15 20:33 ` [PATCH v2 09/10] vfio/ccw: Refactor vfio_ccw_mdev_reset Eric Farman
2022-06-15 20:33 ` [PATCH v2 10/10] vfio/ccw: Move FSM open/close to MDEV open/close Eric Farman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220615203318.3830778-3-farman@linux.ibm.com \
    --to=farman@linux.ibm.com \
    --cc=alex.williamson@redhat.com \
    --cc=cohuck@redhat.com \
    --cc=jgg@nvidia.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=mjrosato@linux.ibm.com \
    --cc=pasic@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.