[PATCH] vfio/region: Clarify dma-buf failure messages

Cédric Le Goater posted 1 patch 1 week, 3 days ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260715070622.198400-1-clg@redhat.com
Maintainers: Alex Williamson <alex@shazbot.org>, "Cédric Le Goater" <clg@redhat.com>
hw/vfio/region.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
[PATCH] vfio/region: Clarify dma-buf failure messages
Posted by Cédric Le Goater 1 week, 3 days ago
The dma-buf failure messages in vfio_region_create_dma_buf() say "PCI
BAR IOMMU mappings may fail", which suggests the BAR is broken. In
practice, only P2P DMA is affected -- normal passthrough uses the mmap
fallback.

Reword both messages to mention P2P DMA explicitly and clarify that
the mmap fallback is in use. Use warn_report_err_once() at the call
site so per-BAR repetition on mdev devices is suppressed.

Fixes: dcf1b77e834d ("hw/vfio/region: Create dmabuf for PCI BAR per region")
Cc: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Cédric Le Goater <clg@redhat.com>
---
 hw/vfio/region.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/hw/vfio/region.c b/hw/vfio/region.c
index dbde3391802691888ca31d5e329aba5ba680feb4..54ad11a6c8ed8e04fa365262ccb8bd694bdb45f7 100644
--- a/hw/vfio/region.c
+++ b/hw/vfio/region.c
@@ -321,13 +321,12 @@ static bool vfio_region_create_dma_buf(VFIORegion *region, Error **errp)
     ret = vfio_device_get_feature(vbasedev, feature);
     if (ret < 0) {
         if (ret == -ENOTTY) {
-            warn_report_once("VFIO dma-buf not supported in kernel: "
-                             "PCI BAR IOMMU mappings may fail");
+            warn_report_once("VFIO dma-buf not supported in kernel, "
+                             "using mmap fallback, P2P DMA will not work");
             return true;
         }
-        /* P2P DMA or exposing device memory use cases are not supported. */
-        error_setg_errno(errp, -ret, "%s: failed to create dma-buf: "
-                         "PCI BAR IOMMU mappings may fail",
+        error_setg_errno(errp, -ret, "%s: dma-buf unavailable, "
+                         "using mmap fallback, P2P DMA will not work",
                          memory_region_name(region->mem));
         return false;
     }
@@ -448,7 +447,7 @@ int vfio_region_mmap(VFIORegion *region)
     }
 
     if (!vfio_region_create_dma_buf(region, &local_err)) {
-        error_report_err(local_err);
+        warn_report_err_once(local_err);
     }
 
     return 0;
-- 
2.55.0


Re: [PATCH] vfio/region: Clarify dma-buf failure messages
Posted by Rodolfo Vick 1 day, 22 hours ago
On 7/15/26 04:06, Cédric Le Goater wrote:
> The dma-buf failure messages in vfio_region_create_dma_buf() say "PCI
> BAR IOMMU mappings may fail", which suggests the BAR is broken. In
> practice, only P2P DMA is affected -- normal passthrough uses the mmap
> fallback.
> 
> Reword both messages to mention P2P DMA explicitly and clarify that
> the mmap fallback is in use. Use warn_report_err_once() at the call
> site so per-BAR repetition on mdev devices is suppressed.
> 
> Fixes: dcf1b77e834d ("hw/vfio/region: Create dmabuf for PCI BAR per region")
> Cc: Nicolin Chen <nicolinc@nvidia.com>
> Signed-off-by: Cédric Le Goater <clg@redhat.com>
> ---
>   hw/vfio/region.c | 11 +++++------
>   1 file changed, 5 insertions(+), 6 deletions(-)
> 
> diff --git a/hw/vfio/region.c b/hw/vfio/region.c
> index dbde3391802691888ca31d5e329aba5ba680feb4..54ad11a6c8ed8e04fa365262ccb8bd694bdb45f7 100644
> --- a/hw/vfio/region.c
> +++ b/hw/vfio/region.c
> @@ -321,13 +321,12 @@ static bool vfio_region_create_dma_buf(VFIORegion *region, Error **errp)
>       ret = vfio_device_get_feature(vbasedev, feature);
>       if (ret < 0) {
>           if (ret == -ENOTTY) {
> -            warn_report_once("VFIO dma-buf not supported in kernel: "
> -                             "PCI BAR IOMMU mappings may fail");
> +            warn_report_once("VFIO dma-buf not supported in kernel, "
> +                             "using mmap fallback, P2P DMA will not work");
>               return true;
>           }
> -        /* P2P DMA or exposing device memory use cases are not supported. */
> -        error_setg_errno(errp, -ret, "%s: failed to create dma-buf: "
> -                         "PCI BAR IOMMU mappings may fail",
> +        error_setg_errno(errp, -ret, "%s: dma-buf unavailable, "
> +                         "using mmap fallback, P2P DMA will not work",
>                            memory_region_name(region->mem));
>           return false;
>       }
> @@ -448,7 +447,7 @@ int vfio_region_mmap(VFIORegion *region)
>       }
>   
>       if (!vfio_region_create_dma_buf(region, &local_err)) {
> -        error_report_err(local_err);
> +        warn_report_err_once(local_err);
>       }
>   
>       return 0;

Reviewed-by: Rodolfo Vick <rovick@redhat.com>


Re: [PATCH] vfio/region: Clarify dma-buf failure messages
Posted by Michael Tokarev 2 days, 20 hours ago
On 7/15/26 10:06, Cédric Le Goater wrote:
> The dma-buf failure messages in vfio_region_create_dma_buf() say "PCI
> BAR IOMMU mappings may fail", which suggests the BAR is broken. In
> practice, only P2P DMA is affected -- normal passthrough uses the mmap
> fallback.
> 
> Reword both messages to mention P2P DMA explicitly and clarify that
> the mmap fallback is in use. Use warn_report_err_once() at the call
> site so per-BAR repetition on mdev devices is suppressed.
> 
> Fixes: dcf1b77e834d ("hw/vfio/region: Create dmabuf for PCI BAR per region")

FWIW (it's applied to master branch already), this is commit 8cfaf22668c,
not dcf1b77e834d.

Thanks,

/mjt

Re: [PATCH] vfio/region: Clarify dma-buf failure messages
Posted by Cédric Le Goater 2 days, 10 hours ago
On 7/22/26 23:29, Michael Tokarev wrote:
> On 7/15/26 10:06, Cédric Le Goater wrote:
>> The dma-buf failure messages in vfio_region_create_dma_buf() say "PCI
>> BAR IOMMU mappings may fail", which suggests the BAR is broken. In
>> practice, only P2P DMA is affected -- normal passthrough uses the mmap
>> fallback.
>>
>> Reword both messages to mention P2P DMA explicitly and clarify that
>> the mmap fallback is in use. Use warn_report_err_once() at the call
>> site so per-BAR repetition on mdev devices is suppressed.
>>
>> Fixes: dcf1b77e834d ("hw/vfio/region: Create dmabuf for PCI BAR per region")
> 
> FWIW (it's applied to master branch already), this is commit 8cfaf22668c,
> not dcf1b77e834d.
> 
My bad, dcf1b77e834d is the same commit in an old local vfio-next branch :/
I sent a scripts/checkpatch update to catch these.

Thanks,

C.


Re: [PATCH] vfio/region: Clarify dma-buf failure messages
Posted by Philippe Mathieu-Daudé 4 days, 7 hours ago
On 15/7/26 09:06, Cédric Le Goater wrote:
> The dma-buf failure messages in vfio_region_create_dma_buf() say "PCI
> BAR IOMMU mappings may fail", which suggests the BAR is broken. In
> practice, only P2P DMA is affected -- normal passthrough uses the mmap
> fallback.
> 
> Reword both messages to mention P2P DMA explicitly and clarify that
> the mmap fallback is in use. Use warn_report_err_once() at the call
> site so per-BAR repetition on mdev devices is suppressed.
> 
> Fixes: dcf1b77e834d ("hw/vfio/region: Create dmabuf for PCI BAR per region")
> Cc: Nicolin Chen <nicolinc@nvidia.com>
> Signed-off-by: Cédric Le Goater <clg@redhat.com>
> ---
>   hw/vfio/region.c | 11 +++++------
>   1 file changed, 5 insertions(+), 6 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>

Re: [PATCH] vfio/region: Clarify dma-buf failure messages
Posted by Cédric Le Goater 1 week, 1 day ago
On 7/15/26 09:06, Cédric Le Goater wrote:
> The dma-buf failure messages in vfio_region_create_dma_buf() say "PCI
> BAR IOMMU mappings may fail", which suggests the BAR is broken. In
> practice, only P2P DMA is affected -- normal passthrough uses the mmap
> fallback.
> 
> Reword both messages to mention P2P DMA explicitly and clarify that
> the mmap fallback is in use. Use warn_report_err_once() at the call
> site so per-BAR repetition on mdev devices is suppressed.
> 
> Fixes: dcf1b77e834d ("hw/vfio/region: Create dmabuf for PCI BAR per region")
> Cc: Nicolin Chen <nicolinc@nvidia.com>
> Signed-off-by: Cédric Le Goater <clg@redhat.com>
> ---
>   hw/vfio/region.c | 11 +++++------
>   1 file changed, 5 insertions(+), 6 deletions(-)
> 
> diff --git a/hw/vfio/region.c b/hw/vfio/region.c
> index dbde3391802691888ca31d5e329aba5ba680feb4..54ad11a6c8ed8e04fa365262ccb8bd694bdb45f7 100644
> --- a/hw/vfio/region.c
> +++ b/hw/vfio/region.c
> @@ -321,13 +321,12 @@ static bool vfio_region_create_dma_buf(VFIORegion *region, Error **errp)
>       ret = vfio_device_get_feature(vbasedev, feature);
>       if (ret < 0) {
>           if (ret == -ENOTTY) {
> -            warn_report_once("VFIO dma-buf not supported in kernel: "
> -                             "PCI BAR IOMMU mappings may fail");
> +            warn_report_once("VFIO dma-buf not supported in kernel, "
> +                             "using mmap fallback, P2P DMA will not work");
>               return true;
>           }
> -        /* P2P DMA or exposing device memory use cases are not supported. */
> -        error_setg_errno(errp, -ret, "%s: failed to create dma-buf: "
> -                         "PCI BAR IOMMU mappings may fail",
> +        error_setg_errno(errp, -ret, "%s: dma-buf unavailable, "
> +                         "using mmap fallback, P2P DMA will not work",
>                            memory_region_name(region->mem));
>           return false;
>       }
> @@ -448,7 +447,7 @@ int vfio_region_mmap(VFIORegion *region)
>       }
>   
>       if (!vfio_region_create_dma_buf(region, &local_err)) {
> -        error_report_err(local_err);
> +        warn_report_err_once(local_err);
>       }
>   
>       return 0;

Applied to

     https://github.com/legoater/qemu vfio-next

Thanks,

C.