From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id 600C8235 for ; Fri, 13 Jul 2018 19:45:50 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Jul 2018 10:45:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,348,1526367600"; d="scan'208";a="56683006" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga008.jf.intel.com with ESMTP; 13 Jul 2018 10:45:48 -0700 Received: from fmsmsx120.amr.corp.intel.com (10.18.124.208) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 13 Jul 2018 10:45:48 -0700 Received: from bgsmsx105.gar.corp.intel.com (10.223.43.197) by fmsmsx120.amr.corp.intel.com (10.18.124.208) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 13 Jul 2018 10:45:48 -0700 Received: from bgsmsx101.gar.corp.intel.com ([169.254.1.40]) by BGSMSX105.gar.corp.intel.com ([169.254.3.118]) with mapi id 14.03.0319.002; Fri, 13 Jul 2018 23:15:45 +0530 From: "Varghese, Vipin" To: "Van Haaren, Harry" , "dev@dpdk.org" CC: "thomas@monjalon.net" Thread-Topic: [PATCH v3] eal/service: improve error checking of coremasks Thread-Index: AQHUGs6KUY4J5k1JmEuqWxkpWNyYG6SNbPWw Date: Fri, 13 Jul 2018 17:45:45 +0000 Message-ID: <4C9E0AB70F954A408CC4ADDBF0F8FA7D4D26758A@BGSMSX101.gar.corp.intel.com> References: <1526399782-156061-1-git-send-email-harry.van.haaren@intel.com> <1531502739-121073-1-git-send-email-harry.van.haaren@intel.com> In-Reply-To: <1531502739-121073-1-git-send-email-harry.van.haaren@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZmI2M2YzOWUtMzNjNi00MTk3LWJhMmMtMDhlYTczYzBmMTIwIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiUUNaSTBIZUF1M2dpVGNscG9XSkJvZnFXME5WT2U0cFNaaGVTSmxNcnNmM1AxSmpoU3lQOEFqMVNsMXJKNWxtUiJ9 dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [10.223.10.10] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v3] eal/service: improve error checking of coremasks X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jul 2018 17:45:50 -0000 Thanks for the change in log level Acked-by: Vipin Varghese > -----Original Message----- > From: Van Haaren, Harry > Sent: Friday, July 13, 2018 10:56 PM > To: dev@dpdk.org > Cc: Van Haaren, Harry ; > thomas@monjalon.net; Varghese, Vipin > Subject: [PATCH v3] eal/service: improve error checking of coremasks >=20 > This commit improves the error checking performed on the core masks (or > lists) of the service cores, in particular with respect to the data-plane= (RTE) > cores of DPDK. >=20 > With this commit, invalid configurations are detected at runtime, and war= ning > messages are printed to inform the user. >=20 > For example specifying the coremask as 0xf, and the service coremask as > 0xff00 is invalid as not all service-cores are contained within the corem= ask. A > warning is now printed to inform the user. >=20 > Reported-by: Vipin Varghese > Signed-off-by: Harry van Haaren >=20 > --- >=20 > v3: > - Use WARNING instead of ERR log level (Vipin) > - Put strings on one line for grep-ability (Harry) >=20 >=20 > v2, thanks for review: > - Consistency in message endings - vs . (Thomas) > - Wrap lines as they're very long otherwise (Thomas) >=20 > Cc: thomas@monjalon.net > Cc: vipin.varghese@intel.com >=20 > @Thomas, RC2 is also OK for this patch in my opinion > --- > lib/librte_eal/common/eal_common_options.c | 39 > ++++++++++++++++++++++++++++++ > 1 file changed, 39 insertions(+) >=20 > diff --git a/lib/librte_eal/common/eal_common_options.c > b/lib/librte_eal/common/eal_common_options.c > index 80f11d0..bee0f2d 100644 > --- a/lib/librte_eal/common/eal_common_options.c > +++ b/lib/librte_eal/common/eal_common_options.c > @@ -321,6 +321,7 @@ eal_parse_service_coremask(const char *coremask) > unsigned int count =3D 0; > char c; > int val; > + uint32_t taken_lcore_count =3D 0; >=20 > if (coremask =3D=3D NULL) > return -1; > @@ -364,6 +365,10 @@ eal_parse_service_coremask(const char *coremask) > "lcore %u unavailable\n", > idx); > return -1; > } > + > + if (cfg->lcore_role[idx] =3D=3D ROLE_RTE) > + taken_lcore_count++; > + > lcore_config[idx].core_role =3D ROLE_SERVICE; > count++; > } > @@ -380,11 +385,27 @@ eal_parse_service_coremask(const char > *coremask) > if (count =3D=3D 0) > return -1; >=20 > + if (core_parsed && taken_lcore_count !=3D count) { > + RTE_LOG(WARNING, EAL, > + "Not all service cores are in the coremask. Please > ensure -c or -l includes service cores\n"); > + } > + > cfg->service_lcore_count =3D count; > return 0; > } >=20 > static int > +eal_service_cores_parsed(void) > +{ > + int idx; > + for (idx =3D 0; idx < RTE_MAX_LCORE; idx++) { > + if (lcore_config[idx].core_role =3D=3D ROLE_SERVICE) > + return 1; > + } > + return 0; > +} > + > +static int > eal_parse_coremask(const char *coremask) { > struct rte_config *cfg =3D rte_eal_get_configuration(); @@ -393,6 > +414,10 @@ eal_parse_coremask(const char *coremask) > char c; > int val; >=20 > + if (eal_service_cores_parsed()) > + RTE_LOG(WARNING, EAL, > + "Service cores parsed before dataplane cores Please > ensure -c is > +before -s or -S.\n"); > + > if (coremask =3D=3D NULL) > return -1; > /* Remove all blank characters ahead and after . > @@ -424,6 +449,7 @@ eal_parse_coremask(const char *coremask) > "unavailable\n", idx); > return -1; > } > + > cfg->lcore_role[idx] =3D ROLE_RTE; > lcore_config[idx].core_index =3D count; > count++; > @@ -455,6 +481,7 @@ eal_parse_service_corelist(const char *corelist) > unsigned count =3D 0; > char *end =3D NULL; > int min, max; > + uint32_t taken_lcore_count =3D 0; >=20 > if (corelist =3D=3D NULL) > return -1; > @@ -496,6 +523,9 @@ eal_parse_service_corelist(const char *corelist) > idx); > return -1; > } > + if (cfg->lcore_role[idx] =3D=3D ROLE_RTE) > + taken_lcore_count++; > + > lcore_config[idx].core_role =3D > ROLE_SERVICE; > count++; > @@ -510,6 +540,11 @@ eal_parse_service_corelist(const char *corelist) > if (count =3D=3D 0) > return -1; >=20 > + if (core_parsed && taken_lcore_count !=3D count) { > + RTE_LOG(WARNING, EAL, > + "not all service cores were in the coremask. Please > ensure -c or -l includes service cores\n"); > + } > + > return 0; > } >=20 > @@ -522,6 +557,10 @@ eal_parse_corelist(const char *corelist) > char *end =3D NULL; > int min, max; >=20 > + if (eal_service_cores_parsed()) > + RTE_LOG(WARNING, EAL, > + "Service cores parsed before dataplane cores. Please > ensure -l is > +before -s or -S.\n"); > + > if (corelist =3D=3D NULL) > return -1; >=20 > -- > 2.7.4