Patch "hisi_acc_vfio_pci: Update migration data pointer correctly on saving/resume" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    hisi_acc_vfio_pci: Update migration data pointer correctly on saving/resume

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     hisi_acc_vfio_pci-update-migration-data-pointer-corr.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 836b647f3c82ebf4d078f0c20aa8e96d18be1349
Author: Shameer Kolothum <shameerali.kolothum.thodi@xxxxxxxxxx>
Date:   Mon Nov 20 09:14:06 2023 +0000

    hisi_acc_vfio_pci: Update migration data pointer correctly on saving/resume
    
    [ Upstream commit be12ad45e15b5ee0e2526a50266ba1d295d26a88 ]
    
    When the optional PRE_COPY support was added to speed up the device
    compatibility check, it failed to update the saving/resuming data
    pointers based on the fd offset. This results in migration data
    corruption and when the device gets started on the destination the
    following error is reported in some cases,
    
    [  478.907684] arm-smmu-v3 arm-smmu-v3.2.auto: event 0x10 received:
    [  478.913691] arm-smmu-v3 arm-smmu-v3.2.auto:  0x0000310200000010
    [  478.919603] arm-smmu-v3 arm-smmu-v3.2.auto:  0x000002088000007f
    [  478.925515] arm-smmu-v3 arm-smmu-v3.2.auto:  0x0000000000000000
    [  478.931425] arm-smmu-v3 arm-smmu-v3.2.auto:  0x0000000000000000
    [  478.947552] hisi_zip 0000:31:00.0: qm_axi_rresp [error status=0x1] found
    [  478.955930] hisi_zip 0000:31:00.0: qm_db_timeout [error status=0x400] found
    [  478.955944] hisi_zip 0000:31:00.0: qm sq doorbell timeout in function 2
    
    Fixes: d9a871e4a143 ("hisi_acc_vfio_pci: Introduce support for PRE_COPY state transitions")
    Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@xxxxxxxxxx>
    Reviewed-by: Jason Gunthorpe <jgg@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20231120091406.780-1-shameerali.kolothum.thodi@xxxxxxxxxx
    Signed-off-by: Alex Williamson <alex.williamson@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
index b2f9778c8366..4d27465c8f1a 100644
--- a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
+++ b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
@@ -694,6 +694,7 @@ static ssize_t hisi_acc_vf_resume_write(struct file *filp, const char __user *bu
 					size_t len, loff_t *pos)
 {
 	struct hisi_acc_vf_migration_file *migf = filp->private_data;
+	u8 *vf_data = (u8 *)&migf->vf_data;
 	loff_t requested_length;
 	ssize_t done = 0;
 	int ret;
@@ -715,7 +716,7 @@ static ssize_t hisi_acc_vf_resume_write(struct file *filp, const char __user *bu
 		goto out_unlock;
 	}
 
-	ret = copy_from_user(&migf->vf_data, buf, len);
+	ret = copy_from_user(vf_data + *pos, buf, len);
 	if (ret) {
 		done = -EFAULT;
 		goto out_unlock;
@@ -835,7 +836,9 @@ static ssize_t hisi_acc_vf_save_read(struct file *filp, char __user *buf, size_t
 
 	len = min_t(size_t, migf->total_length - *pos, len);
 	if (len) {
-		ret = copy_to_user(buf, &migf->vf_data, len);
+		u8 *vf_data = (u8 *)&migf->vf_data;
+
+		ret = copy_to_user(buf, vf_data + *pos, len);
 		if (ret) {
 			done = -EFAULT;
 			goto out_unlock;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux