[PATCH v6 3/6] vfio: use vfio_pci_core_setup_barmap to map bar in mmap

ankita@nvidia.com posted 6 patches 6 days, 6 hours ago
There is a newer version of this series
[PATCH v6 3/6] vfio: use vfio_pci_core_setup_barmap to map bar in mmap
Posted by ankita@nvidia.com 6 days, 6 hours ago
From: Ankit Agrawal <ankita@nvidia.com>

Remove code duplication in vfio_pci_core_mmap by calling
vfio_pci_core_setup_barmap to perform the bar mapping.

cc: Donald Dutile <ddutile@redhat.com>
Reviewed-by: Shameer Kolothum <skolothumtho@nvidia.com>
Suggested-by: Alex Williamson <alex@shazbot.org>
Signed-off-by: Ankit Agrawal <ankita@nvidia.com>
---
 drivers/vfio/pci/vfio_pci_core.c | 15 +++------------
 1 file changed, 3 insertions(+), 12 deletions(-)

diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c
index c445a53ee12e..3cc799eb75ea 100644
--- a/drivers/vfio/pci/vfio_pci_core.c
+++ b/drivers/vfio/pci/vfio_pci_core.c
@@ -1761,18 +1761,9 @@ int vfio_pci_core_mmap(struct vfio_device *core_vdev, struct vm_area_struct *vma
 	 * Even though we don't make use of the barmap for the mmap,
 	 * we need to request the region and the barmap tracks that.
 	 */
-	if (!vdev->barmap[index]) {
-		ret = pci_request_selected_regions(pdev,
-						   1 << index, "vfio-pci");
-		if (ret)
-			return ret;
-
-		vdev->barmap[index] = pci_iomap(pdev, index, 0);
-		if (!vdev->barmap[index]) {
-			pci_release_selected_regions(pdev, 1 << index);
-			return -ENOMEM;
-		}
-	}
+	ret = vfio_pci_core_setup_barmap(vdev, index);
+	if (ret)
+		return ret;
 
 	vma->vm_private_data = vdev;
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
-- 
2.34.1
Re: [PATCH v6 3/6] vfio: use vfio_pci_core_setup_barmap to map bar in mmap
Posted by Zhi Wang 6 days, 3 hours ago
On Tue, 25 Nov 2025 17:30:10 +0000
<ankita@nvidia.com> wrote:

LGTM.

Reviewed-by: Zhi Wang <zhiw@nvidia.com>

> From: Ankit Agrawal <ankita@nvidia.com>
> 
> Remove code duplication in vfio_pci_core_mmap by calling
> vfio_pci_core_setup_barmap to perform the bar mapping.
> 
> cc: Donald Dutile <ddutile@redhat.com>
> Reviewed-by: Shameer Kolothum <skolothumtho@nvidia.com>
> Suggested-by: Alex Williamson <alex@shazbot.org>
> Signed-off-by: Ankit Agrawal <ankita@nvidia.com>
> ---
>  drivers/vfio/pci/vfio_pci_core.c | 15 +++------------
>  1 file changed, 3 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/vfio/pci/vfio_pci_core.c
> b/drivers/vfio/pci/vfio_pci_core.c index c445a53ee12e..3cc799eb75ea
> 100644 --- a/drivers/vfio/pci/vfio_pci_core.c
> +++ b/drivers/vfio/pci/vfio_pci_core.c
> @@ -1761,18 +1761,9 @@ int vfio_pci_core_mmap(struct vfio_device
> *core_vdev, struct vm_area_struct *vma
>  	 * Even though we don't make use of the barmap for the mmap,
>  	 * we need to request the region and the barmap tracks that.
>  	 */
> -	if (!vdev->barmap[index]) {
> -		ret = pci_request_selected_regions(pdev,
> -						   1 << index,
> "vfio-pci");
> -		if (ret)
> -			return ret;
> -
> -		vdev->barmap[index] = pci_iomap(pdev, index, 0);
> -		if (!vdev->barmap[index]) {
> -			pci_release_selected_regions(pdev, 1 <<
> index);
> -			return -ENOMEM;
> -		}
> -	}
> +	ret = vfio_pci_core_setup_barmap(vdev, index);
> +	if (ret)
> +		return ret;
>  
>  	vma->vm_private_data = vdev;
>  	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);