]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/scsi/lpfc/lpfc_debugfs.c
Merge branch 'merge-fixes' into devel
[linux-2.6-omap-h63xx.git] / drivers / scsi / lpfc / lpfc_debugfs.c
index 2310a2d1d8ce5b7d1ac617e2cd6d290e4a65a1e3..90272e65957a74569ba1fe7a0df9665668357d1f 100644 (file)
@@ -43,7 +43,7 @@
 #include "lpfc_crtn.h"
 #include "lpfc_vport.h"
 #include "lpfc_version.h"
-#include "lpfc_vport.h"
+#include "lpfc_compat.h"
 #include "lpfc_debugfs.h"
 
 #ifdef CONFIG_LPFC_DEBUG_FS
  * lpfc_debugfs_mask_disc_trc=Y  Where Y is an event mask as defined in
  *                               lpfc_debugfs.h .
  */
-static int lpfc_debugfs_enable = 0;
+static int lpfc_debugfs_enable = 1;
 module_param(lpfc_debugfs_enable, int, 0);
 MODULE_PARM_DESC(lpfc_debugfs_enable, "Enable debugfs services");
 
 /* This MUST be a power of 2 */
-static int lpfc_debugfs_max_disc_trc = 0;
+static int lpfc_debugfs_max_disc_trc;
 module_param(lpfc_debugfs_max_disc_trc, int, 0);
 MODULE_PARM_DESC(lpfc_debugfs_max_disc_trc,
        "Set debugfs discovery trace depth");
 
 /* This MUST be a power of 2 */
-static int lpfc_debugfs_max_slow_ring_trc = 0;
+static int lpfc_debugfs_max_slow_ring_trc;
 module_param(lpfc_debugfs_max_slow_ring_trc, int, 0);
 MODULE_PARM_DESC(lpfc_debugfs_max_slow_ring_trc,
        "Set debugfs slow ring trace depth");
 
-static int lpfc_debugfs_mask_disc_trc = 0;
+int lpfc_debugfs_mask_disc_trc;
 module_param(lpfc_debugfs_mask_disc_trc, int, 0);
 MODULE_PARM_DESC(lpfc_debugfs_mask_disc_trc,
        "Set debugfs discovery trace mask");
@@ -101,16 +101,22 @@ MODULE_PARM_DESC(lpfc_debugfs_mask_disc_trc,
 #define LPFC_NODELIST_SIZE 8192
 #define LPFC_NODELIST_ENTRY_SIZE 120
 
-/* dump_slim output buffer size */
-#define LPFC_DUMPSLIM_SIZE 4096
+/* dumpHBASlim output buffer size */
+#define LPFC_DUMPHBASLIM_SIZE 4096
+
+/* dumpHostSlim output buffer size */
+#define LPFC_DUMPHOSTSLIM_SIZE 4096
+
+/* hbqinfo output buffer size */
+#define LPFC_HBQINFO_SIZE 8192
 
 struct lpfc_debug {
        char *buffer;
        int  len;
 };
 
-atomic_t lpfc_debugfs_seq_trc_cnt = ATOMIC_INIT(0);
-unsigned long lpfc_debugfs_start_time = 0L;
+static atomic_t lpfc_debugfs_seq_trc_cnt = ATOMIC_INIT(0);
+static unsigned long lpfc_debugfs_start_time = 0L;
 
 static int
 lpfc_debugfs_disc_trc_data(struct lpfc_vport *vport, char *buf, int size)
@@ -196,18 +202,158 @@ lpfc_debugfs_slow_ring_trc_data(struct lpfc_hba *phba, char *buf, int size)
        return len;
 }
 
+static int lpfc_debugfs_last_hbq = -1;
+
 static int
-lpfc_debugfs_dumpslim_data(struct lpfc_hba *phba, char *buf, int size)
+lpfc_debugfs_hbqinfo_data(struct lpfc_hba *phba, char *buf, int size)
 {
        int len = 0;
-       int cnt, i, off;
+       int cnt, i, j, found, posted, low;
+       uint32_t phys, raw_index, getidx;
+       struct lpfc_hbq_init *hip;
+       struct hbq_s *hbqs;
+       struct lpfc_hbq_entry *hbqe;
+       struct lpfc_dmabuf *d_buf;
+       struct hbq_dmabuf *hbq_buf;
+
+       cnt = LPFC_HBQINFO_SIZE;
+       spin_lock_irq(&phba->hbalock);
+
+       /* toggle between multiple hbqs, if any */
+       i = lpfc_sli_hbq_count();
+       if (i > 1) {
+                lpfc_debugfs_last_hbq++;
+                if (lpfc_debugfs_last_hbq >= i)
+                       lpfc_debugfs_last_hbq = 0;
+       }
+       else
+               lpfc_debugfs_last_hbq = 0;
+
+       i = lpfc_debugfs_last_hbq;
+
+       len +=  snprintf(buf+len, size-len, "HBQ %d Info\n", i);
+
+       hbqs =  &phba->hbqs[i];
+       posted = 0;
+       list_for_each_entry(d_buf, &hbqs->hbq_buffer_list, list)
+               posted++;
+
+       hip =  lpfc_hbq_defs[i];
+       len +=  snprintf(buf+len, size-len,
+               "idx:%d prof:%d rn:%d bufcnt:%d icnt:%d acnt:%d posted %d\n",
+               hip->hbq_index, hip->profile, hip->rn,
+               hip->buffer_count, hip->init_count, hip->add_count, posted);
+
+       raw_index = phba->hbq_get[i];
+       getidx = le32_to_cpu(raw_index);
+       len +=  snprintf(buf+len, size-len,
+               "entrys:%d bufcnt:%d Put:%d nPut:%d localGet:%d hbaGet:%d\n",
+               hbqs->entry_count, hbqs->buffer_count, hbqs->hbqPutIdx,
+               hbqs->next_hbqPutIdx, hbqs->local_hbqGetIdx, getidx);
+
+       hbqe = (struct lpfc_hbq_entry *) phba->hbqs[i].hbq_virt;
+       for (j=0; j<hbqs->entry_count; j++) {
+               len +=  snprintf(buf+len, size-len,
+                       "%03d: %08x %04x %05x ", j,
+                       le32_to_cpu(hbqe->bde.addrLow),
+                       le32_to_cpu(hbqe->bde.tus.w),
+                       le32_to_cpu(hbqe->buffer_tag));
+               i = 0;
+               found = 0;
+
+               /* First calculate if slot has an associated posted buffer */
+               low = hbqs->hbqPutIdx - posted;
+               if (low >= 0) {
+                       if ((j >= hbqs->hbqPutIdx) || (j < low)) {
+                               len +=  snprintf(buf+len, size-len, "Unused\n");
+                               goto skipit;
+                       }
+               }
+               else {
+                       if ((j >= hbqs->hbqPutIdx) &&
+                               (j < (hbqs->entry_count+low))) {
+                               len +=  snprintf(buf+len, size-len, "Unused\n");
+                               goto skipit;
+                       }
+               }
+
+               /* Get the Buffer info for the posted buffer */
+               list_for_each_entry(d_buf, &hbqs->hbq_buffer_list, list) {
+                       hbq_buf = container_of(d_buf, struct hbq_dmabuf, dbuf);
+                       phys = ((uint64_t)hbq_buf->dbuf.phys & 0xffffffff);
+                       if (phys == le32_to_cpu(hbqe->bde.addrLow)) {
+                               len +=  snprintf(buf+len, size-len,
+                                       "Buf%d: %p %06x\n", i,
+                                       hbq_buf->dbuf.virt, hbq_buf->tag);
+                               found = 1;
+                               break;
+                       }
+                       i++;
+               }
+               if (!found) {
+                       len +=  snprintf(buf+len, size-len, "No DMAinfo?\n");
+               }
+skipit:
+               hbqe++;
+               if (len > LPFC_HBQINFO_SIZE - 54)
+                       break;
+       }
+       spin_unlock_irq(&phba->hbalock);
+       return len;
+}
+
+static int lpfc_debugfs_last_hba_slim_off;
+
+static int
+lpfc_debugfs_dumpHBASlim_data(struct lpfc_hba *phba, char *buf, int size)
+{
+       int len = 0;
+       int i, off;
+       uint32_t *ptr;
+       char buffer[1024];
+
+       off = 0;
+       spin_lock_irq(&phba->hbalock);
+
+       len +=  snprintf(buf+len, size-len, "HBA SLIM\n");
+       lpfc_memcpy_from_slim(buffer,
+               ((uint8_t *)phba->MBslimaddr) + lpfc_debugfs_last_hba_slim_off,
+               1024);
+
+       ptr = (uint32_t *)&buffer[0];
+       off = lpfc_debugfs_last_hba_slim_off;
+
+       /* Set it up for the next time */
+       lpfc_debugfs_last_hba_slim_off += 1024;
+       if (lpfc_debugfs_last_hba_slim_off >= 4096)
+               lpfc_debugfs_last_hba_slim_off = 0;
+
+       i = 1024;
+       while (i > 0) {
+               len +=  snprintf(buf+len, size-len,
+               "%08x: %08x %08x %08x %08x %08x %08x %08x %08x\n",
+               off, *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4),
+               *(ptr+5), *(ptr+6), *(ptr+7));
+               ptr += 8;
+               i -= (8 * sizeof(uint32_t));
+               off += (8 * sizeof(uint32_t));
+       }
+
+       spin_unlock_irq(&phba->hbalock);
+       return len;
+}
+
+static int
+lpfc_debugfs_dumpHostSlim_data(struct lpfc_hba *phba, char *buf, int size)
+{
+       int len = 0;
+       int i, off;
        uint32_t word0, word1, word2, word3;
        uint32_t *ptr;
        struct lpfc_pgp *pgpp;
        struct lpfc_sli *psli = &phba->sli;
        struct lpfc_sli_ring *pring;
 
-       cnt = LPFC_DUMPSLIM_SIZE;
        off = 0;
        spin_lock_irq(&phba->hbalock);
 
@@ -357,6 +503,8 @@ lpfc_debugfs_nodelist_data(struct lpfc_vport *vport, char *buf, int size)
                                ndlp->nlp_sid);
                if (ndlp->nlp_type & NLP_FCP_INITIATOR)
                        len +=  snprintf(buf+len, size-len, "FCP_INITIATOR ");
+               len += snprintf(buf+len, size-len, "usgmap:%x ",
+                       ndlp->nlp_usg_map);
                len += snprintf(buf+len, size-len, "refcnt:%x",
                        atomic_read(&ndlp->kref.refcount));
                len +=  snprintf(buf+len, size-len, "\n");
@@ -492,7 +640,34 @@ out:
 }
 
 static int
-lpfc_debugfs_dumpslim_open(struct inode *inode, struct file *file)
+lpfc_debugfs_hbqinfo_open(struct inode *inode, struct file *file)
+{
+       struct lpfc_hba *phba = inode->i_private;
+       struct lpfc_debug *debug;
+       int rc = -ENOMEM;
+
+       debug = kmalloc(sizeof(*debug), GFP_KERNEL);
+       if (!debug)
+               goto out;
+
+       /* Round to page boundry */
+       debug->buffer = kmalloc(LPFC_HBQINFO_SIZE, GFP_KERNEL);
+       if (!debug->buffer) {
+               kfree(debug);
+               goto out;
+       }
+
+       debug->len = lpfc_debugfs_hbqinfo_data(phba, debug->buffer,
+               LPFC_HBQINFO_SIZE);
+       file->private_data = debug;
+
+       rc = 0;
+out:
+       return rc;
+}
+
+static int
+lpfc_debugfs_dumpHBASlim_open(struct inode *inode, struct file *file)
 {
        struct lpfc_hba *phba = inode->i_private;
        struct lpfc_debug *debug;
@@ -503,14 +678,41 @@ lpfc_debugfs_dumpslim_open(struct inode *inode, struct file *file)
                goto out;
 
        /* Round to page boundry */
-       debug->buffer = kmalloc(LPFC_DUMPSLIM_SIZE, GFP_KERNEL);
+       debug->buffer = kmalloc(LPFC_DUMPHBASLIM_SIZE, GFP_KERNEL);
        if (!debug->buffer) {
                kfree(debug);
                goto out;
        }
 
-       debug->len = lpfc_debugfs_dumpslim_data(phba, debug->buffer,
-               LPFC_DUMPSLIM_SIZE);
+       debug->len = lpfc_debugfs_dumpHBASlim_data(phba, debug->buffer,
+               LPFC_DUMPHBASLIM_SIZE);
+       file->private_data = debug;
+
+       rc = 0;
+out:
+       return rc;
+}
+
+static int
+lpfc_debugfs_dumpHostSlim_open(struct inode *inode, struct file *file)
+{
+       struct lpfc_hba *phba = inode->i_private;
+       struct lpfc_debug *debug;
+       int rc = -ENOMEM;
+
+       debug = kmalloc(sizeof(*debug), GFP_KERNEL);
+       if (!debug)
+               goto out;
+
+       /* Round to page boundry */
+       debug->buffer = kmalloc(LPFC_DUMPHOSTSLIM_SIZE, GFP_KERNEL);
+       if (!debug->buffer) {
+               kfree(debug);
+               goto out;
+       }
+
+       debug->len = lpfc_debugfs_dumpHostSlim_data(phba, debug->buffer,
+               LPFC_DUMPHOSTSLIM_SIZE);
        file->private_data = debug;
 
        rc = 0;
@@ -604,10 +806,28 @@ static struct file_operations lpfc_debugfs_op_nodelist = {
        .release =      lpfc_debugfs_release,
 };
 
-#undef lpfc_debugfs_op_dumpslim
-static struct file_operations lpfc_debugfs_op_dumpslim = {
+#undef lpfc_debugfs_op_hbqinfo
+static struct file_operations lpfc_debugfs_op_hbqinfo = {
+       .owner =        THIS_MODULE,
+       .open =         lpfc_debugfs_hbqinfo_open,
+       .llseek =       lpfc_debugfs_lseek,
+       .read =         lpfc_debugfs_read,
+       .release =      lpfc_debugfs_release,
+};
+
+#undef lpfc_debugfs_op_dumpHBASlim
+static struct file_operations lpfc_debugfs_op_dumpHBASlim = {
+       .owner =        THIS_MODULE,
+       .open =         lpfc_debugfs_dumpHBASlim_open,
+       .llseek =       lpfc_debugfs_lseek,
+       .read =         lpfc_debugfs_read,
+       .release =      lpfc_debugfs_release,
+};
+
+#undef lpfc_debugfs_op_dumpHostSlim
+static struct file_operations lpfc_debugfs_op_dumpHostSlim = {
        .owner =        THIS_MODULE,
-       .open =         lpfc_debugfs_dumpslim_open,
+       .open =         lpfc_debugfs_dumpHostSlim_open,
        .llseek =       lpfc_debugfs_lseek,
        .read =         lpfc_debugfs_read,
        .release =      lpfc_debugfs_release,
@@ -642,13 +862,11 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport)
                lpfc_debugfs_root = debugfs_create_dir("lpfc", NULL);
                atomic_set(&lpfc_debugfs_hba_count, 0);
                if (!lpfc_debugfs_root) {
-                       lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
-                               "%d:0409 Cannot create debugfs root (lpfc)",
-                               phba->brd_no);
+                       lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT,
+                                        "0409 Cannot create debugfs root\n");
                        goto debug_failed;
                }
        }
-
        if (!lpfc_debugfs_start_time)
                lpfc_debugfs_start_time = jiffies;
 
@@ -658,24 +876,46 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport)
                phba->hba_debugfs_root =
                        debugfs_create_dir(name, lpfc_debugfs_root);
                if (!phba->hba_debugfs_root) {
-                       lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
-                               "%d:0409 Cannot create debugfs hba (lpfc%d)",
-                               phba->brd_no, phba->brd_no);
+                       lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT,
+                                        "0409 Cannot create debugfs hba\n");
                        goto debug_failed;
                }
                atomic_inc(&lpfc_debugfs_hba_count);
                atomic_set(&phba->debugfs_vport_count, 0);
 
-               /* Setup dumpslim */
-               snprintf(name, sizeof(name), "dumpslim");
-               phba->debug_dumpslim =
+               /* Setup hbqinfo */
+               snprintf(name, sizeof(name), "hbqinfo");
+               phba->debug_hbqinfo =
+                       debugfs_create_file(name, S_IFREG|S_IRUGO|S_IWUSR,
+                                phba->hba_debugfs_root,
+                                phba, &lpfc_debugfs_op_hbqinfo);
+               if (!phba->debug_hbqinfo) {
+                       lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT,
+                               "0409 Cannot create debugfs hbqinfo\n");
+                       goto debug_failed;
+               }
+
+               /* Setup dumpHBASlim */
+               snprintf(name, sizeof(name), "dumpHBASlim");
+               phba->debug_dumpHBASlim =
+                       debugfs_create_file(name, S_IFREG|S_IRUGO|S_IWUSR,
+                                phba->hba_debugfs_root,
+                                phba, &lpfc_debugfs_op_dumpHBASlim);
+               if (!phba->debug_dumpHBASlim) {
+                       lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT,
+                               "0409 Cannot create debugfs dumpHBASlim\n");
+                       goto debug_failed;
+               }
+
+               /* Setup dumpHostSlim */
+               snprintf(name, sizeof(name), "dumpHostSlim");
+               phba->debug_dumpHostSlim =
                        debugfs_create_file(name, S_IFREG|S_IRUGO|S_IWUSR,
                                 phba->hba_debugfs_root,
-                                phba, &lpfc_debugfs_op_dumpslim);
-               if (!phba->debug_dumpslim) {
-                       lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
-                       "%d:0409 Cannot create debugfs dumpslim (lpfc%d)",
-                               phba->brd_no, phba->brd_no);
+                                phba, &lpfc_debugfs_op_dumpHostSlim);
+               if (!phba->debug_dumpHostSlim) {
+                       lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT,
+                               "0409 Cannot create debugfs dumpHostSlim\n");
                        goto debug_failed;
                }
 
@@ -692,8 +932,8 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport)
                                }
                                lpfc_debugfs_max_slow_ring_trc = (1 << i);
                                printk(KERN_ERR
-                               "lpfc_debugfs_max_slow_ring_trc change to %d\n",
-                                       lpfc_debugfs_max_slow_ring_trc);
+                                      "lpfc_debugfs_max_disc_trc changed to "
+                                      "%d\n", lpfc_debugfs_max_disc_trc);
                        }
                }
 
@@ -704,10 +944,9 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport)
                                 phba->hba_debugfs_root,
                                 phba, &lpfc_debugfs_op_slow_ring_trc);
                if (!phba->debug_slow_ring_trc) {
-                       lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
-                               "%d:0409 Cannot create debugfs "
-                               "slow_ring_trace (lpfc%d)",
-                               phba->brd_no, phba->brd_no);
+                       lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT,
+                                        "0409 Cannot create debugfs "
+                                        "slow_ring_trace\n");
                        goto debug_failed;
                }
                if (!phba->slow_ring_trc) {
@@ -716,10 +955,9 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport)
                                lpfc_debugfs_max_slow_ring_trc),
                                GFP_KERNEL);
                        if (!phba->slow_ring_trc) {
-                               lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
-                               "%d:0409 Cannot create debugfs "
-                               "slow_ring buffer (lpfc%d)",
-                               phba->brd_no, phba->brd_no);
+                               lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT,
+                                                "0409 Cannot create debugfs "
+                                                "slow_ring buffer\n");
                                goto debug_failed;
                        }
                        atomic_set(&phba->slow_ring_trc_cnt, 0);
@@ -734,9 +972,8 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport)
                vport->vport_debugfs_root =
                        debugfs_create_dir(name, phba->hba_debugfs_root);
                if (!vport->vport_debugfs_root) {
-                       lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
-                               "%d:0409 Cant create debugfs vport%d (lpfc%d)",
-                               phba->brd_no, vport->vpi, phba->brd_no);
+                       lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT,
+                                        "0409 Cant create debugfs");
                        goto debug_failed;
                }
                atomic_inc(&phba->debugfs_vport_count);
@@ -754,25 +991,22 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport)
                        }
                        lpfc_debugfs_max_disc_trc = (1 << i);
                        printk(KERN_ERR
-                               "lpfc_debugfs_max_disc_trc changed to %d\n",
-                               lpfc_debugfs_max_disc_trc);
+                              "lpfc_debugfs_max_disc_trc changed to %d\n",
+                              lpfc_debugfs_max_disc_trc);
                }
        }
 
-       vport->disc_trc = kmalloc(
+       vport->disc_trc = kzalloc(
                (sizeof(struct lpfc_debugfs_trc) * lpfc_debugfs_max_disc_trc),
                GFP_KERNEL);
 
        if (!vport->disc_trc) {
-               lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
-                       "%d:0409 Cannot create debugfs "
-                       "vport%d disc trace buffer (lpfc%d)",
-                       phba->brd_no, vport->vpi, phba->brd_no);
+               lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT,
+                                "0409 Cannot create debugfs disc trace "
+                                "buffer\n");
                goto debug_failed;
        }
        atomic_set(&vport->disc_trc_cnt, 0);
-       memset(vport->disc_trc, 0,
-               (sizeof(struct lpfc_debugfs_trc) * lpfc_debugfs_max_disc_trc));
 
        snprintf(name, sizeof(name), "discovery_trace");
        vport->debug_disc_trc =
@@ -780,10 +1014,9 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport)
                                 vport->vport_debugfs_root,
                                 vport, &lpfc_debugfs_op_disc_trc);
        if (!vport->debug_disc_trc) {
-               lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
-                       "%d:0409 Cannot create debugfs "
-                       "vport%d discovery_trace (lpfc%d)",
-                       phba->brd_no, vport->vpi, phba->brd_no);
+               lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT,
+                                "0409 Cannot create debugfs "
+                                "discovery_trace\n");
                goto debug_failed;
        }
        snprintf(name, sizeof(name), "nodelist");
@@ -792,9 +1025,8 @@ lpfc_debugfs_initialize(struct lpfc_vport *vport)
                                 vport->vport_debugfs_root,
                                 vport, &lpfc_debugfs_op_nodelist);
        if (!vport->debug_nodelist) {
-               lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
-                       "%d:0409 Cant create debugfs vport%d nodelist (lpfc%d)",
-                       phba->brd_no, vport->vpi, phba->brd_no);
+               lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT,
+                                "0409 Cant create debugfs nodelist");
                goto debug_failed;
        }
 debug_failed:
@@ -829,9 +1061,17 @@ lpfc_debugfs_terminate(struct lpfc_vport *vport)
        }
        if (atomic_read(&phba->debugfs_vport_count) == 0) {
 
-               if (phba->debug_dumpslim) {
-                       debugfs_remove(phba->debug_dumpslim); /* dumpslim */
-                       phba->debug_dumpslim = NULL;
+               if (phba->debug_hbqinfo) {
+                       debugfs_remove(phba->debug_hbqinfo); /* hbqinfo */
+                       phba->debug_hbqinfo = NULL;
+               }
+               if (phba->debug_dumpHBASlim) {
+                       debugfs_remove(phba->debug_dumpHBASlim); /* HBASlim */
+                       phba->debug_dumpHBASlim = NULL;
+               }
+               if (phba->debug_dumpHostSlim) {
+                       debugfs_remove(phba->debug_dumpHostSlim); /* HostSlim */
+                       phba->debug_dumpHostSlim = NULL;
                }
                if (phba->slow_ring_trc) {
                        kfree(phba->slow_ring_trc);