[dpdk-dev] [PATCH 19.11] vfio: fix DMA mapping of externally allocated heaps

David Marchand david.marchand at redhat.com
Thu Nov 7 16:35:38 CET 2019


On Tue, Nov 5, 2019 at 4:15 PM Anatoly Burakov
<anatoly.burakov at intel.com> wrote:
>
> Currently, externally created heaps are supposed to be automatically
> mapped for VFIO DMA by EAL, however they only do so if, at the time of
> heap creation, VFIO is initialized and has at least one device
> available. If no devices are available at the time of heap creation (or
> if devices were available, but were since hot-unplugged, thus dropping
> all VFIO container mappings), then VFIO mapping code would have skipped
> over externally allocated heaps.
>
> The fix is two-fold. First, we allow externally allocated memory
> segments to be marked as "heap" segments. This allows us to distinguish
> between external memory segments that were created via heap API, from
> those that were created via rte_extmem_register() API.
>
> Then, we fix the VFIO code to only skip non-heap external segments.
> Also, since external heaps are not guaranteed to have valid IOVA
> addresses, we will skip those which have invalid IOVA addresses as well.
>
> Fixes: 0f526d674f8e ("malloc: separate creating memseg list and malloc heap")
Cc: stable at dpdk.org

>
> Signed-off-by: Anatoly Burakov <anatoly.burakov at intel.com>
Tested-by: Rajesh Ravi <rajesh.ravi at broadcom.com>
Acked-by: Thomas Monjalon <thomas at monjalon.net>

> ---
>
> Notes:
>     This cannot be backported to older releases as it breaks the
>     API and ABI. A separate fix is in the works for stable.
>

Applied, thanks.


--
David Marchand



More information about the dev mailing list