mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-08-18 02:22:47 -07:00
[SCSI] bfa: add debugfs support
- Add debugfs support to obtain firmware trace, driver trace and read/write to registers. - debugfs hierarchy: /sys/kernel/debug/bfa/host# where the host number corresponds to the one under /sys/class/scsi_host/host# - Following are the new debugfs entries added: drvtrc: collect current driver trace fwtrc: collect current firmware trace. fwsave: collect last saved fw trace as a result of firmware crash. regwr: write one word to chip register regrd: read one or more words from chip register. Signed-off-by: Jing Huang <huangj@brocade.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
1 parent
08a17ced7a
commit
ab2a9ba189
4 files changed
+571
-2
No files matched your search
@@ -1,7 +1,7 @@
|
||||
obj-$(CONFIG_SCSI_BFA_FC) := bfa.o
|
||||
|
||||
bfa-y := bfad.o bfad_intr.o bfad_os.o bfad_im.o bfad_attr.o bfad_fwimg.o
|
||||
|
||||
bfa-y += bfad_debugfs.o
|
||||
bfa-y += bfa_core.o bfa_ioc.o bfa_ioc_ct.o bfa_ioc_cb.o bfa_iocfc.o bfa_fcxp.o
|
||||
bfa-y += bfa_lps.o bfa_hw_cb.o bfa_hw_ct.o bfa_intr.o bfa_timer.o bfa_rport.o
|
||||
bfa-y += bfa_fcport.o bfa_port.o bfa_uf.o bfa_sgpg.o bfa_module.o bfa_ioim.o
|
||||
|
||||
@@ -57,6 +57,7 @@ static int ipfc_enable = BFA_FALSE;
|
||||
static int fdmi_enable = BFA_TRUE;
|
||||
int bfa_lun_queue_depth = BFAD_LUN_QUEUE_DEPTH;
|
||||
int bfa_linkup_delay = -1;
|
||||
int bfa_debugfs_enable = 1;
|
||||
|
||||
module_param(os_name, charp, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC(os_name, "OS name of the hba host machine");
|
||||
@@ -106,6 +107,9 @@ MODULE_PARM_DESC(bfa_linkup_delay, "Link up delay, default=30 secs for boot"
|
||||
module_param(fdmi_enable, int, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC(fdmi_enable, "Enables fdmi registration, default=1,"
|
||||
" Range[false:0|true:1]");
|
||||
module_param(bfa_debugfs_enable, int, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC(bfa_debugfs_enable, "Enables debugfs feature, default=1,"
|
||||
" Range[false:0|true:1]");
|
||||
|
||||
/*
|
||||
* Stores the module parm num_sgpgs value;
|
||||
@@ -903,6 +907,10 @@ bfad_cfg_pport(struct bfad_s *bfad, enum bfa_port_role role)
|
||||
bfad->pport.roles |= BFA_PORT_ROLE_FCP_IM;
|
||||
}
|
||||
|
||||
/* Setup the debugfs node for this scsi_host */
|
||||
if (bfa_debugfs_enable)
|
||||
bfad_debugfs_init(&bfad->pport);
|
||||
|
||||
bfad->bfad_flags |= BFAD_CFG_PPORT_DONE;
|
||||
|
||||
out:
|
||||
@@ -912,6 +920,10 @@ out:
|
||||
void
|
||||
bfad_uncfg_pport(struct bfad_s *bfad)
|
||||
{
|
||||
/* Remove the debugfs node for this scsi_host */
|
||||
kfree(bfad->regdata);
|
||||
bfad_debugfs_exit(&bfad->pport);
|
||||
|
||||
if ((bfad->pport.roles & BFA_PORT_ROLE_FCP_IPFC) && ipfc_enable) {
|
||||
bfad_ipfc_port_delete(bfad, &bfad->pport);
|
||||
bfad->pport.roles &= ~BFA_PORT_ROLE_FCP_IPFC;
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -111,6 +111,9 @@ struct bfad_port_s {
|
||||
struct bfad_im_port_s *im_port; /* IM specific data */
|
||||
struct bfad_tm_port_s *tm_port; /* TM specific data */
|
||||
struct bfad_ipfc_port_s *ipfc_port; /* IPFC specific data */
|
||||
|
||||
/* port debugfs specific data */
|
||||
struct dentry *port_debugfs_root;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -186,6 +189,10 @@ struct bfad_s {
|
||||
struct fc_host_statistics link_stats;
|
||||
struct list_head pbc_pcfg_list;
|
||||
atomic_t wq_reqcnt;
|
||||
/* debugfs specific data */
|
||||
char *regdata;
|
||||
u32 reglen;
|
||||
struct dentry *bfad_dentry_files[5];
|
||||
};
|
||||
|
||||
struct bfad_pcfg_s {
|
||||
@@ -276,7 +283,9 @@ void bfad_drv_uninit(struct bfad_s *bfad);
|
||||
void bfad_drv_log_level_set(struct bfad_s *bfad);
|
||||
bfa_status_t bfad_fc4_module_init(void);
|
||||
void bfad_fc4_module_exit(void);
|
||||
int bfad_worker (void *ptr);
|
||||
int bfad_worker(void *ptr);
|
||||
void bfad_debugfs_init(struct bfad_port_s *port);
|
||||
void bfad_debugfs_exit(struct bfad_port_s *port);
|
||||
|
||||
void bfad_pci_remove(struct pci_dev *pdev);
|
||||
int bfad_pci_probe(struct pci_dev *pdev, const struct pci_device_id *pid);
|
||||
@@ -289,6 +298,7 @@ extern struct list_head bfad_list;
|
||||
extern int bfa_lun_queue_depth;
|
||||
extern int bfad_supported_fc4s;
|
||||
extern int bfa_linkup_delay;
|
||||
extern int bfa_debugfs_enable;
|
||||
extern struct mutex bfad_mutex;
|
||||
|
||||
#endif /* __BFAD_DRV_H__ */
|
||||
Reference in new issue
Block a user