From: Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>
To: liulongfang <liulongfang@huawei.com>,
"alex.williamson@redhat.com" <alex.williamson@redhat.com>,
"jgg@nvidia.com" <jgg@nvidia.com>,
"Jonathan Cameron" <jonathan.cameron@huawei.com>
Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linuxarm@openeuler.org" <linuxarm@openeuler.org>
Subject: RE: [PATCH v4 1/3] migration: update BAR space size
Date: Tue, 24 Jun 2025 07:03:04 +0000 [thread overview]
Message-ID: <3ec5ffdee2f64c74a82093c06612f59b@huawei.com> (raw)
In-Reply-To: <20250610063251.27526-2-liulongfang@huawei.com>
> -----Original Message-----
> From: liulongfang <liulongfang@huawei.com>
> Sent: Tuesday, June 10, 2025 7:33 AM
> To: alex.williamson@redhat.com; jgg@nvidia.com; Shameerali Kolothum
> Thodi <shameerali.kolothum.thodi@huawei.com>; Jonathan Cameron
> <jonathan.cameron@huawei.com>
> Cc: kvm@vger.kernel.org; linux-kernel@vger.kernel.org;
> linuxarm@openeuler.org; liulongfang <liulongfang@huawei.com>
> Subject: [PATCH v4 1/3] migration: update BAR space size
>
> On the new hardware platform, the live migration configuration region
> is moved from VF to PF. The VF's own configuration space is
> restored to the complete 64KB, and there is no need to divide the
> size of the BAR configuration space equally.
>
> Signed-off-by: Longfang Liu <liulongfang@huawei.com>
> ---
> .../vfio/pci/hisilicon/hisi_acc_vfio_pci.c | 36 ++++++++++++++-----
> 1 file changed, 27 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
> b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
> index 2149f49aeec7..b16115f590fd 100644
> --- a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
> +++ b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
> @@ -1250,6 +1250,28 @@ static struct hisi_qm *hisi_acc_get_pf_qm(struct
> pci_dev *pdev)
> return !IS_ERR(pf_qm) ? pf_qm : NULL;
> }
>
> +static size_t hisi_acc_get_resource_len(struct vfio_pci_core_device *vdev,
> + unsigned int index)
> +{
> + struct hisi_acc_vf_core_device *hisi_acc_vdev =
> + hisi_acc_drvdata(vdev->pdev);
> +
> + /*
> + * On the old HW_V3 device, the ACC VF device BAR2
> + * region encompasses both functional register space
> + * and migration control register space.
> + * only the functional region should be report to Guest.
> + *
> + * On the new HW device, the migration control register
> + * has been moved to the PF device BAR2 region.
> + * The VF device BAR2 is entirely functional register space.
> + */
> + if (hisi_acc_vdev->pf_qm->ver == QM_HW_V3)
> + return (pci_resource_len(vdev->pdev, index) >> 1);
> +
> + return pci_resource_len(vdev->pdev, index);
> +}
> +
> static int hisi_acc_pci_rw_access_check(struct vfio_device *core_vdev,
> size_t count, loff_t *ppos,
> size_t *new_count)
> @@ -1260,8 +1282,9 @@ static int hisi_acc_pci_rw_access_check(struct
> vfio_device *core_vdev,
>
> if (index == VFIO_PCI_BAR2_REGION_INDEX) {
> loff_t pos = *ppos & VFIO_PCI_OFFSET_MASK;
> - resource_size_t end = pci_resource_len(vdev->pdev, index) /
> 2;
> + resource_size_t end;
>
> + end = hisi_acc_get_resource_len(vdev, index);
> /* Check if access is for migration control region */
> if (pos >= end)
> return -EINVAL;
> @@ -1282,8 +1305,9 @@ static int hisi_acc_vfio_pci_mmap(struct
> vfio_device *core_vdev,
> index = vma->vm_pgoff >> (VFIO_PCI_OFFSET_SHIFT - PAGE_SHIFT);
> if (index == VFIO_PCI_BAR2_REGION_INDEX) {
> u64 req_len, pgoff, req_start;
> - resource_size_t end = pci_resource_len(vdev->pdev, index) /
> 2;
> + resource_size_t end;
>
> + end = PAGE_ALIGN(hisi_acc_get_resource_len(vdev, index));
I think I have commented on this before. The above PAGE_ALIGN will change the
behavior on HW_V3 with 64K PAGE_SIZE kernel. The end will become 64K which
is not what we want on HW_V3. Could you please check that again.
Thanks,
Shameer
> req_len = vma->vm_end - vma->vm_start;
> pgoff = vma->vm_pgoff &
> ((1U << (VFIO_PCI_OFFSET_SHIFT - PAGE_SHIFT)) - 1);
> @@ -1330,7 +1354,6 @@ static long hisi_acc_vfio_pci_ioctl(struct
> vfio_device *core_vdev, unsigned int
> if (cmd == VFIO_DEVICE_GET_REGION_INFO) {
> struct vfio_pci_core_device *vdev =
> container_of(core_vdev, struct vfio_pci_core_device,
> vdev);
> - struct pci_dev *pdev = vdev->pdev;
> struct vfio_region_info info;
> unsigned long minsz;
>
> @@ -1345,12 +1368,7 @@ static long hisi_acc_vfio_pci_ioctl(struct
> vfio_device *core_vdev, unsigned int
> if (info.index == VFIO_PCI_BAR2_REGION_INDEX) {
> info.offset =
> VFIO_PCI_INDEX_TO_OFFSET(info.index);
>
> - /*
> - * ACC VF dev BAR2 region consists of both
> functional
> - * register space and migration control register
> space.
> - * Report only the functional region to Guest.
> - */
> - info.size = pci_resource_len(pdev, info.index) / 2;
> + info.size = hisi_acc_get_resource_len(vdev,
> info.index);
>
> info.flags = VFIO_REGION_INFO_FLAG_READ |
> VFIO_REGION_INFO_FLAG_WRITE |
> --
> 2.24.0
next prev parent reply other threads:[~2025-06-24 7:03 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-10 6:32 [PATCH v4 0/3] update live migration configuration region Longfang Liu
2025-06-10 6:32 ` [PATCH v4 1/3] migration: update BAR space size Longfang Liu
2025-06-24 7:03 ` Shameerali Kolothum Thodi [this message]
2025-06-25 7:26 ` liulongfang
2025-06-10 6:32 ` [PATCH v4 2/3] migration: qm updates BAR configuration Longfang Liu
2025-06-24 7:06 ` Shameerali Kolothum Thodi
2025-06-25 7:31 ` liulongfang
2025-06-10 6:32 ` [PATCH v4 3/3] migration: adapt to new migration configuration Longfang Liu
2025-06-24 7:10 ` Shameerali Kolothum Thodi
2025-06-25 7:43 ` liulongfang
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=3ec5ffdee2f64c74a82093c06612f59b@huawei.com \
--to=shameerali.kolothum.thodi@huawei.com \
--cc=alex.williamson@redhat.com \
--cc=jgg@nvidia.com \
--cc=jonathan.cameron@huawei.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxarm@openeuler.org \
--cc=liulongfang@huawei.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.