From patchwork Mon Nov 20 09:14:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shameerali Kolothum Thodi X-Patchwork-Id: 166999 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp2074473vqn; Mon, 20 Nov 2023 01:17:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IFtrXXYkIslPR/c6hNKxc/wv99lvK/6WrZXwD5zpkXs3/oASAuY/iJURwetBEk8P5Mi9xGa X-Received: by 2002:a05:6871:e717:b0:1f9:5732:f303 with SMTP id qa23-20020a056871e71700b001f95732f303mr71907oac.9.1700471851600; Mon, 20 Nov 2023 01:17:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700471851; cv=none; d=google.com; s=arc-20160816; b=pPXRVdnsEKve+5cqSt/oqLXCqC042rIWoymfaKMwg4eb2mWyxCsgoRMYdpde5xvhxl X9sTgQ3gbCu8nveiiTt/wAxQknh4dIBpcJs98byM+Tmk3iU0uH7xqXzpg7SMVzlNr4NF T1v5Z5GJQDhc1ixUU0sxm4MGQPhRbJKH/4A+fbtxxH5RFiuf1wO9+Rw8Tm91nEv+qK6s C9oGfZq/r/EKA0yq84GEmVUQlbnHWIzB2RXOHI0ARh0H4Fuq4sAKCxvjzXYq4e0xws5w KaeYZ4EPksjGb2FCvjcUgpy7NNoMFmQGfdbX2CkoYg3+WpJdmo6deuxC4+7RDEkR9Hnr LTcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=8zHUrr8J/nXMnxtkgzVgLKpPuazGe59hI0FfPAagoe8=; fh=X78uObPZhiX10ihKsH+3NsRndb5gmihRXvHkV0QhRv8=; b=RGnR0TOZ/AiCfNkEYpafuBkKT8bBneqAc9Dpfd25c5+xobqH+V2MJ3sViDywWNU6w5 PK9+xyIeAvRmHfht8WaSFNhPhZALLTeBZWuEuyzPDWLezHTHL8/vC3kahp53+WE/ze/8 owFqQ2E7Ne5KrvPKViGzuEwIU6GdZyFmJZVXZB5zNTbU/BjIS/+EPG6RaMktMGh6leU6 /RtYNBq21VQwWxJ32L5nRRwJMWYUQ5UVe3nmFdbnc4GnqTbxny/vJRcH9ovDXoAMAmdG o++g4XklRUwOorj+MxevGOwbyEu/1AZfXfSiRh9lbaC7s+ioeQE0KSUq7YxAvRuTS0kd 8lSw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id 37-20020a630b25000000b005c219362529si5494980pgl.348.2023.11.20.01.17.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Nov 2023 01:17:31 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 6F4E2807C6F7; Mon, 20 Nov 2023 01:15:25 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232501AbjKTJPH (ORCPT + 27 others); Mon, 20 Nov 2023 04:15:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41594 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232444AbjKTJPG (ORCPT ); Mon, 20 Nov 2023 04:15:06 -0500 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 52071B8; Mon, 20 Nov 2023 01:15:02 -0800 (PST) Received: from lhrpeml500005.china.huawei.com (unknown [172.18.147.207]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4SYhYB4rH6z6JBGD; Mon, 20 Nov 2023 17:10:06 +0800 (CST) Received: from A2006125610.china.huawei.com (10.202.227.178) by lhrpeml500005.china.huawei.com (7.191.163.240) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.31; Mon, 20 Nov 2023 09:14:55 +0000 From: Shameer Kolothum To: , CC: , , , , , Subject: [PATCH] hisi_acc_vfio_pci: Update migration data pointer correctly on saving/resume Date: Mon, 20 Nov 2023 09:14:06 +0000 Message-ID: <20231120091406.780-1-shameerali.kolothum.thodi@huawei.com> X-Mailer: git-send-email 2.12.0.windows.1 MIME-Version: 1.0 X-Originating-IP: [10.202.227.178] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To lhrpeml500005.china.huawei.com (7.191.163.240) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Mon, 20 Nov 2023 01:15:25 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1783073972564773830 X-GMAIL-MSGID: 1783073972564773830 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 Reviewed-by: Jason Gunthorpe --- drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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;