* [dpdk-dev] [PATCH 01/10] bsd/pci: rename device and driver lists
2014-04-25 11:59 [dpdk-dev] [PATCH 00/10] bsd: fix compilation Olivier Matz
@ 2014-04-25 11:59 ` Olivier Matz
2014-04-25 11:59 ` [dpdk-dev] [PATCH 02/10] bsd/devargs: introduce API and test Olivier Matz
` (9 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: Olivier Matz @ 2014-04-25 11:59 UTC (permalink / raw)
To: dev
The bsdapp part was missing in commit 5b1f4a67dd5bcfa8d5139c064ced6e37a9149419.
To avoid confusion with virtual devices, rename device_list as
pci_device_list and driver_list as pci_driver_list.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
lib/librte_eal/bsdapp/eal/eal_pci.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/lib/librte_eal/bsdapp/eal/eal_pci.c b/lib/librte_eal/bsdapp/eal/eal_pci.c
index 7b04fa6..64bdea0 100644
--- a/lib/librte_eal/bsdapp/eal/eal_pci.c
+++ b/lib/librte_eal/bsdapp/eal/eal_pci.c
@@ -362,13 +362,13 @@ pci_scan_one(int dev_pci_fd, struct pci_conf *conf)
}
/* device is valid, add in list (sorted) */
- if (TAILQ_EMPTY(&device_list)) {
- TAILQ_INSERT_TAIL(&device_list, dev, next);
+ if (TAILQ_EMPTY(&pci_device_list)) {
+ TAILQ_INSERT_TAIL(&pci_device_list, dev, next);
}
else {
struct rte_pci_device *dev2 = NULL;
- TAILQ_FOREACH(dev2, &device_list, next) {
+ TAILQ_FOREACH(dev2, &pci_device_list, next) {
if (pci_addr_comparison(&dev->addr, &dev2->addr))
continue;
else {
@@ -376,7 +376,7 @@ pci_scan_one(int dev_pci_fd, struct pci_conf *conf)
return 0;
}
}
- TAILQ_INSERT_TAIL(&device_list, dev, next);
+ TAILQ_INSERT_TAIL(&pci_device_list, dev, next);
}
return 0;
@@ -503,8 +503,8 @@ rte_eal_pci_probe_one_driver(struct rte_pci_driver *dr, struct rte_pci_device *d
int
rte_eal_pci_init(void)
{
- TAILQ_INIT(&driver_list);
- TAILQ_INIT(&device_list);
+ TAILQ_INIT(&pci_driver_list);
+ TAILQ_INIT(&pci_device_list);
uio_res_list = RTE_TAILQ_RESERVE_BY_IDX(RTE_TAILQ_PCI, uio_res_list);
/* for debug purposes, PCI can be disabled */
--
1.9.2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [dpdk-dev] [PATCH 02/10] bsd/devargs: introduce API and test
2014-04-25 11:59 [dpdk-dev] [PATCH 00/10] bsd: fix compilation Olivier Matz
2014-04-25 11:59 ` [dpdk-dev] [PATCH 01/10] bsd/pci: rename device and driver lists Olivier Matz
@ 2014-04-25 11:59 ` Olivier Matz
2014-04-25 11:59 ` [dpdk-dev] [PATCH 03/10] bsd/devargs: use devargs for vdev and PCI whitelist/blacklist Olivier Matz
` (8 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: Olivier Matz @ 2014-04-25 11:59 UTC (permalink / raw)
To: dev
The bsd part was missing in commit bf6dea0e04afc0d1f2c8056cd4d1aecab12502d1.
This commit introduces a new API for storing device arguments given by
the user. It only adds the framework and the test.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
lib/librte_eal/bsdapp/eal/Makefile | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/librte_eal/bsdapp/eal/Makefile b/lib/librte_eal/bsdapp/eal/Makefile
index 4c2a4f1..5f991eb 100644
--- a/lib/librte_eal/bsdapp/eal/Makefile
+++ b/lib/librte_eal/bsdapp/eal/Makefile
@@ -69,6 +69,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_errno.c
SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_cpuflags.c
SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_hexdump.c
SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_whitelist.c
+SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_devargs.c
SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_vdev.c
CFLAGS_eal.o := -D_GNU_SOURCE
--
1.9.2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [dpdk-dev] [PATCH 03/10] bsd/devargs: use devargs for vdev and PCI whitelist/blacklist
2014-04-25 11:59 [dpdk-dev] [PATCH 00/10] bsd: fix compilation Olivier Matz
2014-04-25 11:59 ` [dpdk-dev] [PATCH 01/10] bsd/pci: rename device and driver lists Olivier Matz
2014-04-25 11:59 ` [dpdk-dev] [PATCH 02/10] bsd/devargs: introduce API and test Olivier Matz
@ 2014-04-25 11:59 ` Olivier Matz
2014-04-25 11:59 ` [dpdk-dev] [PATCH 04/10] bsd/devargs: use a comma instead of semicolon to separate key/values Olivier Matz
` (7 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: Olivier Matz @ 2014-04-25 11:59 UTC (permalink / raw)
To: dev
The bsdapp part was missing in commit 12204589517e06230e24e0f23396222f2929bd77.
This patch removes old whitelist code and use the newly introduced
rte_devargs to get the PCI white list, the PCI black list and the list
of virtual devices.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
lib/librte_eal/bsdapp/eal/Makefile | 1 -
lib/librte_eal/bsdapp/eal/eal.c | 79 +++++++++++++++++++++-----------------
2 files changed, 43 insertions(+), 37 deletions(-)
diff --git a/lib/librte_eal/bsdapp/eal/Makefile b/lib/librte_eal/bsdapp/eal/Makefile
index 5f991eb..8d67ec4 100644
--- a/lib/librte_eal/bsdapp/eal/Makefile
+++ b/lib/librte_eal/bsdapp/eal/Makefile
@@ -68,7 +68,6 @@ SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_tailqs.c
SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_errno.c
SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_cpuflags.c
SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_hexdump.c
-SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_whitelist.c
SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_devargs.c
SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_vdev.c
diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c
index e944aba..6be706c 100644
--- a/lib/librte_eal/bsdapp/eal/eal.c
+++ b/lib/librte_eal/bsdapp/eal/eal.c
@@ -2,6 +2,7 @@
* BSD LICENSE
*
* Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+ * Copyright(c) 2014 6WIND S.A.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -65,6 +66,7 @@
#include <rte_cpuflags.h>
#include <rte_interrupts.h>
#include <rte_pci.h>
+#include <rte_devargs.h>
#include <rte_common.h>
#include <rte_version.h>
#include <rte_atomic.h>
@@ -132,8 +134,6 @@ static struct rte_config rte_config = {
.mem_config = &early_mem_config,
};
-static struct rte_pci_addr eal_dev_blacklist[RTE_EAL_BLACKLIST_SIZE];
-
/* internal configuration (per-core) */
struct lcore_config lcore_config[RTE_MAX_LCORE];
@@ -307,15 +307,15 @@ eal_usage(const char *prgname)
" -c COREMASK : A hexadecimal bitmask of cores to run on\n"
" -n NUM : Number of memory channels\n"
" -v : Display version information on startup\n"
- " -b <domain:bus:devid.func>: to prevent EAL from using specified "
- "PCI device\n"
" (multiple -b options are allowed)\n"
" -m MB : memory to allocate\n"
" -r NUM : force number of memory ranks (don't detect)\n"
" --"OPT_PROC_TYPE" : type of this process\n"
- " --"OPT_USE_DEVICE": use the specified ethernet device(s) only. "
- "Use comma-separate <[domain:]bus:devid.func> values.\n"
- " [NOTE: Cannot be used with -b option]\n"
+ " --"OPT_USE_DEVICE": use the specified ethernet device(s) only.\n"
+ " The argument format is <[domain:]bus:devid.func> to add\n"
+ " a PCI device to the white list or <driver><id>[;key=val;...]\n"
+ " to add a virtual device.\n"
+ " [NOTE: PCI whitelist cannot be used with -b option]\n"
" --"OPT_VMWARE_TSC_MAP": use VMware TSC map instead of "
"native RDTSC\n"
"\nEAL options for DEBUG use only:\n"
@@ -483,20 +483,31 @@ eal_parse_proc_type(const char *arg)
return RTE_PROC_INVALID;
}
-static ssize_t
-eal_parse_blacklist_opt(const char *optarg, size_t idx)
+static int
+eal_parse_use_device(const char *optarg)
{
- if (idx >= sizeof (eal_dev_blacklist) / sizeof (eal_dev_blacklist[0])) {
- RTE_LOG(ERR, EAL, "%s - too many devices to blacklist...\n", optarg);
- return (-EINVAL);
- } else if (eal_parse_pci_DomBDF(optarg, eal_dev_blacklist + idx) < 0 &&
- eal_parse_pci_BDF(optarg, eal_dev_blacklist + idx) < 0) {
- RTE_LOG(ERR, EAL, "%s - invalid device to blacklist...\n", optarg);
- return (-EINVAL);
+ struct rte_pci_addr addr;
+ char *dup, *sep;
+
+ dup = strdup(optarg);
+ if (dup == NULL)
+ return -1;
+
+ /* remove arguments in 'dup' string */
+ sep = strchr(dup, ';');
+ if (sep != NULL)
+ *sep = '\0';
+
+ /* if argument is a PCI address, it's a whitelisted device */
+ if (eal_parse_pci_DomBDF(dup, &addr) == 0 ||
+ eal_parse_pci_BDF(dup, &addr) == 0) {
+ rte_eal_devargs_add(RTE_DEVTYPE_WHITELISTED_PCI, optarg);
+ } else {
+ rte_eal_devargs_add(RTE_DEVTYPE_VIRTUAL, optarg);
}
- idx += 1;
- return (idx);
+ free(dup);
+ return 0;
}
/* Parse the argument given in the command line of the application */
@@ -507,7 +518,6 @@ eal_parse_args(int argc, char **argv)
char **argvopt;
int option_index;
int coremask_ok = 0;
- ssize_t blacklist_index = 0;
char *prgname = argv[0];
static struct option lgopts[] = {
{OPT_NO_HUGE, 0, 0, 0},
@@ -554,8 +564,8 @@ eal_parse_args(int argc, char **argv)
switch (opt) {
/* blacklist */
case 'b':
- if ((blacklist_index = eal_parse_blacklist_opt(optarg,
- blacklist_index)) < 0) {
+ if (rte_eal_devargs_add(RTE_DEVTYPE_BLACKLISTED_PCI,
+ optarg) < 0) {
eal_usage(prgname);
return (-1);
}
@@ -638,7 +648,12 @@ eal_parse_args(int argc, char **argv)
return -1;
}
else if (!strcmp(lgopts[option_index].name, OPT_USE_DEVICE)) {
- eal_dev_whitelist_add_entry(optarg);
+ if (eal_parse_use_device(optarg) < 0) {
+ RTE_LOG(ERR, EAL, "invalid parameters for --"
+ OPT_USE_DEVICE "\n");
+ eal_usage(prgname);
+ return -1;
+ }
}
else if (!strcmp(lgopts[option_index].name, OPT_SYSLOG)) {
if (eal_parse_syslog(optarg) < 0) {
@@ -697,20 +712,12 @@ eal_parse_args(int argc, char **argv)
return -1;
}
- /* if no blacklist, parse a whitelist */
- if (blacklist_index > 0) {
- if (eal_dev_whitelist_exists()) {
- RTE_LOG(ERR, EAL, "Error: blacklist [-b] and whitelist "
- "[--use-device] options cannot be used at the same time\n");
- eal_usage(prgname);
- return -1;
- }
- rte_eal_pci_set_blacklist(eal_dev_blacklist, blacklist_index);
- } else {
- if (eal_dev_whitelist_exists() && eal_dev_whitelist_parse() < 0) {
- RTE_LOG(ERR,EAL, "Error parsing whitelist[--use-device] options\n");
- return -1;
- }
+ if (rte_eal_devargs_type_count(RTE_DEVTYPE_WHITELISTED_PCI) != 0 &&
+ rte_eal_devargs_type_count(RTE_DEVTYPE_BLACKLISTED_PCI) != 0) {
+ RTE_LOG(ERR, EAL, "Error: blacklist [-b] and whitelist "
+ "[--use-device] options cannot be used at the same time\n");
+ eal_usage(prgname);
+ return -1;
}
if (optind >= 0)
--
1.9.2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [dpdk-dev] [PATCH 04/10] bsd/devargs: use a comma instead of semicolon to separate key/values
2014-04-25 11:59 [dpdk-dev] [PATCH 00/10] bsd: fix compilation Olivier Matz
` (2 preceding siblings ...)
2014-04-25 11:59 ` [dpdk-dev] [PATCH 03/10] bsd/devargs: use devargs for vdev and PCI whitelist/blacklist Olivier Matz
@ 2014-04-25 11:59 ` Olivier Matz
2014-04-25 11:59 ` [dpdk-dev] [PATCH 05/10] bsd/devargs: replace --use-device option by --pci-whitelist and --vdev Olivier Matz
` (6 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: Olivier Matz @ 2014-04-25 11:59 UTC (permalink / raw)
To: dev
The bsdapp part was missing in commit a8b97e3a1db0a9366d58811411b904e4fef8160f.
This commit changes the API of --use-device command line argument.
It changes the separators from ';' to ','.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
lib/librte_eal/bsdapp/eal/eal.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c
index 6be706c..48bce40 100644
--- a/lib/librte_eal/bsdapp/eal/eal.c
+++ b/lib/librte_eal/bsdapp/eal/eal.c
@@ -494,7 +494,7 @@ eal_parse_use_device(const char *optarg)
return -1;
/* remove arguments in 'dup' string */
- sep = strchr(dup, ';');
+ sep = strchr(dup, ',');
if (sep != NULL)
*sep = '\0';
--
1.9.2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [dpdk-dev] [PATCH 05/10] bsd/devargs: replace --use-device option by --pci-whitelist and --vdev
2014-04-25 11:59 [dpdk-dev] [PATCH 00/10] bsd: fix compilation Olivier Matz
` (3 preceding siblings ...)
2014-04-25 11:59 ` [dpdk-dev] [PATCH 04/10] bsd/devargs: use a comma instead of semicolon to separate key/values Olivier Matz
@ 2014-04-25 11:59 ` Olivier Matz
2014-04-25 11:59 ` [dpdk-dev] [PATCH 06/10] bsd/devargs: allow to provide arguments per pci device Olivier Matz
` (5 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: Olivier Matz @ 2014-04-25 11:59 UTC (permalink / raw)
To: dev
The bsdapp part was missing in commit cac6d08c8bde2fdb57806c49038187cdb54219a8.
This commit splits the "--use-device" option in two new options:
- "--pci-whitelist or -w": add a PCI device in the white list
- "--vdev": instanciate a new virtual device
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
lib/librte_eal/bsdapp/eal/eal.c | 89 +++++++++++++++++++++++------------------
1 file changed, 50 insertions(+), 39 deletions(-)
diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c
index 48bce40..633069e 100644
--- a/lib/librte_eal/bsdapp/eal/eal.c
+++ b/lib/librte_eal/bsdapp/eal/eal.c
@@ -88,7 +88,10 @@
#define OPT_NO_HUGE "no-huge"
#define OPT_FILE_PREFIX "file-prefix"
#define OPT_SOCKET_MEM "socket-mem"
-#define OPT_USE_DEVICE "use-device"
+#define OPT_USE_DEVICE "use-device"
+#define OPT_PCI_WHITELIST "pci-whitelist"
+#define OPT_PCI_BLACKLIST "pci-blacklist"
+#define OPT_VDEV "vdev"
#define OPT_SYSLOG "syslog"
#define RTE_EAL_BLACKLIST_SIZE 0x100
@@ -311,11 +314,17 @@ eal_usage(const char *prgname)
" -m MB : memory to allocate\n"
" -r NUM : force number of memory ranks (don't detect)\n"
" --"OPT_PROC_TYPE" : type of this process\n"
- " --"OPT_USE_DEVICE": use the specified ethernet device(s) only.\n"
- " The argument format is <[domain:]bus:devid.func> to add\n"
- " a PCI device to the white list or <driver><id>[;key=val;...]\n"
- " to add a virtual device.\n"
- " [NOTE: PCI whitelist cannot be used with -b option]\n"
+ " --"OPT_PCI_BLACKLIST", -b: add a PCI device in black list.\n"
+ " Prevent EAL from using this PCI device. The argument\n"
+ " format is <domain:bus:devid.func>.\n"
+ " --"OPT_PCI_WHITELIST", -w: add a PCI device in white list.\n"
+ " Only use the specified PCI devices. The argument format\n"
+ " is <[domain:]bus:devid.func>. This option can be present\n"
+ " several times (once per device).\n"
+ " [NOTE: PCI whitelist cannot be used with -b option]\n"
+ " --"OPT_VDEV": add a virtual device.\n"
+ " The argument format is <driver><id>[,key=val,...]\n"
+ " (ex: --vdev=eth_pcap0,iface=eth2).\n"
" --"OPT_VMWARE_TSC_MAP": use VMware TSC map instead of "
"native RDTSC\n"
"\nEAL options for DEBUG use only:\n"
@@ -483,33 +492,6 @@ eal_parse_proc_type(const char *arg)
return RTE_PROC_INVALID;
}
-static int
-eal_parse_use_device(const char *optarg)
-{
- struct rte_pci_addr addr;
- char *dup, *sep;
-
- dup = strdup(optarg);
- if (dup == NULL)
- return -1;
-
- /* remove arguments in 'dup' string */
- sep = strchr(dup, ',');
- if (sep != NULL)
- *sep = '\0';
-
- /* if argument is a PCI address, it's a whitelisted device */
- if (eal_parse_pci_DomBDF(dup, &addr) == 0 ||
- eal_parse_pci_BDF(dup, &addr) == 0) {
- rte_eal_devargs_add(RTE_DEVTYPE_WHITELISTED_PCI, optarg);
- } else {
- rte_eal_devargs_add(RTE_DEVTYPE_VIRTUAL, optarg);
- }
-
- free(dup);
- return 0;
-}
-
/* Parse the argument given in the command line of the application */
static int
eal_parse_args(int argc, char **argv)
@@ -529,7 +511,9 @@ eal_parse_args(int argc, char **argv)
{OPT_PROC_TYPE, 1, 0, 0},
{OPT_FILE_PREFIX, 1, 0, 0},
{OPT_SOCKET_MEM, 1, 0, 0},
- {OPT_USE_DEVICE, 1, 0, 0},
+ {OPT_PCI_WHITELIST, 1, 0, 0},
+ {OPT_PCI_BLACKLIST, 1, 0, 0},
+ {OPT_VDEV, 1, 0, 0},
{OPT_SYSLOG, 1, NULL, 0},
{0, 0, 0, 0}
};
@@ -558,7 +542,7 @@ eal_parse_args(int argc, char **argv)
internal_config.vmware_tsc_map = 0;
- while ((opt = getopt_long(argc, argvopt, "b:c:m:n:r:v",
+ while ((opt = getopt_long(argc, argvopt, "b:w:c:m:n:r:v",
lgopts, &option_index)) != EOF) {
switch (opt) {
@@ -570,6 +554,14 @@ eal_parse_args(int argc, char **argv)
return (-1);
}
break;
+ /* whitelist */
+ case 'w':
+ if (rte_eal_devargs_add(RTE_DEVTYPE_WHITELISTED_PCI,
+ optarg) < 0) {
+ eal_usage(prgname);
+ return -1;
+ }
+ break;
/* coremask */
case 'c':
if (eal_parse_coremask(optarg) < 0) {
@@ -648,9 +640,28 @@ eal_parse_args(int argc, char **argv)
return -1;
}
else if (!strcmp(lgopts[option_index].name, OPT_USE_DEVICE)) {
- if (eal_parse_use_device(optarg) < 0) {
- RTE_LOG(ERR, EAL, "invalid parameters for --"
- OPT_USE_DEVICE "\n");
+ printf("The --use-device option is deprecated, please use\n"
+ "--whitelist or --vdev instead.\n");
+ eal_usage(prgname);
+ return -1;
+ }
+ else if (!strcmp(lgopts[option_index].name, OPT_PCI_BLACKLIST)) {
+ if (rte_eal_devargs_add(RTE_DEVTYPE_BLACKLISTED_PCI,
+ optarg) < 0) {
+ eal_usage(prgname);
+ return -1;
+ }
+ }
+ else if (!strcmp(lgopts[option_index].name, OPT_PCI_WHITELIST)) {
+ if (rte_eal_devargs_add(RTE_DEVTYPE_WHITELISTED_PCI,
+ optarg) < 0) {
+ eal_usage(prgname);
+ return -1;
+ }
+ }
+ else if (!strcmp(lgopts[option_index].name, OPT_VDEV)) {
+ if (rte_eal_devargs_add(RTE_DEVTYPE_VIRTUAL,
+ optarg) < 0) {
eal_usage(prgname);
return -1;
}
@@ -715,7 +726,7 @@ eal_parse_args(int argc, char **argv)
if (rte_eal_devargs_type_count(RTE_DEVTYPE_WHITELISTED_PCI) != 0 &&
rte_eal_devargs_type_count(RTE_DEVTYPE_BLACKLISTED_PCI) != 0) {
RTE_LOG(ERR, EAL, "Error: blacklist [-b] and whitelist "
- "[--use-device] options cannot be used at the same time\n");
+ "[-w] options cannot be used at the same time\n");
eal_usage(prgname);
return -1;
}
--
1.9.2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [dpdk-dev] [PATCH 06/10] bsd/devargs: allow to provide arguments per pci device
2014-04-25 11:59 [dpdk-dev] [PATCH 00/10] bsd: fix compilation Olivier Matz
` (4 preceding siblings ...)
2014-04-25 11:59 ` [dpdk-dev] [PATCH 05/10] bsd/devargs: replace --use-device option by --pci-whitelist and --vdev Olivier Matz
@ 2014-04-25 11:59 ` Olivier Matz
2014-04-25 11:59 ` [dpdk-dev] [PATCH 07/10] bsd/nic_uio: fix module compilation with freebsd 10 Olivier Matz
` (4 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: Olivier Matz @ 2014-04-25 11:59 UTC (permalink / raw)
To: dev
The bsdapp part was missing in commit 8e245de6ca7e050e282cd49ffd5e68a5b6ff62f5.
Add the ability to pass some specific initialization arguments to PCI
devices at start-up.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
lib/librte_eal/bsdapp/eal/eal_pci.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/lib/librte_eal/bsdapp/eal/eal_pci.c b/lib/librte_eal/bsdapp/eal/eal_pci.c
index 64bdea0..987b446 100644
--- a/lib/librte_eal/bsdapp/eal/eal_pci.c
+++ b/lib/librte_eal/bsdapp/eal/eal_pci.c
@@ -66,6 +66,7 @@
#include <rte_malloc.h>
#include <rte_string_fns.h>
#include <rte_debug.h>
+#include <rte_devargs.h>
#include "rte_pci_dev_ids.h"
#include "eal_filesystem.h"
@@ -471,7 +472,9 @@ rte_eal_pci_probe_one_driver(struct rte_pci_driver *dr, struct rte_pci_device *d
dev->id.device_id, dr->name);
/* no initialization when blacklisted, return without error */
- if (dev->blacklisted) {
+ if (dev->devargs != NULL &&
+ dev->devargs->type == RTE_DEVTYPE_BLACKLISTED_PCI) {
+
RTE_LOG(DEBUG, EAL, " Device is blacklisted, not initializing\n");
return 0;
}
--
1.9.2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [dpdk-dev] [PATCH 07/10] bsd/nic_uio: fix module compilation with freebsd 10
2014-04-25 11:59 [dpdk-dev] [PATCH 00/10] bsd: fix compilation Olivier Matz
` (5 preceding siblings ...)
2014-04-25 11:59 ` [dpdk-dev] [PATCH 06/10] bsd/devargs: allow to provide arguments per pci device Olivier Matz
@ 2014-04-25 11:59 ` Olivier Matz
2014-04-25 11:59 ` [dpdk-dev] [PATCH 08/10] bsd/mk: use the Q variable instead of @ for quiet commands Olivier Matz
` (3 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: Olivier Matz @ 2014-04-25 11:59 UTC (permalink / raw)
To: dev
Compiling the DPDK under FreeBSD gives the following error due to a
missing include <sys/rwlock.h>.
In file included from nic_uio.c:52:
@/vm/vm_pager.h:126:2: error: implicit declaration of function 'rw_assert' is invalid in C99
[-Werror,-Wimplicit-function-declaration]
VM_OBJECT_ASSERT_WLOCKED(object);
^
@/vm/vm_object.h:226:2: note: expanded from macro 'VM_OBJECT_ASSERT_WLOCKED'
rw_assert(&(object)->lock, RA_WLOCKED)
^
In file included from nic_uio.c:52:
@/vm/vm_pager.h:126:2: error: use of undeclared identifier 'RA_WLOCKED'
@/vm/vm_object.h:226:29: note: expanded from macro 'VM_OBJECT_ASSERT_WLOCKED'
rw_assert(&(object)->lock, RA_WLOCKED)
^
In file included from nic_uio.c:52:
@/vm/vm_pager.h:143:2: error: use of undeclared identifier 'RA_WLOCKED'
VM_OBJECT_ASSERT_WLOCKED(object);
^
@/vm/vm_object.h:226:29: note: expanded from macro 'VM_OBJECT_ASSERT_WLOCKED'
rw_assert(&(object)->lock, RA_WLOCKED)
^
In file included from nic_uio.c:52:
@/vm/vm_pager.h:167:2: error: use of undeclared identifier 'RA_WLOCKED'
VM_OBJECT_ASSERT_WLOCKED(object);
^
@/vm/vm_object.h:226:29: note: expanded from macro 'VM_OBJECT_ASSERT_WLOCKED'
rw_assert(&(object)->lock, RA_WLOCKED)
^
In file included from nic_uio.c:52:
@/vm/vm_pager.h:190:2: error: use of undeclared identifier 'RA_WLOCKED'
VM_OBJECT_ASSERT_WLOCKED(m->object);
^
@/vm/vm_object.h:226:29: note: expanded from macro 'VM_OBJECT_ASSERT_WLOCKED'
rw_assert(&(object)->lock, RA_WLOCKED)
^
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
lib/librte_eal/bsdapp/nic_uio/nic_uio.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/librte_eal/bsdapp/nic_uio/nic_uio.c b/lib/librte_eal/bsdapp/nic_uio/nic_uio.c
index ce97dfc..c10e9aa 100644
--- a/lib/librte_eal/bsdapp/nic_uio/nic_uio.c
+++ b/lib/librte_eal/bsdapp/nic_uio/nic_uio.c
@@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
#include <sys/bus.h> /* structs, prototypes for pci bus stuff and DEVMETHOD */
#include <sys/rman.h>
#include <sys/systm.h>
+#include <sys/rwlock.h>
#include <sys/proc.h>
#include <machine/bus.h>
--
1.9.2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [dpdk-dev] [PATCH 08/10] bsd/mk: use the Q variable instead of @ for quiet commands
2014-04-25 11:59 [dpdk-dev] [PATCH 00/10] bsd: fix compilation Olivier Matz
` (6 preceding siblings ...)
2014-04-25 11:59 ` [dpdk-dev] [PATCH 07/10] bsd/nic_uio: fix module compilation with freebsd 10 Olivier Matz
@ 2014-04-25 11:59 ` Olivier Matz
2014-04-25 13:19 ` Neil Horman
2014-04-25 11:59 ` [dpdk-dev] [PATCH 09/10] bsd/mem: get hugepages config Olivier Matz
` (2 subsequent siblings)
10 siblings, 1 reply; 15+ messages in thread
From: Olivier Matz @ 2014-04-25 11:59 UTC (permalink / raw)
To: dev
This allows to use V=1 to be more verbose to debug the build process
of a bsd kernel module.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
mk/rte.bsdmodule.mk | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/mk/rte.bsdmodule.mk b/mk/rte.bsdmodule.mk
index 6224715..28b5189 100644
--- a/mk/rte.bsdmodule.mk
+++ b/mk/rte.bsdmodule.mk
@@ -74,24 +74,24 @@ build: _postbuild
# Link all sources in build directory
%_link: FORCE
$(if $(call compare,$(notdir $*),$*),\
- @if [ ! -f $(notdir $(*)) ]; then ln -nfs $(SRCDIR)/$(*) . ; fi,\
- @if [ ! -f $(notdir $(*)) ]; then ln -nfs $(SRCDIR)/$(*) . ; fi)
+ $(Q)if [ ! -f $(notdir $(*)) ]; then ln -nfs $(SRCDIR)/$(*) . ; fi,\
+ $(Q)if [ ! -f $(notdir $(*)) ]; then ln -nfs $(SRCDIR)/$(*) . ; fi)
# build module
$(MODULE).ko: $(SRCS_LINKS)
- @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
- @if [ ! -f $(notdir BSDmakefile) ]; then ln -nfs $(SRCDIR)/BSDmakefile . ; fi
- @MAKEFLAGS= $(BSDMAKE) -v
+ $(Q)if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
+ $(Q)if [ ! -f $(notdir BSDmakefile) ]; then ln -nfs $(SRCDIR)/BSDmakefile . ; fi
+ $(Q)MAKEFLAGS= $(BSDMAKE)
# install module in $(RTE_OUTPUT)/kmod
$(RTE_OUTPUT)/kmod/$(MODULE).ko: $(MODULE).ko
- @echo INSTALL-MODULE $(MODULE).ko
- @[ -d $(RTE_OUTPUT)/kmod ] || mkdir -p $(RTE_OUTPUT)/kmod
- @cp -f $(MODULE).ko $(RTE_OUTPUT)/kmod
+ $(Q)echo INSTALL-MODULE $(MODULE).ko
+ $(Q)[ -d $(RTE_OUTPUT)/kmod ] || mkdir -p $(RTE_OUTPUT)/kmod
+ $(Q)cp -f $(MODULE).ko $(RTE_OUTPUT)/kmod
# install module
modules_install:
- @MAKEFLAGS= $(BSDMAKE) install
+ $(Q)MAKEFLAGS= $(BSDMAKE) install
.PHONY: clean
clean: _postclean
@@ -99,12 +99,12 @@ clean: _postclean
# do a make clean and remove links
.PHONY: doclean
doclean:
- @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
+ $(Q)if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
$(Q)$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) clean
- @$(foreach FILE,$(SRCS-y) $(SRCS-n) $(SRCS-),\
+ $(Q)$(foreach FILE,$(SRCS-y) $(SRCS-n) $(SRCS-),\
if [ -h $(notdir $(FILE)) ]; then rm -f $(notdir $(FILE)) ; fi ;)
- @if [ -h $(notdir Makefile) ]; then rm -f $(notdir Makefile) ; fi
- @rm -f $(_BUILD_TARGETS) $(_INSTALL_TARGETS) $(_CLEAN_TARGETS) \
+ $(Q)if [ -h $(notdir Makefile) ]; then rm -f $(notdir Makefile) ; fi
+ $(Q)rm -f $(_BUILD_TARGETS) $(_INSTALL_TARGETS) $(_CLEAN_TARGETS) \
$(INSTALL-FILES-all)
include $(RTE_SDK)/mk/internal/rte.install-post.mk
--
1.9.2
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [dpdk-dev] [PATCH 08/10] bsd/mk: use the Q variable instead of @ for quiet commands
2014-04-25 11:59 ` [dpdk-dev] [PATCH 08/10] bsd/mk: use the Q variable instead of @ for quiet commands Olivier Matz
@ 2014-04-25 13:19 ` Neil Horman
2014-04-25 14:18 ` Thomas Monjalon
0 siblings, 1 reply; 15+ messages in thread
From: Neil Horman @ 2014-04-25 13:19 UTC (permalink / raw)
To: Olivier Matz; +Cc: dev
On Fri, Apr 25, 2014 at 01:59:46PM +0200, Olivier Matz wrote:
> This allows to use V=1 to be more verbose to debug the build process
> of a bsd kernel module.
>
> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
This doesnt seem like it should really be part of this series, given that
everything else in it is here to fix build breaks. Nothing wrong with it that I
can see, but should probably be posted independently.
Neil
> ---
> mk/rte.bsdmodule.mk | 26 +++++++++++++-------------
> 1 file changed, 13 insertions(+), 13 deletions(-)
>
> diff --git a/mk/rte.bsdmodule.mk b/mk/rte.bsdmodule.mk
> index 6224715..28b5189 100644
> --- a/mk/rte.bsdmodule.mk
> +++ b/mk/rte.bsdmodule.mk
> @@ -74,24 +74,24 @@ build: _postbuild
> # Link all sources in build directory
> %_link: FORCE
> $(if $(call compare,$(notdir $*),$*),\
> - @if [ ! -f $(notdir $(*)) ]; then ln -nfs $(SRCDIR)/$(*) . ; fi,\
> - @if [ ! -f $(notdir $(*)) ]; then ln -nfs $(SRCDIR)/$(*) . ; fi)
> + $(Q)if [ ! -f $(notdir $(*)) ]; then ln -nfs $(SRCDIR)/$(*) . ; fi,\
> + $(Q)if [ ! -f $(notdir $(*)) ]; then ln -nfs $(SRCDIR)/$(*) . ; fi)
>
> # build module
> $(MODULE).ko: $(SRCS_LINKS)
> - @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
> - @if [ ! -f $(notdir BSDmakefile) ]; then ln -nfs $(SRCDIR)/BSDmakefile . ; fi
> - @MAKEFLAGS= $(BSDMAKE) -v
> + $(Q)if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
> + $(Q)if [ ! -f $(notdir BSDmakefile) ]; then ln -nfs $(SRCDIR)/BSDmakefile . ; fi
> + $(Q)MAKEFLAGS= $(BSDMAKE)
>
> # install module in $(RTE_OUTPUT)/kmod
> $(RTE_OUTPUT)/kmod/$(MODULE).ko: $(MODULE).ko
> - @echo INSTALL-MODULE $(MODULE).ko
> - @[ -d $(RTE_OUTPUT)/kmod ] || mkdir -p $(RTE_OUTPUT)/kmod
> - @cp -f $(MODULE).ko $(RTE_OUTPUT)/kmod
> + $(Q)echo INSTALL-MODULE $(MODULE).ko
> + $(Q)[ -d $(RTE_OUTPUT)/kmod ] || mkdir -p $(RTE_OUTPUT)/kmod
> + $(Q)cp -f $(MODULE).ko $(RTE_OUTPUT)/kmod
>
> # install module
> modules_install:
> - @MAKEFLAGS= $(BSDMAKE) install
> + $(Q)MAKEFLAGS= $(BSDMAKE) install
>
> .PHONY: clean
> clean: _postclean
> @@ -99,12 +99,12 @@ clean: _postclean
> # do a make clean and remove links
> .PHONY: doclean
> doclean:
> - @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
> + $(Q)if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
> $(Q)$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) clean
> - @$(foreach FILE,$(SRCS-y) $(SRCS-n) $(SRCS-),\
> + $(Q)$(foreach FILE,$(SRCS-y) $(SRCS-n) $(SRCS-),\
> if [ -h $(notdir $(FILE)) ]; then rm -f $(notdir $(FILE)) ; fi ;)
> - @if [ -h $(notdir Makefile) ]; then rm -f $(notdir Makefile) ; fi
> - @rm -f $(_BUILD_TARGETS) $(_INSTALL_TARGETS) $(_CLEAN_TARGETS) \
> + $(Q)if [ -h $(notdir Makefile) ]; then rm -f $(notdir Makefile) ; fi
> + $(Q)rm -f $(_BUILD_TARGETS) $(_INSTALL_TARGETS) $(_CLEAN_TARGETS) \
> $(INSTALL-FILES-all)
>
> include $(RTE_SDK)/mk/internal/rte.install-post.mk
> --
> 1.9.2
>
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [dpdk-dev] [PATCH 08/10] bsd/mk: use the Q variable instead of @ for quiet commands
2014-04-25 13:19 ` Neil Horman
@ 2014-04-25 14:18 ` Thomas Monjalon
0 siblings, 0 replies; 15+ messages in thread
From: Thomas Monjalon @ 2014-04-25 14:18 UTC (permalink / raw)
To: Neil Horman; +Cc: dev
2014-04-25 09:19, Neil Horman:
> On Fri, Apr 25, 2014 at 01:59:46PM +0200, Olivier Matz wrote:
> > This allows to use V=1 to be more verbose to debug the build process
> > of a bsd kernel module.
> >
> > Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
>
> This doesnt seem like it should really be part of this series, given that
> everything else in it is here to fix build breaks. Nothing wrong with it
> that I can see, but should probably be posted independently.
It fixes verbose compilation mode. So I think it is in the right place in this
thread (thanks Olivier for the beer ;).
Anyway,
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
As it is a fix and it's not a big design change, it should go in 1.6.0r2.
--
Thomas
^ permalink raw reply [flat|nested] 15+ messages in thread
* [dpdk-dev] [PATCH 09/10] bsd/mem: get hugepages config
2014-04-25 11:59 [dpdk-dev] [PATCH 00/10] bsd: fix compilation Olivier Matz
` (7 preceding siblings ...)
2014-04-25 11:59 ` [dpdk-dev] [PATCH 08/10] bsd/mk: use the Q variable instead of @ for quiet commands Olivier Matz
@ 2014-04-25 11:59 ` Olivier Matz
2014-04-25 11:59 ` [dpdk-dev] [PATCH 10/10] bsd/mem: get physical address of any pointer Olivier Matz
2014-04-25 13:27 ` [dpdk-dev] [PATCH 00/10] bsd: fix compilation Neil Horman
10 siblings, 0 replies; 15+ messages in thread
From: Olivier Matz @ 2014-04-25 11:59 UTC (permalink / raw)
To: dev
The bsdapp part was missing in c5e9eeca5a67a8272f0fdedcd0afc9b2d22be376.
This commit allows external libraries and applications to know if
hugepages are enabled.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
lib/librte_eal/bsdapp/eal/eal.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c
index 633069e..3b2b47f 100644
--- a/lib/librte_eal/bsdapp/eal/eal.c
+++ b/lib/librte_eal/bsdapp/eal/eal.c
@@ -777,6 +777,12 @@ rte_eal_mcfg_complete(void)
rte_config.mem_config->magic = RTE_MAGIC;
}
+/* return non-zero if hugepages are enabled. */
+int rte_eal_has_hugepages(void)
+{
+ return !internal_config.no_hugetlbfs;
+}
+
/* Abstraction for port I/0 privilage */
static int
rte_eal_iopl_init(void)
--
1.9.2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [dpdk-dev] [PATCH 10/10] bsd/mem: get physical address of any pointer
2014-04-25 11:59 [dpdk-dev] [PATCH 00/10] bsd: fix compilation Olivier Matz
` (8 preceding siblings ...)
2014-04-25 11:59 ` [dpdk-dev] [PATCH 09/10] bsd/mem: get hugepages config Olivier Matz
@ 2014-04-25 11:59 ` Olivier Matz
2014-04-25 13:27 ` [dpdk-dev] [PATCH 00/10] bsd: fix compilation Neil Horman
10 siblings, 0 replies; 15+ messages in thread
From: Olivier Matz @ 2014-04-25 11:59 UTC (permalink / raw)
To: dev
The bsdapp part was missing in commit 57c24af85d9eaa81549a212169605b4e2468a29f.
This commit adds a dummy rte_mem_virt2phy() to fix the compilation of
DPDK under BSD. This function is only used when the debug option
"--no-huge" is given, to get the physical address of mempools in memory.
As a result, it seems acceptable for now to implement a dummy function
to fix the compilation as the usual case (using contigmem module) works
properly.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
lib/librte_eal/bsdapp/eal/eal_memory.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/lib/librte_eal/bsdapp/eal/eal_memory.c b/lib/librte_eal/bsdapp/eal/eal_memory.c
index 7d2d269..65aabf2 100644
--- a/lib/librte_eal/bsdapp/eal/eal_memory.c
+++ b/lib/librte_eal/bsdapp/eal/eal_memory.c
@@ -47,6 +47,18 @@
#define PAGE_SIZE (sysconf(_SC_PAGESIZE))
+/*
+ * Get physical address of any mapped virtual address in the current process.
+ */
+phys_addr_t
+rte_mem_virt2phy(const void *virtaddr)
+{
+ /* XXX not implemented. This function is only used by
+ * rte_mempool_virt2phy() when hugepages are disabled. */
+ (void)virtaddr;
+ return RTE_BAD_PHYS_ADDR;
+}
+
static int
rte_eal_contigmem_init(void)
{
--
1.9.2
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [dpdk-dev] [PATCH 00/10] bsd: fix compilation
2014-04-25 11:59 [dpdk-dev] [PATCH 00/10] bsd: fix compilation Olivier Matz
` (9 preceding siblings ...)
2014-04-25 11:59 ` [dpdk-dev] [PATCH 10/10] bsd/mem: get physical address of any pointer Olivier Matz
@ 2014-04-25 13:27 ` Neil Horman
2014-04-29 23:37 ` Thomas Monjalon
10 siblings, 1 reply; 15+ messages in thread
From: Neil Horman @ 2014-04-25 13:27 UTC (permalink / raw)
To: Olivier Matz; +Cc: dev
On Fri, Apr 25, 2014 at 01:59:38PM +0200, Olivier Matz wrote:
> This patch series fix compilation of bsdapp environment
> that was broken by previous commits.
>
> Olivier Matz (10):
> bsd/pci: rename device and driver lists
> bsd/devargs: introduce API and test
> bsd/devargs: use devargs for vdev and PCI whitelist/blacklist
> bsd/devargs: use a comma instead of semicolon to separate key/values
> bsd/devargs: replace --use-device option by --pci-whitelist and --vdev
> bsd/devargs: allow to provide arguments per pci device
> bsd/nic_uio: fix module compilation with freebsd 10
> bsd/mk: use the Q variable instead of @ for quiet commands
> bsd/mem: get hugepages config
> bsd/mem: get physical address of any pointer
>
> lib/librte_eal/bsdapp/eal/Makefile | 2 +-
> lib/librte_eal/bsdapp/eal/eal.c | 112 +++++++++++++++++++-------------
> lib/librte_eal/bsdapp/eal/eal_memory.c | 12 ++++
> lib/librte_eal/bsdapp/eal/eal_pci.c | 17 +++--
> lib/librte_eal/bsdapp/nic_uio/nic_uio.c | 1 +
> mk/rte.bsdmodule.mk | 26 ++++----
> 6 files changed, 105 insertions(+), 65 deletions(-)
>
> --
> 1.9.2
>
>
Series, Minus the Makefile enhancement
Acked-by: Neil Horman <nhorman@tuxdriver.com>
^ permalink raw reply [flat|nested] 15+ messages in thread