From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 604E9A0561; Mon, 20 Apr 2020 19:30:31 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C80861D6E0; Mon, 20 Apr 2020 19:30:30 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 211A31D6B2 for ; Mon, 20 Apr 2020 19:30:28 +0200 (CEST) IronPort-SDR: 1O3BY50dM8SHaCZA+NNbKnnAa3PKOXECxfX6G6BQbCwoCQVaXGTkUW4Lr8FdSr57LF9HgKGgAX c9q0qT35SaBQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Apr 2020 10:30:28 -0700 IronPort-SDR: vyQb79EYp61DjqMQUHZsL/vCvInPA5GtXxtwoz0PZkArgydPfQG6zqVLXKIoYVxVMFIDNDpqpv 3nVFvWDuU/Fg== X-IronPort-AV: E=Sophos;i="5.72,407,1580803200"; d="scan'208";a="429208273" Received: from bricha3-mobl.ger.corp.intel.com ([10.249.46.74]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-SHA; 20 Apr 2020 10:30:19 -0700 Date: Mon, 20 Apr 2020 18:30:15 +0100 From: Bruce Richardson To: Thomas Monjalon Cc: Lukasz Wojciechowski , "Ananyev, Konstantin" , "Dumitrescu, Cristian" , Igor Russkikh , Pavel Belous , "Lu, Wenzhuo" , Marcin Wojtas , Michal Krawczyk , Guy Tzalik , Evgeny Schemeilin , Igor Chauskin , John Daley , Hyong Youb Kim , "Zhang, Qi Z" , "Wang, Xiao W" , Ziyang Xuan , Xiaoyun Wang , Guoyang Zhou , "Wei Hu (Xavier)" , "Min Hu (Connor)" , Yisen Zhuang , "Xing, Beilei" , "Wu, Jingjing" , "Yang, Qiming" , Rasesh Mody , Shahed Shaikh , "Singh, Jasvinder" , Maxime Coquelin , "Wang, Zhihong" , "Ye, Xiaolong" , Yong Wang , "Yigit, Ferruh" , Andrew Rybchenko , Olivier Matz , "dev@dpdk.org" Message-ID: <20200420173015.GC1719@bricha3-MOBL.ger.corp.intel.com> References: <20200417215739.23180-1-l.wojciechow@partner.samsung.com> <20200420171130.GA1719@bricha3-MOBL.ger.corp.intel.com> <7682483.vcMjziH8VY@thomas> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <7682483.vcMjziH8VY@thomas> Subject: Re: [dpdk-dev] [PATCH v1 03/17] ethdev: replace library debug flag with global one 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Mon, Apr 20, 2020 at 07:21:32PM +0200, Thomas Monjalon wrote: > 20/04/2020 19:11, Bruce Richardson: > > On Mon, Apr 20, 2020 at 04:43:21PM +0200, Lukasz Wojciechowski wrote: > > > > > > W dniu 20.04.2020 o 16:21, Bruce Richardson pisze: > > > > On Mon, Apr 20, 2020 at 01:37:12PM +0000, Ananyev, Konstantin wrote: > > > >>> > > > > > >> I am agree with Cristian concern here: that patch removes ability to > > > >> enable/disable debug on particular library/PMD. If the purpose is to > > > >> minimize number of config compile options, I wonder can't it be done > > > >> in a slightly different way: 1. introduce gloabal RTE_DEBUG 2. keep > > > >> actual .[c,h] files intact 3. In actual librte_xxx/meson.build file > > > >> check if RTE_DEBUG is enabled, If yes, then enable particular debug > > > >> flag for these libs. Something like: If dpdk_conf.get('RTE_DEBUG') == > > > >> true dpdk_conf.set('RTE_LIBRTE_XXX_DEBUG ', 1) > > > >> > > > >> defines that are used by multiple libs, probably can be set in upper > > > >> layer meson.build. > > > >> > > > >> That way will have global 'debug' flag, but users will still have an > > > >> ability to enable/disable debug flags on a per lib basis via > > > >> CFLAGS="-D..." > > > >> > > > >> Konstantin > > > >> > > > > That seems a reasonable idea to me. > > > > > > > > However, in this case, we don't need the RTE_DEBUG flag at all, we can > > > > either: > > > > > > > > * allow each component meson.build file define its own flags after > > > > checking get_option('debug') * have lib/meson.build and > > > > drivers/meson.build automatically define a specific define for each > > > > library or driver to standardize the naming. [This would save anyone > > > > working on it from having to lookup what the define was, since it's > > > > always e.g. RTE_DEBUG_ + library-base-name, e.g. RTE_DEBUG_LPM, > > > > RTE_DEBUG_SCHED etc] > > > > > > > > Theoretically we can also do both, have the standard ones defined and > > > > then allow a component to provide extra flags itself if so desired. > > > > > > > > /Bruce > > > OK, so let's summarize how the patches should be redo: * usage of global > > > "debug" flag for meson build stays * we standardize names of debug flags > > > in the components to RTE_DEBUG_ + components name * debug flag enables al > > > the RTE_DEBUG_... flags > > > > > > This allow to easily use both: * the debug flag - to enable all debugs * > > > or define manually RTE_DEBUG+component name, just for debug from a single > > > component > > > > > > I like Bruce's idea of adding it to the lib/meson.build and > > > drivers/meson.build. This way they will be added to dpdk_conf meson > > > object and written then later to rte_build_config.h before compilation > > > stage. All the other modules will be able to use these flags. > > > > > Sounds good to me (obviously!), but I'd like other feedback to ensure > > others are ok with this before you spend too much effort implementing it. > > > > For the drivers, the flag probably needs to include the category as well as > > the name, e.g. RTE_DEBUG_NET_IXGBE, RTE_DEBUG_RAW_IOAT, to avoid possible > > name confusion. Those flags can then be checked inside individual > > meson.build files to enable other debug flags if necessary e.g. in ixgbe, > > you could theoretically do: > > > > if dpdk_conf.has('RTE_DEBUG_NET_IXGBE') > > cflags += '-DRTE_LIBRTE_IXGBE_DEBUG_RX' > > cflags += '-DRTE_LIBRTE_IXGBE_DEBUG_TX' > > ... > > endif > > > > to enable more fine-grained control if so desired, and to maintain > > compatibility with existing defines, again if so desired. > > Nak the nak from Cristian. > > We don't need all these flags. > If the user choose to compile DPDK for debug, every debug facilities > should be enabled. Then at runtime it is possible to enable/disable > the interesting logs. > If you need to disable something which is not a log, > you can align with the log level thanks to the function rte_log_can_log. > > Please let's stop complicating things for the contributors and the users. > Note: I am strong on this position. > Note, this means that you need to ensure all debug printouts from libs and drivers are using the RTE_LOG macros so can be runtime controlled. I think that may be some distance from reality right now. Even if we do want all debug enabled from one flag, I'm still not 100% convinced that the existing debug flag is the way to do, since it only adds debug info to binary without affecting code generation.