From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 03694446846; Fri, 24 Jul 2026 16:14:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784909690; cv=none; b=qD5DGgFr7aCNXvx7HasRyWPXZoX1pDLo6ntjpu1B8ZGwnwdVleOWJas0cCKC+3X9b3DnXpKIfjTWfBvFSH3YpBCTv96gI2VIUShLwlrSvS4RlSoSVscf3RQiduCCAWDDUoQSkDPFGh+2h17JDyr5FqqiLGvuUBoqnWOiGs++V8E= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784909690; c=relaxed/simple; bh=8Dj+xd0+jnPwTkc+A3bHLiSPi4ZOQkbWayvAXbT/yVc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hwZnm8sBqyIOkxti3T4cMWxEb0FDEUemUry7ysY0Vy+VBAWjYpyK1btSRWYMxT8ajcWcQl566ArtaqFCMcPEf1woMNi0y+XBQ+0ZKWCgI5XIJ2g5F67/yTasz289NPOrPDRUekF903Xn/ZuIZkn69axf3oJZtSamXktVgVQq1Ac= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=AYIm7Ah0; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="AYIm7Ah0" Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66ODfmTQ1974221; Fri, 24 Jul 2026 16:14:07 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=9OdWTJLCK1SsinkPp F/b/ps6OBLAcICdGKWvbMKT99I=; b=AYIm7Ah0CW/TEhbvUkbnj0oT127G5jh6w WcleF5FN6efixWNbyuZ8SyXHCmgjEY5GiZAK7j2tpI3ECE5Lw8pevtYOcXDEkjmj HyVYv07vYjl0hroNquKHJep6G35KLgFYu1xaNX7sY3PdwL7lbgBcSbIryZqv5bfA YfoicsTdXtHlzcFxTdWOnaVQETZGAMlaKIgNjDnMYEwusW6mFDX28H/lHxhzyAjN nqF+hoAMcGPVhjAFpk75aygaw6s0GvapC3FpYV+eJrF3I02nqvzqQESAaRJjRjND krx85BqV/uacv+EwzKL+yEpw4PGLdsCOxPhNxu/iy+5hEN88oPy/A== Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fm8h50u4v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Jul 2026 16:14:06 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 66OG4bNs026009; Fri, 24 Jul 2026 16:14:05 GMT Received: from smtprelay06.wdc07v.mail.ibm.com ([172.16.1.73]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fgm6whr22-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Jul 2026 16:14:05 +0000 (GMT) Received: from smtpav06.wdc07v.mail.ibm.com (smtpav06.wdc07v.mail.ibm.com [10.39.53.233]) by smtprelay06.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66OGE4KI25887382 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Jul 2026 16:14:04 GMT Received: from smtpav06.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6B2635804E; Fri, 24 Jul 2026 16:14:04 +0000 (GMT) Received: from smtpav06.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DB4615803F; Fri, 24 Jul 2026 16:14:02 +0000 (GMT) Received: from li-4c4c4544-004d-4810-8043-b7c04f423534.ibm.com.com (unknown [9.61.50.28]) by smtpav06.wdc07v.mail.ibm.com (Postfix) with ESMTP; Fri, 24 Jul 2026 16:14:02 +0000 (GMT) From: Anthony Krowiak To: linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: jjherne@linux.ibm.com, borntraeger@de.ibm.com, mjrosato@linux.ibm.com, pasic@linux.ibm.com, alex@shazbot.org, kwankhede@nvidia.com, fiuczy@linux.ibm.com, pbonzini@redhat.com, frankja@linux.ibm.com, imbrenda@linux.ibm.com, agordeev@linux.ibm.com, hca@linux.ibm.com, gor@linux.ibm.com Subject: [PATCH v5 06/15] s390/vfio-ap: Transition guest migration state from STOP to STOP_COPY Date: Fri, 24 Jul 2026 12:13:42 -0400 Message-ID: <20260724161351.1802644-7-akrowiak@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260724161351.1802644-1-akrowiak@linux.ibm.com> References: <20260724161351.1802644-1-akrowiak@linux.ibm.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDE0NSBTYWx0ZWRfX9OGv7dG8TKvL TliOEqUU8mFugQnDfZ6OsGXp9v8IvLl6Zf3hcttW0J+6jjoKnP6J8APf7tFtc2xhS6ceufbNM6Q lRuSZZyM/JUk/qXXevuJtL0qffosAWQ= X-Proofpoint-ORIG-GUID: Aaz-aIQvjSR2qYontx5WDXtX-6ktncZA X-Proofpoint-GUID: Aaz-aIQvjSR2qYontx5WDXtX-6ktncZA X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDE0NSBTYWx0ZWRfX1gmQUCYg1T8O 1ySsARd1pHe8J+BJL+P1ki9jEdk2DoyYvXQ4CkpaXH5NVZC1vt0wxD6ThLSHuz8CnWvxVaujmXV fbIGfJpQ9m/ZWjiPDux/DVJTfdW4g/rd7D0nznCW2S96Ga+Ck0hWjwYKzYW12qENlErTodLNxFm a4jX5tUxu7ld+06pbvs2oW7KPvnmGAnulnqzM1r8TrxUoBKO6qNYX+Y2DdESE6reJlSiaodtcQw aekmffAJqJ/S4NRp/+W/bF2VfTP0Q0XbCJ49hCosikQvP26ctS84kylaym49KVSHgyWtWxu/GSh D+ZGX5sgK8QwhdWgifFiKdoVhxSs+mh9dMZL/CKlKv9ONvPNcOBb8pUFhD4dRH6pJpdnq7aNSLB 7vayrV749P7q3ckS1zGwoaitTdoeCcqqYtCYV6UHcGElPoGpZCBH6nExuqxDlhYfzF+bGNMsXS6 eMJp2uiIyisF1C+Pe9A== X-Authority-Analysis: v=2.4 cv=du3rzVg4 c=1 sm=1 tr=0 ts=6a638f4e cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=_8NKb_9EqzLue2x-dRcA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_03,2026-07-24_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 malwarescore=0 spamscore=0 impostorscore=0 phishscore=0 bulkscore=0 priorityscore=1501 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240145 The transition of the guest migration state from VFIO_DEVICE_STATE_STOP to VFIO_DEVICE_STATE_STOP_COPY begins the process of saving the vfio device state. The vfio device state is comprised of the guest's AP configuration which specifies the adapters, domains and control domains to which the guest will be given access. To begin the process of saving the vfio device state, the VFIO AP device driver opens a file stream that will be used to read the source guest's AP configuration. Note: This commit introduces the file operations structure for migration state files with a stub implementation of the read operation. The complete implementation is provided in the subsequent commit. This incremental approach allows for easier review of the migration infrastructure setup separate from the actual implementation logic. Signed-off-by: Anthony Krowiak --- drivers/s390/crypto/vfio_ap_migration.c | 78 ++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 2 deletions(-) diff --git a/drivers/s390/crypto/vfio_ap_migration.c b/drivers/s390/crypto/vfio_ap_migration.c index 17cabd7541e7..e566250a88ea 100644 --- a/drivers/s390/crypto/vfio_ap_migration.c +++ b/drivers/s390/crypto/vfio_ap_migration.c @@ -4,6 +4,7 @@ * * Copyright IBM Corp. 2025 */ +#include #include #include "vfio_ap_private.h" @@ -72,6 +73,67 @@ struct vfio_ap_config { struct vfio_ap_queue_info qinfo[] __counted_by(num_queues); }; +static void +vfio_ap_release_stop_copy_file(struct vfio_ap_migration_data *mig_data) +{ + kfree(mig_data->stop_copy_mig_file.ap_config); + mig_data->stop_copy_mig_file.ap_config = NULL; + mig_data->stop_copy_mig_file.config_sz = 0; + mig_data->stop_copy_mig_file.filp = NULL; +} + +static ssize_t +vfio_ap_stop_copy_read(struct file *, char __user *, size_t, loff_t *) +{ + /* TODO */ + return -EOPNOTSUPP; +} + +static int vfio_ap_release_mig_file(struct inode *file_inode, struct file *filp) +{ + struct ap_matrix_mdev *matrix_mdev; + int ret = 0; + + mutex_lock(&matrix_dev->mdevs_lock); + + matrix_mdev = filp->private_data; + if (!matrix_mdev || !matrix_mdev->mig_data) { + ret = -ENODEV; + goto done; + } + + if (filp == matrix_mdev->mig_data->stop_copy_mig_file.filp) + vfio_ap_release_stop_copy_file(matrix_mdev->mig_data); + else + ret = -ENOENT; + +done: + mutex_unlock(&matrix_dev->mdevs_lock); + return ret; +} + +static const struct file_operations vfio_ap_stop_copy_fops = { + .owner = THIS_MODULE, + .read = vfio_ap_stop_copy_read, + .compat_ioctl = compat_ptr_ioctl, + .release = vfio_ap_release_mig_file, +}; + +static struct file *vfio_ap_open_file_stream(struct ap_matrix_mdev *matrix_mdev, + const struct file_operations *fops, + int flags) +{ + struct file *filp; + + lockdep_assert_held(&matrix_dev->mdevs_lock); + + filp = anon_inode_getfile("vfio_ap_mig_file", fops, matrix_mdev, flags); + if (!IS_ERR(filp)) + stream_open(filp->f_inode, filp); + + return filp; +} + static struct file * vfio_ap_transition_to_state(struct ap_matrix_mdev *matrix_mdev, enum vfio_device_mig_state new_state) @@ -85,10 +147,22 @@ vfio_ap_transition_to_state(struct ap_matrix_mdev *matrix_mdev, dev_dbg(matrix_mdev->vdev.dev, "%s: %d -> %d\n", __func__, cur_state, new_state); + /* + * Begins the process of saving the vfio device state by creating and + * returning a streaming data_fd to be used to read out the internal + * state of the vfio-ap device on the source host. + */ if (cur_state == VFIO_DEVICE_STATE_STOP && new_state == VFIO_DEVICE_STATE_STOP_COPY) { - /* TODO */ - return ERR_PTR(-EOPNOTSUPP); + struct file *filp = vfio_ap_open_file_stream(matrix_mdev, + &vfio_ap_stop_copy_fops, + O_RDONLY); + if (IS_ERR(filp)) + return ERR_CAST(filp); + + mig_data->stop_copy_mig_file.filp = filp; + + return filp; } if (cur_state == VFIO_DEVICE_STATE_STOP && -- 2.53.0