On Fri, Nov 17, 2023 at 10:24:41AM +0000, Ye, MingjinX wrote: > Hi Richardson, > > can you please take a look at this patch. > > Thanks, > Mingjin >
Hi, I acked v6. If nothing major has changed in the patch, then the ack can be kept for v7. If there is something that has changed that you think I should look at, please include it in the change-log, so I can check it out. For now, assuming no major changes: Acked-by: Bruce Richardson <bruce.richard...@intel.com> /Bruce > > > -----Original Message----- > > From: Ye, MingjinX <mingjinx...@intel.com> > > Sent: Tuesday, November 14, 2023 6:28 PM > > To: dev@dpdk.org > > Cc: Yang, Qiming <qiming.y...@intel.com>; Ye, MingjinX > > <mingjinx...@intel.com>; sta...@dpdk.org > > Subject: [PATCH v7] app/test: secondary process passes allow parameters > > > > In EAL related test cases, the allow parameters are not passed to the > > secondary process, resulting in unexpected NICs being loaded. > > > > This patch fixes this issue by appending the allow parameters to the > > secondary process. > > > > Fixes: af75078fece3 ("first public release") > > Cc: sta...@dpdk.org > > > > Signed-off-by: Mingjin Ye <mingjinx...@intel.com> > > --- > > v5: Optimized. > > --- > > v6: Optimized. > > --- > > v7: Fix CI errors. > > --- > > app/test/process.h | 46 > > ++++++++++++++++++++++++++++++++++++++++++---- > > 1 file changed, 42 insertions(+), 4 deletions(-) > > > > diff --git a/app/test/process.h b/app/test/process.h index > > af7bc3e0de..06b2f8b192 100644 > > --- a/app/test/process.h > > +++ b/app/test/process.h > > @@ -17,6 +17,7 @@ > > #include <dirent.h> > > > > #include <rte_string_fns.h> /* strlcpy */ > > +#include <rte_devargs.h> > > > > #ifdef RTE_EXEC_ENV_FREEBSD > > #define self "curproc" > > @@ -34,6 +35,34 @@ extern uint16_t flag_for_send_pkts; #endif #endif > > > > +#define PREFIX_ALLOW "--allow=" > > + > > +static int > > +add_parameter_allow(char **argv, int max_capacity) { > > + struct rte_devargs *devargs; > > + int count = 0; > > + > > + RTE_EAL_DEVARGS_FOREACH(NULL, devargs) { > > + if (strlen(devargs->name) == 0) > > + continue; > > + > > + if (devargs->data == NULL || strlen(devargs->data) == 0) { > > + if (asprintf(&argv[count], PREFIX_ALLOW"%s", > > devargs->name) < 0) > > + break; > > + } else { > > + if (asprintf(&argv[count], PREFIX_ALLOW"%s,%s", > > + devargs->name, devargs->data) < 0) > > + break; > > + } > > + > > + if (++count == max_capacity) > > + break; > > + } > > + > > + return count; > > +} > > + > > /* > > * launches a second copy of the test process using the given argv > > parameters, > > * which should include argv[0] as the process name. To identify in the @@ > > - > > 43,8 +72,10 @@ extern uint16_t flag_for_send_pkts; static inline int > > process_dup(const char *const argv[], int numargs, const char *env_value) { > > - int num; > > - char *argv_cpy[numargs + 1]; > > + int num = 0; > > + char **argv_cpy; > > + int allow_num; > > + int argv_num; > > int i, status; > > char path[32]; > > #ifdef RTE_LIB_PDUMP > > @@ -58,11 +89,18 @@ process_dup(const char *const argv[], int numargs, > > const char *env_value) > > if (pid < 0) > > return -1; > > else if (pid == 0) { > > + allow_num = > > rte_devargs_type_count(RTE_DEVTYPE_ALLOWED); > > + argv_num = numargs + allow_num + 1; > > + argv_cpy = calloc(argv_num, sizeof(char *)); > > + if (!argv_cpy) > > + rte_panic("Memory allocation failed\n"); > > + > > /* make a copy of the arguments to be passed to exec */ > > for (i = 0; i < numargs; i++) > > argv_cpy[i] = strdup(argv[i]); > > - argv_cpy[i] = NULL; > > - num = numargs; > > + if (allow_num > 0) > > + num = add_parameter_allow(&argv_cpy[i], > > allow_num); > > + num += numargs; > > > > #ifdef RTE_EXEC_ENV_LINUX > > { > > -- > > 2.25.1 >