netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
To: Leon Romanovsky <leon@kernel.org>,
	Tony Nguyen <anthony.l.nguyen@intel.com>
Cc: <davem@davemloft.net>, <kuba@kernel.org>, <pabeni@redhat.com>,
	<edumazet@google.com>, <netdev@vger.kernel.org>,
	<jacob.e.keller@intel.com>, <horms@kernel.org>,
	Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com>
Subject: Re: [PATCH net-next v3 2/5] ice: configure FW logging
Date: Thu, 17 Aug 2023 14:25:34 -0700	[thread overview]
Message-ID: <c865cde7-fe13-c158-673a-a0acd200b667@intel.com> (raw)
In-Reply-To: <20230815183854.GU22185@unreal>

On 8/15/2023 11:38 AM, Leon Romanovsky wrote:
> On Tue, Aug 15, 2023 at 09:57:47AM -0700, Tony Nguyen wrote:
>> From: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
>>
>> Users want the ability to debug FW issues by retrieving the
>> FW logs from the E8xx devices. Use debugfs to allow the user to
>> read/write the FW log configuration by adding a 'fwlog/modules' file.
>> Reading the file will show either the currently running configuration or
>> the next configuration (if the user has changed the configuration).
>> Writing to the file will update the configuration, but NOT enable the
>> configuration (that is a separate command).
>>
>> To see the status of FW logging then read the 'fwlog/modules' file like
>> this:
>>
>> cat /sys/kernel/debug/ice/0000\:18\:00.0/fwlog/modules
>>
>> To change the configuration of FW logging then write to the 'fwlog/modules'
>> file like this:
>>
>> echo DCB NORMAL > /sys/kernel/debug/ice/0000\:18\:00.0/fwlog/modules
>>
>> The format to change the configuration is
>>
>> echo <fwlog_module> <fwlog_level> > /sys/kernel/debug/ice/<pci device
> 
> This line is truncated, it is not clear where you are writing.

Good catch, I don't know how I missed this... Will fix

> And more general question, a long time ago, netdev had a policy of
> not-allowing writing to debugfs, was it changed?
> 

I had this same thought and it seems like there were 2 concerns in the past

1. Having a single file that was read/write with lots of commands going 
through it
2. Having code in the driver to parse the text from the commands that 
was error/security prone

We have addressed this in 2 ways:
1. Split the commands into multiple files that have a single purpose
2. Use kernel parsing functions for anything where we *have* to pass 
text to decode

>>
>> where
>>
>> * fwlog_level is a name as described below. Each level includes the
>>    messages from the previous/lower level
>>
>>        * NONE
>>        *	ERROR
>>        *	WARNING
>>        *	NORMAL
>>        *	VERBOSE
>>
>> * fwlog_event is a name that represents the module to receive events for.
>>    The module names are
>>
>>        *	GENERAL
>>        *	CTRL
>>        *	LINK
>>        *	LINK_TOPO
>>        *	DNL
>>        *	I2C
>>        *	SDP
>>        *	MDIO
>>        *	ADMINQ
>>        *	HDMA
>>        *	LLDP
>>        *	DCBX
>>        *	DCB
>>        *	XLR
>>        *	NVM
>>        *	AUTH
>>        *	VPD
>>        *	IOSF
>>        *	PARSER
>>        *	SW
>>        *	SCHEDULER
>>        *	TXQ
>>        *	RSVD
>>        *	POST
>>        *	WATCHDOG
>>        *	TASK_DISPATCH
>>        *	MNG
>>        *	SYNCE
>>        *	HEALTH
>>        *	TSDRV
>>        *	PFREG
>>        *	MDLVER
>>        *	ALL
>>
>> The name ALL is special and specifies setting all of the modules to the
>> specified fwlog_level.
>>
>> If the NVM supports FW logging then the file 'fwlog' will be created
>> under the PCI device ID for the ice driver. If the file does not exist
>> then either the NVM doesn't support FW logging or debugfs is not enabled
>> on the system.
>>
>> In addition to configuring the modules, the user can also configure the
>> number of log messages (resolution) to include in a single Admin Receive
>> Queue (ARQ) event.The range is 1-128 (1 means push every log message, 128
>> means push only when the max AQ command buffer is full). The suggested
>> value is 10.
>>
>> To see/change the resolution the user can read/write the
>> 'fwlog/resolution' file. An example changing the value to 50 is
>>
>> echo 50 > /sys/kernel/debug/ice/0000\:18\:00.0/fwlog/resolution
>>
>> Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
>> Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
>> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
>> ---
>>   drivers/net/ethernet/intel/ice/Makefile       |   4 +-
>>   drivers/net/ethernet/intel/ice/ice.h          |  18 +
>>   .../net/ethernet/intel/ice/ice_adminq_cmd.h   |  80 ++++
>>   drivers/net/ethernet/intel/ice/ice_common.c   |   5 +
>>   drivers/net/ethernet/intel/ice/ice_debugfs.c  | 450 ++++++++++++++++++
>>   drivers/net/ethernet/intel/ice/ice_fwlog.c    | 231 +++++++++
>>   drivers/net/ethernet/intel/ice/ice_fwlog.h    |  55 +++
>>   drivers/net/ethernet/intel/ice/ice_main.c     |  21 +
>>   drivers/net/ethernet/intel/ice/ice_type.h     |   4 +
>>   9 files changed, 867 insertions(+), 1 deletion(-)
>>   create mode 100644 drivers/net/ethernet/intel/ice/ice_debugfs.c
>>   create mode 100644 drivers/net/ethernet/intel/ice/ice_fwlog.c
>>   create mode 100644 drivers/net/ethernet/intel/ice/ice_fwlog.h
>>
>> diff --git a/drivers/net/ethernet/intel/ice/Makefile b/drivers/net/ethernet/intel/ice/Makefile
>> index 960277d78e09..d43a59e5f8ee 100644
>> --- a/drivers/net/ethernet/intel/ice/Makefile
>> +++ b/drivers/net/ethernet/intel/ice/Makefile
>> @@ -34,7 +34,8 @@ ice-y := ice_main.o	\
>>   	 ice_lag.o	\
>>   	 ice_ethtool.o  \
>>   	 ice_repr.o	\
>> -	 ice_tc_lib.o
>> +	 ice_tc_lib.o	\
>> +	 ice_fwlog.o
>>   ice-$(CONFIG_PCI_IOV) +=	\
>>   	ice_sriov.o		\
>>   	ice_virtchnl.o		\
>> @@ -49,3 +50,4 @@ ice-$(CONFIG_RFS_ACCEL) += ice_arfs.o
>>   ice-$(CONFIG_XDP_SOCKETS) += ice_xsk.o
>>   ice-$(CONFIG_ICE_SWITCHDEV) += ice_eswitch.o ice_eswitch_br.o
>>   ice-$(CONFIG_GNSS) += ice_gnss.o
>> +ice-$(CONFIG_DEBUG_FS) += ice_debugfs.o
>> diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h
>> index 5ac0ad12f9f1..e6dd9f6f9eee 100644
>> --- a/drivers/net/ethernet/intel/ice/ice.h
>> +++ b/drivers/net/ethernet/intel/ice/ice.h
>> @@ -556,6 +556,8 @@ struct ice_pf {
>>   	struct ice_vsi_stats **vsi_stats;
>>   	struct ice_sw *first_sw;	/* first switch created by firmware */
>>   	u16 eswitch_mode;		/* current mode of eswitch */
>> +	struct dentry *ice_debugfs_pf;
>> +	struct dentry *ice_debugfs_pf_fwlog;
>>   	struct ice_vfs vfs;
>>   	DECLARE_BITMAP(features, ICE_F_MAX);
>>   	DECLARE_BITMAP(state, ICE_STATE_NBITS);
>> @@ -861,6 +863,22 @@ static inline bool ice_is_adq_active(struct ice_pf *pf)
>>   	return false;
>>   }
>>   
>> +#ifdef CONFIG_DEBUG_FS
> 
> There is no need in this CONFIG_DEBUG_FS and code should be written
> without debugfs stubs.
> 

I don't understand this comment... If the kernel is configured *without* 
debugfs, won't the kernel fail to compile due to missing functions if we 
don't do this?

>> +void ice_debugfs_fwlog_init(struct ice_pf *pf);
>> +void ice_debugfs_init(void);
>> +void ice_debugfs_exit(void);
>> +void ice_pf_fwlog_update_module(struct ice_pf *pf, int log_level, int module);
>> +#else
>> +static inline void ice_debugfs_fwlog_init(struct ice_pf *pf) { }
>> +static inline void ice_debugfs_init(void) { }
>> +static inline void ice_debugfs_exit(void) { }
>> +static void
>> +ice_pf_fwlog_update_module(struct ice_pf *pf, int log_level, int module)
>> +{
>> +	return -EOPNOTSUPP;
>> +}
>> +#endif /* CONFIG_DEBUG_FS */
> 
> Thanks


  reply	other threads:[~2023-08-17 21:26 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-15 16:57 [PATCH net-next v3 0/5][pull request] add v2 FW logging for ice driver Tony Nguyen
2023-08-15 16:57 ` [PATCH net-next v3 1/5] ice: remove FW logging code Tony Nguyen
2023-08-15 18:34   ` Leon Romanovsky
2023-08-15 16:57 ` [PATCH net-next v3 2/5] ice: configure FW logging Tony Nguyen
2023-08-15 18:38   ` Leon Romanovsky
2023-08-17 21:25     ` Paul M Stillwell Jr [this message]
2023-08-18 11:10       ` Leon Romanovsky
2023-08-18 12:31         ` Przemek Kitszel
2023-08-21 23:20           ` Paul M Stillwell Jr
2023-08-22  7:33             ` Przemek Kitszel
2023-08-22 20:44             ` Keller, Jacob E
2023-08-22 20:58               ` Paul M Stillwell Jr
2023-08-22 21:16                 ` Paul M Stillwell Jr
2023-08-22 20:45             ` Keller, Jacob E
2023-08-22 20:59               ` Paul M Stillwell Jr
2023-08-23 22:23     ` Paul M Stillwell Jr
2023-08-15 16:57 ` [PATCH net-next v3 3/5] ice: enable " Tony Nguyen
2023-08-15 16:57 ` [PATCH net-next v3 4/5] ice: add ability to read FW log data and configure the number of log buffers Tony Nguyen
2023-08-15 16:57 ` [PATCH net-next v3 5/5] ice: add documentation for FW logging Tony Nguyen
2023-08-16 22:43   ` Randy Dunlap
2023-08-23 22:25     ` Paul M Stillwell Jr

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c865cde7-fe13-c158-673a-a0acd200b667@intel.com \
    --to=paul.m.stillwell.jr@intel.com \
    --cc=anthony.l.nguyen@intel.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=himasekharx.reddy.pucha@intel.com \
    --cc=horms@kernel.org \
    --cc=jacob.e.keller@intel.com \
    --cc=kuba@kernel.org \
    --cc=leon@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).