All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Krowiak <akrowiak@linux.ibm.com>
To: sashiko-reviews@lists.linux.dev
Cc: Alexander Gordeev <agordeev@linux.ibm.com>,
	kvm@vger.kernel.org, Vasily Gorbik <gor@linux.ibm.com>,
	linux-s390@vger.kernel.org, Heiko Carstens <hca@linux.ibm.com>
Subject: Re: [PATCH v7 12/15] s390/vfio-ap: Transition device migration state from STOP to RUNNING and vice versa
Date: Thu, 8 Oct 2026 14:41:20 -0400	[thread overview]
Message-ID: <b3795dd5-edb4-4224-bbf2-fbedf4601349@linux.ibm.com> (raw)
In-Reply-To: <20260807224358.3A73B1F000E9@smtp.kernel.org>



On 8/7/26 6:43 PM, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
> - [High] The vfio_ap_set_state callback incorrectly returns success when attempting to change state while the device is in the VFIO_DEVICE_STATE_ERROR state.
> - [High] Missing cleanup of the migration state buffer (ap_config) when migration is cancelled or completes without a device reset, leading to stale data on subsequent migrations.
> - [Medium] The transition from VFIO_DEVICE_STATE_RUNNING to VFIO_DEVICE_STATE_STOP does not actually halt the physical AP queues, violating the VFIO migration specification.
> --
>
> --- Patch [12]: [PATCH v7 12/15] s390/vfio-ap: Transition device migration state from STOP to RUNNING and vice versa ---
> commit 17303c3774ef0d4972c24647246d0a4f7d6c4f04
> Author: Anthony Krowiak <akrowiak@linux.ibm.com>
>
> s390/vfio-ap: Transition device migration state from STOP to RUNNING and vice versa
>
> This patch implements the state transitions between VFIO_DEVICE_STATE_STOP and
> VFIO_DEVICE_STATE_RUNNING for the vfio-ap device. It assumes there is no
> internal device state to incorporate and returns success for these transitions.
>
>> diff --git a/drivers/s390/crypto/vfio_ap_migration.c b/drivers/s390/crypto/vfio_ap_migration.c
>> index 30160e3dddedd..24955f70e13e2 100644
>> --- a/drivers/s390/crypto/vfio_ap_migration.c
>> +++ b/drivers/s390/crypto/vfio_ap_migration.c
>> @@ -1524,12 +1524,17 @@ vfio_ap_transition_to_state(struct ap_matrix_mdev *matrix_mdev,
>>   		return NULL;
>>   	}
>>   
>> +	/*
>> +	 * These states indicate migration has either not been initiated or
>> +	 * has completed and the vfio-ap device is operating normally. Since the
>> +	 * vfio-ap device does not virtualize a DMA device, there is no internal
>> +	 * device state to incorporate into the vfio-ap device on the target.
>> +	 */
>>   	if ((cur_state == VFIO_DEVICE_STATE_STOP &&
>>   	     new_state == VFIO_DEVICE_STATE_RUNNING) ||
>>   	    (cur_state == VFIO_DEVICE_STATE_RUNNING &&
>>   	     new_state == VFIO_DEVICE_STATE_STOP)) {
>> -		/* TODO */
>> -		return ERR_PTR(-EOPNOTSUPP);
>> +		return NULL;
> [Severity: Medium]
> Does the transition from VFIO_DEVICE_STATE_RUNNING to VFIO_DEVICE_STATE_STOP
> need to halt the physical AP queues?
>
> Since the physical AP queues are not reset (e.g., via
> vfio_ap_mdev_reset_queues) during this transition, could asynchronous
> requests in flight continue executing?
>
> If they complete, they might post adapter interrupts to the KVM GISA after
> the guest state has been saved, altering external state and leading to lost
> interrupts on the destination.

The vfio_ap driver's only role is managing the guest's AP
configuration (shadow_apcb). It has no involvement in AP operations
on the guest; the AP instructions are sent directly to the hardware.
Any in-flight AP requests on the source are part of the guest and AP
bus state that is migrated; it is the responsibility of the guest's
crypto software on the destination to handle responses from the hardware
there. No queue reset is required at this transition point.

>
> [Severity: High]
> Does the transition from VFIO_DEVICE_STATE_STOP to VFIO_DEVICE_STATE_RUNNING
> miss cleaning up the migration state buffer?
>
> If a migration is cancelled, transitioning from STOP to RUNNING now returns
> success but doesn't call vfio_ap_release_mig_files() to free ap_config.

That will be fixed in the next version of the series

>
> On a subsequent migration attempt, vfio_ap_stop_copy_read() will see the
> non-NULL ap_config and send the stale configuration instead of capturing a
> fresh one:
>
> drivers/s390/crypto/vfio_ap_migration.c:vfio_ap_stop_copy_read() {
>      ...
> 	if (!mig_file->ap_config) {
> 		ret = vfio_ap_get_config(matrix_mdev);
>      ...
> }
>
>>   	}
>>   
>>   	/* vfio_mig_get_next_state() does not use arcs other than the above */
> [Severity: High]
> With these new state transitions, does vfio_ap_set_state() still handle the
> VFIO_DEVICE_STATE_ERROR state correctly?
>
> If a migration error occurs and the device enters VFIO_DEVICE_STATE_ERROR,
> userspace might attempt to transition to another state like STOP or RUNNING.
>
> drivers/s390/crypto/vfio_ap_migration.c:vfio_ap_set_state() {
> 	struct file *filp = NULL;
>      ...
> 	while (mig_data->mig_state != VFIO_DEVICE_STATE_ERROR &&
> 	       mig_data->mig_state != new_state) {
>          ...
> 		filp = vfio_ap_transition_to_state(matrix_mdev, next_state);
>      ...
> 	return filp;
> }
>
> If mig_state is VFIO_DEVICE_STATE_ERROR, the loop condition is false,
> bypassing the transition logic. Because filp is initialized to NULL, the
> function returns success instead of rejecting the transition.

An ERROR check after the transition loop in vfio_ap_set_state() will be
added: filp will be set to ERR_PTR(-EIO).



  reply	other threads:[~2026-10-08 18:41 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-07 22:18 [PATCH v7 00/15] s390/vfio-ap: Add live guest migration support Anthony Krowiak
2026-08-07 22:18 ` [PATCH v7 01/15] s390/vfio-ap: Provide function to get the number of queues assigned to mdev Anthony Krowiak
2026-08-07 22:27   ` sashiko-bot
2026-08-10 13:14   ` Jason J. Herne
2026-08-24 15:31     ` Anthony Krowiak
2026-08-07 22:18 ` [PATCH v7 02/15] s390/vfio-ap: Data structures for facilitating vfio device migration Anthony Krowiak
2026-08-07 22:31   ` sashiko-bot
2026-08-10 13:45   ` Jason J. Herne
2026-10-05 15:18     ` Anthony Krowiak
2026-08-07 22:18 ` [PATCH v7 03/15] s390/vfio-ap: Functions to initialize/release vfio device migration data Anthony Krowiak
2026-08-07 22:38   ` sashiko-bot
2026-10-07 21:49     ` Anthony Krowiak
2026-08-11 13:57   ` Jason J. Herne
2026-10-05 15:24     ` Anthony Krowiak
2026-08-07 22:18 ` [PATCH v7 04/15] s390/vfio-ap: Reset migration state in VFIO_DEVICE_RESET ioctl handler Anthony Krowiak
2026-08-07 22:54   ` sashiko-bot
2026-08-11 17:05   ` Jason J. Herne
2026-10-05 18:52     ` Anthony Krowiak
2026-08-07 22:18 ` [PATCH v7 05/15] s390/vfio-ap: Callback to get/set vfio device mig state during guest migration Anthony Krowiak
2026-08-07 22:45   ` sashiko-bot
2026-10-08 18:44     ` Anthony Krowiak
2026-08-12 16:04   ` Jason J. Herne
2026-10-05 20:42     ` Anthony Krowiak
2026-08-07 22:18 ` [PATCH v7 06/15] s390/vfio-ap: Transition guest migration state from STOP to STOP_COPY Anthony Krowiak
2026-08-07 22:43   ` sashiko-bot
2026-08-07 22:18 ` [PATCH v7 07/15] s390/vfio-ap: File ops called to save the vfio device migration state Anthony Krowiak
2026-08-07 22:37   ` sashiko-bot
2026-08-12 12:35     ` Anthony Krowiak
2026-10-07 20:18     ` Anthony Krowiak
2026-08-13 15:08   ` Jason J. Herne
2026-10-05 21:55     ` Anthony Krowiak
2026-08-07 22:18 ` [PATCH v7 08/15] s390/vfio-ap: Transition device migration state from STOP to RESUMING Anthony Krowiak
2026-08-07 22:41   ` sashiko-bot
2026-10-08 13:08     ` Anthony Krowiak
2026-08-18 14:47   ` Jason J. Herne
2026-10-06 14:43     ` Anthony Krowiak
2026-08-07 22:18 ` [PATCH v7 09/15] s390/vfio-ap: Add method to set a new guest AP configuration Anthony Krowiak
2026-08-07 22:40   ` sashiko-bot
2026-08-19 13:25   ` Jason J. Herne
2026-10-07 13:46     ` Anthony Krowiak
2026-08-07 22:18 ` [PATCH v7 10/15] s390/vfio-ap: File ops called to resume the vfio device migration Anthony Krowiak
2026-08-07 22:30   ` sashiko-bot
2026-08-11 18:29     ` Anthony Krowiak
2026-10-07 20:08     ` Anthony Krowiak
2026-08-19 17:49   ` Jason J. Herne
2026-10-06 14:54     ` Anthony Krowiak
2026-08-07 22:18 ` [PATCH v7 11/15] s390/vfio-ap: Transition device migration state to STOP Anthony Krowiak
2026-08-07 22:54   ` sashiko-bot
2026-10-08 19:08     ` Anthony Krowiak
2026-08-20 12:43   ` Jason J. Herne
2026-10-07 19:42     ` Anthony Krowiak
2026-08-07 22:18 ` [PATCH v7 12/15] s390/vfio-ap: Transition device migration state from STOP to RUNNING and vice versa Anthony Krowiak
2026-08-07 22:43   ` sashiko-bot
2026-10-08 18:41     ` Anthony Krowiak [this message]
2026-08-20 12:45   ` Jason J. Herne
2026-10-07 19:28     ` Anthony Krowiak
2026-08-07 22:18 ` [PATCH v7 13/15] s390/vfio-ap: Callback to get the size of data to be migrated during guest migration Anthony Krowiak
2026-08-07 22:37   ` sashiko-bot
2026-08-20 12:52   ` Jason J. Herne
2026-08-07 22:18 ` [PATCH v7 14/15] s390/vfio-ap: Add 'migratable' feature to sysfs 'features' attribute Anthony Krowiak
2026-08-07 22:36   ` sashiko-bot
2026-08-20 13:01   ` Jason J. Herne
2026-10-06 21:16     ` Anthony Krowiak
2026-10-07 12:06     ` Anthony Krowiak
2026-08-07 22:18 ` [PATCH v7 15/15] s390/vfio-ap: Add live guest migration chapter to vfio-ap.rst Anthony Krowiak
2026-08-07 22:32   ` sashiko-bot

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=b3795dd5-edb4-4224-bbf2-fbedf4601349@linux.ibm.com \
    --to=akrowiak@linux.ibm.com \
    --cc=agordeev@linux.ibm.com \
    --cc=gor@linux.ibm.com \
    --cc=hca@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /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.