return scnprintf(buf, PAGE_SIZE, "%s\n", spd[ha->link_data_rate]);
 }
 
+static ssize_t
+qla2x00_mpi_pause_store(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t count)
+{
+       scsi_qla_host_t *vha = shost_priv(class_to_shost(dev));
+       int rval = 0;
+
+       if (sscanf(buf, "%d", &rval) != 1)
+               return -EINVAL;
+
+       ql_log(ql_log_warn, vha, 0x7089, "Pausing MPI...\n");
+
+       rval = qla83xx_wr_reg(vha, 0x002012d4, 0x30000001);
+
+       if (rval != QLA_SUCCESS) {
+               ql_log(ql_log_warn, vha, 0x708a, "Unable to pause MPI.\n");
+               count = 0;
+       }
+
+       return count;
+}
+
+static DEVICE_ATTR(mpi_pause, S_IWUSR, NULL, qla2x00_mpi_pause_store);
+
 /* ----- */
 
 static ssize_t
        &dev_attr_fw_attr,
        &dev_attr_dport_diagnostics,
        &dev_attr_edif_doorbell,
+       &dev_attr_mpi_pause,
        NULL, /* reserve for qlini_mode */
        NULL, /* reserve for ql2xiniexchg */
        NULL, /* reserve for ql2xexchoffld */