On Thu, Nov 14, 2019 at 2:58 PM Anatoly Burakov
<[email protected]> wrote:
>
> Currently, when mempool is being populated, we get IOVA address
> of every segment using rte_mem_virt2iova(). This works for internal
> memory, but does not really work for external memory, and does not
> work on platforms which return RTE_BAD_IOVA as a result of this
> call (such as FreeBSD). Moreover, even when it works, the function
> in question will do unnecessary pagewalks in IOVA as PA mode, as
> it falls back to rte_mem_virt2phy() instead of just doing a lookup in
> internal memseg table.
>
> To fix it, replace the call to first attempt to look through the
> internal memseg table (this takes care of internal and external memory),
> and fall back to rte_mem_virt2iova() when unable to perform VA->IOVA
> translation via memseg table.
>
> Fixes: 66cc45e293ed ("mem: replace memseg with memseg lists")
> Cc: [email protected]
>
> Signed-off-by: Anatoly Burakov <[email protected]>

Acked-by: Olivier Matz <[email protected]>
Tested-by: Bo Chen <[email protected]>

Series applied, thanks.

--
David Marchand

Reply via email to