Skip to contentSkip to conversation

4.15.10-stable review

PATCH In review Greg Kroah-Hartman 7 participants 160 messages Mar 13, 2018 – Mar 15, 2018 Page 2 of 2

Subsystems (6)
Stable branch x86 KVM MIPS +2 more subsystems
lore
Share & tools
lore
author maintainer
#138 lore raw

PATCH 133/146 scsi: qla2xxx: Relogin to target port on a cable swap

In reply to Greg Kroah-Hartman

4.15-stable review patch. If anyone has any objections, please let me know.

------------------

From: Quinn Tran <[email protected]>

commit 5ef696aa9f3ccf999552d924c4e21a348f2bbea9 upstream.

If user swaps one target port for another target port for same switch port, the new target port is not being recognized by the driver. Current code assumes that old Target port has recovered from link down. The fix will ask switch what is the WWPN of a specific NportID (GPNID) rather than assuming it's the same Target port which has came back.

Fixes 726b85487067d ("qla2xxx: Add framework for async fabric discovery")
Cc <[email protected]> # 4.10+
---
 drivers/scsi/qla2xxx/qla_gs.c     |  170 +++++++++++++++++++++++++++++---------
 drivers/scsi/qla2xxx/qla_init.c   |    6 -
 drivers/scsi/qla2xxx/qla_os.c     |   35 +++++++
 drivers/scsi/qla2xxx/qla_target.c |   35 ++++++-
 4 files changed, 197 insertions(+), 49 deletions(-)
drivers/scsi/qla2xxx/qla_gs.c +132 -38
@@ -3171,43 +3171,136 @@ void qla24xx_async_gpnid_done(scsi_qla_h
 
 void qla24xx_handle_gpnid_event(scsi_qla_host_t *vha, struct event_arg *ea)
 {
-	fc_port_t *fcport;
-	unsigned long flags;
+	fc_port_t *fcport, *conflict, *t;
 
-	spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags);
-	fcport = qla2x00_find_fcport_by_wwpn(vha, ea->port_name, 1);
-	spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags);
-
-	if (fcport) {
-		/* cable moved. just plugged in */
-		fcport->rscn_gen++;
-		fcport->d_id = ea->id;
-		fcport->scan_state = QLA_FCPORT_FOUND;
-		fcport->flags |= FCF_FABRIC_DEVICE;
-
-		switch (fcport->disc_state) {
-		case DSC_DELETED:
-			ql_dbg(ql_dbg_disc, vha, 0x210d,
-			    "%s %d %8phC login\n", __func__, __LINE__,
-			    fcport->port_name);
-			qla24xx_fcport_handle_login(vha, fcport);
-			break;
-		case DSC_DELETE_PEND:
-			break;
-		default:
-			ql_dbg(ql_dbg_disc, vha, 0x2064,
-			    "%s %d %8phC post del sess\n",
-			    __func__, __LINE__, fcport->port_name);
-			qlt_schedule_sess_for_deletion_lock(fcport);
-			break;
+	ql_dbg(ql_dbg_disc, vha, 0xffff,
+	    "%s %d port_id: %06x\n",
+	    __func__, __LINE__, ea->id.b24);
+
+	if (ea->rc) {
+		/* cable is disconnected */
+		list_for_each_entry_safe(fcport, t, &vha->vp_fcports, list) {
+			if (fcport->d_id.b24 == ea->id.b24) {
+				ql_dbg(ql_dbg_disc, vha, 0xffff,
+				    "%s %d %8phC DS %d\n",
+				    __func__, __LINE__,
+				    fcport->port_name,
+				    fcport->disc_state);
+				fcport->scan_state = QLA_FCPORT_SCAN;
+				switch (fcport->disc_state) {
+				case DSC_DELETED:
+				case DSC_DELETE_PEND:
+					break;
+				default:
+					ql_dbg(ql_dbg_disc, vha, 0xffff,
+					    "%s %d %8phC post del sess\n",
+					    __func__, __LINE__,
+					    fcport->port_name);
+					qlt_schedule_sess_for_deletion_lock
+						(fcport);
+					break;
+				}
+			}
 		}
 	} else {
-		/* create new fcport */
-		ql_dbg(ql_dbg_disc, vha, 0x2065,
-		    "%s %d %8phC post new sess\n",
-		    __func__, __LINE__, ea->port_name);
-
-		qla24xx_post_newsess_work(vha, &ea->id, ea->port_name, NULL);
+		/* cable is connected */
+		fcport = qla2x00_find_fcport_by_wwpn(vha, ea->port_name, 1);
+		if (fcport) {
+			list_for_each_entry_safe(conflict, t, &vha->vp_fcports,
+			    list) {
+				if ((conflict->d_id.b24 == ea->id.b24) &&
+				    (fcport != conflict)) {
+					/* 2 fcports with conflict Nport ID or
+					 * an existing fcport is having nport ID
+					 * conflict with new fcport.
+					 */
+
+					ql_dbg(ql_dbg_disc, vha, 0xffff,
+					    "%s %d %8phC DS %d\n",
+					    __func__, __LINE__,
+					    conflict->port_name,
+					    conflict->disc_state);
+					conflict->scan_state = QLA_FCPORT_SCAN;
+					switch (conflict->disc_state) {
+					case DSC_DELETED:
+					case DSC_DELETE_PEND:
+						break;
+					default:
+						ql_dbg(ql_dbg_disc, vha, 0xffff,
+						    "%s %d %8phC post del sess\n",
+						    __func__, __LINE__,
+						    conflict->port_name);
+						qlt_schedule_sess_for_deletion_lock
+							(conflict);
+						break;
+					}
+				}
+			}
+
+			fcport->rscn_gen++;
+			fcport->scan_state = QLA_FCPORT_FOUND;
+			fcport->flags |= FCF_FABRIC_DEVICE;
+			switch (fcport->disc_state) {
+			case DSC_LOGIN_COMPLETE:
+				/* recheck session is still intact. */
+				ql_dbg(ql_dbg_disc, vha, 0x210d,
+				    "%s %d %8phC revalidate session with ADISC\n",
+				    __func__, __LINE__, fcport->port_name);
+				qla24xx_post_gpdb_work(vha, fcport,
+				    PDO_FORCE_ADISC);
+				break;
+			case DSC_DELETED:
+				ql_dbg(ql_dbg_disc, vha, 0x210d,
+				    "%s %d %8phC login\n", __func__, __LINE__,
+				    fcport->port_name);
+				fcport->d_id = ea->id;
+				qla24xx_fcport_handle_login(vha, fcport);
+				break;
+			case DSC_DELETE_PEND:
+				fcport->d_id = ea->id;
+				break;
+			default:
+				fcport->d_id = ea->id;
+				break;
+			}
+		} else {
+			list_for_each_entry_safe(conflict, t, &vha->vp_fcports,
+			    list) {
+				if (conflict->d_id.b24 == ea->id.b24) {
+					/* 2 fcports with conflict Nport ID or
+					 * an existing fcport is having nport ID
+					 * conflict with new fcport.
+					 */
+					ql_dbg(ql_dbg_disc, vha, 0xffff,
+					    "%s %d %8phC DS %d\n",
+					    __func__, __LINE__,
+					    conflict->port_name,
+					    conflict->disc_state);
+
+					conflict->scan_state = QLA_FCPORT_SCAN;
+					switch (conflict->disc_state) {
+					case DSC_DELETED:
+					case DSC_DELETE_PEND:
+						break;
+					default:
+						ql_dbg(ql_dbg_disc, vha, 0xffff,
+						    "%s %d %8phC post del sess\n",
+						    __func__, __LINE__,
+						    conflict->port_name);
+						qlt_schedule_sess_for_deletion_lock
+							(conflict);
+						break;
+					}
+				}
+			}
+
+			/* create new fcport */
+			ql_dbg(ql_dbg_disc, vha, 0x2065,
+			    "%s %d %8phC post new sess\n",
+			    __func__, __LINE__, ea->port_name);
+			qla24xx_post_newsess_work(vha, &ea->id,
+			    ea->port_name, NULL);
+		}
 	}
 }
 
@@ -3248,12 +3341,13 @@ static void qla2x00_async_gpnid_sp_done(
 	spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags);
 
 	if (res) {
-		if (res == QLA_FUNCTION_TIMEOUT)
+		if (res == QLA_FUNCTION_TIMEOUT) {
 			qla24xx_post_gpnid_work(sp->vha, &ea.id);
-		sp->free(sp);
-		return;
+			sp->free(sp);
+			return;
+		}
 	} else if (sp->gen1) {
-		/* There was anoter RSNC for this Nport ID */
+		/* There was another RSCN for this Nport ID */
 		qla24xx_post_gpnid_work(sp->vha, &ea.id);
 		sp->free(sp);
 		return;
drivers/scsi/qla2xxx/qla_init.c +4 -2
@@ -925,6 +925,9 @@ void qla24xx_handle_gpdb_event(scsi_qla_
 		 * must have triggered the session to be re-validate.
 		 * session is still valid.
 		 */
+		ql_dbg(ql_dbg_disc, vha, 0x20d6,
+		    "%s %d %8phC session revalidate success\n",
+		    __func__, __LINE__, fcport->port_name);
 		fcport->disc_state = DSC_LOGIN_COMPLETE;
 	}
 	spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags);
@@ -1049,9 +1052,8 @@ void qla24xx_handle_rscn_event(fc_port_t
 	switch (fcport->disc_state) {
 	case DSC_DELETED:
 	case DSC_LOGIN_COMPLETE:
-		qla24xx_post_gidpn_work(fcport->vha, fcport);
+		qla24xx_post_gpnid_work(fcport->vha, &ea->id);
 		break;
-
 	default:
 		break;
 	}
drivers/scsi/qla2xxx/qla_os.c +32 -3
@@ -4760,10 +4760,39 @@ void qla24xx_create_new_sess(struct scsi
 	spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags);
 
 	if (fcport) {
-		if (pla)
+		if (pla) {
 			qlt_plogi_ack_unref(vha, pla);
-		else
-			qla24xx_async_gffid(vha, fcport);
+		} else {
+			spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags);
+			tfcp = qla2x00_find_fcport_by_nportid(vha,
+			    &e->u.new_sess.id, 1);
+			if (tfcp && (tfcp != fcport)) {
+				/*
+				 * We have a conflict fcport with same NportID.
+				 */
+				ql_dbg(ql_dbg_disc, vha, 0xffff,
+				    "%s %8phC found conflict b4 add. DS %d LS %d\n",
+				    __func__, tfcp->port_name, tfcp->disc_state,
+				    tfcp->fw_login_state);
+
+				switch (tfcp->disc_state) {
+				case DSC_DELETED:
+					break;
+				case DSC_DELETE_PEND:
+					fcport->login_pause = 1;
+					tfcp->conflict = fcport;
+					break;
+				default:
+					fcport->login_pause = 1;
+					tfcp->conflict = fcport;
+					qlt_schedule_sess_for_deletion_lock
+						(tfcp);
+					break;
+				}
+			}
+			spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags);
+			qla24xx_async_gnl(vha, fcport);
+		}
 	}
 
 	if (free_fcport) {
drivers/scsi/qla2xxx/qla_target.c +29 -6
@@ -890,6 +890,17 @@ qlt_plogi_ack_link(struct scsi_qla_host
 		iocb->u.isp24.port_id[1], iocb->u.isp24.port_id[0],
 		pla->ref_count, pla, link);
 
+	if (link == QLT_PLOGI_LINK_CONFLICT) {
+		switch (sess->disc_state) {
+		case DSC_DELETED:
+		case DSC_DELETE_PEND:
+			pla->ref_count--;
+			return;
+		default:
+			break;
+		}
+	}
+
 	if (sess->plogi_link[link])
 		qlt_plogi_ack_unref(vha, sess->plogi_link[link]);
 
@@ -4737,6 +4748,10 @@ static int qlt_24xx_handle_els(struct sc
 		sess->d_id = port_id;
 		sess->login_gen++;
 
+		ql_dbg(ql_dbg_disc, vha, 0x20f9,
+		    "%s %d %8phC  DS %d\n",
+		    __func__, __LINE__, sess->port_name, sess->disc_state);
+
 		switch (sess->disc_state) {
 		case DSC_DELETED:
 			qlt_plogi_ack_unref(vha, pla);
@@ -4786,12 +4801,20 @@ static int qlt_24xx_handle_els(struct sc
 		}
 
 		if (conflict_sess) {
-			ql_dbg(ql_dbg_tgt_mgt, vha, 0xf09b,
-			    "PRLI with conflicting sess %p port %8phC\n",
-			    conflict_sess, conflict_sess->port_name);
-			qlt_send_term_imm_notif(vha, iocb, 1);
-			res = 0;
-			break;
+			switch (conflict_sess->disc_state) {
+			case DSC_DELETED:
+			case DSC_DELETE_PEND:
+				break;
+			default:
+				ql_dbg(ql_dbg_tgt_mgt, vha, 0xf09b,
+				    "PRLI with conflicting sess %p port %8phC\n",
+				    conflict_sess, conflict_sess->port_name);
+				conflict_sess->fw_login_state =
+				    DSC_LS_PORT_UNAVAIL;
+				qlt_send_term_imm_notif(vha, iocb, 1);
+				res = 0;
+				break;
+			}
 		}
 
 		if (sess != NULL) {
author maintainer
#139 lore raw

PATCH 134/146 scsi: qla2xxx: Fix Relogin being triggered too fast

In reply to Greg Kroah-Hartman

4.15-stable review patch. If anyone has any objections, please let me know.

------------------

From: Quinn Tran <[email protected]>

commit 4005a995668b8fd58f4cf1460dd4cf63efa18363 upstream.

Current driver design schedules relogin process via DPC thread every 1 second. In a large fabric, this DPC thread tries to schedule too many jobs and might get overloaded. As a result of this processing of DPC thread, it can schedule relogin earlier than 1 second.

Fixes 726b85487067d ("qla2xxx: Add framework for async fabric discovery")
Cc <[email protected]> # 4.10+
---
 drivers/scsi/qla2xxx/qla_def.h |    1 +
 drivers/scsi/qla2xxx/qla_mid.c |   22 ++++++++++++++--------
 drivers/scsi/qla2xxx/qla_os.c  |   22 ++++++++++++++--------
 3 files changed, 29 insertions(+), 16 deletions(-)
drivers/scsi/qla2xxx/qla_def.h +1 -0
@@ -4110,6 +4110,7 @@ typedef struct scsi_qla_host {
 #define LOOP_READY	5
 #define LOOP_DEAD	6
 
+	unsigned long   relogin_jif;
 	unsigned long   dpc_flags;
 #define RESET_MARKER_NEEDED	0	/* Send marker to ISP. */
 #define RESET_ACTIVE		1
drivers/scsi/qla2xxx/qla_mid.c +14 -8
@@ -343,15 +343,21 @@ qla2x00_do_dpc_vp(scsi_qla_host_t *vha)
 		    "FCPort update end.\n");
 	}
 
-	if ((test_and_clear_bit(RELOGIN_NEEDED, &vha->dpc_flags)) &&
-		!test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags) &&
-		atomic_read(&vha->loop_state) != LOOP_DOWN) {
+	if (test_bit(RELOGIN_NEEDED, &vha->dpc_flags) &&
+	    !test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags) &&
+	    atomic_read(&vha->loop_state) != LOOP_DOWN) {
 
-		ql_dbg(ql_dbg_dpc, vha, 0x4018,
-		    "Relogin needed scheduled.\n");
-		qla2x00_relogin(vha);
-		ql_dbg(ql_dbg_dpc, vha, 0x4019,
-		    "Relogin needed end.\n");
+		if (!vha->relogin_jif ||
+		    time_after_eq(jiffies, vha->relogin_jif)) {
+			vha->relogin_jif = jiffies + HZ;
+			clear_bit(RELOGIN_NEEDED, &vha->dpc_flags);
+
+			ql_dbg(ql_dbg_dpc, vha, 0x4018,
+			    "Relogin needed scheduled.\n");
+			qla2x00_relogin(vha);
+			ql_dbg(ql_dbg_dpc, vha, 0x4019,
+			    "Relogin needed end.\n");
+		}
 	}
 
 	if (test_and_clear_bit(RESET_MARKER_NEEDED, &vha->dpc_flags) &&
drivers/scsi/qla2xxx/qla_os.c +14 -8
@@ -4905,7 +4905,7 @@ void qla2x00_relogin(struct scsi_qla_hos
 	 */
 		if (atomic_read(&fcport->state) != FCS_ONLINE &&
 		    fcport->login_retry && !(fcport->flags & FCF_ASYNC_SENT)) {
-			fcport->login_retry--;
+
 			if (fcport->flags & FCF_FABRIC_DEVICE) {
 				ql_dbg(ql_dbg_disc, fcport->vha, 0x2108,
 				    "%s %8phC DS %d LS %d\n", __func__,
@@ -4916,6 +4916,7 @@ void qla2x00_relogin(struct scsi_qla_hos
 				ea.fcport = fcport;
 				qla2x00_fcport_event_handler(vha, &ea);
 			} else {
+				fcport->login_retry--;
 				status = qla2x00_local_device_login(vha,
 								fcport);
 				if (status == QLA_SUCCESS) {
@@ -5898,16 +5899,21 @@ qla2x00_do_dpc(void *data)
 		}
 
 		/* Retry each device up to login retry count */
-		if ((test_and_clear_bit(RELOGIN_NEEDED,
-						&base_vha->dpc_flags)) &&
+		if (test_bit(RELOGIN_NEEDED, &base_vha->dpc_flags) &&
 		    !test_bit(LOOP_RESYNC_NEEDED, &base_vha->dpc_flags) &&
 		    atomic_read(&base_vha->loop_state) != LOOP_DOWN) {
 
-			ql_dbg(ql_dbg_dpc, base_vha, 0x400d,
-			    "Relogin scheduled.\n");
-			qla2x00_relogin(base_vha);
-			ql_dbg(ql_dbg_dpc, base_vha, 0x400e,
-			    "Relogin end.\n");
+			if (!base_vha->relogin_jif ||
+			    time_after_eq(jiffies, base_vha->relogin_jif)) {
+				base_vha->relogin_jif = jiffies + HZ;
+				clear_bit(RELOGIN_NEEDED, &base_vha->dpc_flags);
+
+				ql_dbg(ql_dbg_dpc, base_vha, 0x400d,
+				    "Relogin scheduled.\n");
+				qla2x00_relogin(base_vha);
+				ql_dbg(ql_dbg_dpc, base_vha, 0x400e,
+				    "Relogin end.\n");
+			}
 		}
 loop_resync_check:
 		if (test_and_clear_bit(LOOP_RESYNC_NEEDED,
author maintainer
#140 lore raw

PATCH 135/146 scsi: qla2xxx: Fix PRLI state check

In reply to Greg Kroah-Hartman

4.15-stable review patch. If anyone has any objections, please let me know.

------------------

From: Quinn Tran <[email protected]>

commit 23c645595dab7b414f23639d0a428a07515807df upstream.

Get Port Database MBX cmd is to validate current Login state upon PRLI completion. Current code looks at the last login state for re-validation which was incorrect. This patch removed incorrect state check.

Fixes 15f30a5752287 ("qla2xxx: Use IOCB interface to submit non-critical MBX.")
Cc <[email protected]> # 4.10+
---
 drivers/scsi/qla2xxx/qla_mbx.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/scsi/qla2xxx/qla_mbx.c +1 -2
@@ -6160,8 +6160,7 @@ int __qla24xx_parse_gpdb(struct scsi_qla
 	}
 
 	/* Check for logged in state. */
-	if (current_login_state != PDS_PRLI_COMPLETE &&
-	    last_login_state != PDS_PRLI_COMPLETE) {
+	if (current_login_state != PDS_PRLI_COMPLETE) {
 		ql_dbg(ql_dbg_mbx, vha, 0x119a,
 		    "Unable to verify login-state (%x/%x) for loop_id %x.\n",
 		    current_login_state, last_login_state, fcport->loop_id);
author maintainer
#141 lore raw

PATCH 136/146 scsi: qla2xxx: Fix abort command deadlock due to spinlock

In reply to Greg Kroah-Hartman

4.15-stable review patch. If anyone has any objections, please let me know.

------------------

From: Quinn Tran <[email protected]>

commit b0dcce746b32ac573343ad39cb3dc485030de95e upstream.

Original code acquires hardware_lock to add Abort IOCB onto driver request queue for processing. However, abort_command() will also acquire hardware lock to look up sp pointer before issuing abort IOCB command resulting into a deadlock. This patch safely removes the possible deadlock scenario by removing extra spinlock.

Fixes 6eb54715b54bb ("qla2xxx: Added interface to send explicit LOGO.")
Cc <[email protected]> # 4.10+
---
 drivers/scsi/qla2xxx/qla_iocb.c |    3 ---
 1 file changed, 3 deletions(-)
drivers/scsi/qla2xxx/qla_iocb.c +0 -3
@@ -2394,7 +2394,6 @@ qla2x00_els_dcmd_iocb_timeout(void *data
 	struct scsi_qla_host *vha = sp->vha;
 	struct qla_hw_data *ha = vha->hw;
 	struct srb_iocb *lio = &sp->u.iocb_cmd;
-	unsigned long flags = 0;
 
 	ql_dbg(ql_dbg_io, vha, 0x3069,
 	    "%s Timeout, hdl=%x, portid=%02x%02x%02x\n",
@@ -2402,7 +2401,6 @@ qla2x00_els_dcmd_iocb_timeout(void *data
 	    fcport->d_id.b.al_pa);
 
 	/* Abort the exchange */
-	spin_lock_irqsave(&ha->hardware_lock, flags);
 	if (ha->isp_ops->abort_command(sp)) {
 		ql_dbg(ql_dbg_io, vha, 0x3070,
 		    "mbx abort_command failed.\n");
@@ -2410,7 +2408,6 @@ qla2x00_els_dcmd_iocb_timeout(void *data
 		ql_dbg(ql_dbg_io, vha, 0x3071,
 		    "mbx abort_command success.\n");
 	}
-	spin_unlock_irqrestore(&ha->hardware_lock, flags);
 
 	complete(&lio->u.els_logo.comp);
 }
author maintainer
#142 lore raw

PATCH 137/146 scsi: qla2xxx: Replace fcport alloc with qla2x00_alloc_fcport

In reply to Greg Kroah-Hartman

4.15-stable review patch. If anyone has any objections, please let me know.

------------------

From: Quinn Tran <[email protected]>

commit 063b36d6b0ad74c748d536f5cb47bac2f850a0fa upstream.

Current code manually allocate an fcport structure that is not properly initialize. Replace kzalloc with qla2x00_alloc_fcport, so that all fields are initialized. Also set set scan flag to port found

---
 drivers/scsi/qla2xxx/qla_target.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/scsi/qla2xxx/qla_target.c +1 -1
@@ -5782,7 +5782,7 @@ static fc_port_t *qlt_get_port_database(
 	unsigned long flags;
 	u8 newfcport = 0;
 
-	fcport = kzalloc(sizeof(*fcport), GFP_KERNEL);
+	fcport = qla2x00_alloc_fcport(vha, GFP_KERNEL);
 	if (!fcport) {
 		ql_dbg(ql_dbg_tgt_mgt, vha, 0xf06f,
 		    "qla_target(%d): Allocation of tmp FC port failed",
author maintainer
#143 lore raw

PATCH 138/146 scsi: qla2xxx: Fix scan state field for fcport

In reply to Greg Kroah-Hartman

4.15-stable review patch. If anyone has any objections, please let me know.

------------------

From: Quinn Tran <[email protected]>

commit 76f9a2dd4c60183879a1898bcd56a1dbab19a85d upstream.

Add correct value of scan_state field indicating state of the FC port

Fixes 726b85487067d ("qla2xxx: Add framework for async fabric discovery")
Cc <[email protected]> # 4.10+
---
 drivers/scsi/qla2xxx/qla_target.c |    1 +
 1 file changed, 1 insertion(+)
drivers/scsi/qla2xxx/qla_target.c +1 -0
@@ -5811,6 +5811,7 @@ static fc_port_t *qlt_get_port_database(
 		tfcp->port_type = fcport->port_type;
 		tfcp->supported_classes = fcport->supported_classes;
 		tfcp->flags |= fcport->flags;
+		tfcp->scan_state = QLA_FCPORT_FOUND;
 
 		del = fcport;
 		fcport = tfcp;
author maintainer
#144 lore raw

PATCH 139/146 scsi: qla2xxx: Clear loop id after delete

In reply to Greg Kroah-Hartman

4.15-stable review patch. If anyone has any objections, please let me know.

------------------

From: Quinn Tran <[email protected]>

commit ba743f9148e951abe1c94f89c174ec8e44fb145b upstream.

Clear loop id after delete to prevent session invalidation of stale session.

Fixes 726b85487067d ("qla2xxx: Add framework for async fabric discovery")
Cc <[email protected]> # 4.10+
---
 drivers/scsi/qla2xxx/qla_target.c |    9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)
drivers/scsi/qla2xxx/qla_target.c +4 -5
@@ -985,7 +985,7 @@ static void qlt_free_session_done(struct
 			qlt_send_first_logo(vha, &logo);
 		}
 
-		if (sess->logout_on_delete) {
+		if (sess->logout_on_delete && sess->loop_id != FC_NO_LOOP_ID) {
 			int rc;
 
 			rc = qla2x00_post_async_logout_work(vha, sess, NULL);
@@ -1044,8 +1044,7 @@ static void qlt_free_session_done(struct
 		sess->login_succ = 0;
 	}
 
-	if (sess->chip_reset != ha->base_qpair->chip_reset)
-		qla2x00_clear_loop_id(sess);
+	qla2x00_clear_loop_id(sess);
 
 	if (sess->conflict) {
 		sess->conflict->login_pause = 0;
@@ -4599,9 +4598,9 @@ qlt_find_sess_invalidate_other(scsi_qla_
 				    "Invalidating sess %p loop_id %d wwn %llx.\n",
 				    other_sess, other_sess->loop_id, other_wwn);
 
-
 				other_sess->keep_nport_handle = 1;
-				*conflict_sess = other_sess;
+				if (other_sess->disc_state != DSC_DELETED)
+					*conflict_sess = other_sess;
 				qlt_schedule_sess_for_deletion(other_sess,
 				    true);
 			}
author maintainer
#145 lore raw

PATCH 140/146 scsi: qla2xxx: Defer processing of GS IOCB calls

In reply to Greg Kroah-Hartman

4.15-stable review patch. If anyone has any objections, please let me know.

------------------

From: Giridhar Malavali <[email protected]>

commit 5d3300a9b8b122b4743aed5a178bf12c87e2b8c9 upstream.

This patch defers processing of GS IOCB calls from interrupt context to avoid hardware spinlock recursion.

Following stack trace is seen

? mod_timer+0x193/0x330
? ql_dbg+0xa7/0xf0 [qla2xxx]
_raw_spin_lock_irqsave+0x31/0x40
qla2x00_start_sp+0x3b/0x250 [qla2xxx]
qla24xx_async_gnl+0x1d3/0x240 [qla2xxx]
qla24xx_fcport_handle_login+0x285/0x290 [qla2xxx]
? vprintk_func+0x20/0x50
Fixes 726b85487067d ("qla2xxx: Add framework for async fabric discovery")
Cc <[email protected]> # 4.10+
---
 drivers/scsi/qla2xxx/qla_init.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/scsi/qla2xxx/qla_init.c +2 -2
@@ -975,7 +975,7 @@ int qla24xx_fcport_handle_login(struct s
 			ql_dbg(ql_dbg_disc, vha, 0x20bd,
 			    "%s %d %8phC post gnl\n",
 			    __func__, __LINE__, fcport->port_name);
-			qla24xx_async_gnl(vha, fcport);
+			qla24xx_post_gnl_work(vha, fcport);
 		} else {
 			ql_dbg(ql_dbg_disc, vha, 0x20bf,
 			    "%s %d %8phC post login\n",
@@ -1143,7 +1143,7 @@ void qla24xx_handle_relogin_event(scsi_q
 		ql_dbg(ql_dbg_disc, vha, 0x20e9, "%s %d %8phC post gidpn\n",
 		    __func__, __LINE__, fcport->port_name);
 
-		qla24xx_async_gidpn(vha, fcport);
+		qla24xx_post_gidpn_work(vha, fcport);
 		return;
 	}
 
author maintainer
#146 lore raw

PATCH 141/146 scsi: qla2xxx: Remove aborting ELS IOCB call issued as part of timeout.

In reply to Greg Kroah-Hartman

4.15-stable review patch. If anyone has any objections, please let me know.

------------------

From: Giridhar Malavali <[email protected]>

commit bf07ef86e882013522876f7c834c8eea085f35b4 upstream.

This fix the spinlock recursion issue seen while unloading the driver.

14 [ffff9f2e21e03db8] native_queued_spin_lock_slowpath at ffffffffad0d8802 15 [ffff9f2e21e03dc0] do_raw_spin_lock at ffffffffad0d99e4
16 [ffff9f2e21e03dd8] _raw_spin_lock_irqsave at ffffffffad652471 17 [ffff9f2e21e03e00] qla2x00_els_dcmd_iocb_timeout at ffffffffc070cd63 18 [ffff9f2e21e03e40] qla2x00_sp_timeout at ffffffffc06f06d3 [qla2xxx] 19 [ffff9f2e21e03e68] call_timer_fn at ffffffffad0f97d8
20 [ffff9f2e21e03ed8] run_timer_softirq at ffffffffad0faf47
21 [ffff9f2e21e03f68] __softirqentry_text_start at ffffffffad655f32

Fixes 6eb54715b54bb ("qla2xxx: Added interface to send explicit LOGO.")
Cc <[email protected]> # 4.10+
---
 drivers/scsi/qla2xxx/qla_iocb.c |   10 ----------
 1 file changed, 10 deletions(-)
drivers/scsi/qla2xxx/qla_iocb.c +0 -10
@@ -2392,7 +2392,6 @@ qla2x00_els_dcmd_iocb_timeout(void *data
 	srb_t *sp = data;
 	fc_port_t *fcport = sp->fcport;
 	struct scsi_qla_host *vha = sp->vha;
-	struct qla_hw_data *ha = vha->hw;
 	struct srb_iocb *lio = &sp->u.iocb_cmd;
 
 	ql_dbg(ql_dbg_io, vha, 0x3069,
@@ -2400,15 +2399,6 @@ qla2x00_els_dcmd_iocb_timeout(void *data
 	    sp->name, sp->handle, fcport->d_id.b.domain, fcport->d_id.b.area,
 	    fcport->d_id.b.al_pa);
 
-	/* Abort the exchange */
-	if (ha->isp_ops->abort_command(sp)) {
-		ql_dbg(ql_dbg_io, vha, 0x3070,
-		    "mbx abort_command failed.\n");
-	} else {
-		ql_dbg(ql_dbg_io, vha, 0x3071,
-		    "mbx abort_command success.\n");
-	}
-
 	complete(&lio->u.els_logo.comp);
 }
 
author maintainer
#147 lore raw

PATCH 142/146 scsi: qla2xxx: Fix system crash in qlt_plogi_ack_unref

In reply to Greg Kroah-Hartman

4.15-stable review patch. If anyone has any objections, please let me know.

------------------

From: Quinn Tran <[email protected]>

commit 19759033e0d0beed70421ab9258f5ede79e070ae upstream.

Fix system crash due to NULL pointer access.

qlt_plogi_ack_t and fc_port structures were not properly bound before calling qlt_plogi_ack_unref().

RIP: 0010:qlt_plogi_ack_unref+0xa1/0x150 [qla2xxx]
Call Trace:
qla24xx_create_new_sess+0xb1/0x320 [qla2xxx]
qla2x00_do_work+0x123/0x260 [qla2xxx]
qla2x00_iocb_work_fn+0x30/0x40 [qla2xxx]
process_one_work+0x1f3/0x530
worker_thread+0x4e/0x480
kthread+0x10c/0x140
Fixes 726b85487067d ("qla2xxx: Add framework for async fabric discovery")
Cc <[email protected]> # 4.10+
---
 drivers/scsi/qla2xxx/qla_os.c |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
drivers/scsi/qla2xxx/qla_os.c +5 -5
@@ -4750,11 +4750,11 @@ void qla24xx_create_new_sess(struct scsi
 		} else {
 			list_add_tail(&fcport->list, &vha->vp_fcports);
 
-			if (pla) {
-				qlt_plogi_ack_link(vha, pla, fcport,
-				    QLT_PLOGI_LINK_SAME_WWN);
-				pla->ref_count--;
-			}
+		}
+		if (pla) {
+			qlt_plogi_ack_link(vha, pla, fcport,
+			    QLT_PLOGI_LINK_SAME_WWN);
+			pla->ref_count--;
 		}
 	}
 	spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags);
author maintainer
#148 lore raw

PATCH 143/146 scsi: qla2xxx: Fix memory leak in dual/target mode

In reply to Greg Kroah-Hartman

4.15-stable review patch. If anyone has any objections, please let me know.

------------------

From: [email protected] <[email protected]>

commit 7867b98dceb7741065c9c1b645136facad5c2e93 upstream.

When driver is loaded in Target/Dual mode, it creates QPair to support MQ and allocates resources for each QPair. This Qpair initialization is delayed until the FW personality is changed to Dual/Target mode by issuing chip reset. At the time of chip reset firmware is re-initilized in correct personality all the QPairs are initialized by sending MBC_INITIALIZE_MULTIQ (001Fh).

This patch fixes memory leak by adding check to issue MBC_INITIALIZE_MULTIQ command only while deleting rsp/req queue when the flag is set for initiator mode, and clean up QPair resources correctly during the driver unload. This MBX does not need to be issued for Target/Dual mode because chip reset will reset ISP.

Fixes d65237c7f0860 ("scsi: qla2xxx: Fix mailbox failure while deleting Queue pairs")
Cc <[email protected]> # 4.10+
---
 drivers/scsi/qla2xxx/qla_init.c |    4 +---
 drivers/scsi/qla2xxx/qla_mid.c  |   18 ++++++++++--------
 2 files changed, 11 insertions(+), 11 deletions(-)
drivers/scsi/qla2xxx/qla_init.c +1 -3
@@ -8221,9 +8221,6 @@ int qla2xxx_delete_qpair(struct scsi_qla
 	int ret = QLA_FUNCTION_FAILED;
 	struct qla_hw_data *ha = qpair->hw;
 
-	if (!vha->flags.qpairs_req_created && !vha->flags.qpairs_rsp_created)
-		goto fail;
-
 	qpair->delete_in_progress = 1;
 	while (atomic_read(&qpair->ref_count))
 		msleep(500);
@@ -8231,6 +8228,7 @@ int qla2xxx_delete_qpair(struct scsi_qla
 	ret = qla25xx_delete_req_que(vha, qpair->req);
 	if (ret != QLA_SUCCESS)
 		goto fail;
+
 	ret = qla25xx_delete_rsp_que(vha, qpair->rsp);
 	if (ret != QLA_SUCCESS)
 		goto fail;
drivers/scsi/qla2xxx/qla_mid.c +10 -8
@@ -575,14 +575,15 @@ qla25xx_free_rsp_que(struct scsi_qla_hos
 int
 qla25xx_delete_req_que(struct scsi_qla_host *vha, struct req_que *req)
 {
-	int ret = -1;
+	int ret = QLA_SUCCESS;
 
-	if (req) {
+	if (req && vha->flags.qpairs_req_created) {
 		req->options |= BIT_0;
 		ret = qla25xx_init_req_que(vha, req);
+		if (ret != QLA_SUCCESS)
+			return QLA_FUNCTION_FAILED;
 	}
-	if (ret == QLA_SUCCESS)
-		qla25xx_free_req_que(vha, req);
+	qla25xx_free_req_que(vha, req);
 
 	return ret;
 }
@@ -590,14 +591,15 @@ qla25xx_delete_req_que(struct scsi_qla_h
 int
 qla25xx_delete_rsp_que(struct scsi_qla_host *vha, struct rsp_que *rsp)
 {
-	int ret = -1;
+	int ret = QLA_SUCCESS;
 
-	if (rsp) {
+	if (rsp && vha->flags.qpairs_rsp_created) {
 		rsp->options |= BIT_0;
 		ret = qla25xx_init_rsp_que(vha, rsp);
+		if (ret != QLA_SUCCESS)
+			return QLA_FUNCTION_FAILED;
 	}
-	if (ret == QLA_SUCCESS)
-		qla25xx_free_rsp_que(vha, rsp);
+	qla25xx_free_rsp_que(vha, rsp);
 
 	return ret;
 }
author maintainer
#149 lore raw

PATCH 144/146 NFS: Fix an incorrect type in struct nfs_direct_req

In reply to Greg Kroah-Hartman

4.15-stable review patch. If anyone has any objections, please let me know.

------------------

From: Trond Myklebust <[email protected]>

commit d9ee65539d3eabd9ade46cca1780e3309ad0f907 upstream.

The start offset needs to be of type loff_t.

Fixed: 5fadeb47dcc5c ("nfs: count DIO good bytes correctly with mirroring")

---
 fs/nfs/direct.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
fs/nfs/direct.c +1 -1
@@ -86,10 +86,10 @@ struct nfs_direct_req {
 	struct nfs_direct_mirror mirrors[NFS_PAGEIO_DESCRIPTOR_MIRROR_MAX];
 	int			mirror_count;
 
+	loff_t			io_start;	/* Start offset for I/O */
 	ssize_t			count,		/* bytes actually processed */
 				max_count,	/* max expected count */
 				bytes_left,	/* bytes left to be sent */
-				io_start,	/* start of IO */
 				error;		/* any reported error */
 	struct completion	completion;	/* wait for i/o completion */
 
author maintainer
#150 lore raw

PATCH 145/146 pNFS: Prevent the layout header refcount going to zero in pnfs_roc()

In reply to Greg Kroah-Hartman

4.15-stable review patch. If anyone has any objections, please let me know.

------------------

From: Trond Myklebust <[email protected]>

commit 9c6376ebddad585da4238532dd6d90ae23ffee67 upstream.

Ensure that we hold a reference to the layout header when processing the pNFS return-on-close so that the refcount value does not inadvertently go to zero.

---
 fs/nfs/pnfs.c |   13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)
fs/nfs/pnfs.c +10 -3
@@ -292,8 +292,11 @@ pnfs_detach_layout_hdr(struct pnfs_layou
 void
 pnfs_put_layout_hdr(struct pnfs_layout_hdr *lo)
 {
-	struct inode *inode = lo->plh_inode;
+	struct inode *inode;
 
+	if (!lo)
+		return;
+	inode = lo->plh_inode;
 	pnfs_layoutreturn_before_put_layout_hdr(lo);
 
 	if (refcount_dec_and_lock(&lo->plh_refcount, &inode->i_lock)) {
@@ -1241,10 +1244,12 @@ retry:
 	spin_lock(&ino->i_lock);
 	lo = nfsi->layout;
 	if (!lo || !pnfs_layout_is_valid(lo) ||
-	    test_bit(NFS_LAYOUT_BULK_RECALL, &lo->plh_flags))
+	    test_bit(NFS_LAYOUT_BULK_RECALL, &lo->plh_flags)) {
+		lo = NULL;
 		goto out_noroc;
+	}
+	pnfs_get_layout_hdr(lo);
 	if (test_bit(NFS_LAYOUT_RETURN_LOCK, &lo->plh_flags)) {
-		pnfs_get_layout_hdr(lo);
 		spin_unlock(&ino->i_lock);
 		wait_on_bit(&lo->plh_flags, NFS_LAYOUT_RETURN,
 				TASK_UNINTERRUPTIBLE);
@@ -1312,10 +1317,12 @@ out_noroc:
 		struct pnfs_layoutdriver_type *ld = NFS_SERVER(ino)->pnfs_curr_ld;
 		if (ld->prepare_layoutreturn)
 			ld->prepare_layoutreturn(args);
+		pnfs_put_layout_hdr(lo);
 		return true;
 	}
 	if (layoutreturn)
 		pnfs_send_layoutreturn(lo, &stateid, iomode, true);
+	pnfs_put_layout_hdr(lo);
 	return false;
 }
 
author maintainer
#151 lore raw

PATCH 146/146 NFS: Fix unstable write completion

In reply to Greg Kroah-Hartman

4.15-stable review patch. If anyone has any objections, please let me know.

------------------

From: Trond Myklebust <[email protected]>

commit c4f24df942a181699c5bab01b8e5e82b925f77f3 upstream.

We do want to respect the FLUSH_SYNC argument to nfs_commit_inode() to ensure that all outstanding COMMIT requests to the inode in question are complete. Currently we may exit early from both nfs_commit_inode() and nfs_write_inode() even if there are COMMIT requests in flight, or unstable writes on the commit list.

In order to get the right semantics w.r.t. sync_inode(), we don't need to have nfs_commit_inode() reset the inode dirty flags when called from nfs_wb_page() and/or nfs_wb_all(). We just need to ensure that nfs_write_inode() leaves them in the right state if there are outstanding commits, or stable pages.

Fixes dc4fd9ab01ab ("nfs: don't wait on commit in nfs_commit_inode()...")
Cc [email protected] # v4.14+
---
 fs/nfs/write.c |   83 +++++++++++++++++++++++++++++----------------------------
 1 file changed, 43 insertions(+), 40 deletions(-)
fs/nfs/write.c +43 -40
@@ -1878,40 +1878,43 @@ int nfs_generic_commit_list(struct inode
 	return status;
 }
 
-int nfs_commit_inode(struct inode *inode, int how)
+static int __nfs_commit_inode(struct inode *inode, int how,
+		struct writeback_control *wbc)
 {
 	LIST_HEAD(head);
 	struct nfs_commit_info cinfo;
 	int may_wait = how & FLUSH_SYNC;
-	int error = 0;
-	int res;
+	int ret, nscan;
 
 	nfs_init_cinfo_from_inode(&cinfo, inode);
 	nfs_commit_begin(cinfo.mds);
-	res = nfs_scan_commit(inode, &head, &cinfo);
-	if (res)
-		error = nfs_generic_commit_list(inode, &head, how, &cinfo);
+	for (;;) {
+		ret = nscan = nfs_scan_commit(inode, &head, &cinfo);
+		if (ret <= 0)
+			break;
+		ret = nfs_generic_commit_list(inode, &head, how, &cinfo);
+		if (ret < 0)
+			break;
+		ret = 0;
+		if (wbc && wbc->sync_mode == WB_SYNC_NONE) {
+			if (nscan < wbc->nr_to_write)
+				wbc->nr_to_write -= nscan;
+			else
+				wbc->nr_to_write = 0;
+		}
+		if (nscan < INT_MAX)
+			break;
+		cond_resched();
+	}
 	nfs_commit_end(cinfo.mds);
-	if (res == 0)
-		return res;
-	if (error < 0)
-		goto out_error;
-	if (!may_wait)
-		goto out_mark_dirty;
-	error = wait_on_commit(cinfo.mds);
-	if (error < 0)
-		return error;
-	return res;
-out_error:
-	res = error;
-	/* Note: If we exit without ensuring that the commit is complete,
-	 * we must mark the inode as dirty. Otherwise, future calls to
-	 * sync_inode() with the WB_SYNC_ALL flag set will fail to ensure
-	 * that the data is on the disk.
-	 */
-out_mark_dirty:
-	__mark_inode_dirty(inode, I_DIRTY_DATASYNC);
-	return res;
+	if (ret || !may_wait)
+		return ret;
+	return wait_on_commit(cinfo.mds);
+}
+
+int nfs_commit_inode(struct inode *inode, int how)
+{
+	return __nfs_commit_inode(inode, how, NULL);
 }
 EXPORT_SYMBOL_GPL(nfs_commit_inode);
 
@@ -1921,11 +1924,11 @@ int nfs_write_inode(struct inode *inode,
 	int flags = FLUSH_SYNC;
 	int ret = 0;
 
-	/* no commits means nothing needs to be done */
-	if (!atomic_long_read(&nfsi->commit_info.ncommit))
-		return ret;
-
 	if (wbc->sync_mode == WB_SYNC_NONE) {
+		/* no commits means nothing needs to be done */
+		if (!atomic_long_read(&nfsi->commit_info.ncommit))
+			goto check_requests_outstanding;
+
 		/* Don't commit yet if this is a non-blocking flush and there
 		 * are a lot of outstanding writes for this mapping.
 		 */
@@ -1936,16 +1939,16 @@ int nfs_write_inode(struct inode *inode,
 		flags = 0;
 	}
 
-	ret = nfs_commit_inode(inode, flags);
-	if (ret >= 0) {
-		if (wbc->sync_mode == WB_SYNC_NONE) {
-			if (ret < wbc->nr_to_write)
-				wbc->nr_to_write -= ret;
-			else
-				wbc->nr_to_write = 0;
-		}
-		return 0;
-	}
+	ret = __nfs_commit_inode(inode, flags, wbc);
+	if (!ret) {
+		if (flags & FLUSH_SYNC)
+			return 0;
+	} else if (atomic_long_read(&nfsi->commit_info.ncommit))
+		goto out_mark_dirty;
+
+check_requests_outstanding:
+	if (!atomic_read(&nfsi->commit_info.rpcs_out))
+		return ret;
 out_mark_dirty:
 	__mark_inode_dirty(inode, I_DIRTY_DATASYNC);
 	return ret;
#152 lore raw
In reply to Greg Kroah-Hartman
stable-rc/linux-4.15.y boot: 144 boots: 8 failed, 112 passed with 21 offline, 2 untried/unknown, 1 conflict (v4.15.9-147-g478762923754)

stable-rc/linux-4.15.y boot: 144 boots: 8 failed, 112 passed with 21 offline, 2 untried/unknown, 1 conflict (v4.15.9-147-g478762923754)

Full Boot Summary: https://kernelci.org/boot/all/job/stable-rc/branch/linux-4.15.y/kernel/v4.15.9-147-g478762923754/
Full Build Summary: https://kernelci.org/build/stable-rc/branch/linux-4.15.y/kernel/v4.15.9-147-g478762923754/

Tree: stable-rc
Branch: linux-4.15.y
Git Describe: v4.15.9-147-g478762923754
Git Commit: 47876292375471e74934c42b819483362073feb2
Git URL: http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
Tested: 77 unique boards, 22 SoC families, 17 builds out of 185

Boot Regressions Detected:

arm:

    exynos_defconfig:
        exynos5800-peach-pi:
            lab-baylibre-seattle: failing since 1 day (last pass: v4.15.8-12-g212dd4bb587d - first fail: v4.15.9)

    multi_v7_defconfig:
        meson8b-odroidc1:
            lab-baylibre-seattle: new failure (last pass: v4.15.8)
        sun8i-a33-sinlinx-sina33:
            lab-free-electrons: new failure (last pass: v4.15.9)

    mvebu_v7_defconfig:
        armada-375-db:
            lab-free-electrons: new failure (last pass: v4.15.9)

arm64:

    defconfig:
        apq8016-sbc:
            lab-mhart: new failure (last pass: v4.15.9)
        meson-gxbb-p200:
            lab-baylibre-seattle: failing since 1 day (last pass: v4.15.8 - first fail: v4.15.9)
        meson-gxl-s905d-p230:
            lab-baylibre-seattle: new failure (last pass: v4.15.9)
        meson-gxl-s905x-khadas-vim:
            lab-baylibre: new failure (last pass: v4.15.9)
        meson-gxl-s905x-p212:
            lab-baylibre-seattle: new failure (last pass: v4.15.9)

Boot Failures Detected:

arm:

    mvebu_v7_defconfig
        armada-375-db: 1 failed lab

    multi_v7_defconfig
        meson8b-odroidc1: 1 failed lab
        sun8i-a33-sinlinx-sina33: 1 failed lab

arm64:

    defconfig
        apq8016-sbc: 1 failed lab
        meson-gxbb-p200: 1 failed lab
        meson-gxl-s905d-p230: 1 failed lab
        meson-gxl-s905x-khadas-vim: 1 failed lab
        meson-gxl-s905x-p212: 1 failed lab

Offline Platforms:

arm:

tegra_defconfig:
tegra124-jetson-tk1: 1 offline lab

multi_v7_defconfig:
alpine-db: 1 offline lab
am335x-boneblack: 1 offline lab
at91-sama5d4_xplained: 1 offline lab
exynos5410-odroidxu: 1 offline lab socfpga_cyclone5_de0_sockit: 1 offline lab
sun5i-r8-chip: 1 offline lab
tegra124-jetson-tk1: 1 offline lab
vf610-colibri-eval-v3: 1 offline lab

sunxi_defconfig:
sun5i-r8-chip: 1 offline lab

imx_v6_v7_defconfig:
vf610-colibri-eval-v3: 1 offline lab

sama5_defconfig:
at91-sama5d4_xplained: 1 offline lab

exynos_defconfig:
exynos5410-odroidxu: 1 offline lab

bcm2835_defconfig:
bcm2835-rpi-b: 1 offline lab

omap2plus_defconfig:
am335x-boneblack: 1 offline lab

arm64:

defconfig:
apq8016-sbc: 1 offline lab
juno-r2: 1 offline lab
meson-gxbb-odroidc2: 1 offline lab meson-gxl-s905x-khadas-vim: 1 offline lab meson-gxl-s905x-nexbox-a95x: 1 offline lab
mt7622-rfb1: 1 offline lab

Conflicting Boot Failure Detected: (These likely are not failures as other labs are reporting PASS. Needs review.)

arm:

    exynos_defconfig:
        exynos5800-peach-pi:
            lab-collabora: PASS
            lab-baylibre-seattle: FAIL

---
For more info write to <[email protected]>

#153 lore raw
In reply to Greg Kroah-Hartman
Quoted 8 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 4.15.10 release. There are 146 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu Mar 15 15:22:37 UTC 2018. Anything received after that time might be too late.

Build results:

        total: 147 pass: 147 fail: 0
Qemu test results:
        total: 141 pass: 141 fail: 0

Details are available at http://kerneltests.org/builders.

Guenter

author maintainer
#154 lore raw
Quoted 10 lines · Guenter Roeck
Quoted 8 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 4.15.10 release. There are 146 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu Mar 15 15:22:37 UTC 2018. Anything received after that time might be too late.

Quoted 6 lines

Build results:

        total: 147 pass: 147 fail: 0
Qemu test results:
        total: 141 pass: 141 fail: 0

Details are available at http://kerneltests.org/builders.

Great, thanks for testing both of these and letting me know.

greg k-h

#155 lore raw
In reply to Greg Kroah-Hartman
Quoted 309 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 4.15.10 release. There are 146 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu Mar 15 15:22:37 UTC 2018. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

        https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.15.10-rc1.gz

or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.15.y
and the diffstat can be found below.

thanks,

greg k-h

-------------
Pseudo-Shortlog of commits:

Greg Kroah-Hartman <[email protected]>

    Linux 4.15.10-rc1

Trond Myklebust <[email protected]>
NFS: Fix unstable write completion

Trond Myklebust <[email protected]>
pNFS: Prevent the layout header refcount going to zero in pnfs_roc()

Trond Myklebust <[email protected]>
NFS: Fix an incorrect type in struct nfs_direct_req

[email protected] <[email protected]>
scsi: qla2xxx: Fix memory leak in dual/target mode

Quinn Tran <[email protected]>
scsi: qla2xxx: Fix system crash in qlt_plogi_ack_unref

Giridhar Malavali <[email protected]>
scsi: qla2xxx: Remove aborting ELS IOCB call issued as part of timeout.

Giridhar Malavali <[email protected]>
scsi: qla2xxx: Defer processing of GS IOCB calls

Quinn Tran <[email protected]>
scsi: qla2xxx: Clear loop id after delete

Quinn Tran <[email protected]>
scsi: qla2xxx: Fix scan state field for fcport

Quinn Tran <[email protected]>
scsi: qla2xxx: Replace fcport alloc with qla2x00_alloc_fcport

Quinn Tran <[email protected]>
scsi: qla2xxx: Fix abort command deadlock due to spinlock

Quinn Tran <[email protected]>
scsi: qla2xxx: Fix PRLI state check

Quinn Tran <[email protected]>
scsi: qla2xxx: Fix Relogin being triggered too fast

Quinn Tran <[email protected]>
scsi: qla2xxx: Relogin to target port on a cable swap

Sawan Chandak <[email protected]>
scsi: qla2xxx: Fix NPIV host cleanup in target mode

Quinn Tran <[email protected]>
scsi: qla2xxx: Fix login state machine stuck at GPDB

Quinn Tran <[email protected]>
scsi: qla2xxx: Serialize GPNID for multiple RSCN

Quinn Tran <[email protected]>
scsi: qla2xxx: Retry switch command on time out

Quinn Tran <[email protected]>
scsi: qla2xxx: Fix re-login for Nport Handle in use

Quinn Tran <[email protected]>
scsi: qla2xxx: Skip IRQ affinity for Target QPairs

Quinn Tran <[email protected]>
scsi: qla2xxx: Move session delete to driver work queue

Quinn Tran <[email protected]>
scsi: qla2xxx: Fix gpnid error processing

Quinn Tran <[email protected]>
scsi: qla2xxx: Fix system crash for Notify ack timeout handling

Prarit Bhargava <[email protected]>
x86/xen: Calculate __max_logical_packages on PV domains

Javier Martinez Canillas <[email protected]>
tpm: only attempt to disable the LPC CLKRUN if is already enabled

Arnd Bergmann <[email protected]>
tpm: remove unused variables

Javier Martinez Canillas <[email protected]>
tpm: delete the TPM_TIS_CLK_ENABLE flag

Azhar Shaikh <[email protected]>
tpm: Keep CLKRUN enabled throughout the duration of transmit_cmd()

Azhar Shaikh <[email protected]>
tpm_tis: Move ilb_base_addr to tpm_tis_data

Eric Dumazet <[email protected]>
netfilter: use skb_to_full_sk in ip6_route_me_harder

Florian Westphal <[email protected]>
netfilter: ipv6: fix use-after-free Write in nf_nat_ipv6_manip_pkt

Florian Westphal <[email protected]>
netfilter: bridge: ebt_among: add missing match size checks

Florian Westphal <[email protected]>
netfilter: ebtables: CONFIG_COMPAT: don't trust userland offsets

Eric Dumazet <[email protected]>
netfilter: IDLETIMER: be syzkaller friendly

Paolo Abeni <[email protected]>
netfilter: nat: cope with negative port range

Paolo Abeni <[email protected]>
netfilter: x_tables: fix missing timer initialization in xt_LED

Eric Dumazet <[email protected]>
netfilter: xt_hashlimit: fix lock imbalance

Cong Wang <[email protected]>
netfilter: ipt_CLUSTERIP: fix a race condition of proc file creation

Florian Westphal <[email protected]>
netfilter: add back stackpointer size checks

Jerry Hoemann <[email protected]>
watchdog: hpwdt: Remove legacy NMI sourcing.

Arnd Bergmann <[email protected]>
watchdog: hpwdt: fix unused variable warning

Jerry Hoemann <[email protected]>
watchdog: hpwdt: Check source of NMI

Jerry Hoemann <[email protected]>
watchdog: hpwdt: SMBIOS check

Francis Deslauriers <[email protected]>
x86/kprobes: Fix kernel crash when probing .entry_trampoline code

Josh Poimboeuf <[email protected]>
objtool: Fix 32-bit build

Josh Poimboeuf <[email protected]>
objtool: Fix another switch table detection issue

Peter Zijlstra <[email protected]>
objtool, retpolines: Integrate objtool with retpoline support more closely

Peter Zijlstra <[email protected]>
objtool: Add module specific retpoline rules

Peter Zijlstra <[email protected]>
objtool: Add retpoline validation

Peter Zijlstra <[email protected]>
objtool: Use existing global variables for options

Peter Zijlstra <[email protected]>
x86/mm/sme, objtool: Annotate indirect call in sme_encrypt_execute()

Peter Zijlstra <[email protected]>
x86/boot, objtool: Annotate indirect jump in secondary_startup_64()

Peter Zijlstra <[email protected]>
x86/paravirt, objtool: Annotate indirect calls

Ingo Molnar <[email protected]>
x86/speculation: Move firmware_restrict_branch_speculation_*() from C to CPP

Peter Zijlstra <[email protected]>
x86/speculation, objtool: Annotate indirect calls/jumps for objtool

David Woodhouse <[email protected]>
x86/retpoline: Support retpoline builds with Clang

David Woodhouse <[email protected]>
x86/speculation: Use IBRS if available before calling into firmware

David Woodhouse <[email protected]>
Revert "x86/retpoline: Simplify vmexit_fill_RSB()"

Jan Beulich <[email protected]>
x86-64/realmode: Add instruction suffix

Jan Beulich <[email protected]>
x86/LDT: Avoid warning in 32-bit builds with older gcc

Jan Beulich <[email protected]>
x86/IO-APIC: Avoid warning in 32-bit builds

Jan Beulich <[email protected]>
x86/asm: Improve how GEN_*_SUFFIXED_RMWcc() specify clobbers

Jann Horn <[email protected]>
x86/mm: Remove stale comment about KMEMCHECK

Dominik Brodowski <[email protected]>
x86/entry/64: Use 'xorl' for faster register clearing

Dominik Brodowski <[email protected]>
x86/entry: Reduce the code footprint of the 'idtentry' macro

Dan Williams <[email protected]>
nospec: Include <asm/barrier.h> dependency

Dan Williams <[email protected]>
nospec: Kill array_index_nospec_mask_check()

Paul Burton <[email protected]>
MIPS: CPC: Map registers using DT in mips_cpc_default_phys_base()

Paul Burton <[email protected]>
dt-bindings: Document mti,mips-cpc binding

[email protected] <[email protected]>
scsi: qla2xxx: Fix recursion while sending terminate exchange

[email protected] <[email protected]>
scsi: qla2xxx: Fix NULL pointer crash due to probe failure

Dennis Wassenberg <[email protected]>
ALSA: hda: add dock and led support for HP ProBook 640 G2

Dennis Wassenberg <[email protected]>
ALSA: hda: add dock and led support for HP EliteBook 820 G3

Hui Wang <[email protected]>
ALSA: hda - Fix a wrong FIXUP for alc289 on Dell machines

Takashi Iwai <[email protected]>
ALSA: seq: More protection for concurrent write and ioctl races

Takashi Iwai <[email protected]>
ALSA: seq: Don't allow resizing pool in use

Dennis Wassenberg <[email protected]>
ALSA: hda/realtek - Make dock sound work on ThinkPad L570

Takashi Iwai <[email protected]>
ALSA: hda/realtek - Fix dock line-out volume on Dell Precision 7520

Benjamin Berg <[email protected]>
ALSA: hda/realtek: Limit mic boost on T480

Kailang Yang <[email protected]>
ALSA: hda/realtek - Add headset mode support for Dell laptop

Kailang Yang <[email protected]>
ALSA: hda/realtek - Add support headset mode for DELL WYSE

Konrad Rzeszutek Wilk <[email protected]>
x86/spectre_v2: Don't check microcode versions when running under hypervisors

Adrian Hunter <[email protected]>
perf tools: Fix trigger class trigger_on()

Seunghun Han <[email protected]>
x86/MCE: Serialize sysfs changes

Tony Luck <[email protected]>
x86/MCE: Save microcode revision in machine check records

Michael Lyle <[email protected]>
bcache: don't attach backing with duplicate UUID

Tang Junhui <[email protected]>
bcache: fix crashes in duplicate cache device register

Sergey Gorenko <[email protected]>
IB/mlx5: Fix incorrect size of klms in the memory region

Arnd Bergmann <[email protected]>
dm bufio: avoid false-positive Wmaybe-uninitialized warning

James Hogan <[email protected]>
kbuild: Handle builtin dtb file names containing hyphens

Christoph Hellwig <[email protected]>
Revert "nvme: create 'slaves' and 'holders' entries for hidden controllers"

Parav Pandit <[email protected]>
IB/core: Fix missing RDMA cgroups release in case of failure to register device

Ard Biesheuvel <[email protected]>
arm64: mm: fix thinko in non-global page table attribute check

David Hildenbrand <[email protected]>
KVM: s390: fix memory overwrites when not using SCA entries

Tiwei Bie <[email protected]>
virtio_ring: fix num_free handling in error case

Quoted 8 lines

Ross Zwisler <[email protected]>
loop: Fix lost writes caused by missing flag

Matthew Wilcox <[email protected]>
Documentation/sphinx: Fix Directive import error

Daniel Vacek <[email protected]>
mm/page_alloc: fix memmap_init_zone pageblock alignment

On 4.14 and 4.15, this patch breaks booting on dragonboard 410c and hikey 620 (both arm64). The fix has been proposed and tested but is not yet in mainline per https://lkml.org/lkml/2018/3/12/710

A new fix proposed by Daniel is under review,
mm/page_alloc: fix boot hang in memmap_init_zone
https://lkml.org/lkml/2018/3/13/1422

author maintainer
#156 lore raw
Quoted 6 lines · Naresh Kamboju
Quoted 2 lines · Greg Kroah-Hartman

Daniel Vacek <[email protected]>
mm/page_alloc: fix memmap_init_zone pageblock alignment

Quoted 7 lines

On 4.14 and 4.15, this patch breaks booting on dragonboard 410c and hikey 620 (both arm64). The fix has been proposed and tested but is not yet in mainline per https://lkml.org/lkml/2018/3/12/710

A new fix proposed by Daniel is under review,
mm/page_alloc: fix boot hang in memmap_init_zone
https://lkml.org/lkml/2018/3/13/1422

Yeah, I think I'm going to drop this patch now, and add it for the next round.

And please learn to trim your email context...

thanks,

greg k-h

author maintainer
#157 lore raw
In reply to Greg Kroah-Hartman
Quoted 5 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 4.15.10 release. There are 146 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Quoted 8 lines

Responses should be made by Thu Mar 15 15:22:37 UTC 2018. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

	https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.15.10-rc1.gz

or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.15.y
and the diffstat can be found below.

-rc2 is out to resolve a boot problem on some ARM boards:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.15.10-rc2.gz

#158 lore raw
Quoted 9 lines · Greg Kroah-Hartman
Quoted 8 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 4.15.10 release. There are 146 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu Mar 15 15:22:37 UTC 2018. Anything received after that time might be too late.

Quoted 8 lines
Quoted 5 lines

The whole patch series can be found in one patch at:

      https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.15.10-rc1.gz

or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.15.y
and the diffstat can be found below.

-rc2 is out to resolve a boot problem on some ARM boards:

        https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.15.10-rc2.gz

Results from Linaro’s test farm.
No regressions on arm64, arm, qemu_x86_64 and x86_64.

Summary
------------------------------------------------------------------------

kernel: 4.15.10-rc2
git repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git branch: linux-4.15.y
git commit: 2ad27e8a3cad093b4d4f5f7471ac80bdfb6bb372
git describe: v4.15.9-146-g2ad27e8a3cad
Test details: https://qa-reports.linaro.org/lkft/linux-stable-rc-4.15-oe/build/v4.15.9-146-g2ad27e8a3cad

No regressions (compared to build v4.15.9-147-g478762923754)

Boards, architectures and test suites:
-------------------------------------

dragonboard-410c - arm64
* boot - pass: 22, fail: 2
* kselftest - pass: 45, skip: 20,
* libhugetlbfs - pass: 90, skip: 1,
* ltp-cap_bounds-tests - pass: 2,
* ltp-containers-tests - pass: 64, skip: 17,
* ltp-fcntl-locktests-tests - pass: 2,
* ltp-filecaps-tests - pass: 2,
* ltp-fs-tests - pass: 61, skip: 2,
* ltp-fs_bind-tests - pass: 2,
* ltp-fs_perms_simple-tests - pass: 19,
* ltp-fsx-tests - pass: 2,
* ltp-hugetlb-tests - pass: 21, skip: 1,
* ltp-io-tests - pass: 3,
* ltp-ipc-tests - pass: 9,
* ltp-math-tests - pass: 11,
* ltp-nptl-tests - pass: 2,
* ltp-pty-tests - pass: 4,
* ltp-sched-tests - pass: 14,
* ltp-securebits-tests - pass: 4,
* ltp-syscalls-tests - pass: 1002, skip: 148,
* ltp-timers-tests - pass: 12, skip: 1,

hi6220-hikey - arm64
* boot - pass: 20,
* kselftest - pass: 48, skip: 17,
* libhugetlbfs - pass: 90, skip: 1,
* ltp-cap_bounds-tests - pass: 2,
* ltp-containers-tests - pass: 64, skip: 17,
* ltp-fcntl-locktests-tests - pass: 2,
* ltp-filecaps-tests - pass: 2,
* ltp-fs-tests - pass: 61, skip: 2,
* ltp-fs_bind-tests - pass: 2,
* ltp-fs_perms_simple-tests - pass: 19,
* ltp-fsx-tests - pass: 2,
* ltp-hugetlb-tests - pass: 21, skip: 1,
* ltp-io-tests - pass: 3,
* ltp-ipc-tests - pass: 9,
* ltp-math-tests - pass: 11,
* ltp-nptl-tests - pass: 2,
* ltp-pty-tests - pass: 4,
* ltp-sched-tests - pass: 10, skip: 4,
* ltp-securebits-tests - pass: 4,
* ltp-syscalls-tests - pass: 999, skip: 151,
* ltp-timers-tests - pass: 12, skip: 1,

juno-r2 - arm64
* boot - pass: 20,
* kselftest - pass: 48, skip: 17,
* libhugetlbfs - pass: 90, skip: 1,
* ltp-cap_bounds-tests - pass: 2,
* ltp-containers-tests - pass: 64, skip: 17,
* ltp-fcntl-locktests-tests - pass: 2,
* ltp-filecaps-tests - pass: 2,
* ltp-fs-tests - pass: 61, skip: 2,
* ltp-fs_perms_simple-tests - pass: 19,
* ltp-fsx-tests - pass: 2,
* ltp-hugetlb-tests - pass: 22,
* ltp-io-tests - pass: 3,
* ltp-ipc-tests - pass: 9,
* ltp-math-tests - pass: 11,
* ltp-nptl-tests - pass: 2,
* ltp-pty-tests - pass: 4,
* ltp-sched-tests - pass: 10, skip: 4,
* ltp-securebits-tests - pass: 4,
* ltp-syscalls-tests - pass: 1001, skip: 149,
* ltp-timers-tests - pass: 12, skip: 1,

qemu_x86_64
* boot - pass: 20,
* kselftest - pass: 61, skip: 21,
* libhugetlbfs - pass: 90, skip: 1,
* ltp-cap_bounds-tests - pass: 2,
* ltp-containers-tests - pass: 64, skip: 17,
* ltp-fcntl-locktests-tests - pass: 2,
* ltp-filecaps-tests - pass: 2,
* ltp-fs-tests - pass: 57, skip: 6,
* ltp-fs_bind-tests - pass: 2,
* ltp-fs_perms_simple-tests - pass: 19,
* ltp-fsx-tests - pass: 2,
* ltp-hugetlb-tests - pass: 22,
* ltp-io-tests - pass: 3,
* ltp-ipc-tests - pass: 9,
* ltp-math-tests - pass: 11,
* ltp-nptl-tests - pass: 2,
* ltp-pty-tests - pass: 4,
* ltp-sched-tests - pass: 13, skip: 1,
* ltp-securebits-tests - pass: 4,
* ltp-syscalls-tests - pass: 1002, skip: 148,
* ltp-timers-tests - pass: 12, skip: 1,

x15 - arm
* boot - pass: 20,
* kselftest - pass: 41, skip: 21,
* libhugetlbfs - pass: 87, skip: 1,
* ltp-cap_bounds-tests - pass: 2,
* ltp-containers-tests - pass: 63, skip: 18,
* ltp-fcntl-locktests-tests - pass: 2,
* ltp-filecaps-tests - pass: 2,
* ltp-fs-tests - pass: 61, skip: 2,
* ltp-fs_bind-tests - pass: 2,
* ltp-fs_perms_simple-tests - pass: 19,
* ltp-fsx-tests - pass: 2,
* ltp-hugetlb-tests - pass: 20, skip: 2,
* ltp-io-tests - pass: 3,
* ltp-ipc-tests - pass: 9,
* ltp-math-tests - pass: 11,
* ltp-nptl-tests - pass: 2,
* ltp-pty-tests - pass: 4,
* ltp-sched-tests - pass: 13, skip: 1,
* ltp-securebits-tests - pass: 4,
* ltp-syscalls-tests - pass: 1053, skip: 97,
* ltp-timers-tests - pass: 12, skip: 1,

x86_64
* boot - pass: 20,
* kselftest - pass: 61, skip: 19,
* libhugetlbfs - pass: 90, skip: 1,
* ltp-cap_bounds-tests - pass: 2,
* ltp-containers-tests - pass: 64, skip: 17,
* ltp-fcntl-locktests-tests - pass: 2,
* ltp-filecaps-tests - pass: 2,
* ltp-fs-tests - pass: 62, skip: 1,
* ltp-fs_bind-tests - pass: 2,
* ltp-fs_perms_simple-tests - pass: 19,
* ltp-fsx-tests - pass: 2,
* ltp-hugetlb-tests - pass: 22,
* ltp-io-tests - pass: 3,
* ltp-ipc-tests - pass: 9,
* ltp-math-tests - pass: 11,
* ltp-nptl-tests - pass: 2,
* ltp-pty-tests - pass: 4,
* ltp-sched-tests - pass: 9, skip: 5,
* ltp-securebits-tests - pass: 4,
* ltp-syscalls-tests - pass: 1031, skip: 119,
* ltp-timers-tests - pass: 12, skip: 1,

--
Linaro QA (beta)
https://qa-reports.linaro.org

Quoted 5 lines

_______________________________________________
Lkft-triage mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lkft-triage

author maintainer
#159 lore raw
Quoted 17 lines · Naresh Kamboju
Quoted 15 lines · Greg Kroah-Hartman
Quoted 13 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 4.15.10 release. There are 146 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu Mar 15 15:22:37 UTC 2018. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

      https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.15.10-rc1.gz

or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.15.y
and the diffstat can be found below.

Quoted 5 lines
Quoted 2 lines

-rc2 is out to resolve a boot problem on some ARM boards:

        https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.15.10-rc2.gz

Results from Linaro’s test farm.
No regressions on arm64, arm, qemu_x86_64 and x86_64.

Great, thanks for testing both of these and letting me know.

greg k-h