Re: [PATCH v2] PCI/P2PDMA: Avoid returning a provider for non_mappable_bars

From: Niklas Schnelle

Date: Thu Apr 23 2026 - 15:07:10 EST


On Thu, 2026-04-23 at 10:30 -0700, Matt Evans wrote:
> Extend the checks in pcim_p2pdma_init() and pcim_p2pdma_provider() to
> exclude functions that have pdev->non_mappable_bars set.
>
> Consumers such as VFIO were previously able to map these for access by
> the CPU or P2P. Update the comment on non_mappable_bars to show it
> refers to any access, not just userspace CPU access.
>
> Fixes: 372d6d1b8ae3c ("PCI/P2PDMA: Refactor to separate core P2P functionality from memory allocation")
> Signed-off-by: Matt Evans <mattev@xxxxxxxx>
> ---
>
> This arises from Alex Williamson's suggestion to test
> non_mappable_bars when getting the provider, with discussion here:
>
> https://lore.kernel.org/kvm/20260415181623.1021090-1-mattev@xxxxxxxx/
>
> The goal was to prevent a hole where VFIO could export DMABUFs for
> BARs marked non-mappable, and to fix for all users of the provider
> rather than just VFIO. Alex observed that non_mappable_bars should be
> taken to mean BARs weren't usable by the CPU _or_ peers and,
> considering that, its comment about userspace access wasn't quite
> right.
>
> == Changes ==
>
> v2:
> - Also test non_mappable_bars in pcim_p2pdma_init(), as
> otherwise pci_p2pdma_add_resource() will WARN_ON
> pcim_p2pdma_provider() failing.
>
> Niklas and Logan, I didn't re-add your R-B from v1 as (splitting
> hairs...) the code's changed.
>

Makes sense, now feel free to re-add ;)

Reviewed-by: Niklas Schnelle <schnelle@xxxxxxxxxxxxx>

Thanks,
Niklas