[dpdk-dev] [PATCH v2 2/2] eal: force IOVA to particular mode
Zhang, Qing Long (Eric)
Eric.Zhang at windriver.com
Tue Sep 25 22:11:11 CEST 2018
Hi Anatoly/Bruce,
Need your comments since you are the maintainers.
Thanks
Eric
-----Original Message-----
From: Santosh Shukla [mailto:santosh.shukla at caviumnetworks.com]
Sent: Tuesday, September 25, 2018 3:16 AM
To: Zhang, Qing Long (Eric); anatoly.burakov at intel.com
Cc: dev at 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-bounces at dpdk.org] On Behalf Of eric zhang
> Sent: Tuesday, September 18, 2018 3:10 PM
> To: anatoly.burakov at intel.com; santosh.shukla at caviumnetworks.com
> Cc: dev at 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.zhang at windriver.com>
No Special comment, v2 LGTM.
For series:
Acked-by: Santosh Shukla <Santosh.Shukla at 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
>
More information about the dev
mailing list