DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH v2 1/2] eal: add eal option to configure iova mode
@ 2018-09-18 19:09 eric zhang
  0 siblings, 0 replies; 6+ messages in thread
From: eric zhang @ 2018-09-18 19:09 UTC (permalink / raw)
  To: anatoly.burakov, santosh.shukla; +Cc: dev, Allain.Legacy, Matt.Peters

From: Santosh Shukla <santosh.shukla@caviumnetworks.com>

In the case of user don't want to use bus iova scheme and want
to override.

For that, Adding eal option --iova-mode=<string> where valid input
string is 'pa' or 'va'.

Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 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
 };
 
-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/2] eal: add eal option to configure iova mode
  2018-10-01 16:00   ` Eric Zhang
@ 2018-10-02  8:30     ` Ferruh Yigit
  0 siblings, 0 replies; 6+ messages in thread
From: Ferruh Yigit @ 2018-10-02  8:30 UTC (permalink / raw)
  To: Eric Zhang, Burakov, Anatoly, santosh.shukla
  Cc: dev, Allain.Legacy, Matt.Peters

On 10/1/2018 5:00 PM, Eric Zhang wrote:
> 
> 
> On 09/26/2018 08:42 AM, Burakov, Anatoly wrote:
>> On 18-Sep-18 8:10 PM, eric zhang wrote:
>>> From: Santosh Shukla <santosh.shukla@caviumnetworks.com>
>>>
>>> In the case of user don't want to use bus iova scheme and want
>>> to override.
>>>
>>> For that, Adding eal option --iova-mode=<string> where valid input
>>> string is 'pa' or 'va'.
>>>
>>> Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
>>> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
>>> ---
>>
>> Needs documentation update in Programmer's Guide to explain why such a 
>> thing might be needed, and update EAL parameter guides.
>>
>> For the patch itself,
>> Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Thanks Anatoly. Documentations were updated and patch is at 
> http://patchwork.dpdk.org/patch/45785/. Would you please give a review?

I suggest sending a new version of this patchset with that patch included,
instead of two separate patches.
Makes life easy for people that needs to follow that dependency and good for
keeping record for future.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/2] eal: add eal option to configure iova mode
  2018-09-26 12:42 ` Burakov, Anatoly
@ 2018-10-01 16:00   ` Eric Zhang
  2018-10-02  8:30     ` Ferruh Yigit
  0 siblings, 1 reply; 6+ messages in thread
From: Eric Zhang @ 2018-10-01 16:00 UTC (permalink / raw)
  To: Burakov, Anatoly, santosh.shukla; +Cc: dev, Allain.Legacy, Matt.Peters



On 09/26/2018 08:42 AM, Burakov, Anatoly wrote:
> On 18-Sep-18 8:10 PM, eric zhang wrote:
>> From: Santosh Shukla <santosh.shukla@caviumnetworks.com>
>>
>> In the case of user don't want to use bus iova scheme and want
>> to override.
>>
>> For that, Adding eal option --iova-mode=<string> where valid input
>> string is 'pa' or 'va'.
>>
>> Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
>> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
>> ---
>
> Needs documentation update in Programmer's Guide to explain why such a 
> thing might be needed, and update EAL parameter guides.
>
> For the patch itself,
> Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Thanks Anatoly. Documentations were updated and patch is at 
http://patchwork.dpdk.org/patch/45785/. Would you please give a review?

Eric

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/2] eal: add eal option to configure iova mode
  2018-09-18 19:10 eric zhang
  2018-09-26  7:10 ` Hemant
@ 2018-09-26 12:42 ` Burakov, Anatoly
  2018-10-01 16:00   ` Eric Zhang
  1 sibling, 1 reply; 6+ messages in thread
From: Burakov, Anatoly @ 2018-09-26 12:42 UTC (permalink / raw)
  To: eric zhang, santosh.shukla; +Cc: dev, Allain.Legacy, Matt.Peters

On 18-Sep-18 8:10 PM, eric zhang wrote:
> From: Santosh Shukla <santosh.shukla@caviumnetworks.com>
> 
> In the case of user don't want to use bus iova scheme and want
> to override.
> 
> For that, Adding eal option --iova-mode=<string> where valid input
> string is 'pa' or 'va'.
> 
> Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
> ---

Needs documentation update in Programmer's Guide to explain why such a 
thing might be needed, and update EAL parameter guides.

For the patch itself,
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>

-- 
Thanks,
Anatoly

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/2] eal: add eal option to configure iova mode
  2018-09-18 19:10 eric zhang
@ 2018-09-26  7:10 ` Hemant
  2018-09-26 12:42 ` Burakov, Anatoly
  1 sibling, 0 replies; 6+ messages in thread
From: Hemant @ 2018-09-26  7:10 UTC (permalink / raw)
  To: eric zhang, anatoly.burakov, santosh.shukla
  Cc: dev, Allain.Legacy, Matt.Peters


On 9/19/2018 12:40 AM, eric zhang wrote:
> From: Santosh Shukla <santosh.shukla@caviumnetworks.com>
>
> In the case of user don't want to use bus iova scheme and want
> to override.
>
> For that, Adding eal option --iova-mode=<string> where valid input
> string is 'pa' or 'va'.
>
> Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
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 <hemant.agrawal@nxp.com>
> ---
>   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
>   };
>   

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dpdk-dev] [PATCH v2 1/2] eal: add eal option to configure iova mode
@ 2018-09-18 19:10 eric zhang
  2018-09-26  7:10 ` Hemant
  2018-09-26 12:42 ` Burakov, Anatoly
  0 siblings, 2 replies; 6+ messages in thread
From: eric zhang @ 2018-09-18 19:10 UTC (permalink / raw)
  To: anatoly.burakov, santosh.shukla; +Cc: dev, Allain.Legacy, Matt.Peters

From: Santosh Shukla <santosh.shukla@caviumnetworks.com>

In the case of user don't want to use bus iova scheme and want
to override.

For that, Adding eal option --iova-mode=<string> where valid input
string is 'pa' or 'va'.

Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 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
 };
 
-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-10-02  8:30 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-18 19:09 [dpdk-dev] [PATCH v2 1/2] eal: add eal option to configure iova mode eric zhang
2018-09-18 19:10 eric zhang
2018-09-26  7:10 ` Hemant
2018-09-26 12:42 ` Burakov, Anatoly
2018-10-01 16:00   ` Eric Zhang
2018-10-02  8:30     ` Ferruh Yigit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).