Hi Anatoly/Bruce,
Need your comments since you are the maintainers.

Thanks
Eric

-----Original Message-----
From: Santosh Shukla [mailto:santosh.shu...@caviumnetworks.com] 
Sent: Tuesday, September 25, 2018 3:16 AM
To: Zhang, Qing Long (Eric); anatoly.bura...@intel.com
Cc: dev@dpdk.org; Legacy, Allain; Peters, Matt
Subject: Re: [dpdk-dev] [PATCH v2 2/2] eal: force IOVA to particular mode

Hi Eric,


On Tuesday 25 September 2018 02:12 AM, Zhang, Qing Long (Eric) wrote:
> External Email
>
> Hi Santosh/Anatoly,
> Any comments on the v2 patch which uses EAL option to let user configure
> iova mode as suggested?
>
> Thanks
> Eric
>
> -----Original Message-----
> From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of eric zhang
> Sent: Tuesday, September 18, 2018 3:10 PM
> To: anatoly.bura...@intel.com; santosh.shu...@caviumnetworks.com
> Cc: dev@dpdk.org; Legacy, Allain; Peters, Matt
> Subject: [dpdk-dev] [PATCH v2 2/2] eal: force IOVA to particular mode
>
> This patch uses EAL option "--iova-mode" to force the IOVA mode to a
> particular value. There exists virtual devices that are not directly
> attached to the PCI bus, and therefore the auto detectioni of the IOVA
> mode based on probing the PCI bus and IOMMU configuration may not
> report the required addressing mode. Using the EAL option permits the
> mode to be explicitly configured in this scenario.
>
> Signed-off-by: eric zhang <eric.zh...@windriver.com>

No Special comment, v2 LGTM.

For series:
Acked-by: Santosh Shukla <santosh.shu...@caviumnetworks.com>

Thanks.

> ---
> v2:
> * use eal option instead of compilation option to configure IOVA
> * apply http://patchwork.dpdk.org/patch/25192/
> ---
>  lib/librte_eal/bsdapp/eal/eal.c   | 11 +++++++++--
>  lib/librte_eal/linuxapp/eal/eal.c | 27 +++++++++++++++++----------
>  2 files changed, 26 insertions(+), 12 deletions(-)
>
> diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c
> index 369a682..52a1547 100644
> --- a/lib/librte_eal/bsdapp/eal/eal.c
> +++ b/lib/librte_eal/bsdapp/eal/eal.c
> @@ -569,8 +569,15 @@ static void rte_eal_init_alert(const char *msg)
>                 return -1;
>         }
>
> -       /* autodetect the iova mapping mode (default is iova_pa) */
> -       rte_eal_get_configuration()->iova_mode = rte_bus_get_iommu_class();
> +       /* if no eal option "--iova-mode=<pa/va>", use bus iova scheme */
> +       if (internal_config.iova_mode == -1) {
> +               /* autodetect the iova mapping mode (default is iova_pa) */
> +               rte_eal_get_configuration()->iova_mode =
> +                       rte_bus_get_iommu_class();
> +       } else {
> +               rte_eal_get_configuration()->iova_mode =
> +                       internal_config.iova_mode;
> +       }
>
>         if (internal_config.no_hugetlbfs == 0 &&
>                         internal_config.process_type != RTE_PROC_SECONDARY &&
> diff --git a/lib/librte_eal/linuxapp/eal/eal.c 
> b/lib/librte_eal/linuxapp/eal/eal.c
> index e0b5ae1..51208df 100644
> --- a/lib/librte_eal/linuxapp/eal/eal.c
> +++ b/lib/librte_eal/linuxapp/eal/eal.c
> @@ -805,16 +805,23 @@ static void rte_eal_init_alert(const char *msg)
>                 return -1;
>         }
>
> -       /* autodetect the iova mapping mode (default is iova_pa) */
> -       rte_eal_get_configuration()->iova_mode = rte_bus_get_iommu_class();
> -
> -       /* Workaround for KNI which requires physical address to work */
> -       if (rte_eal_get_configuration()->iova_mode == RTE_IOVA_VA &&
> -                       rte_eal_check_module("rte_kni") == 1) {
> -               rte_eal_get_configuration()->iova_mode = RTE_IOVA_PA;
> -               RTE_LOG(WARNING, EAL,
> -                       "Some devices want IOVA as VA but PA will be used 
> because.. "
> -                       "KNI module inserted\n");
> +       /* if no eal option "--iova-mode=<pa/va>", use bus iova scheme */
> +       if (internal_config.iova_mode == -1) {
> +               /* autodetect the iova mapping mode (default is iova_pa) */
> +               rte_eal_get_configuration()->iova_mode =
> +                       rte_bus_get_iommu_class();
> +
> +               /* Workaround for KNI which requires physical address to work 
> */
> +               if (rte_eal_get_configuration()->iova_mode == RTE_IOVA_VA &&
> +                               rte_eal_check_module("rte_kni") == 1) {
> +                       rte_eal_get_configuration()->iova_mode = RTE_IOVA_PA;
> +                       RTE_LOG(WARNING, EAL,
> +                               "Some devices want IOVA as VA but PA will be 
> used because.. "
> +                               "KNI module inserted\n");
> +               }
> +       } else {
> +               rte_eal_get_configuration()->iova_mode =
> +                       internal_config.iova_mode;
>         }
>
>         if (internal_config.no_hugetlbfs == 0 &&
> --
> 1.8.3.1
>

Reply via email to