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 <[email protected]> Signed-off-by: Cédric Le Goater <[email protected]> --- 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 <[email protected]>
