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 DE42EA0518; Fri, 24 Jul 2020 13:07:27 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 999BB1BFE7; Fri, 24 Jul 2020 13:07:26 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id D7AE81BFE5 for ; Fri, 24 Jul 2020 13:07:24 +0200 (CEST) IronPort-SDR: yiEYi4/4OoTwoqSiIz1K3pAcg/UkzkL+wtsppWE38kqvA2326KhKW5Q0hwj5nywQanByKOiUgp aPcRRhTIorYw== X-IronPort-AV: E=McAfee;i="6000,8403,9691"; a="138754472" X-IronPort-AV: E=Sophos;i="5.75,390,1589266800"; d="scan'208";a="138754472" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jul 2020 04:07:23 -0700 IronPort-SDR: WcT27/FtjoEUzxwZFNA9o4SUde6hqreg7WX0PnXVfdLIf5ikVGjZRWyhZzd7wKK1EjKluEn9eN rJ+4RcApIUKQ== X-IronPort-AV: E=Sophos;i="5.75,390,1589266800"; d="scan'208";a="463193337" Received: from bricha3-mobl.ger.corp.intel.com ([10.251.87.116]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-SHA; 24 Jul 2020 04:07:21 -0700 Date: Fri, 24 Jul 2020 12:07:18 +0100 From: Bruce Richardson To: Parav Pandit Cc: dev@dpdk.org, grive@u256.net, ferruh.yigit@intel.com, thomas@monjalon.net, rasland@mellanox.com, orika@mellanox.com, matan@mellanox.com, joyce.kong@arm.com Message-ID: <20200724110718.GB2305@bricha3-MOBL.ger.corp.intel.com> References: <20200610171728.89-2-parav@mellanox.com> <20200723200910.376581-1-parav@mellanox.com> <20200723200910.376581-4-parav@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200723200910.376581-4-parav@mellanox.com> Subject: Re: [dpdk-dev] [PATCH v8 03/10] drivers: relax dependency order 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 Thu, Jul 23, 2020 at 11:09:03PM +0300, Parav Pandit wrote: > From: Thomas Monjalon > > Drivers dependencies are evaluated in the order defined per > their parent directory (also called class). > This strict ordering prevent from having 2 different drivers > of the same class with different dependencies ordering. > This problem occurs if drivers/common/mlx5 depends on drivers/bus/pci, > while drivers/bus/dpaa depends on drivers/common/dpaax. > Having a strict ordering between directories bus and common > is too much restrictive. > > That's why it is made possible to have a more fine-grain directory list, > adding a driver sub-directory in the list. > In this case, the isolated driver must be removed from its class list, > and added directly in drivers/meson.build. > Also, the per-class variables must be duplicated in the isolated driver, > because the call "subdir(class)" is skipped in the isolated driver case. > > Signed-off-by: Thomas Monjalon The commit log above has some strange word-wrapping, and occasionally strange phrasing. I think it could be slightly reworded, perhaps as: Drivers dependencies are evaluated in the order defined per their parent directory (also called class). This strict ordering prevents from us from having pairs of drivers from two classes with different dependency ordering. For example, if the mlx5 common code depends on the pci bus driver, while the dpaax common code is itself a dependency of the dpaa bus driver. Having a strict ordering between directories bus and common is too restrictive, as processing either common drivers or bus drivers first leads us to missing dependencies in this scenario. This patch makes it possible to have a more fine-grain directory list, adding a specific driver sub-directory in the top-level drivers subdirectory list. In this case, the isolated driver must also be removed from its class list, and the per-class variables must be duplicated in the isolated driver, because the call "subdir(class)" is skipped in the isolated driver case. Apart from that, I think this is a good idea to give us some flexibility in managing driver ordering which should help other drivers too - perhaps QAT? Ideally, though, I'd like if we can limit the flexible ordering to *only* common code, in which case we could move the per-class variables for common to the top-level to prevent duplication, and maybe even get rid of common/meson.build completely. That, however, will depend on how much this feature gets used and by whom. Therefore: Review-by: Bruce Richardson Acked-by: Bruce Richardson