stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Justin Tee <justin.tee@broadcom.com>,
	James Smart <jsmart2021@gmail.com>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.17 146/219] scsi: lpfc: Improve PCI EEH Error and Recovery Handling
Date: Mon, 18 Apr 2022 14:11:55 +0200	[thread overview]
Message-ID: <20220418121210.976578406@linuxfoundation.org> (raw)
In-Reply-To: <20220418121203.462784814@linuxfoundation.org>

From: James Smart <jsmart2021@gmail.com>

[ Upstream commit 35ed9613d83f3c1f011877d591fd7d36f2666106 ]

Following EEH errors, the driver can crash or hang when deleting the
localport or when attempting to unload.

The EEH handlers in the driver did not notify the NVMe-FC transport before
tearing the driver down. This was delayed until the resume steps. This
worked for SCSI because lpfc_block_scsi() would notify the
scsi_fc_transport that the target was not available but it would not clean
up all the references to the ndlp.

The SLI3 prep for dev reset handler did the lpfc_offline_prep() and
lpfc_offline() calls to get the port stopped before restarting. The SLI4
version of the prep for dev reset just destroyed the queues and did not
stop NVMe from continuing.  Also because the port was not really stopped
the localport destroy would hang because the transport was still waiting
for I/O. Additionally, a devloss tmo can fire and post events to a stopped
worker thread creating another hang condition.

lpfc_sli4_prep_dev_for_reset() is modified to call lpfc_offline_prep() and
lpfc_offline() rather than just lpfc_scsi_dev_block() to ensure both SCSI
and NVMe transports are notified to block I/O to the driver.

Logic is added to devloss handler and worker thread to clean up ndlp
references and quiesce appropriately.

Link: https://lore.kernel.org/r/20220317032737.45308-2-jsmart2021@gmail.com
Co-developed-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/lpfc/lpfc.h         |   7 +-
 drivers/scsi/lpfc/lpfc_crtn.h    |   3 +
 drivers/scsi/lpfc/lpfc_hbadisc.c | 119 +++++++++++++++++++++++++------
 drivers/scsi/lpfc/lpfc_init.c    |  60 ++++++++++------
 drivers/scsi/lpfc/lpfc_nvme.c    |  11 ++-
 drivers/scsi/lpfc/lpfc_sli.c     |  15 ++--
 6 files changed, 157 insertions(+), 58 deletions(-)

diff --git a/drivers/scsi/lpfc/lpfc.h b/drivers/scsi/lpfc/lpfc.h
index 98cabe09c040..8748c5996478 100644
--- a/drivers/scsi/lpfc/lpfc.h
+++ b/drivers/scsi/lpfc/lpfc.h
@@ -897,6 +897,11 @@ enum lpfc_irq_chann_mode {
 	NHT_MODE,
 };
 
+enum lpfc_hba_bit_flags {
+	FABRIC_COMANDS_BLOCKED,
+	HBA_PCI_ERR,
+};
+
 struct lpfc_hba {
 	/* SCSI interface function jump table entries */
 	struct lpfc_io_buf * (*lpfc_get_scsi_buf)
@@ -1025,7 +1030,6 @@ struct lpfc_hba {
 					 * Firmware supports Forced Link Speed
 					 * capability
 					 */
-#define HBA_PCI_ERR		0x80000 /* The PCI slot is offline */
 #define HBA_FLOGI_ISSUED	0x100000 /* FLOGI was issued */
 #define HBA_SHORT_CMF		0x200000 /* shorter CMF timer routine */
 #define HBA_CGN_DAY_WRAP	0x400000 /* HBA Congestion info day wraps */
@@ -1335,7 +1339,6 @@ struct lpfc_hba {
 	atomic_t fabric_iocb_count;
 	struct timer_list fabric_block_timer;
 	unsigned long bit_flags;
-#define	FABRIC_COMANDS_BLOCKED	0
 	atomic_t num_rsrc_err;
 	atomic_t num_cmd_success;
 	unsigned long last_rsrc_error_time;
diff --git a/drivers/scsi/lpfc/lpfc_crtn.h b/drivers/scsi/lpfc/lpfc_crtn.h
index 89e36bf14d8f..d4340e5a3aac 100644
--- a/drivers/scsi/lpfc/lpfc_crtn.h
+++ b/drivers/scsi/lpfc/lpfc_crtn.h
@@ -652,3 +652,6 @@ struct lpfc_vmid *lpfc_get_vmid_from_hashtable(struct lpfc_vport *vport,
 					      uint32_t hash, uint8_t *buf);
 void lpfc_vmid_vport_cleanup(struct lpfc_vport *vport);
 int lpfc_issue_els_qfpa(struct lpfc_vport *vport);
+
+void lpfc_sli_rpi_release(struct lpfc_vport *vport,
+			  struct lpfc_nodelist *ndlp);
diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c
index 816fc406135b..e10371611ef8 100644
--- a/drivers/scsi/lpfc/lpfc_hbadisc.c
+++ b/drivers/scsi/lpfc/lpfc_hbadisc.c
@@ -109,8 +109,8 @@ lpfc_rport_invalid(struct fc_rport *rport)
 
 	ndlp = rdata->pnode;
 	if (!rdata->pnode) {
-		pr_err("**** %s: NULL ndlp on rport x%px SID x%x\n",
-		       __func__, rport, rport->scsi_target_id);
+		pr_info("**** %s: NULL ndlp on rport x%px SID x%x\n",
+			__func__, rport, rport->scsi_target_id);
 		return -EINVAL;
 	}
 
@@ -169,9 +169,10 @@ lpfc_dev_loss_tmo_callbk(struct fc_rport *rport)
 
 	lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_NODE,
 			 "3181 dev_loss_callbk x%06x, rport x%px flg x%x "
-			 "load_flag x%x refcnt %d\n",
+			 "load_flag x%x refcnt %d state %d xpt x%x\n",
 			 ndlp->nlp_DID, ndlp->rport, ndlp->nlp_flag,
-			 vport->load_flag, kref_read(&ndlp->kref));
+			 vport->load_flag, kref_read(&ndlp->kref),
+			 ndlp->nlp_state, ndlp->fc4_xpt_flags);
 
 	/* Don't schedule a worker thread event if the vport is going down.
 	 * The teardown process cleans up the node via lpfc_drop_node.
@@ -181,6 +182,11 @@ lpfc_dev_loss_tmo_callbk(struct fc_rport *rport)
 		ndlp->rport = NULL;
 
 		ndlp->fc4_xpt_flags &= ~SCSI_XPT_REGD;
+		/* clear the NLP_XPT_REGD if the node is not registered
+		 * with nvme-fc
+		 */
+		if (ndlp->fc4_xpt_flags == NLP_XPT_REGD)
+			ndlp->fc4_xpt_flags &= ~NLP_XPT_REGD;
 
 		/* Remove the node reference from remote_port_add now.
 		 * The driver will not call remote_port_delete.
@@ -225,18 +231,36 @@ lpfc_dev_loss_tmo_callbk(struct fc_rport *rport)
 	ndlp->rport = NULL;
 	spin_unlock_irqrestore(&ndlp->lock, iflags);
 
-	/* We need to hold the node by incrementing the reference
-	 * count until this queued work is done
-	 */
-	evtp->evt_arg1 = lpfc_nlp_get(ndlp);
+	if (phba->worker_thread) {
+		/* We need to hold the node by incrementing the reference
+		 * count until this queued work is done
+		 */
+		evtp->evt_arg1 = lpfc_nlp_get(ndlp);
+
+		spin_lock_irqsave(&phba->hbalock, iflags);
+		if (evtp->evt_arg1) {
+			evtp->evt = LPFC_EVT_DEV_LOSS;
+			list_add_tail(&evtp->evt_listp, &phba->work_list);
+			lpfc_worker_wake_up(phba);
+		}
+		spin_unlock_irqrestore(&phba->hbalock, iflags);
+	} else {
+		lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_NODE,
+				 "3188 worker thread is stopped %s x%06x, "
+				 " rport x%px flg x%x load_flag x%x refcnt "
+				 "%d\n", __func__, ndlp->nlp_DID,
+				 ndlp->rport, ndlp->nlp_flag,
+				 vport->load_flag, kref_read(&ndlp->kref));
+		if (!(ndlp->fc4_xpt_flags & NVME_XPT_REGD)) {
+			spin_lock_irqsave(&ndlp->lock, iflags);
+			/* Node is in dev loss.  No further transaction. */
+			ndlp->nlp_flag &= ~NLP_IN_DEV_LOSS;
+			spin_unlock_irqrestore(&ndlp->lock, iflags);
+			lpfc_disc_state_machine(vport, ndlp, NULL,
+						NLP_EVT_DEVICE_RM);
+		}
 
-	spin_lock_irqsave(&phba->hbalock, iflags);
-	if (evtp->evt_arg1) {
-		evtp->evt = LPFC_EVT_DEV_LOSS;
-		list_add_tail(&evtp->evt_listp, &phba->work_list);
-		lpfc_worker_wake_up(phba);
 	}
-	spin_unlock_irqrestore(&phba->hbalock, iflags);
 
 	return;
 }
@@ -503,11 +527,12 @@ lpfc_dev_loss_tmo_handler(struct lpfc_nodelist *ndlp)
 		lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
 				 "0203 Devloss timeout on "
 				 "WWPN %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x "
-				 "NPort x%06x Data: x%x x%x x%x\n",
+				 "NPort x%06x Data: x%x x%x x%x refcnt %d\n",
 				 *name, *(name+1), *(name+2), *(name+3),
 				 *(name+4), *(name+5), *(name+6), *(name+7),
 				 ndlp->nlp_DID, ndlp->nlp_flag,
-				 ndlp->nlp_state, ndlp->nlp_rpi);
+				 ndlp->nlp_state, ndlp->nlp_rpi,
+				 kref_read(&ndlp->kref));
 	} else {
 		lpfc_printf_vlog(vport, KERN_INFO, LOG_TRACE_EVENT,
 				 "0204 Devloss timeout on "
@@ -755,18 +780,22 @@ lpfc_work_list_done(struct lpfc_hba *phba)
 	int free_evt;
 	int fcf_inuse;
 	uint32_t nlp_did;
+	bool hba_pci_err;
 
 	spin_lock_irq(&phba->hbalock);
 	while (!list_empty(&phba->work_list)) {
 		list_remove_head((&phba->work_list), evtp, typeof(*evtp),
 				 evt_listp);
 		spin_unlock_irq(&phba->hbalock);
+		hba_pci_err = test_bit(HBA_PCI_ERR, &phba->bit_flags);
 		free_evt = 1;
 		switch (evtp->evt) {
 		case LPFC_EVT_ELS_RETRY:
 			ndlp = (struct lpfc_nodelist *) (evtp->evt_arg1);
-			lpfc_els_retry_delay_handler(ndlp);
-			free_evt = 0; /* evt is part of ndlp */
+			if (!hba_pci_err) {
+				lpfc_els_retry_delay_handler(ndlp);
+				free_evt = 0; /* evt is part of ndlp */
+			}
 			/* decrement the node reference count held
 			 * for this queued work
 			 */
@@ -788,8 +817,10 @@ lpfc_work_list_done(struct lpfc_hba *phba)
 			break;
 		case LPFC_EVT_RECOVER_PORT:
 			ndlp = (struct lpfc_nodelist *)(evtp->evt_arg1);
-			lpfc_sli_abts_recover_port(ndlp->vport, ndlp);
-			free_evt = 0;
+			if (!hba_pci_err) {
+				lpfc_sli_abts_recover_port(ndlp->vport, ndlp);
+				free_evt = 0;
+			}
 			/* decrement the node reference count held for
 			 * this queued work
 			 */
@@ -859,14 +890,18 @@ lpfc_work_done(struct lpfc_hba *phba)
 	struct lpfc_vport **vports;
 	struct lpfc_vport *vport;
 	int i;
+	bool hba_pci_err;
 
+	hba_pci_err = test_bit(HBA_PCI_ERR, &phba->bit_flags);
 	spin_lock_irq(&phba->hbalock);
 	ha_copy = phba->work_ha;
 	phba->work_ha = 0;
 	spin_unlock_irq(&phba->hbalock);
+	if (hba_pci_err)
+		ha_copy = 0;
 
 	/* First, try to post the next mailbox command to SLI4 device */
-	if (phba->pci_dev_grp == LPFC_PCI_DEV_OC)
+	if (phba->pci_dev_grp == LPFC_PCI_DEV_OC && !hba_pci_err)
 		lpfc_sli4_post_async_mbox(phba);
 
 	if (ha_copy & HA_ERATT) {
@@ -886,7 +921,7 @@ lpfc_work_done(struct lpfc_hba *phba)
 		lpfc_handle_latt(phba);
 
 	/* Handle VMID Events */
-	if (lpfc_is_vmid_enabled(phba)) {
+	if (lpfc_is_vmid_enabled(phba) && !hba_pci_err) {
 		if (phba->pport->work_port_events &
 		    WORKER_CHECK_VMID_ISSUE_QFPA) {
 			lpfc_check_vmid_qfpa_issue(phba);
@@ -936,6 +971,8 @@ lpfc_work_done(struct lpfc_hba *phba)
 			work_port_events = vport->work_port_events;
 			vport->work_port_events &= ~work_port_events;
 			spin_unlock_irq(&vport->work_port_lock);
+			if (hba_pci_err)
+				continue;
 			if (work_port_events & WORKER_DISC_TMO)
 				lpfc_disc_timeout_handler(vport);
 			if (work_port_events & WORKER_ELS_TMO)
@@ -1173,12 +1210,14 @@ lpfc_linkdown(struct lpfc_hba *phba)
 	struct lpfc_vport **vports;
 	LPFC_MBOXQ_t          *mb;
 	int i;
+	int offline;
 
 	if (phba->link_state == LPFC_LINK_DOWN)
 		return 0;
 
 	/* Block all SCSI stack I/Os */
 	lpfc_scsi_dev_block(phba);
+	offline = pci_channel_offline(phba->pcidev);
 
 	phba->defer_flogi_acc_flag = false;
 
@@ -1219,7 +1258,7 @@ lpfc_linkdown(struct lpfc_hba *phba)
 	lpfc_destroy_vport_work_array(phba, vports);
 
 	/* Clean up any SLI3 firmware default rpi's */
-	if (phba->sli_rev > LPFC_SLI_REV3)
+	if (phba->sli_rev > LPFC_SLI_REV3 || offline)
 		goto skip_unreg_did;
 
 	mb = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL);
@@ -4712,6 +4751,11 @@ lpfc_nlp_unreg_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)
 	spin_lock_irqsave(&ndlp->lock, iflags);
 	if (!(ndlp->fc4_xpt_flags & NLP_XPT_REGD)) {
 		spin_unlock_irqrestore(&ndlp->lock, iflags);
+		lpfc_printf_vlog(vport, KERN_INFO, LOG_SLI,
+				 "0999 %s Not regd: ndlp x%px rport x%px DID "
+				 "x%x FLG x%x XPT x%x\n",
+				  __func__, ndlp, ndlp->rport, ndlp->nlp_DID,
+				  ndlp->nlp_flag, ndlp->fc4_xpt_flags);
 		return;
 	}
 
@@ -4722,6 +4766,13 @@ lpfc_nlp_unreg_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)
 	    ndlp->fc4_xpt_flags & SCSI_XPT_REGD) {
 		vport->phba->nport_event_cnt++;
 		lpfc_unregister_remote_port(ndlp);
+	} else if (!ndlp->rport) {
+		lpfc_printf_vlog(vport, KERN_INFO, LOG_SLI,
+				 "1999 %s NDLP in devloss x%px DID x%x FLG x%x"
+				 " XPT x%x refcnt %d\n",
+				 __func__, ndlp, ndlp->nlp_DID, ndlp->nlp_flag,
+				 ndlp->fc4_xpt_flags,
+				 kref_read(&ndlp->kref));
 	}
 
 	if (ndlp->fc4_xpt_flags & NVME_XPT_REGD) {
@@ -6089,12 +6140,34 @@ lpfc_disc_flush_list(struct lpfc_vport *vport)
 	}
 }
 
+/*
+ * lpfc_notify_xport_npr - notifies xport of node disappearance
+ * @vport: Pointer to Virtual Port object.
+ *
+ * Transitions all ndlps to NPR state.  When lpfc_nlp_set_state
+ * calls lpfc_nlp_state_cleanup, the ndlp->rport is unregistered
+ * and transport notified that the node is gone.
+ * Return Code:
+ *	none
+ */
+static void
+lpfc_notify_xport_npr(struct lpfc_vport *vport)
+{
+	struct lpfc_nodelist *ndlp, *next_ndlp;
+
+	list_for_each_entry_safe(ndlp, next_ndlp, &vport->fc_nodes,
+				 nlp_listp) {
+		lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE);
+	}
+}
 void
 lpfc_cleanup_discovery_resources(struct lpfc_vport *vport)
 {
 	lpfc_els_flush_rscn(vport);
 	lpfc_els_flush_cmd(vport);
 	lpfc_disc_flush_list(vport);
+	if (pci_channel_offline(vport->phba->pcidev))
+		lpfc_notify_xport_npr(vport);
 }
 
 /*****************************************************************************/
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index 558f7d2559c4..fe9a04b2df3e 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -1652,7 +1652,7 @@ lpfc_sli4_offline_eratt(struct lpfc_hba *phba)
 {
 	spin_lock_irq(&phba->hbalock);
 	if (phba->link_state == LPFC_HBA_ERROR &&
-	    phba->hba_flag & HBA_PCI_ERR) {
+		test_bit(HBA_PCI_ERR, &phba->bit_flags)) {
 		spin_unlock_irq(&phba->hbalock);
 		return;
 	}
@@ -3692,7 +3692,8 @@ lpfc_offline_prep(struct lpfc_hba *phba, int mbx_action)
 	struct lpfc_vport **vports;
 	struct Scsi_Host *shost;
 	int i;
-	int offline = 0;
+	int offline;
+	bool hba_pci_err;
 
 	if (vport->fc_flag & FC_OFFLINE_MODE)
 		return;
@@ -3702,6 +3703,7 @@ lpfc_offline_prep(struct lpfc_hba *phba, int mbx_action)
 	lpfc_linkdown(phba);
 
 	offline =  pci_channel_offline(phba->pcidev);
+	hba_pci_err = test_bit(HBA_PCI_ERR, &phba->bit_flags);
 
 	/* Issue an unreg_login to all nodes on all vports */
 	vports = lpfc_create_vport_work_array(phba);
@@ -3725,11 +3727,14 @@ lpfc_offline_prep(struct lpfc_hba *phba, int mbx_action)
 				ndlp->nlp_flag &= ~NLP_NPR_ADISC;
 				spin_unlock_irq(&ndlp->lock);
 
-				if (offline) {
+				if (offline || hba_pci_err) {
 					spin_lock_irq(&ndlp->lock);
 					ndlp->nlp_flag &= ~(NLP_UNREG_INP |
 							    NLP_RPI_REGISTERED);
 					spin_unlock_irq(&ndlp->lock);
+					if (phba->sli_rev == LPFC_SLI_REV4)
+						lpfc_sli_rpi_release(vports[i],
+								     ndlp);
 				} else {
 					lpfc_unreg_rpi(vports[i], ndlp);
 				}
@@ -13386,15 +13391,12 @@ lpfc_sli4_hba_unset(struct lpfc_hba *phba)
 	/* Disable FW logging to host memory */
 	lpfc_ras_stop_fwlog(phba);
 
-	/* Unset the queues shared with the hardware then release all
-	 * allocated resources.
-	 */
-	lpfc_sli4_queue_unset(phba);
-	lpfc_sli4_queue_destroy(phba);
-
 	/* Reset SLI4 HBA FCoE function */
 	lpfc_pci_function_reset(phba);
 
+	/* release all queue allocated resources. */
+	lpfc_sli4_queue_destroy(phba);
+
 	/* Free RAS DMA memory */
 	if (phba->ras_fwlog.ras_enabled)
 		lpfc_sli4_ras_dma_free(phba);
@@ -15069,24 +15071,28 @@ lpfc_sli4_prep_dev_for_recover(struct lpfc_hba *phba)
 static void
 lpfc_sli4_prep_dev_for_reset(struct lpfc_hba *phba)
 {
-	lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT,
-			"2826 PCI channel disable preparing for reset\n");
+	int offline =  pci_channel_offline(phba->pcidev);
+
+	lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
+			"2826 PCI channel disable preparing for reset offline"
+			" %d\n", offline);
 
 	/* Block any management I/Os to the device */
 	lpfc_block_mgmt_io(phba, LPFC_MBX_NO_WAIT);
 
-	/* Block all SCSI devices' I/Os on the host */
-	lpfc_scsi_dev_block(phba);
 
+	/* HBA_PCI_ERR was set in io_error_detect */
+	lpfc_offline_prep(phba, LPFC_MBX_NO_WAIT);
 	/* Flush all driver's outstanding I/Os as we are to reset */
 	lpfc_sli_flush_io_rings(phba);
+	lpfc_offline(phba);
 
 	/* stop all timers */
 	lpfc_stop_hba_timers(phba);
 
+	lpfc_sli4_queue_destroy(phba);
 	/* Disable interrupt and pci device */
 	lpfc_sli4_disable_intr(phba);
-	lpfc_sli4_queue_destroy(phba);
 	pci_disable_device(phba->pcidev);
 }
 
@@ -15135,6 +15141,7 @@ lpfc_io_error_detected_s4(struct pci_dev *pdev, pci_channel_state_t state)
 {
 	struct Scsi_Host *shost = pci_get_drvdata(pdev);
 	struct lpfc_hba *phba = ((struct lpfc_vport *)shost->hostdata)->phba;
+	bool hba_pci_err;
 
 	switch (state) {
 	case pci_channel_io_normal:
@@ -15142,17 +15149,24 @@ lpfc_io_error_detected_s4(struct pci_dev *pdev, pci_channel_state_t state)
 		lpfc_sli4_prep_dev_for_recover(phba);
 		return PCI_ERS_RESULT_CAN_RECOVER;
 	case pci_channel_io_frozen:
-		phba->hba_flag |= HBA_PCI_ERR;
+		hba_pci_err = test_and_set_bit(HBA_PCI_ERR, &phba->bit_flags);
 		/* Fatal error, prepare for slot reset */
-		lpfc_sli4_prep_dev_for_reset(phba);
+		if (!hba_pci_err)
+			lpfc_sli4_prep_dev_for_reset(phba);
+		else
+			lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
+					"2832  Already handling PCI error "
+					"state: x%x\n", state);
 		return PCI_ERS_RESULT_NEED_RESET;
 	case pci_channel_io_perm_failure:
-		phba->hba_flag |= HBA_PCI_ERR;
+		set_bit(HBA_PCI_ERR, &phba->bit_flags);
 		/* Permanent failure, prepare for device down */
 		lpfc_sli4_prep_dev_for_perm_failure(phba);
 		return PCI_ERS_RESULT_DISCONNECT;
 	default:
-		phba->hba_flag |= HBA_PCI_ERR;
+		hba_pci_err = test_and_set_bit(HBA_PCI_ERR, &phba->bit_flags);
+		if (!hba_pci_err)
+			lpfc_sli4_prep_dev_for_reset(phba);
 		/* Unknown state, prepare and request slot reset */
 		lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT,
 				"2825 Unknown PCI error state: x%x\n", state);
@@ -15186,17 +15200,21 @@ lpfc_io_slot_reset_s4(struct pci_dev *pdev)
 	struct lpfc_hba *phba = ((struct lpfc_vport *)shost->hostdata)->phba;
 	struct lpfc_sli *psli = &phba->sli;
 	uint32_t intr_mode;
+	bool hba_pci_err;
 
 	dev_printk(KERN_INFO, &pdev->dev, "recovering from a slot reset.\n");
 	if (pci_enable_device_mem(pdev)) {
 		printk(KERN_ERR "lpfc: Cannot re-enable "
-			"PCI device after reset.\n");
+		       "PCI device after reset.\n");
 		return PCI_ERS_RESULT_DISCONNECT;
 	}
 
 	pci_restore_state(pdev);
 
-	phba->hba_flag &= ~HBA_PCI_ERR;
+	hba_pci_err = test_and_clear_bit(HBA_PCI_ERR, &phba->bit_flags);
+	if (!hba_pci_err)
+		dev_info(&pdev->dev,
+			 "hba_pci_err was not set, recovering slot reset.\n");
 	/*
 	 * As the new kernel behavior of pci_restore_state() API call clears
 	 * device saved_state flag, need to save the restored state again.
@@ -15251,8 +15269,6 @@ lpfc_io_resume_s4(struct pci_dev *pdev)
 	 */
 	if (!(phba->sli.sli_flag & LPFC_SLI_ACTIVE)) {
 		/* Perform device reset */
-		lpfc_offline_prep(phba, LPFC_MBX_WAIT);
-		lpfc_offline(phba);
 		lpfc_sli_brdrestart(phba);
 		/* Bring the device back online */
 		lpfc_online(phba);
diff --git a/drivers/scsi/lpfc/lpfc_nvme.c b/drivers/scsi/lpfc/lpfc_nvme.c
index 9601edd838e1..8983f6440858 100644
--- a/drivers/scsi/lpfc/lpfc_nvme.c
+++ b/drivers/scsi/lpfc/lpfc_nvme.c
@@ -2169,8 +2169,7 @@ lpfc_nvme_lport_unreg_wait(struct lpfc_vport *vport,
 			abts_nvme = 0;
 			for (i = 0; i < phba->cfg_hdw_queue; i++) {
 				qp = &phba->sli4_hba.hdwq[i];
-				if (!vport || !vport->localport ||
-				    !qp || !qp->io_wq)
+				if (!vport->localport || !qp || !qp->io_wq)
 					return;
 
 				pring = qp->io_wq->pring;
@@ -2180,8 +2179,9 @@ lpfc_nvme_lport_unreg_wait(struct lpfc_vport *vport,
 				abts_scsi += qp->abts_scsi_io_bufs;
 				abts_nvme += qp->abts_nvme_io_bufs;
 			}
-			if (!vport || !vport->localport ||
-			    vport->phba->hba_flag & HBA_PCI_ERR)
+			if (!vport->localport ||
+			    test_bit(HBA_PCI_ERR, &vport->phba->bit_flags) ||
+			    vport->load_flag & FC_UNLOADING)
 				return;
 
 			lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
@@ -2541,8 +2541,7 @@ lpfc_nvme_unregister_port(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)
 		 * return values is ignored.  The upcall is a courtesy to the
 		 * transport.
 		 */
-		if (vport->load_flag & FC_UNLOADING ||
-		    unlikely(vport->phba->hba_flag & HBA_PCI_ERR))
+		if (vport->load_flag & FC_UNLOADING)
 			(void)nvme_fc_set_remoteport_devloss(remoteport, 0);
 
 		ret = nvme_fc_unregister_remoteport(remoteport);
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
index 430abebf99f1..661ed0999f1c 100644
--- a/drivers/scsi/lpfc/lpfc_sli.c
+++ b/drivers/scsi/lpfc/lpfc_sli.c
@@ -2833,6 +2833,12 @@ __lpfc_sli_rpi_release(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)
 	ndlp->nlp_flag &= ~NLP_UNREG_INP;
 }
 
+void
+lpfc_sli_rpi_release(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)
+{
+	__lpfc_sli_rpi_release(vport, ndlp);
+}
+
 /**
  * lpfc_sli_def_mbox_cmpl - Default mailbox completion handler
  * @phba: Pointer to HBA context object.
@@ -4554,11 +4560,6 @@ lpfc_sli_flush_io_rings(struct lpfc_hba *phba)
 	struct lpfc_iocbq *piocb, *next_iocb;
 
 	spin_lock_irq(&phba->hbalock);
-	if (phba->hba_flag & HBA_IOQ_FLUSH ||
-	    !phba->sli4_hba.hdwq) {
-		spin_unlock_irq(&phba->hbalock);
-		return;
-	}
 	/* Indicate the I/O queues are flushed */
 	phba->hba_flag |= HBA_IOQ_FLUSH;
 	spin_unlock_irq(&phba->hbalock);
@@ -11235,6 +11236,10 @@ lpfc_sli_issue_iocb(struct lpfc_hba *phba, uint32_t ring_number,
 	unsigned long iflags;
 	int rc;
 
+	/* If the PCI channel is in offline state, do not post iocbs. */
+	if (unlikely(pci_channel_offline(phba->pcidev)))
+		return IOCB_ERROR;
+
 	if (phba->sli_rev == LPFC_SLI_REV4) {
 		eq = phba->sli4_hba.hdwq[piocb->hba_wqidx].hba_eq;
 
-- 
2.35.1




  parent reply	other threads:[~2022-04-18 12:27 UTC|newest]

Thread overview: 232+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-18 12:09 [PATCH 5.17 000/219] 5.17.4-rc1 review Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 001/219] drm/amd/display: Add pstate verification and recovery for DCN31 Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 002/219] drm/amd/display: Fix p-state allow debug index on dcn31 Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 003/219] cpuidle: PSCI: Move the `has_lpi` check to the beginning of the function Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 004/219] ACPI: processor idle: Check for architectural support for LPI Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 005/219] net: dsa: realtek: allow subdrivers to externally lock regmap Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 006/219] net: dsa: realtek: rtl8365mb: serialize indirect PHY register access Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 007/219] net: dsa: realtek: make interface drivers depend on OF Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 008/219] btrfs: remove no longer used counter when reading data page Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 009/219] btrfs: remove unused variable in btrfs_{start,write}_dirty_block_groups() Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 010/219] RISC-V: KVM: Dont clear hgatp CSR in kvm_arch_vcpu_put() Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 011/219] media: si2157: unknown chip version Si2147-A30 ROM 0x50 Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 012/219] uapi/linux/stddef.h: Add include guards Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 013/219] drm/amdgpu: Ensure HDA function is suspended before ASIC reset Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 014/219] btrfs: release correct delalloc amount in direct IO write path Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 015/219] btrfs: fix btrfs_submit_compressed_write cgroup attribution Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 016/219] btrfs: return allocated block group from do_chunk_alloc() Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 017/219] ALSA: core: Add snd_card_free_on_error() helper Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 018/219] ALSA: sis7019: Fix the missing error handling Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 019/219] ALSA: ali5451: Fix the missing snd_card_free() call at probe error Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 020/219] ALSA: als300: " Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 021/219] ALSA: als4000: " Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 022/219] ALSA: atiixp: " Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 023/219] ALSA: au88x0: " Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 024/219] ALSA: aw2: " Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 025/219] ALSA: azt3328: " Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 026/219] ALSA: bt87x: " Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 027/219] ALSA: ca0106: " Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 028/219] ALSA: cmipci: " Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 029/219] ALSA: cs4281: " Greg Kroah-Hartman
2022-04-18 12:09 ` [PATCH 5.17 030/219] ALSA: cs5535audio: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 031/219] ALSA: echoaudio: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 032/219] ALSA: emu10k1x: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 033/219] ALSA: ens137x: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 034/219] ALSA: es1938: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 035/219] ALSA: es1968: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 036/219] ALSA: fm801: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 037/219] ALSA: galaxy: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 038/219] ALSA: hdsp: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 039/219] ALSA: hdspm: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 040/219] ALSA: ice1724: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 041/219] ALSA: intel8x0: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 042/219] ALSA: intel_hdmi: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 043/219] ALSA: korg1212: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 044/219] ALSA: lola: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 045/219] ALSA: lx6464es: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 046/219] ALSA: maestro3: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 047/219] ALSA: oxygen: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 048/219] ALSA: riptide: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 049/219] ALSA: rme32: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 050/219] ALSA: rme9652: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 051/219] ALSA: rme96: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 052/219] ALSA: sc6000: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 053/219] ALSA: sonicvibes: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 054/219] ALSA: via82xx: " Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 055/219] ALSA: usb-audio: Cap upper limits of buffer/period bytes for implicit fb Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 056/219] ALSA: memalloc: Add fallback SG-buffer allocations for x86 Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 057/219] ALSA: nm256: Dont call card private_free at probe error path Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 058/219] drm/msm: Add missing put_task_struct() in debugfs path Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 059/219] nfsd: Fix a write performance regression Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 060/219] firmware: arm_scmi: Remove clear channel call on the TX channel Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 061/219] memory: atmel-ebi: Fix missing of_node_put in atmel_ebi_probe Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 062/219] Revert "ath11k: mesh: add support for 256 bitmap in blockack frames in 11ax" Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 063/219] firmware: arm_scmi: Fix sorting of retrieved clock rates Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 064/219] media: rockchip/rga: do proper error checking in probe Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 065/219] KVM: arm64: Generalise VM features into a set of flags Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 066/219] KVM: arm64: mixed-width check should be skipped for uninitialized vCPUs Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 067/219] SUNRPC: Fix the svc_deferred_event trace class Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 068/219] net/sched: flower: fix parsing of ethertype following VLAN header Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 069/219] veth: Ensure eth header is in skbs linear part Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 070/219] gpiolib: acpi: use correct format characters Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 071/219] cifs: release cached dentries only if mount is complete Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 072/219] ice: arfs: fix use-after-free when freeing @rx_cpu_rmap Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 073/219] Revert "iavf: Fix deadlock occurrence during resetting VF interface" Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 074/219] net: mdio: dont defer probe forever if PHY IRQ provider is missing Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 075/219] mlxsw: i2c: Fix initialization error flow Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 076/219] sctp: use the correct skb for security_sctp_assoc_request Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 077/219] net/sched: fix initialization order when updating chain 0 head Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 078/219] cachefiles: unmark inode in use in error path Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 079/219] cachefiles: Fix KASAN slab-out-of-bounds in cachefiles_set_volume_xattr Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 080/219] net: dsa: felix: suppress -EPROBE_DEFER errors Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 081/219] KVM: selftests: riscv: Set PTE A and D bits in VS-stage page table Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 082/219] KVM: selftests: riscv: Fix alignment of the guest_hang() function Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 083/219] RISC-V: KVM: include missing hwcap.h into vcpu_fp Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 084/219] io_uring: flag the fact that linked file assignment is sane Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 085/219] net: ethernet: stmmac: fix altr_tse_pcs function when using a fixed-link Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 086/219] net/sched: taprio: Check if socket flags are valid Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 087/219] cfg80211: hold bss_lock while updating nontrans_list Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 088/219] mac80211: fix ht_capa printout in debugfs Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 089/219] netfilter: nft_socket: make cgroup match work in input too Greg Kroah-Hartman
2022-04-18 12:10 ` [PATCH 5.17 090/219] drm/msm: Fix range size vs end confusion Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 091/219] drm/msm/dsi: Use connector directly in msm_dsi_manager_connector_init() Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 092/219] drm/msm/dp: add fail safe mode outside of event_mutex context Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 093/219] io_uring: stop using io_wq_work as an fd placeholder Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 094/219] net/smc: use memcpy instead of snprintf to avoid out of bounds read Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 095/219] net/smc: Fix NULL pointer dereference in smc_pnet_find_ib() Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 096/219] scsi: pm80xx: Mask and unmask upper interrupt vectors 32-63 Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 097/219] scsi: pm80xx: Enable upper inbound, outbound queues Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 098/219] scsi: iscsi: Move iscsi_ep_disconnect() Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 099/219] scsi: iscsi: Fix offload conn cleanup when iscsid restarts Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 100/219] scsi: iscsi: Fix endpoint reuse regression Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 101/219] scsi: iscsi: Fix conn cleanup and stop race during iscsid restart Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 102/219] scsi: iscsi: Fix unbound endpoint error handling Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 103/219] sctp: Initialize daddr on peeled off socket Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 104/219] net: lan966x: Fix when a ports upper is changed Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 105/219] net: lan966x: Stop processing the MAC entry is port is wrong Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 106/219] netfilter: nf_tables: nft_parse_register can return a negative value Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 107/219] io_uring: fix assign file locking issue Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 108/219] ALSA: ad1889: Fix the missing snd_card_free() call at probe error Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 109/219] ALSA: mtpav: Dont call card private_free at probe error path Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 110/219] io_uring: move io_uring_rsrc_update2 validation Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 111/219] io_uring: verify that resv2 is 0 in io_uring_rsrc_update2 Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 112/219] io_uring: verify pad field is 0 in io_get_ext_arg Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 113/219] testing/selftests/mqueue: Fix mq_perf_tests to free the allocated cpu set Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 114/219] ALSA: usb-audio: Increase max buffer size Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 115/219] ALSA: usb-audio: Limit max buffer and period sizes per time Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 116/219] perf tools: Fix misleading add event PMU debug message Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 117/219] macvlan: Fix leaking skb in source mode with nodst option Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 118/219] net: ftgmac100: access hardware register after clock ready Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 119/219] nfc: nci: add flush_workqueue to prevent uaf Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 120/219] cifs: potential buffer overflow in handling symlinks Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 121/219] dm mpath: only use ktime_get_ns() in historical selector Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 122/219] vfio/pci: Fix vf_token mechanism when device-specific VF drivers are used Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 123/219] tun: annotate access to queue->trans_start Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 124/219] net: dsa: felix: fix tagging protocol changes with multiple CPU ports Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 125/219] net: bcmgenet: Revert "Use stronger register read/writes to assure ordering" Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 126/219] block: fix offset/size check in bio_trim() Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 127/219] block: null_blk: end timed out poll request Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 128/219] io_uring: abort file assignment prior to assigning creds Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 129/219] KVM: PPC: Book3S HV P9: Fix "lost kick" race Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 130/219] drm/amd: Add USBC connector ID Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 131/219] btrfs: fix fallocate to use file_modified to update permissions consistently Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 132/219] btrfs: do not warn for free space inode in cow_file_range Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 133/219] drm/amdgpu: conduct a proper cleanup of PDB bo Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 134/219] drm/amdgpu/gmc: use PCI BARs for APUs in passthrough Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 135/219] drm/amd/display: fix audio format not updated after edid updated Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 136/219] drm/amd/display: FEC check in timing validation Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 137/219] drm/amd/display: Update VTEM Infopacket definition Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 138/219] drm/amdkfd: Fix Incorrect VMIDs passed to HWS Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 139/219] drm/amdgpu/vcn: improve vcn dpg stop procedure Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 140/219] drm/amdkfd: Check for potential null return of kmalloc_array() Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 141/219] Drivers: hv: vmbus: Deactivate sysctl_record_panic_msg by default in isolated guests Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 142/219] Drivers: hv: vmbus: Propagate VMbus coherence to each VMbus device Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 143/219] PCI: hv: Propagate coherence from VMbus device to PCI device Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 144/219] Drivers: hv: vmbus: Prevent load re-ordering when reading ring buffer Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 145/219] scsi: target: tcmu: Fix possible page UAF Greg Kroah-Hartman
2022-04-18 12:11 ` Greg Kroah-Hartman [this message]
2022-04-18 12:11 ` [PATCH 5.17 147/219] scsi: lpfc: Fix unload hang after back to back PCI EEH faults Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 148/219] scsi: lpfc: Fix queue failures when recovering from PCI parity error Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 149/219] scsi: ibmvscsis: Increase INITIAL_SRP_LIMIT to 1024 Greg Kroah-Hartman
2022-04-18 12:11 ` [PATCH 5.17 150/219] net: micrel: fix KS8851_MLL Kconfig Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 151/219] ata: libata-core: Disable READ LOG DMA EXT for Samsung 840 EVOs Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 152/219] gpu: ipu-v3: Fix dev_dbg frequency output Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 153/219] regulator: wm8994: Add an off-on delay for WM8994 variant Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 154/219] static_call: Properly initialise DEFINE_STATIC_CALL_RET0() Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 155/219] arm64: alternatives: mark patch_alternative() as `noinstr` Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 156/219] tlb: hugetlb: Add more sizes to tlb_remove_huge_tlb_entry Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 157/219] net: axienet: setup mdio unconditionally Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 158/219] Drivers: hv: balloon: Disable balloon and hot-add accordingly Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 159/219] net: usb: aqc111: Fix out-of-bounds accesses in RX fixup Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 160/219] myri10ge: fix an incorrect free for skb in myri10ge_sw_tso Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 161/219] spi: cadence-quadspi: fix protocol setup for non-1-1-X operations Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 162/219] drm/amd/display: Correct Slice reset calculation Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 163/219] drm/amd/display: Enable power gating before init_pipes Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 164/219] drm/amd/display: Revert FEC check in validation Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 165/219] drm/amd/display: Fix allocate_mst_payload assert on resume Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 166/219] drbd: set QUEUE_FLAG_STABLE_WRITES Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 167/219] scsi: mpt3sas: Fail reset operation if config request timed out Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 168/219] scsi: mvsas: Add PCI ID of RocketRaid 2640 Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 169/219] scsi: megaraid_sas: Target with invalid LUN ID is deleted during scan Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 170/219] drivers: net: slip: fix NPD bug in sl_tx_timeout() Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 171/219] x86,bpf: Avoid IBT objtool warning Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 172/219] io_uring: zero tag on rsrc removal Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 173/219] io_uring: use nospec annotation for more indexes Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 174/219] perf/imx_ddr: Fix undefined behavior due to shift overflowing the constant Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 175/219] mm/secretmem: fix panic when growing a memfd_secret Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 176/219] mm, page_alloc: fix build_zonerefs_node() Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 177/219] mm: fix unexpected zeroed page mapping with zram swap Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 178/219] mm: kmemleak: take a full lowmem check in kmemleak_*_phys() Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 179/219] hugetlb: do not demote poisoned hugetlb pages Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 180/219] revert "fs/binfmt_elf: fix PT_LOAD p_align values for loaders" Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 181/219] revert "fs/binfmt_elf: use PT_LOAD p_align values for static PIE" Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 182/219] KVM: x86/mmu: Resolve nx_huge_pages when kvm.ko is loaded Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 183/219] KVM: Dont create VM debugfs files outside of the VM directory Greg Kroah-Hartman
2022-04-18 17:14   ` Oliver Upton
2022-04-19  7:33     ` Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 184/219] SUNRPC: Fix NFSDs request deferral on RDMA transports Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 185/219] memory: renesas-rpc-if: fix platform-device leak in error path Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 186/219] gcc-plugins: latent_entropy: use /dev/urandom Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 187/219] cifs: verify that tcon is valid before dereference in cifs_kill_sb Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 188/219] gpio: sim: fix setting and getting multiple lines Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 189/219] ath9k: Properly clear TX status area before reporting to mac80211 Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 190/219] ath9k: Fix usage of driver-private space in tx_info Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 191/219] btrfs: zoned: activate block group only for extent allocation Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 192/219] btrfs: fix root ref counts in error handling in btrfs_get_root_ref Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 193/219] btrfs: mark resumed async balance as writing Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 194/219] ALSA: hda/realtek: Add quirk for Clevo PD50PNT Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 195/219] ALSA: hda/realtek: add quirk for Lenovo Thinkpad X12 speakers Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 196/219] ALSA: pcm: Test for "silence" field in struct "pcm_format_data" Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 197/219] nl80211: correctly check NL80211_ATTR_REG_ALPHA2 size Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 198/219] ipv6: fix panic when forwarding a pkt with no in6 dev Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 199/219] drm/amd/display: dont ignore alpha property on pre-multiplied mode Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 200/219] drm/amdgpu: Enable gfxoff quirk on MacBook Pro Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 201/219] x86/tsx: Use MSR_TSX_CTRL to clear CPUID bits Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 202/219] x86/tsx: Disable TSX development mode at boot Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 203/219] genirq/affinity: Consider that CPUs on nodes can be unbalanced Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 204/219] tick/nohz: Use WARN_ON_ONCE() to prevent console saturation Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 205/219] ARM: davinci: da850-evm: Avoid NULL pointer dereference Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 206/219] ep93xx: clock: Fix UAF in ep93xx_clk_register_gate() Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 207/219] dm integrity: fix memory corruption when tag_size is less than digest size Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 208/219] i2c: dev: check return value when calling dev_set_name() Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 209/219] Revert "net: dsa: setup master before ports" Greg Kroah-Hartman
2022-04-18 12:12 ` [PATCH 5.17 210/219] smp: Fix offline cpu check in flush_smp_call_function_queue() Greg Kroah-Hartman
2022-04-18 12:13 ` [PATCH 5.17 211/219] dt-bindings: memory: snps,ddrc-3.80a compatible also need interrupts Greg Kroah-Hartman
2022-04-18 12:13 ` [PATCH 5.17 212/219] i2c: pasemi: Wait for write xfers to finish Greg Kroah-Hartman
2022-04-18 12:13 ` [PATCH 5.17 213/219] dt-bindings: net: snps: remove duplicate name Greg Kroah-Hartman
2022-04-18 12:13 ` [PATCH 5.17 214/219] timers: Fix warning condition in __run_timers() Greg Kroah-Hartman
2022-04-18 12:13 ` [PATCH 5.17 215/219] dma-direct: avoid redundant memory sync for swiotlb Greg Kroah-Hartman
2022-04-18 12:13 ` [PATCH 5.17 216/219] mm, kfence: support kmem_dump_obj() for KFENCE objects Greg Kroah-Hartman
2022-04-18 12:13 ` [PATCH 5.17 217/219] drm/i915: Sunset igpu legacy mmap support based on GRAPHICS_VER_FULL Greg Kroah-Hartman
2022-04-18 12:13 ` [PATCH 5.17 218/219] cpu/hotplug: Remove the cpu member of cpuhp_cpu_state Greg Kroah-Hartman
2022-04-18 12:13 ` [PATCH 5.17 219/219] ax25: Fix UAF bugs in ax25 timers Greg Kroah-Hartman
2022-04-18 20:16 ` [PATCH 5.17 000/219] 5.17.4-rc1 review Justin Forbes
2022-04-18 20:29 ` Florian Fainelli
2022-04-19  0:07 ` Guenter Roeck
2022-04-19  0:08 ` Shuah Khan
2022-04-19  0:51 ` Rudi Heitbaum
2022-04-19  2:47 ` Zan Aziz
2022-04-19  4:08 ` Naresh Kamboju
2022-04-19 10:45 ` Ron Economos
2022-04-19 12:21 ` Jon Hunter
2022-04-20  4:44 ` Jiri Slaby

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220418121210.976578406@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=jsmart2021@gmail.com \
    --cc=justin.tee@broadcom.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).