LPFC_MBOXQ_t *pmboxq;
        MAILBOX_t *pmb;
        int rc = 0;
+       uint32_t max_vpi;
 
        /*
         * prevent udev from issuing mailbox commands until the port is
                if (axri)
                        *axri = bf_get(lpfc_mbx_rd_conf_xri_count, rd_config) -
                                        phba->sli4_hba.max_cfg_param.xri_used;
+
+               /* Account for differences with SLI-3.  Get vpi count from
+                * mailbox data and subtract one for max vpi value.
+                */
+               max_vpi = (bf_get(lpfc_mbx_rd_conf_vpi_count, rd_config) > 0) ?
+                       (bf_get(lpfc_mbx_rd_conf_vpi_count, rd_config) - 1) : 0;
+
                if (mvpi)
-                       *mvpi = bf_get(lpfc_mbx_rd_conf_vpi_count, rd_config);
+                       *mvpi = max_vpi;
                if (avpi)
-                       *avpi = bf_get(lpfc_mbx_rd_conf_vpi_count, rd_config) -
-                                       phba->sli4_hba.max_cfg_param.vpi_used;
+                       *avpi = max_vpi - phba->sli4_hba.max_cfg_param.vpi_used;
        } else {
                if (mrpi)
                        *mrpi = pmb->un.varRdConfig.max_rpi;
                 " 2 - select SLI-2 even on SLI-3 capable HBAs,"
                 " 3 - select SLI-3");
 
-int lpfc_enable_npiv = 0;
+int lpfc_enable_npiv = 1;
 module_param(lpfc_enable_npiv, int, 0);
 MODULE_PARM_DESC(lpfc_enable_npiv, "Enable NPIV functionality");
 lpfc_param_show(enable_npiv);
 lpfc_param_init(enable_npiv, 1, 0, 1);
-static DEVICE_ATTR(lpfc_enable_npiv, S_IRUGO,
-                        lpfc_enable_npiv_show, NULL);
+static DEVICE_ATTR(lpfc_enable_npiv, S_IRUGO, lpfc_enable_npiv_show, NULL);
 
 /*
 # lpfc_suppress_link_up:  Bring link up at initialization
 
        spin_lock_irq(&phba->hbalock);
        list_for_each_entry(port_iterator, &phba->port_list, listentry) {
                if (!scsi_host_get(lpfc_shost_from_vport(port_iterator))) {
-                       lpfc_printf_vlog(port_iterator, KERN_WARNING, LOG_VPORT,
+                       if (!(port_iterator->load_flag & FC_UNLOADING))
+                               lpfc_printf_vlog(port_iterator, KERN_ERR,
+                                        LOG_VPORT,
                                         "1801 Create vport work array FAILED: "
                                         "cannot do scsi_host_get\n");
                        continue;