From: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
To: intel-wired-lan@lists.osuosl.org
Subject: [Intel-wired-lan] [PATCH net-next v12 0/4] add v2 FW logging for ice driver
Date: Wed, 7 Jun 2023 15:24:39 -0700 [thread overview]
Message-ID: <20230607222443.119-1-paul.m.stillwell.jr@intel.com> (raw)
Firmware (FW) log support was added to the ice driver, but that version is
no longer supported. There is a newer version of FW logging (v2) that
adds more control knobs to get the exact data out of the FW
for debugging.
The interface for FW logging is debugfs. This was chosen based on a
discussion here:
https://lore.kernel.org/netdev/20230214180712.53fc8ba2@kernel.org/
We talked about using devlink in a variety of ways, but none of those
options made any sense for the way the FW reports data. We briefly talked
about using ethtool, but that seemed to go by the wayside. Ultimately it
seems like using debugfs is the way to go so re-implement the code to use
that.
FW logging is across all the PFs on the device so restrict the commands to
only PF0.
If FW logging is supported then a directory named 'fwlog' will be created
under '/sys/kernel/debug/ice/<pci_dev>'. A variety of files will be created
to manage the behavior of logging. The following files will be created:
- modules
- resolution
- enable
- nr_buffs
- data
where
modules is used to read/write the configuration for FW logging
resolution is used to determine how often to send FW logging events to the
driver
enable is used to start/stop FW logging
nr_buffs is used to configure the number of data buffers the driver uses
for log data
data is used to read/clear the log data
Generally there is a lot of data and dumping that data to syslog will
result in a loss of data. This causes problems when decoding the data and
the user doesn't know that data is missing until later. Instead of dumping
the FW log output to syslog use debugfs. This ensures that all the data the
driver has gets retrieved correctly.
The FW log data is binary data that the FW team decodes to determine what
happened in firmware. The binary blob is sent to Intel for decoding.
---
v12:
- re-wrote debugfs code to use individual files for configuration instead
of parsing the strings within the driver.
- use sysfs_match_string() to parse the 2 values we need for configuring
the modules instead of strncmp()
- use ring buffers to contain log data instead of a list. this allows for
wrapping the data instead of stopping log capture
- split documentation into it's own patch
v11 at:
https://lore.kernel.org/intel-wired-lan/20230313231841.113-1-paul.m.stillwell.jr@intel.com/
v11:
- changed 'events' variable to be u32 instead of unsigned long since
the FW expects a 32-bit value. This caused some changes to a few
functions that pass 'events' and changed the parsing in debugfs.
Also fixed an issue with i386 cross compile where BIT_ULL() was
being used incorrectly and causing compiler issues on i386 because
the value was larger than the variable.
v10 at:
https://lore.kernel.org/intel-wired-lan/20230308235102.170-1-paul.m.stillwell.jr@intel.com/
v10:
- updated code to only create 'fwlog' file if FW logging is supported
- combined code under single ifdef in header file
- removed defines that were not used and added them when the correct patch is
applied
- added newline between defines and variables in structure
- moved include header into alphabetical order at top of file
- removed unnecessary casts
- updated return statements for more efficient code
- changed BIT() to BIT_ULL() to try to fix i386 cross compile issue
- fixed RCT issue
- added documentation in Documentation/networking/device-drivers/ethernet/intel/ice.rst
- updated commit messages appropriately
-
v9 at:
https://lore.kernel.org/intel-wired-lan/20230302215109.124-1-paul.m.stillwell.jr@intel.com/
v9:
- rewrote code to use debugfs instead of devlink
v8 at:
https://lore.kernel.org/intel-wired-lan/20230124221428.114-1-paul.m.stillwell.jr@intel.com/
v8:
- added vmalloc.h file for correct prototypes
- moved code change from patch 5 to patch 3 where it was supposed to be
- fixed a style issue
v7 at:
https://lore.kernel.org/intel-wired-lan/20230120233511.131-1-paul.m.stillwell.jr@intel.com/
v7:
- removed dev_info() in ice_debugfs_command_read() since it wasn't needed
- refactored ice_debugfs_command_read() to split the copying of the data and
the freeing of the buffers. This allows for better error recovery in case
the copy_to_user() fails
- changed allocation of fwlog buffers and structure from kernel memory to
virtual memory (vmalloc/vzalloc)
- fixed a compile bug
v6 at:
https://lore.kernel.org/intel-wired-lan/20230113222319.111-1-paul.m.stillwell.jr@intel.com/
v6:
- removed cache_cfg() based on feedback
- a couple of other minor changes based on feedback
v5 at:
https://lore.kernel.org/intel-wired-lan/20230111191906.131-1-paul.m.stillwell.jr@intel.com/
v5:
- handle devlink reload path correctly so debugfs directories don't get
added twice
- fix issue where code wrapped with CONFIG_DEBUG_FS was causing sparc
compile issues with multiple defines
No v4 cover letter
v4:
- actually changed the modes in ice.rst for new params
v3 at:
https://lore.kernel.org/intel-wired-lan/20221217045828.222-1-paul.m.stillwell.jr@intel.com/
v3:
- fixed ice.rst to have proper mode for new params and fixed formatting
v2 at:
https://lore.kernel.org/intel-wired-lan/20221209232748.189-1-paul.m.stillwell.jr@intel.com/
v2:
- removed some unused admin queue commands
- updated copyright in ice_fwlog.[ch] to 2022
- moved defines in structures under the variables and added blank line
- removed a couple of unused defines
- changed fwlog_support_ena to fwlog_supported to be clearer
- consolidated ice_devlink_param_id enum together
- changed ice_fwlog_set_support_ena() to ice_fwlog_set_supported()
- consolidated return status logic in ice_devlink_fwlog_enabled_set()
- pull up functions in ice_fwlog.c where appropriate
- add newline for FW Logging Commands comment
- changed any new u[8/16] loop variables to int
- moved ice_pf_fwlog_deinit() from patch 5 to patch 4
- changed error message to be clearer
- updated Documentation/networking/devlink/ice.rst
- updated commit messages with examples of devlink commands and using
debugfs to get log files
v1 at:
https://lore.kernel.org/intel-wired-lan/20221128214749.110-1-paul.m.stillwell.jr@intel.com/
Paul M Stillwell Jr (4):
ice: remove FW logging code
ice: configure FW logging
ice: add ability to read FW log data and configure the number of log
buffers
ice: added documentation for FW logging
.../device_drivers/ethernet/intel/ice.rst | 126 ++-
drivers/net/ethernet/intel/ice/Makefile | 4 +-
drivers/net/ethernet/intel/ice/ice.h | 18 +
.../net/ethernet/intel/ice/ice_adminq_cmd.h | 159 ++--
drivers/net/ethernet/intel/ice/ice_common.c | 219 +----
drivers/net/ethernet/intel/ice/ice_common.h | 1 -
drivers/net/ethernet/intel/ice/ice_debugfs.c | 809 ++++++++++++++++++
drivers/net/ethernet/intel/ice/ice_fwlog.c | 449 ++++++++++
drivers/net/ethernet/intel/ice/ice_fwlog.h | 77 ++
drivers/net/ethernet/intel/ice/ice_main.c | 51 +-
drivers/net/ethernet/intel/ice/ice_type.h | 23 +-
11 files changed, 1617 insertions(+), 319 deletions(-)
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
--
2.35.1
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
next reply other threads:[~2023-06-07 22:25 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-07 22:24 Paul M Stillwell Jr [this message]
2023-06-07 22:24 ` [Intel-wired-lan] [PATCH net-next v12 1/4] ice: remove FW logging code Paul M Stillwell Jr
2023-06-07 22:24 ` [Intel-wired-lan] [PATCH net-next v12 2/4] ice: configure FW logging Paul M Stillwell Jr
2023-06-08 0:58 ` kernel test robot
2023-06-08 1:34 ` kernel test robot
2023-06-07 22:24 ` [Intel-wired-lan] [PATCH net-next v12 3/4] ice: add ability to read FW log data and configure the number of log buffers Paul M Stillwell Jr
2023-06-08 1:50 ` kernel test robot
2023-06-08 3:55 ` kernel test robot
2023-06-08 5:28 ` kernel test robot
2023-06-07 22:24 ` [Intel-wired-lan] [PATCH net-next v12 4/4] ice: added documentation for FW logging Paul M Stillwell Jr
2023-06-08 16:11 ` Tony Nguyen
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=20230607222443.119-1-paul.m.stillwell.jr@intel.com \
--to=paul.m.stillwell.jr@intel.com \
--cc=intel-wired-lan@lists.osuosl.org \
/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