1
0
mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2026-01-12 01:20:14 +00:00

eth: fbnic: Create fw_log file in DebugFS

Allow reading the firmware log in DebugFS by accessing the fw_log file.
Buffer is read while a spinlock is acquired.

Signed-off-by: Lee Trager <lee@trager.us>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Link: https://patch.msgid.link/20250702192207.697368-7-lee@trager.us
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Lee Trager 2025-07-02 12:12:12 -07:00 committed by Jakub Kicinski
parent ecc53b1b46
commit 432407c869

View File

@ -170,6 +170,33 @@ static int fbnic_dbg_ipo_dst_show(struct seq_file *s, void *v)
}
DEFINE_SHOW_ATTRIBUTE(fbnic_dbg_ipo_dst);
static int fbnic_dbg_fw_log_show(struct seq_file *s, void *v)
{
struct fbnic_dev *fbd = s->private;
struct fbnic_fw_log_entry *entry;
unsigned long flags;
if (!fbnic_fw_log_ready(fbd))
return -ENXIO;
spin_lock_irqsave(&fbd->fw_log.lock, flags);
list_for_each_entry_reverse(entry, &fbd->fw_log.entries, list) {
seq_printf(s, FBNIC_FW_LOG_FMT, entry->index,
(entry->timestamp / (MSEC_PER_SEC * 60 * 60 * 24)),
(entry->timestamp / (MSEC_PER_SEC * 60 * 60)) % 24,
((entry->timestamp / (MSEC_PER_SEC * 60) % 60)),
((entry->timestamp / MSEC_PER_SEC) % 60),
(entry->timestamp % MSEC_PER_SEC),
entry->msg);
}
spin_unlock_irqrestore(&fbd->fw_log.lock, flags);
return 0;
}
DEFINE_SHOW_ATTRIBUTE(fbnic_dbg_fw_log);
static int fbnic_dbg_pcie_stats_show(struct seq_file *s, void *v)
{
struct fbnic_dev *fbd = s->private;
@ -222,6 +249,8 @@ void fbnic_dbg_fbd_init(struct fbnic_dev *fbd)
&fbnic_dbg_ipo_src_fops);
debugfs_create_file("ipo_dst", 0400, fbd->dbg_fbd, fbd,
&fbnic_dbg_ipo_dst_fops);
debugfs_create_file("fw_log", 0400, fbd->dbg_fbd, fbd,
&fbnic_dbg_fw_log_fops);
}
void fbnic_dbg_fbd_exit(struct fbnic_dev *fbd)