From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 27F2BA0093; Tue, 10 May 2022 16:12:07 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BF90242831; Tue, 10 May 2022 16:12:05 +0200 (CEST) Received: from stargate.chelsio.com (stargate.chelsio.com [12.32.117.8]) by mails.dpdk.org (Postfix) with ESMTP id 010664069D for ; Tue, 10 May 2022 16:12:03 +0200 (CEST) Received: from localhost (sicon-nithya-lt.asicdesigners.com [10.193.177.173] (may be forged)) by stargate.chelsio.com (8.14.7/8.14.7) with ESMTP id 24AEBwoa022454; Tue, 10 May 2022 07:11:59 -0700 Date: Tue, 10 May 2022 19:41:57 +0530 From: Rahul Lakkireddy To: Thomas Monjalon Cc: Ferruh Yigit , Andrew Rybchenko , David Marchand , Jerin Jacob Kollanukkaran , Qi Z Zhang , Hemant Agrawal , "Min Hu (Connor)" , Viacheslav Ovsiienko , olivier.matz@6wind.com, dev@dpdk.org Subject: Re: [PATCH 5/5] net/cxgbe: read firmware configuration file from filesystem Message-ID: References: <37be1c92-f15f-eac7-40c6-5614fe160d23@xilinx.com> <5263095.Sb9uPGUboI@thomas> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5263095.Sb9uPGUboI@thomas> X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On Tuesday, May 05/10/22, 2022 at 11:02:05 +0200, Thomas Monjalon wrote: > 06/05/2022 13:36, Rahul Lakkireddy: > > The Chelsio FW config file contains a list of register=value pairs to > > change configuration of the NIC before firmware is initialized. > > It closely resembles the INI file format. It is mainly used to aid > > in debugging FW initialization failures and to optimally partition > > NIC hardware resources for specific requirements. Partitioning > > generally involves moving resources on unused Physical Functions > > (PFs) to the main PF, like redistributing queues, hardware TCAMs, > > etc., before firmware begins initialization. Once the configuration > > looks good, then the final FW config file is flashed onto the NIC > > using the cxgbtool. The FW config file can then be removed from the > > /lib/firmware/cxgb4/ directory and the FW will begin initializing > > with the flashed FW config file on the NIC from next time onwards. > > > > With this patch, the FW config file is selected in following order. > > > > 1) Check and select FW config file present in /lib/firmware/cxgb4/ > > directory. > > > > 2) Otherwise, check and select FW config file flashed onto the > > NIC. > > > > 3) Otherwise, select the default FW config file embedded within the > > FW binary on the NIC. > > > > Since this is pretty low-level hardware configuration, the users are > > not expected to change this file without expert guidance. So, > > exporting such a low-level configuration via devargs API does not > > feel like the right fit for this specific requirement. > > > > Once FW is up and running with the FW config file, some of the driver > > and FW runtime features can be enabled/disabled via devargs API during > > driver probe. > > > > To summarize, the FW config file is intended to debug FW initialization > > failures and/or aid in resources partitioning before FW starts > > initialization. Once the FW is running, the whole or smaller slices > > of these partitioned resources can be further redistributed across > > the multiple physical ports controlled by the same underlying PF. > > Sorry it is not clear to me. > The FW file is used by cxgbtool to flash it, right? > The PMD may use the same FW file for debug diagnostics? There are 2 FW related files in /lib/firmware/cxgb4 directory that can be written into the NIC flash (at different locations in the flash) using cxgbtool: 1) FW config file (t6-config.txt): This file contains register=value pairs to configure some HW registers before initializing FW (t6fw.bin). These register=value pairs are very low level and specific to HW. The FW config file can be used to enable/disable some paths in HW to debug FW initialization issues. Since it can disable some paths in HW, it can also be used to partition and redistribute resources from other unused PFs to main PF, before FW initialization. 2) FW binary (t6fw.bin): This contains the actual FW. This binary also has an embedded "default" FW config file that will be used if no FW config file (t6-config.txt) is present in NIC "flash" or in the "/lib/firmware/cxgb4/" directory. > How is it used by the kernel? > In kernel cxgb4 driver also, we follow the same sequence when initializing FW. If any FW config file (t6-config.txt) is present in "/lib/firmware/cxgb4" directory, then it is picked up first. Otherwise, a FW config file that has been "flashed" onto the NIC using cxgbtool, is picked up next. Otherwise, FW will init with the "default" FW config file embedded inside the FW binary (t6fw.bin). Currently, the DPDK cxgbe PMD only picks up the FW config file from NIC "flash" or the "default" one inside the FW binary. This patch adds a way to pick FW config file from "lib/firmware/cxgb4" directory when a FW config file is placed there. Thanks, Rahul