From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hemant Subject: Re: [PATCH v2 1/2] eal: add eal option to configure iova mode Date: Wed, 26 Sep 2018 12:40:52 +0530 Message-ID: References: <1537297807-19584-1-git-send-email-eric.zhang@windriver.com> Reply-To: hemant.agrawal@nxp.com Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org, Allain.Legacy@windriver.com, Matt.Peters@windriver.com To: eric zhang , anatoly.burakov@intel.com, santosh.shukla@caviumnetworks.com Return-path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70087.outbound.protection.outlook.com [40.107.7.87]) by dpdk.org (Postfix) with ESMTP id CD4095B16 for ; Wed, 26 Sep 2018 09:11:25 +0200 (CEST) In-Reply-To: <1537297807-19584-1-git-send-email-eric.zhang@windriver.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 9/19/2018 12:40 AM, eric zhang wrote: > From: Santosh Shukla > > In the case of user don't want to use bus iova scheme and want > to override. > > For that, Adding eal option --iova-mode= where valid input > string is 'pa' or 'va'. > > Signed-off-by: Santosh Shukla > Signed-off-by: Jerin Jacob Just wondering if you want to add some description in: 1. Prog Guide - EAL section 2. EAL Command line options for testpmd (https://doc.dpdk.org/guides/testpmd_app_ug/run_app.html?highlight=eal) Otherwise LGTM Acked-by: Hemant Agrawal > --- > lib/librte_eal/common/eal_common_options.c | 30 ++++++++++++++++++++++++++++++ > lib/librte_eal/common/eal_internal_cfg.h | 1 + > lib/librte_eal/common/eal_options.h | 2 ++ > 3 files changed, 33 insertions(+) > > diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c > index 996a034..ab2a28c 100644 > --- a/lib/librte_eal/common/eal_common_options.c > +++ b/lib/librte_eal/common/eal_common_options.c > @@ -82,6 +82,7 @@ > {OPT_HELP, 0, NULL, OPT_HELP_NUM }, > {OPT_HUGE_DIR, 1, NULL, OPT_HUGE_DIR_NUM }, > {OPT_HUGE_UNLINK, 0, NULL, OPT_HUGE_UNLINK_NUM }, > + {OPT_IOVA_MODE, 1, NULL, OPT_IOVA_MODE_NUM }, > {OPT_LCORES, 1, NULL, OPT_LCORES_NUM }, > {OPT_LOG_LEVEL, 1, NULL, OPT_LOG_LEVEL_NUM }, > {OPT_MASTER_LCORE, 1, NULL, OPT_MASTER_LCORE_NUM }, > @@ -218,6 +219,7 @@ struct device_option { > #endif > internal_cfg->vmware_tsc_map = 0; > internal_cfg->create_uio_dev = 0; > + internal_cfg->iova_mode = -1; > internal_cfg->mbuf_pool_ops_name = RTE_MBUF_DEFAULT_MEMPOOL_OPS; > } > > @@ -994,6 +996,25 @@ static int xdigit2val(unsigned char c) > return RTE_PROC_INVALID; > } > > +static int > +eal_parse_iova_mode(const char *name) > +{ > + int mode; > + > + if (name == NULL) > + return -1; > + > + if (!strcmp("pa", name)) > + mode = RTE_IOVA_PA; > + else if (!strcmp("va", name)) > + mode = RTE_IOVA_VA; > + else > + return -1; > + > + internal_config.iova_mode = mode; > + return 0; > +} > + > int > eal_parse_common_option(int opt, const char *optarg, > struct internal_config *conf) > @@ -1158,6 +1179,13 @@ static int xdigit2val(unsigned char c) > } > core_parsed = 1; > break; > + case OPT_IOVA_MODE_NUM: > + if (eal_parse_iova_mode(optarg) < 0) { > + RTE_LOG(ERR, EAL, "invalid parameters for --" > + OPT_IOVA_MODE "\n"); > + return -1; > + } > + break; > > /* don't know what to do, leave this to caller */ > default: > @@ -1306,6 +1334,8 @@ static int xdigit2val(unsigned char c) > " -h, --help This help\n" > "\nEAL options for DEBUG use only:\n" > " --"OPT_HUGE_UNLINK" Unlink hugepage files after init\n" > + " --"OPT_IOVA_MODE" Set iova mode. 'pa' for IOVA_PA\n" > + " 'va' for IOVA_VA\n" > " --"OPT_NO_HUGE" Use malloc instead of hugetlbfs\n" > " --"OPT_NO_PCI" Disable PCI\n" > " --"OPT_NO_HPET" Disable HPET\n" > diff --git a/lib/librte_eal/common/eal_internal_cfg.h b/lib/librte_eal/common/eal_internal_cfg.h > index fa6ccbe..29bf53f 100644 > --- a/lib/librte_eal/common/eal_internal_cfg.h > +++ b/lib/librte_eal/common/eal_internal_cfg.h > @@ -83,6 +83,7 @@ struct internal_config { > const char *hugepage_dir; /**< specific hugetlbfs directory to use */ > const char *mbuf_pool_ops_name; /**< mbuf pool ops name */ > unsigned num_hugepage_sizes; /**< how many sizes on this system */ > + enum rte_iova_mode iova_mode ; /**< Set iova mode on this system */ > struct hugepage_info hugepage_info[MAX_HUGEPAGE_SIZES]; > }; > extern struct internal_config internal_config; /**< Global EAL configuration. */ > diff --git a/lib/librte_eal/common/eal_options.h b/lib/librte_eal/common/eal_options.h > index 30e6bb4..7786189 100644 > --- a/lib/librte_eal/common/eal_options.h > +++ b/lib/librte_eal/common/eal_options.h > @@ -83,6 +83,8 @@ enum { > OPT_VFIO_INTR_NUM, > #define OPT_VMWARE_TSC_MAP "vmware-tsc-map" > OPT_VMWARE_TSC_MAP_NUM, > +#define OPT_IOVA_MODE "iova-mode" > + OPT_IOVA_MODE_NUM, > OPT_LONG_MAX_NUM > }; >