> From: Santosh Shukla [mailto:[email protected]]
> Sent: Thursday, August 31, 2017 4:26 AM
> To: [email protected]
> Cc: [email protected]; [email protected];
> [email protected]; [email protected];
> [email protected]; Gonzalez Monroy, Sergio
> <[email protected]>; Richardson, Bruce
> <[email protected]>; [email protected];
> [email protected]; Burakov, Anatoly <[email protected]>;
> [email protected]; [email protected]; Santosh Shukla
> <[email protected]>
> Subject: [PATCH v7 9/9] eal/rte_malloc: honor iova mode in virt2phy
> 
> Check iova mode and accordingly return phy addr.
> 
> Signed-off-by: Santosh Shukla <[email protected]>
> Signed-off-by: Jerin Jacob <[email protected]>
> Reviewed-by: Maxime Coquelin <[email protected]>
> ---
>  lib/librte_eal/common/rte_malloc.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/librte_eal/common/rte_malloc.c
> b/lib/librte_eal/common/rte_malloc.c
> index 5c0627bf4..d65c05a4d 100644
> --- a/lib/librte_eal/common/rte_malloc.c
> +++ b/lib/librte_eal/common/rte_malloc.c
> @@ -251,10 +251,17 @@ rte_malloc_set_limit(__rte_unused const char
> *type,  phys_addr_t  rte_malloc_virt2phy(const void *addr)  {
> +     phys_addr_t paddr;
>       const struct malloc_elem *elem = malloc_elem_from_data(addr);
>       if (elem == NULL)
>               return RTE_BAD_PHYS_ADDR;
>       if (elem->ms->phys_addr == RTE_BAD_PHYS_ADDR)
>               return RTE_BAD_PHYS_ADDR;
> -     return elem->ms->phys_addr + ((uintptr_t)addr - (uintptr_t)elem-
> >ms->addr);
> +
> +     if (rte_eal_iova_mode() == RTE_IOVA_VA)
> +             paddr = (uintptr_t)addr;
> +     else
> +             paddr = elem->ms->phys_addr +
> +                     ((uintptr_t)addr - (uintptr_t)elem->ms->addr);
> +     return paddr;
>  }

Hi Santosh,

I think there's a RTE_PTR_DIFF macro for stuff like this, but otherwise

Reviewed-by: Anatoly Burakov <[email protected]>

Reply via email to