Commit 4b2e6505d5 for qemu.org

commit 4b2e6505d59b7b16c6e15a2494942d00648e8510
Author: Cédric Le Goater <clg@redhat.com>
Date:   Wed Jul 15 10:00:00 2026 +0200

    vfio/region: Clarify dma-buf failure messages

    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>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
    Signed-off-by: Cédric Le Goater <clg@redhat.com>

diff --git a/hw/vfio/region.c b/hw/vfio/region.c
index dbde339180..54ad11a6c8 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;