linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/8] pm80xx: Driver updates
@ 2015-07-29  6:27 Viswas.G
  2015-07-29  6:27 ` [PATCH 1/8] pm80xx: Updated link rate Viswas.G
                   ` (8 more replies)
  0 siblings, 9 replies; 31+ messages in thread
From: Viswas.G @ 2015-07-29  6:27 UTC (permalink / raw)
  To: linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan, Viswas.G

From: Viswas G <Viswas.G@pmcs.com>

This patch set contains bug fixes for pm80xx driver.
Please consider these patches for next kernel release.

Viswas G (8):
  pm80xx: Updated link rate
  pm80xx: Corrected device state changes in I_T_Nexus_Reset
  pm80xx: Update For Thermal Page Code
  pm80xx: Fix for Incorrect DMA Unmapping of SG List
  pm80xx: Remove unnecessary phy disconnect while link error
  pm80xx: Add PORT RECOVERY TIMEOUT support
  pm80xx: Handling Invalid SSP Response frame
  pm80xx: Bump pm80xx driver version to 0.1.38

 drivers/scsi/pm8001/pm8001_defs.h |    1 +
 drivers/scsi/pm8001/pm8001_hwi.c  |    4 +
 drivers/scsi/pm8001/pm8001_sas.c  |   15 ++++-
 drivers/scsi/pm8001/pm8001_sas.h  |   12 +++-
 drivers/scsi/pm8001/pm80xx_hwi.c  |  111 +++++++++++++++++++++++++++----------
 drivers/scsi/pm8001/pm80xx_hwi.h  |    5 +-
 6 files changed, 112 insertions(+), 36 deletions(-)


^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH 1/8] pm80xx: Updated link rate
  2015-07-29  6:27 [PATCH 0/8] pm80xx: Driver updates Viswas.G
@ 2015-07-29  6:27 ` Viswas.G
  2015-07-29  8:52   ` Hannes Reinecke
  2015-07-29 16:04   ` Tomas Henzl
  2015-07-29  6:27 ` [PATCH 2/8] pm80xx: Corrected device state changes in I_T_Nexus_Reset Viswas.G
                   ` (7 subsequent siblings)
  8 siblings, 2 replies; 31+ messages in thread
From: Viswas.G @ 2015-07-29  6:27 UTC (permalink / raw)
  To: linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan, Viswas.G

From: Viswas G <Viswas.G@pmcs.com>


Updated 12G linkrate to libsas.

Signed-off-by: Viswas G <Viswas.G@pmcs.com>
Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 

---
 drivers/scsi/pm8001/pm8001_defs.h |    1 +
 drivers/scsi/pm8001/pm8001_hwi.c  |    4 ++++
 2 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/drivers/scsi/pm8001/pm8001_defs.h b/drivers/scsi/pm8001/pm8001_defs.h
index 74a4bb9..d4d20cc 100644
--- a/drivers/scsi/pm8001/pm8001_defs.h
+++ b/drivers/scsi/pm8001/pm8001_defs.h
@@ -56,6 +56,7 @@ enum phy_speed {
 	PHY_SPEED_15 = 0x01,
 	PHY_SPEED_30 = 0x02,
 	PHY_SPEED_60 = 0x04,
+	PHY_SPEED_120 = 0x08,
 };
 
 enum data_direction {
diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c
index 96dcc09..39306b1 100644
--- a/drivers/scsi/pm8001/pm8001_hwi.c
+++ b/drivers/scsi/pm8001/pm8001_hwi.c
@@ -3263,6 +3263,10 @@ void pm8001_get_lrate_mode(struct pm8001_phy *phy, u8 link_rate)
 	struct sas_phy *sas_phy = phy->sas_phy.phy;
 
 	switch (link_rate) {
+	case PHY_SPEED_120:
+		phy->sas_phy.linkrate = SAS_LINK_RATE_12_0_GBPS;
+		phy->sas_phy.phy->negotiated_linkrate = SAS_LINK_RATE_12_0_GBPS;
+		break;
 	case PHY_SPEED_60:
 		phy->sas_phy.linkrate = SAS_LINK_RATE_6_0_GBPS;
 		phy->sas_phy.phy->negotiated_linkrate = SAS_LINK_RATE_6_0_GBPS;
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 2/8] pm80xx: Corrected device state changes in I_T_Nexus_Reset
  2015-07-29  6:27 [PATCH 0/8] pm80xx: Driver updates Viswas.G
  2015-07-29  6:27 ` [PATCH 1/8] pm80xx: Updated link rate Viswas.G
@ 2015-07-29  6:27 ` Viswas.G
  2015-07-29  8:53   ` Hannes Reinecke
  2015-07-29 16:10   ` Tomas Henzl
  2015-07-29  6:27 ` [PATCH 3/8] pm80xx: Update For Thermal Page Code Viswas.G
                   ` (6 subsequent siblings)
  8 siblings, 2 replies; 31+ messages in thread
From: Viswas.G @ 2015-07-29  6:27 UTC (permalink / raw)
  To: linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan, Viswas.G

From: Viswas G <Viswas.G@pmcs.com>

In Nexus reset the device state set to DS_IN_RECOVERY before doing
phy reset and internal cleanup. Once internal cleanup finishes,
the device state will set to DS_OPERATIONAL.

Signed-off-by: Viswas G <Viswas.G@pmcs.com>
Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
---
 drivers/scsi/pm8001/pm8001_sas.c |   14 +++++++++++---
 drivers/scsi/pm8001/pm8001_sas.h |    8 ++++++++
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c
index b93f289..4e6955f 100644
--- a/drivers/scsi/pm8001/pm8001_sas.c
+++ b/drivers/scsi/pm8001/pm8001_sas.c
@@ -980,13 +980,21 @@ int pm8001_I_T_nexus_reset(struct domain_device *dev)
 			rc = 0;
 			goto out;
 		}
+		pm8001_dev->setds_completion = &completion_setstate;
+		PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha,
+			pm8001_dev, DS_IN_RECOVERY);
+		wait_for_completion(&completion_setstate);
 		rc = sas_phy_reset(phy, 1);
 		msleep(2000);
+		if (rc) {
+			PM8001_EH_DBG(pm8001_ha,
+			pm8001_printk("phy reset failed for device %x\n"
+			"with rc %d\n", pm8001_dev->device_id, rc));
+		}
 		rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev ,
 			dev, 1, 0);
-		pm8001_dev->setds_completion = &completion_setstate;
-		rc = PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha,
-			pm8001_dev, 0x01);
+		PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha,
+			pm8001_dev, DS_OPERATIONAL);
 		wait_for_completion(&completion_setstate);
 	} else {
 		rc = sas_phy_reset(phy, 1);
diff --git a/drivers/scsi/pm8001/pm8001_sas.h b/drivers/scsi/pm8001/pm8001_sas.h
index 8dd8b78..c9736cc 100644
--- a/drivers/scsi/pm8001/pm8001_sas.h
+++ b/drivers/scsi/pm8001/pm8001_sas.h
@@ -569,6 +569,14 @@ struct pm8001_fw_image_header {
 #define	NCQ_READ_LOG_FLAG			0x80000000
 #define	NCQ_ABORT_ALL_FLAG			0x40000000
 #define	NCQ_2ND_RLE_FLAG			0x20000000
+
+/* Device states */
+#define DS_OPERATIONAL				0x01
+#define DS_PORT_IN_RESET			0x02
+#define DS_IN_RECOVERY				0x03
+#define DS_IN_ERROR				0x04
+#define DS_NON_OPERATIONAL			0x07
+
 /**
  * brief param structure for firmware flash update.
  */
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 3/8] pm80xx: Update For Thermal Page Code
  2015-07-29  6:27 [PATCH 0/8] pm80xx: Driver updates Viswas.G
  2015-07-29  6:27 ` [PATCH 1/8] pm80xx: Updated link rate Viswas.G
  2015-07-29  6:27 ` [PATCH 2/8] pm80xx: Corrected device state changes in I_T_Nexus_Reset Viswas.G
@ 2015-07-29  6:27 ` Viswas.G
  2015-07-29  8:54   ` Hannes Reinecke
  2015-07-29 16:11   ` Tomas Henzl
  2015-07-29  6:27 ` [PATCH 4/8] pm80xx: Fix for Incorrect DMA Unmapping of SG List Viswas.G
                   ` (5 subsequent siblings)
  8 siblings, 2 replies; 31+ messages in thread
From: Viswas.G @ 2015-07-29  6:27 UTC (permalink / raw)
  To: linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan, Viswas.G

From: Viswas G <Viswas.G@pmcs.com>

Thermal page code has been changed to 7 for the 12G controllers.

Signed-off-by: Viswas G <Viswas.G@pmcs.com>
Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
---
 drivers/scsi/pm8001/pm80xx_hwi.c |    9 ++++++++-
 drivers/scsi/pm8001/pm80xx_hwi.h |    3 ++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
index 05cce46..dced9f7 100644
--- a/drivers/scsi/pm8001/pm80xx_hwi.c
+++ b/drivers/scsi/pm8001/pm80xx_hwi.c
@@ -843,6 +843,7 @@ pm80xx_set_thermal_config(struct pm8001_hba_info *pm8001_ha)
 	int rc;
 	u32 tag;
 	u32 opc = OPC_INB_SET_CONTROLLER_CONFIG;
+	u32 page_code;
 
 	memset(&payload, 0, sizeof(struct set_ctrl_cfg_req));
 	rc = pm8001_tag_alloc(pm8001_ha, &tag);
@@ -851,8 +852,14 @@ pm80xx_set_thermal_config(struct pm8001_hba_info *pm8001_ha)
 
 	circularQ = &pm8001_ha->inbnd_q_tbl[0];
 	payload.tag = cpu_to_le32(tag);
+
+	if (IS_SPCV_12G(pm8001_ha->pdev))
+		page_code = THERMAL_PAGE_CODE_7H;
+	else
+		page_code = THERMAL_PAGE_CODE_8H;
+
 	payload.cfg_pg[0] = (THERMAL_LOG_ENABLE << 9) |
-			(THERMAL_ENABLE << 8) | THERMAL_OP_CODE;
+				(THERMAL_ENABLE << 8) | page_code;
 	payload.cfg_pg[1] = (LTEMPHIL << 24) | (RTEMPHIL << 8);
 
 	rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0);
diff --git a/drivers/scsi/pm8001/pm80xx_hwi.h b/drivers/scsi/pm8001/pm80xx_hwi.h
index 9970a38..a083cc6 100644
--- a/drivers/scsi/pm8001/pm80xx_hwi.h
+++ b/drivers/scsi/pm8001/pm80xx_hwi.h
@@ -177,7 +177,8 @@
 /* Thermal related */
 #define	THERMAL_ENABLE			0x1
 #define	THERMAL_LOG_ENABLE		0x1
-#define THERMAL_OP_CODE			0x6
+#define THERMAL_PAGE_CODE_7H		0x6
+#define THERMAL_PAGE_CODE_8H		0x7
 #define LTEMPHIL			 70
 #define RTEMPHIL			100
 
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 4/8] pm80xx: Fix for Incorrect DMA Unmapping of SG List
  2015-07-29  6:27 [PATCH 0/8] pm80xx: Driver updates Viswas.G
                   ` (2 preceding siblings ...)
  2015-07-29  6:27 ` [PATCH 3/8] pm80xx: Update For Thermal Page Code Viswas.G
@ 2015-07-29  6:27 ` Viswas.G
  2015-07-29  8:54   ` Hannes Reinecke
  2015-07-29 16:12   ` Tomas Henzl
  2015-07-29  6:27 ` [PATCH 5/8] pm80xx: Remove unnecessary phy disconnect while link error Viswas.G
                   ` (4 subsequent siblings)
  8 siblings, 2 replies; 31+ messages in thread
From: Viswas.G @ 2015-07-29  6:27 UTC (permalink / raw)
  To: linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan, Viswas.G

From: Viswas G <Viswas.G@pmcs.com>

In pm8001_ccb_task_free(), the dma unmapping is done based on
ccb->n_elem value. This should be initialized to zero in the
task_abort(). Otherwise, pm8001_ccb_task_free() will try for
dma_unmap_sg() which is invalid for task abort and can lead to
kernel crash.

Signed-off-by: Viswas G <Viswas.G@pmcs.com>
Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
---
 drivers/scsi/pm8001/pm8001_sas.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c
index 4e6955f..b1c5fb9 100644
--- a/drivers/scsi/pm8001/pm8001_sas.c
+++ b/drivers/scsi/pm8001/pm8001_sas.c
@@ -790,6 +790,7 @@ pm8001_exec_internal_task_abort(struct pm8001_hba_info *pm8001_ha,
 		ccb->device = pm8001_dev;
 		ccb->ccb_tag = ccb_tag;
 		ccb->task = task;
+		ccb->n_elem = 0;
 
 		res = PM8001_CHIP_DISP->task_abort(pm8001_ha,
 			pm8001_dev, flag, task_tag, ccb_tag);
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 5/8] pm80xx: Remove unnecessary phy disconnect while link error
  2015-07-29  6:27 [PATCH 0/8] pm80xx: Driver updates Viswas.G
                   ` (3 preceding siblings ...)
  2015-07-29  6:27 ` [PATCH 4/8] pm80xx: Fix for Incorrect DMA Unmapping of SG List Viswas.G
@ 2015-07-29  6:27 ` Viswas.G
  2015-07-29  8:56   ` Hannes Reinecke
  2015-07-30 10:08   ` Tomas Henzl
  2015-07-29  6:27 ` [PATCH 6/8] pm80xx: Add PORT RECOVERY TIMEOUT support Viswas.G
                   ` (3 subsequent siblings)
  8 siblings, 2 replies; 31+ messages in thread
From: Viswas.G @ 2015-07-29  6:27 UTC (permalink / raw)
  To: linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan, Viswas.G

From: Viswas G <Viswas.G@pmcs.com>

If the link error happens, we don't need to disconnect the phy,
which will remove the drive. Instead acknowledging the controller
and logging the error will be enough.

Signed-off-by: Viswas G <Viswas.G@pmcs.com>
Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
---
 drivers/scsi/pm8001/pm80xx_hwi.c |   12 ------------
 1 files changed, 0 insertions(+), 12 deletions(-)

diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
index dced9f7..3d8b4ae 100644
--- a/drivers/scsi/pm8001/pm80xx_hwi.c
+++ b/drivers/scsi/pm8001/pm80xx_hwi.c
@@ -3176,9 +3176,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
 			pm8001_printk("HW_EVENT_LINK_ERR_INVALID_DWORD\n"));
 		pm80xx_hw_event_ack_req(pm8001_ha, 0,
 			HW_EVENT_LINK_ERR_INVALID_DWORD, port_id, phy_id, 0, 0);
-		sas_phy_disconnected(sas_phy);
-		phy->phy_attached = 0;
-		sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
 		break;
 	case HW_EVENT_LINK_ERR_DISPARITY_ERROR:
 		PM8001_MSG_DBG(pm8001_ha,
@@ -3186,9 +3183,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
 		pm80xx_hw_event_ack_req(pm8001_ha, 0,
 			HW_EVENT_LINK_ERR_DISPARITY_ERROR,
 			port_id, phy_id, 0, 0);
-		sas_phy_disconnected(sas_phy);
-		phy->phy_attached = 0;
-		sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
 		break;
 	case HW_EVENT_LINK_ERR_CODE_VIOLATION:
 		PM8001_MSG_DBG(pm8001_ha,
@@ -3196,9 +3190,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
 		pm80xx_hw_event_ack_req(pm8001_ha, 0,
 			HW_EVENT_LINK_ERR_CODE_VIOLATION,
 			port_id, phy_id, 0, 0);
-		sas_phy_disconnected(sas_phy);
-		phy->phy_attached = 0;
-		sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
 		break;
 	case HW_EVENT_LINK_ERR_LOSS_OF_DWORD_SYNCH:
 		PM8001_MSG_DBG(pm8001_ha, pm8001_printk(
@@ -3206,9 +3197,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
 		pm80xx_hw_event_ack_req(pm8001_ha, 0,
 			HW_EVENT_LINK_ERR_LOSS_OF_DWORD_SYNCH,
 			port_id, phy_id, 0, 0);
-		sas_phy_disconnected(sas_phy);
-		phy->phy_attached = 0;
-		sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
 		break;
 	case HW_EVENT_MALFUNCTION:
 		PM8001_MSG_DBG(pm8001_ha,
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 6/8] pm80xx: Add PORT RECOVERY TIMEOUT support
  2015-07-29  6:27 [PATCH 0/8] pm80xx: Driver updates Viswas.G
                   ` (4 preceding siblings ...)
  2015-07-29  6:27 ` [PATCH 5/8] pm80xx: Remove unnecessary phy disconnect while link error Viswas.G
@ 2015-07-29  6:27 ` Viswas.G
  2015-07-29  8:57   ` Hannes Reinecke
  2015-07-30 10:08   ` Tomas Henzl
  2015-07-29  6:27 ` [PATCH 7/8] pm80xx: Handling Invalid SSP Response frame Viswas.G
                   ` (2 subsequent siblings)
  8 siblings, 2 replies; 31+ messages in thread
From: Viswas.G @ 2015-07-29  6:27 UTC (permalink / raw)
  To: linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan, Viswas.G

From: Viswas G <Viswas.G@pmcs.com>

PORT RECOVERY TIMEOUT is the maximum time between the controller's
detection of the PHY down until the receipt of the ID_Frame (from the
same remote SAS port). If the time expires before the ID_FRAME is
received, the port is considered INVALID and can be removed. The
IOP_EVENT_PORT_RECOVERY_TIMER_TMO event is reported following the
IOP_EVENT_ PHY_DOWN event when the PHY/port does not recover after
Port Recovery Time.

Signed-off-by: Viswas G <Viswas.G@pmcs.com>
Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
---
 drivers/scsi/pm8001/pm8001_sas.h |    2 +-
 drivers/scsi/pm8001/pm80xx_hwi.c |   83 ++++++++++++++++++++++++++++++-------
 2 files changed, 68 insertions(+), 17 deletions(-)

diff --git a/drivers/scsi/pm8001/pm8001_sas.h b/drivers/scsi/pm8001/pm8001_sas.h
index c9736cc..2788026 100644
--- a/drivers/scsi/pm8001/pm8001_sas.h
+++ b/drivers/scsi/pm8001/pm8001_sas.h
@@ -241,7 +241,7 @@ struct pm8001_chip_info {
 struct pm8001_port {
 	struct asd_sas_port	sas_port;
 	u8			port_attached;
-	u8			wide_port_phymap;
+	u16			wide_port_phymap;
 	u8			port_state;
 	struct list_head	list;
 };
diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
index 3d8b4ae..8817ce6 100644
--- a/drivers/scsi/pm8001/pm80xx_hwi.c
+++ b/drivers/scsi/pm8001/pm80xx_hwi.c
@@ -309,6 +309,9 @@ static void read_main_config_table(struct pm8001_hba_info *pm8001_ha)
 		pm8001_mr32(address, MAIN_INT_VECTOR_TABLE_OFFSET);
 	pm8001_ha->main_cfg_tbl.pm80xx_tbl.phy_attr_table_offset =
 		pm8001_mr32(address, MAIN_SAS_PHY_ATTR_TABLE_OFFSET);
+	/* read port recover and reset timeout */
+	pm8001_ha->main_cfg_tbl.pm80xx_tbl.port_recovery_timer =
+		pm8001_mr32(address, MAIN_PORT_RECOVERY_TIMER);
 }
 
 /**
@@ -585,6 +588,12 @@ static void update_main_config_table(struct pm8001_hba_info *pm8001_ha)
 		pm8001_ha->main_cfg_tbl.pm80xx_tbl.port_recovery_timer);
 	pm8001_mw32(address, MAIN_INT_REASSERTION_DELAY,
 		pm8001_ha->main_cfg_tbl.pm80xx_tbl.interrupt_reassertion_delay);
+
+	pm8001_ha->main_cfg_tbl.pm80xx_tbl.port_recovery_timer &= 0xffff0000;
+	pm8001_ha->main_cfg_tbl.pm80xx_tbl.port_recovery_timer |=
+							PORT_RECOVERY_TIMEOUT;
+	pm8001_mw32(address, MAIN_PORT_RECOVERY_TIMER,
+			pm8001_ha->main_cfg_tbl.pm80xx_tbl.port_recovery_timer);
 }
 
 /**
@@ -2836,6 +2845,32 @@ static void pm80xx_hw_event_ack_req(struct pm8001_hba_info *pm8001_ha,
 static int pm80xx_chip_phy_ctl_req(struct pm8001_hba_info *pm8001_ha,
 	u32 phyId, u32 phy_op);
 
+static void hw_event_port_recover(struct pm8001_hba_info *pm8001_ha,
+					void *piomb)
+{
+	struct hw_event_resp *pPayload = (struct hw_event_resp *)(piomb + 4);
+	u32 phyid_npip_portstate = le32_to_cpu(pPayload->phyid_npip_portstate);
+	u8 phy_id = (u8)((phyid_npip_portstate & 0xFF0000) >> 16);
+	u32 lr_status_evt_portid =
+		le32_to_cpu(pPayload->lr_status_evt_portid);
+	u8 deviceType = pPayload->sas_identify.dev_type;
+	u8 link_rate = (u8)((lr_status_evt_portid & 0xF0000000) >> 28);
+	struct pm8001_phy *phy = &pm8001_ha->phy[phy_id];
+	u8 port_id = (u8)(lr_status_evt_portid & 0x000000FF);
+	struct pm8001_port *port = &pm8001_ha->port[port_id];
+
+	if (deviceType == SAS_END_DEVICE) {
+		pm80xx_chip_phy_ctl_req(pm8001_ha, phy_id,
+					PHY_NOTIFY_ENABLE_SPINUP);
+	}
+
+	port->wide_port_phymap |= (1U << phy_id);
+	pm8001_get_lrate_mode(phy, link_rate);
+	phy->sas_phy.oob_mode = SAS_OOB_MODE;
+	phy->phy_state = PHY_STATE_LINK_UP_SPCV;
+	phy->phy_attached = 1;
+}
+
 /**
  * hw_event_sas_phy_up -FW tells me a SAS phy up event.
  * @pm8001_ha: our hba card information
@@ -2863,6 +2898,7 @@ hw_event_sas_phy_up(struct pm8001_hba_info *pm8001_ha, void *piomb)
 	unsigned long flags;
 	u8 deviceType = pPayload->sas_identify.dev_type;
 	port->port_state = portstate;
+	port->wide_port_phymap |= (1U << phy_id);
 	phy->phy_state = PHY_STATE_LINK_UP_SPCV;
 	PM8001_MSG_DBG(pm8001_ha, pm8001_printk(
 		"portid:%d; phyid:%d; linkrate:%d; "
@@ -2988,7 +3024,6 @@ hw_event_phy_down(struct pm8001_hba_info *pm8001_ha, void *piomb)
 	struct pm8001_port *port = &pm8001_ha->port[port_id];
 	struct pm8001_phy *phy = &pm8001_ha->phy[phy_id];
 	port->port_state = portstate;
-	phy->phy_type = 0;
 	phy->identify.device_type = 0;
 	phy->phy_attached = 0;
 	memset(&phy->dev_sas_addr, 0, SAS_ADDR_SIZE);
@@ -3000,9 +3035,13 @@ hw_event_phy_down(struct pm8001_hba_info *pm8001_ha, void *piomb)
 			pm8001_printk(" PortInvalid portID %d\n", port_id));
 		PM8001_MSG_DBG(pm8001_ha,
 			pm8001_printk(" Last phy Down and port invalid\n"));
-		port->port_attached = 0;
-		pm80xx_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_PHY_DOWN,
-			port_id, phy_id, 0, 0);
+		if (phy->phy_type & PORT_TYPE_SATA) {
+			phy->phy_type = 0;
+			port->port_attached = 0;
+			pm80xx_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_PHY_DOWN,
+					port_id, phy_id, 0, 0);
+		}
+		sas_phy_disconnected(&phy->sas_phy);
 		break;
 	case PORT_IN_RESET:
 		PM8001_MSG_DBG(pm8001_ha,
@@ -3010,22 +3049,26 @@ hw_event_phy_down(struct pm8001_hba_info *pm8001_ha, void *piomb)
 		break;
 	case PORT_NOT_ESTABLISHED:
 		PM8001_MSG_DBG(pm8001_ha,
-			pm8001_printk(" phy Down and PORT_NOT_ESTABLISHED\n"));
+			pm8001_printk(" Phy Down and PORT_NOT_ESTABLISHED\n"));
 		port->port_attached = 0;
 		break;
 	case PORT_LOSTCOMM:
 		PM8001_MSG_DBG(pm8001_ha,
-			pm8001_printk(" phy Down and PORT_LOSTCOMM\n"));
+			pm8001_printk(" Phy Down and PORT_LOSTCOMM\n"));
 		PM8001_MSG_DBG(pm8001_ha,
 			pm8001_printk(" Last phy Down and port invalid\n"));
-		port->port_attached = 0;
-		pm80xx_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_PHY_DOWN,
-			port_id, phy_id, 0, 0);
+		if (phy->phy_type & PORT_TYPE_SATA) {
+			port->port_attached = 0;
+			phy->phy_type = 0;
+			pm80xx_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_PHY_DOWN,
+					port_id, phy_id, 0, 0);
+		}
+		sas_phy_disconnected(&phy->sas_phy);
 		break;
 	default:
 		port->port_attached = 0;
 		PM8001_MSG_DBG(pm8001_ha,
-			pm8001_printk(" phy Down and(default) = 0x%x\n",
+			pm8001_printk(" Phy Down and(default) = 0x%x\n",
 			portstate));
 		break;
 
@@ -3091,7 +3134,7 @@ static int mpi_thermal_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
  */
 static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
 {
-	unsigned long flags;
+	unsigned long flags, i;
 	struct hw_event_resp *pPayload =
 		(struct hw_event_resp *)(piomb + 4);
 	u32 lr_status_evt_portid =
@@ -3104,9 +3147,9 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
 		(u16)((lr_status_evt_portid & 0x00FFFF00) >> 8);
 	u8 status =
 		(u8)((lr_status_evt_portid & 0x0F000000) >> 24);
-
 	struct sas_ha_struct *sas_ha = pm8001_ha->sas;
 	struct pm8001_phy *phy = &pm8001_ha->phy[phy_id];
+	struct pm8001_port *port = &pm8001_ha->port[port_id];
 	struct asd_sas_phy *sas_phy = sas_ha->sas_phy[phy_id];
 	PM8001_MSG_DBG(pm8001_ha,
 		pm8001_printk("portid:%d phyid:%d event:0x%x status:0x%x\n",
@@ -3132,7 +3175,9 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
 	case HW_EVENT_PHY_DOWN:
 		PM8001_MSG_DBG(pm8001_ha,
 			pm8001_printk("HW_EVENT_PHY_DOWN\n"));
-		sas_ha->notify_phy_event(&phy->sas_phy, PHYE_LOSS_OF_SIGNAL);
+		if (phy->phy_type & PORT_TYPE_SATA)
+			sas_ha->notify_phy_event(&phy->sas_phy,
+				PHYE_LOSS_OF_SIGNAL);
 		phy->phy_attached = 0;
 		phy->phy_state = 0;
 		hw_event_phy_down(pm8001_ha, piomb);
@@ -3252,13 +3297,19 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
 		pm80xx_hw_event_ack_req(pm8001_ha, 0,
 			HW_EVENT_PORT_RECOVERY_TIMER_TMO,
 			port_id, phy_id, 0, 0);
-		sas_phy_disconnected(sas_phy);
-		phy->phy_attached = 0;
-		sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
+		for (i = 0; i < pm8001_ha->chip->n_phy; i++) {
+			if (port->wide_port_phymap & (1 << i)) {
+				phy = &pm8001_ha->phy[i];
+				sas_ha->notify_phy_event(&phy->sas_phy,
+						PHYE_LOSS_OF_SIGNAL);
+				port->wide_port_phymap &= ~(1 << i);
+			}
+		}
 		break;
 	case HW_EVENT_PORT_RECOVER:
 		PM8001_MSG_DBG(pm8001_ha,
 			pm8001_printk("HW_EVENT_PORT_RECOVER\n"));
+		hw_event_port_recover(pm8001_ha, piomb);
 		break;
 	case HW_EVENT_PORT_RESET_COMPLETE:
 		PM8001_MSG_DBG(pm8001_ha,
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 7/8] pm80xx: Handling Invalid SSP Response frame
  2015-07-29  6:27 [PATCH 0/8] pm80xx: Driver updates Viswas.G
                   ` (5 preceding siblings ...)
  2015-07-29  6:27 ` [PATCH 6/8] pm80xx: Add PORT RECOVERY TIMEOUT support Viswas.G
@ 2015-07-29  6:27 ` Viswas.G
  2015-07-29  8:58   ` Hannes Reinecke
                     ` (2 more replies)
  2015-07-29  6:27 ` [PATCH 8/8] pm80xx: Bump pm80xx driver version to 0.1.38 Viswas.G
  2015-07-29  9:10 ` [PATCH 0/8] pm80xx: Driver updates Jack Wang
  8 siblings, 3 replies; 31+ messages in thread
From: Viswas.G @ 2015-07-29  6:27 UTC (permalink / raw)
  To: linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan, Viswas.G

From: Viswas G <Viswas.G@pmcs.com>

The request has to be retried incase if the length of the SSP
Response IU is invalid.

Signed-off-by: Viswas G <Viswas.G@pmcs.com>
Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
---
 drivers/scsi/pm8001/pm80xx_hwi.c |    7 +++++++
 drivers/scsi/pm8001/pm80xx_hwi.h |    2 +-
 2 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
index 8817ce6..0e1628f 100644
--- a/drivers/scsi/pm8001/pm80xx_hwi.c
+++ b/drivers/scsi/pm8001/pm80xx_hwi.c
@@ -1609,6 +1609,13 @@ mpi_ssp_completion(struct pm8001_hba_info *pm8001_ha , void *piomb)
 		ts->stat = SAS_OPEN_REJECT;
 		ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
 		break;
+	case IO_XFER_ERROR_INVALID_SSP_RSP_FRAME:
+		PM8001_IO_DBG(pm8001_ha,
+			pm8001_printk("IO_XFER_ERROR_INVALID_SSP_RSP_FRAME\n"));
+		ts->resp = SAS_TASK_COMPLETE;
+		ts->stat = SAS_OPEN_REJECT;
+		ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
+		break;
 	case IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED:
 		PM8001_IO_DBG(pm8001_ha,
 		pm8001_printk("IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED\n"));
diff --git a/drivers/scsi/pm8001/pm80xx_hwi.h b/drivers/scsi/pm8001/pm80xx_hwi.h
index a083cc6..7a443ba 100644
--- a/drivers/scsi/pm8001/pm80xx_hwi.h
+++ b/drivers/scsi/pm8001/pm80xx_hwi.h
@@ -1175,7 +1175,7 @@ typedef struct SASProtocolTimerConfig SASProtocolTimerConfig_t;
 #define IO_XFER_ERROR_INTERNAL_CRC_ERROR	0x54
 #define MPI_IO_RQE_BUSY_FULL			0x55
 #define IO_XFER_ERR_EOB_DATA_OVERRUN		0x56
-#define IO_XFR_ERROR_INVALID_SSP_RSP_FRAME	0x57
+#define IO_XFER_ERROR_INVALID_SSP_RSP_FRAME	0x57
 #define IO_OPEN_CNX_ERROR_OPEN_PREEMPTED	0x58
 
 #define MPI_ERR_IO_RESOURCE_UNAVAILABLE		0x1004
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 8/8] pm80xx: Bump pm80xx driver version to 0.1.38
  2015-07-29  6:27 [PATCH 0/8] pm80xx: Driver updates Viswas.G
                   ` (6 preceding siblings ...)
  2015-07-29  6:27 ` [PATCH 7/8] pm80xx: Handling Invalid SSP Response frame Viswas.G
@ 2015-07-29  6:27 ` Viswas.G
  2015-07-29  8:58   ` Hannes Reinecke
  2015-07-30 10:10   ` Tomas Henzl
  2015-07-29  9:10 ` [PATCH 0/8] pm80xx: Driver updates Jack Wang
  8 siblings, 2 replies; 31+ messages in thread
From: Viswas.G @ 2015-07-29  6:27 UTC (permalink / raw)
  To: linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan, Viswas.G

From: Viswas G <Viswas.G@pmcs.com>

Bump pm80xx driver version to 0.1.38.

Signed-off-by: Viswas G <Viswas.G@pmcs.com>
Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
---
 drivers/scsi/pm8001/pm8001_sas.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/pm8001/pm8001_sas.h b/drivers/scsi/pm8001/pm8001_sas.h
index 2788026..e2e97db 100644
--- a/drivers/scsi/pm8001/pm8001_sas.h
+++ b/drivers/scsi/pm8001/pm8001_sas.h
@@ -58,7 +58,7 @@
 #include "pm8001_defs.h"
 
 #define DRV_NAME		"pm80xx"
-#define DRV_VERSION		"0.1.37"
+#define DRV_VERSION		"0.1.38"
 #define PM8001_FAIL_LOGGING	0x01 /* Error message logging */
 #define PM8001_INIT_LOGGING	0x02 /* driver init logging */
 #define PM8001_DISC_LOGGING	0x04 /* discovery layer logging */
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* Re: [PATCH 1/8] pm80xx: Updated link rate
  2015-07-29  6:27 ` [PATCH 1/8] pm80xx: Updated link rate Viswas.G
@ 2015-07-29  8:52   ` Hannes Reinecke
  2015-07-29 16:04   ` Tomas Henzl
  1 sibling, 0 replies; 31+ messages in thread
From: Hannes Reinecke @ 2015-07-29  8:52 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan

On 07/29/2015 08:27 AM, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> 
> Updated 12G linkrate to libsas.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
> 
Reviewed-by: Hannes Reinecke <hare@suse.com>

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		               zSeries & Storage
hare@suse.de			               +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 2/8] pm80xx: Corrected device state changes in I_T_Nexus_Reset
  2015-07-29  6:27 ` [PATCH 2/8] pm80xx: Corrected device state changes in I_T_Nexus_Reset Viswas.G
@ 2015-07-29  8:53   ` Hannes Reinecke
  2015-07-29 16:10   ` Tomas Henzl
  1 sibling, 0 replies; 31+ messages in thread
From: Hannes Reinecke @ 2015-07-29  8:53 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan

On 07/29/2015 08:27 AM, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> In Nexus reset the device state set to DS_IN_RECOVERY before doing
> phy reset and internal cleanup. Once internal cleanup finishes,
> the device state will set to DS_OPERATIONAL.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
> ---
Reviewed-by: Hannes Reinecke <hare@suse.com>

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		               zSeries & Storage
hare@suse.de			               +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 3/8] pm80xx: Update For Thermal Page Code
  2015-07-29  6:27 ` [PATCH 3/8] pm80xx: Update For Thermal Page Code Viswas.G
@ 2015-07-29  8:54   ` Hannes Reinecke
  2015-07-29 16:11   ` Tomas Henzl
  1 sibling, 0 replies; 31+ messages in thread
From: Hannes Reinecke @ 2015-07-29  8:54 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan

On 07/29/2015 08:27 AM, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> Thermal page code has been changed to 7 for the 12G controllers.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
> ---
Reviewed-by: Hannes Reinecke <hare@suse.com>

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		               zSeries & Storage
hare@suse.de			               +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 4/8] pm80xx: Fix for Incorrect DMA Unmapping of SG List
  2015-07-29  6:27 ` [PATCH 4/8] pm80xx: Fix for Incorrect DMA Unmapping of SG List Viswas.G
@ 2015-07-29  8:54   ` Hannes Reinecke
  2015-07-29 16:12   ` Tomas Henzl
  1 sibling, 0 replies; 31+ messages in thread
From: Hannes Reinecke @ 2015-07-29  8:54 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan

On 07/29/2015 08:27 AM, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> In pm8001_ccb_task_free(), the dma unmapping is done based on
> ccb->n_elem value. This should be initialized to zero in the
> task_abort(). Otherwise, pm8001_ccb_task_free() will try for
> dma_unmap_sg() which is invalid for task abort and can lead to
> kernel crash.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
> ---
>  drivers/scsi/pm8001/pm8001_sas.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c
> index 4e6955f..b1c5fb9 100644
> --- a/drivers/scsi/pm8001/pm8001_sas.c
> +++ b/drivers/scsi/pm8001/pm8001_sas.c
> @@ -790,6 +790,7 @@ pm8001_exec_internal_task_abort(struct pm8001_hba_info *pm8001_ha,
>  		ccb->device = pm8001_dev;
>  		ccb->ccb_tag = ccb_tag;
>  		ccb->task = task;
> +		ccb->n_elem = 0;
>  
>  		res = PM8001_CHIP_DISP->task_abort(pm8001_ha,
>  			pm8001_dev, flag, task_tag, ccb_tag);
> 
Reviewed-by: Hannes Reinecke <hare@suse.com>

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		               zSeries & Storage
hare@suse.de			               +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 5/8] pm80xx: Remove unnecessary phy disconnect while link error
  2015-07-29  6:27 ` [PATCH 5/8] pm80xx: Remove unnecessary phy disconnect while link error Viswas.G
@ 2015-07-29  8:56   ` Hannes Reinecke
  2015-07-29  9:20     ` Viswas G
  2015-07-30 10:08   ` Tomas Henzl
  1 sibling, 1 reply; 31+ messages in thread
From: Hannes Reinecke @ 2015-07-29  8:56 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan

On 07/29/2015 08:27 AM, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> If the link error happens, we don't need to disconnect the phy,
> which will remove the drive. Instead acknowledging the controller
> and logging the error will be enough.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
> ---
>  drivers/scsi/pm8001/pm80xx_hwi.c |   12 ------------
>  1 files changed, 0 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
> index dced9f7..3d8b4ae 100644
> --- a/drivers/scsi/pm8001/pm80xx_hwi.c
> +++ b/drivers/scsi/pm8001/pm80xx_hwi.c
> @@ -3176,9 +3176,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
>  			pm8001_printk("HW_EVENT_LINK_ERR_INVALID_DWORD\n"));
>  		pm80xx_hw_event_ack_req(pm8001_ha, 0,
>  			HW_EVENT_LINK_ERR_INVALID_DWORD, port_id, phy_id, 0, 0);
> -		sas_phy_disconnected(sas_phy);
> -		phy->phy_attached = 0;
> -		sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
>  		break;
>  	case HW_EVENT_LINK_ERR_DISPARITY_ERROR:
>  		PM8001_MSG_DBG(pm8001_ha,
> @@ -3186,9 +3183,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
>  		pm80xx_hw_event_ack_req(pm8001_ha, 0,
>  			HW_EVENT_LINK_ERR_DISPARITY_ERROR,
>  			port_id, phy_id, 0, 0);
> -		sas_phy_disconnected(sas_phy);
> -		phy->phy_attached = 0;
> -		sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
>  		break;
>  	case HW_EVENT_LINK_ERR_CODE_VIOLATION:
>  		PM8001_MSG_DBG(pm8001_ha,
> @@ -3196,9 +3190,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
>  		pm80xx_hw_event_ack_req(pm8001_ha, 0,
>  			HW_EVENT_LINK_ERR_CODE_VIOLATION,
>  			port_id, phy_id, 0, 0);
> -		sas_phy_disconnected(sas_phy);
> -		phy->phy_attached = 0;
> -		sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
>  		break;
>  	case HW_EVENT_LINK_ERR_LOSS_OF_DWORD_SYNCH:
>  		PM8001_MSG_DBG(pm8001_ha, pm8001_printk(
> @@ -3206,9 +3197,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
>  		pm80xx_hw_event_ack_req(pm8001_ha, 0,
>  			HW_EVENT_LINK_ERR_LOSS_OF_DWORD_SYNCH,
>  			port_id, phy_id, 0, 0);
> -		sas_phy_disconnected(sas_phy);
> -		phy->phy_attached = 0;
> -		sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
>  		break;
>  	case HW_EVENT_MALFUNCTION:
>  		PM8001_MSG_DBG(pm8001_ha,
> 
So what happens with the port, then?
Will you be getting another event when the port finally disconnects?
If not, how to you remove the port after a link failure?

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		               zSeries & Storage
hare@suse.de			               +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 6/8] pm80xx: Add PORT RECOVERY TIMEOUT support
  2015-07-29  6:27 ` [PATCH 6/8] pm80xx: Add PORT RECOVERY TIMEOUT support Viswas.G
@ 2015-07-29  8:57   ` Hannes Reinecke
  2015-07-30 10:08   ` Tomas Henzl
  1 sibling, 0 replies; 31+ messages in thread
From: Hannes Reinecke @ 2015-07-29  8:57 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan

On 07/29/2015 08:27 AM, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> PORT RECOVERY TIMEOUT is the maximum time between the controller's
> detection of the PHY down until the receipt of the ID_Frame (from the
> same remote SAS port). If the time expires before the ID_FRAME is
> received, the port is considered INVALID and can be removed. The
> IOP_EVENT_PORT_RECOVERY_TIMER_TMO event is reported following the
> IOP_EVENT_ PHY_DOWN event when the PHY/port does not recover after
> Port Recovery Time.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
> ---
Ah. Here is the link down handling.
Maybe you should indicate this in the previous patch.

Reviewed-by: Hannes Reinecke <hare@suse.com>

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		               zSeries & Storage
hare@suse.de			               +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 7/8] pm80xx: Handling Invalid SSP Response frame
  2015-07-29  6:27 ` [PATCH 7/8] pm80xx: Handling Invalid SSP Response frame Viswas.G
@ 2015-07-29  8:58   ` Hannes Reinecke
  2015-07-30 10:09   ` Tomas Henzl
  2015-07-30 10:09   ` Tomas Henzl
  2 siblings, 0 replies; 31+ messages in thread
From: Hannes Reinecke @ 2015-07-29  8:58 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan

On 07/29/2015 08:27 AM, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> The request has to be retried incase if the length of the SSP
> Response IU is invalid.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
> ---
Reviewed-by: Hannes Reinecke <hare@suse.com>

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		               zSeries & Storage
hare@suse.de			               +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 8/8] pm80xx: Bump pm80xx driver version to 0.1.38
  2015-07-29  6:27 ` [PATCH 8/8] pm80xx: Bump pm80xx driver version to 0.1.38 Viswas.G
@ 2015-07-29  8:58   ` Hannes Reinecke
  2015-07-30 10:10   ` Tomas Henzl
  1 sibling, 0 replies; 31+ messages in thread
From: Hannes Reinecke @ 2015-07-29  8:58 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Tomas Henzl, Suresh.Thiagarajan

On 07/29/2015 08:27 AM, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> Bump pm80xx driver version to 0.1.38.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
> ---
>  drivers/scsi/pm8001/pm8001_sas.h |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/scsi/pm8001/pm8001_sas.h b/drivers/scsi/pm8001/pm8001_sas.h
> index 2788026..e2e97db 100644
> --- a/drivers/scsi/pm8001/pm8001_sas.h
> +++ b/drivers/scsi/pm8001/pm8001_sas.h
> @@ -58,7 +58,7 @@
>  #include "pm8001_defs.h"
>  
>  #define DRV_NAME		"pm80xx"
> -#define DRV_VERSION		"0.1.37"
> +#define DRV_VERSION		"0.1.38"
>  #define PM8001_FAIL_LOGGING	0x01 /* Error message logging */
>  #define PM8001_INIT_LOGGING	0x02 /* driver init logging */
>  #define PM8001_DISC_LOGGING	0x04 /* discovery layer logging */
> 
Reviewed-by: Hannes Reinecke <hare@suse.com>

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		               zSeries & Storage
hare@suse.de			               +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 0/8] pm80xx: Driver updates
  2015-07-29  6:27 [PATCH 0/8] pm80xx: Driver updates Viswas.G
                   ` (7 preceding siblings ...)
  2015-07-29  6:27 ` [PATCH 8/8] pm80xx: Bump pm80xx driver version to 0.1.38 Viswas.G
@ 2015-07-29  9:10 ` Jack Wang
  2015-07-29  9:47   ` Suresh Thiagarajan
  8 siblings, 1 reply; 31+ messages in thread
From: Jack Wang @ 2015-07-29  9:10 UTC (permalink / raw)
  To: Viswas G
  Cc: linux-scsi@vger.kernel.org, James Bottomley, Tomas Henzl,
	Suresh Thiagarajan

2015-07-29 8:27 GMT+02:00  <Viswas.G@pmcs.com>:
> From: Viswas G <Viswas.G@pmcs.com>
>
> This patch set contains bug fixes for pm80xx driver.
> Please consider these patches for next kernel release.
>
> Viswas G (8):
>   pm80xx: Updated link rate
>   pm80xx: Corrected device state changes in I_T_Nexus_Reset
>   pm80xx: Update For Thermal Page Code
>   pm80xx: Fix for Incorrect DMA Unmapping of SG List
>   pm80xx: Remove unnecessary phy disconnect while link error
>   pm80xx: Add PORT RECOVERY TIMEOUT support
>   pm80xx: Handling Invalid SSP Response frame
>   pm80xx: Bump pm80xx driver version to 0.1.38
>
>  drivers/scsi/pm8001/pm8001_defs.h |    1 +
>  drivers/scsi/pm8001/pm8001_hwi.c  |    4 +
>  drivers/scsi/pm8001/pm8001_sas.c  |   15 ++++-
>  drivers/scsi/pm8001/pm8001_sas.h  |   12 +++-
>  drivers/scsi/pm8001/pm80xx_hwi.c  |  111 +++++++++++++++++++++++++++----------
>  drivers/scsi/pm8001/pm80xx_hwi.h  |    5 +-
>  6 files changed, 112 insertions(+), 36 deletions(-)
>
For the whole patchset:

Reviewed-by: Jack Wang <jinpu.wang@profitbricks.com>

PS: company policy requests to use the email address of the company,
please cc me to above address next time, I will send a patch to update
my email
in MAINTAINERS file.

Thanks
Jack

^ permalink raw reply	[flat|nested] 31+ messages in thread

* RE: [PATCH 5/8] pm80xx: Remove unnecessary phy disconnect while link error
  2015-07-29  8:56   ` Hannes Reinecke
@ 2015-07-29  9:20     ` Viswas G
  2015-07-29  9:21       ` Hannes Reinecke
  0 siblings, 1 reply; 31+ messages in thread
From: Viswas G @ 2015-07-29  9:20 UTC (permalink / raw)
  To: Hannes Reinecke, linux-scsi@vger.kernel.org
  Cc: xjtuwjp@gmail.com, JBottomley@parallels.com, Tomas Henzl,
	Suresh Thiagarajan


On Wed, Jul 29, 2015 at 2:26 PM, Hannes Reinecke <hare@suse.de> wrote:
> On 07/29/2015 08:27 AM, Viswas.G@pmcs.com wrote:
>> From: Viswas G <Viswas.G@pmcs.com>
>>
>> If the link error happens, we don't need to disconnect the phy,
>> which will remove the drive. Instead acknowledging the controller
>> and logging the error will be enough.
>>
>> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
>> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com>
>> ---
>>  drivers/scsi/pm8001/pm80xx_hwi.c |   12 ------------
>>  1 files changed, 0 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
>> index dced9f7..3d8b4ae 100644
>> --- a/drivers/scsi/pm8001/pm80xx_hwi.c
>> +++ b/drivers/scsi/pm8001/pm80xx_hwi.c
>> @@ -3176,9 +3176,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
>>                       pm8001_printk("HW_EVENT_LINK_ERR_INVALID_DWORD\n"));
>>               pm80xx_hw_event_ack_req(pm8001_ha, 0,
>>                       HW_EVENT_LINK_ERR_INVALID_DWORD, port_id, phy_id, 0, 0);
>> -             sas_phy_disconnected(sas_phy);
>> -             phy->phy_attached = 0;
>> -             sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
>>               break;
>>       case HW_EVENT_LINK_ERR_DISPARITY_ERROR:
>>               PM8001_MSG_DBG(pm8001_ha,
>> @@ -3186,9 +3183,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
>>               pm80xx_hw_event_ack_req(pm8001_ha, 0,
>>                       HW_EVENT_LINK_ERR_DISPARITY_ERROR,
>>                       port_id, phy_id, 0, 0);
>> -             sas_phy_disconnected(sas_phy);
>> -             phy->phy_attached = 0;
>> -             sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
>>               break;
>>       case HW_EVENT_LINK_ERR_CODE_VIOLATION:
>>               PM8001_MSG_DBG(pm8001_ha,
>> @@ -3196,9 +3190,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
>>               pm80xx_hw_event_ack_req(pm8001_ha, 0,
>>                       HW_EVENT_LINK_ERR_CODE_VIOLATION,
>>                       port_id, phy_id, 0, 0);
>> -             sas_phy_disconnected(sas_phy);
>> -             phy->phy_attached = 0;
>> -             sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
>>               break;
>>       case HW_EVENT_LINK_ERR_LOSS_OF_DWORD_SYNCH:
>>               PM8001_MSG_DBG(pm8001_ha, pm8001_printk(
>> @@ -3206,9 +3197,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
>>               pm80xx_hw_event_ack_req(pm8001_ha, 0,
>>                       HW_EVENT_LINK_ERR_LOSS_OF_DWORD_SYNCH,
>>                       port_id, phy_id, 0, 0);
>> -             sas_phy_disconnected(sas_phy);
>> -             phy->phy_attached = 0;
>> -             sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
>>               break;
>>       case HW_EVENT_MALFUNCTION:
>>               PM8001_MSG_DBG(pm8001_ha,
>>
> So what happens with the port, then?
> Will you be getting another event when the port finally disconnects?
> If not, how to you remove the port after a link failure?
>

When the Phy disconnects, we will be getting the PHY DOWN events for 
the phys in that port and we will remove that port. 

> Cheers,
>
> Hannes
> --
> Dr. Hannes Reinecke                            zSeries & Storage
> hare@suse.de                                   +49 911 74053 688
> SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
> GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
> HRB 21284 (AG Nürnberg)
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 5/8] pm80xx: Remove unnecessary phy disconnect while link error
  2015-07-29  9:20     ` Viswas G
@ 2015-07-29  9:21       ` Hannes Reinecke
  0 siblings, 0 replies; 31+ messages in thread
From: Hannes Reinecke @ 2015-07-29  9:21 UTC (permalink / raw)
  To: Viswas G, linux-scsi@vger.kernel.org
  Cc: xjtuwjp@gmail.com, JBottomley@parallels.com, Tomas Henzl,
	Suresh Thiagarajan

On 07/29/2015 11:20 AM, Viswas G wrote:
> 
> On Wed, Jul 29, 2015 at 2:26 PM, Hannes Reinecke <hare@suse.de> wrote:
>> On 07/29/2015 08:27 AM, Viswas.G@pmcs.com wrote:
>>> From: Viswas G <Viswas.G@pmcs.com>
>>>
>>> If the link error happens, we don't need to disconnect the phy,
>>> which will remove the drive. Instead acknowledging the controller
>>> and logging the error will be enough.
>>>
>>> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
>>> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com>
>>> ---
>>>  drivers/scsi/pm8001/pm80xx_hwi.c |   12 ------------
>>>  1 files changed, 0 insertions(+), 12 deletions(-)
>>>
>>> diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
>>> index dced9f7..3d8b4ae 100644
>>> --- a/drivers/scsi/pm8001/pm80xx_hwi.c
>>> +++ b/drivers/scsi/pm8001/pm80xx_hwi.c
>>> @@ -3176,9 +3176,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
>>>                       pm8001_printk("HW_EVENT_LINK_ERR_INVALID_DWORD\n"));
>>>               pm80xx_hw_event_ack_req(pm8001_ha, 0,
>>>                       HW_EVENT_LINK_ERR_INVALID_DWORD, port_id, phy_id, 0, 0);
>>> -             sas_phy_disconnected(sas_phy);
>>> -             phy->phy_attached = 0;
>>> -             sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
>>>               break;
>>>       case HW_EVENT_LINK_ERR_DISPARITY_ERROR:
>>>               PM8001_MSG_DBG(pm8001_ha,
>>> @@ -3186,9 +3183,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
>>>               pm80xx_hw_event_ack_req(pm8001_ha, 0,
>>>                       HW_EVENT_LINK_ERR_DISPARITY_ERROR,
>>>                       port_id, phy_id, 0, 0);
>>> -             sas_phy_disconnected(sas_phy);
>>> -             phy->phy_attached = 0;
>>> -             sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
>>>               break;
>>>       case HW_EVENT_LINK_ERR_CODE_VIOLATION:
>>>               PM8001_MSG_DBG(pm8001_ha,
>>> @@ -3196,9 +3190,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
>>>               pm80xx_hw_event_ack_req(pm8001_ha, 0,
>>>                       HW_EVENT_LINK_ERR_CODE_VIOLATION,
>>>                       port_id, phy_id, 0, 0);
>>> -             sas_phy_disconnected(sas_phy);
>>> -             phy->phy_attached = 0;
>>> -             sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
>>>               break;
>>>       case HW_EVENT_LINK_ERR_LOSS_OF_DWORD_SYNCH:
>>>               PM8001_MSG_DBG(pm8001_ha, pm8001_printk(
>>> @@ -3206,9 +3197,6 @@ static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void *piomb)
>>>               pm80xx_hw_event_ack_req(pm8001_ha, 0,
>>>                       HW_EVENT_LINK_ERR_LOSS_OF_DWORD_SYNCH,
>>>                       port_id, phy_id, 0, 0);
>>> -             sas_phy_disconnected(sas_phy);
>>> -             phy->phy_attached = 0;
>>> -             sas_ha->notify_port_event(sas_phy, PORTE_LINK_RESET_ERR);
>>>               break;
>>>       case HW_EVENT_MALFUNCTION:
>>>               PM8001_MSG_DBG(pm8001_ha,
>>>
>> So what happens with the port, then?
>> Will you be getting another event when the port finally disconnects?
>> If not, how to you remove the port after a link failure?
>>
> 
> When the Phy disconnects, we will be getting the PHY DOWN events for 
> the phys in that port and we will remove that port. 
> 
Okay, thanks.

Reviewed-by: Hannes Reinecke <hare@suse.com>

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		               zSeries & Storage
hare@suse.de			               +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 31+ messages in thread

* RE: [PATCH 0/8] pm80xx: Driver updates
  2015-07-29  9:10 ` [PATCH 0/8] pm80xx: Driver updates Jack Wang
@ 2015-07-29  9:47   ` Suresh Thiagarajan
  0 siblings, 0 replies; 31+ messages in thread
From: Suresh Thiagarajan @ 2015-07-29  9:47 UTC (permalink / raw)
  To: Jack Wang, Viswas G
  Cc: linux-scsi@vger.kernel.org, James Bottomley, Tomas Henzl,
	pmchba@pmcs.com


On Wed, Jul 29, 2015 at 2:40 PM, Jack Wang <xjtuwjp@gmail.com> wrote:
> 2015-07-29 8:27 GMT+02:00  <Viswas.G@pmcs.com>:
>> From: Viswas G <Viswas.G@pmcs.com>
>>
>> This patch set contains bug fixes for pm80xx driver.
>> Please consider these patches for next kernel release.
>>
>> Viswas G (8):
>>   pm80xx: Updated link rate
>>   pm80xx: Corrected device state changes in I_T_Nexus_Reset
>>   pm80xx: Update For Thermal Page Code
>>   pm80xx: Fix for Incorrect DMA Unmapping of SG List
>>   pm80xx: Remove unnecessary phy disconnect while link error
>>   pm80xx: Add PORT RECOVERY TIMEOUT support
>>   pm80xx: Handling Invalid SSP Response frame
>>   pm80xx: Bump pm80xx driver version to 0.1.38
>>
>>  drivers/scsi/pm8001/pm8001_defs.h |    1 +
>>  drivers/scsi/pm8001/pm8001_hwi.c  |    4 +
>>  drivers/scsi/pm8001/pm8001_sas.c  |   15 ++++-
>>  drivers/scsi/pm8001/pm8001_sas.h  |   12 +++-
>>  drivers/scsi/pm8001/pm80xx_hwi.c  |  111 +++++++++++++++++++++++++++----------
>>  drivers/scsi/pm8001/pm80xx_hwi.h  |    5 +-
>>  6 files changed, 112 insertions(+), 36 deletions(-)
>>
> For the whole patchset:
>
> Reviewed-by: Jack Wang <jinpu.wang@profitbricks.com>

For the whole patchset again:
Reviewed-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com>

-Suresh
>
> PS: company policy requests to use the email address of the company,
> please cc me to above address next time, I will send a patch to update
> my email
> in MAINTAINERS file.
>
> Thanks
> Jack

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 1/8] pm80xx: Updated link rate
  2015-07-29  6:27 ` [PATCH 1/8] pm80xx: Updated link rate Viswas.G
  2015-07-29  8:52   ` Hannes Reinecke
@ 2015-07-29 16:04   ` Tomas Henzl
  1 sibling, 0 replies; 31+ messages in thread
From: Tomas Henzl @ 2015-07-29 16:04 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Suresh.Thiagarajan

On 29.7.2015 08:27, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> 
> Updated 12G linkrate to libsas.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
> 
Reviewed-by: Tomas Henzl <thenzl@redhat.com>

Tomas


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 2/8] pm80xx: Corrected device state changes in I_T_Nexus_Reset
  2015-07-29  6:27 ` [PATCH 2/8] pm80xx: Corrected device state changes in I_T_Nexus_Reset Viswas.G
  2015-07-29  8:53   ` Hannes Reinecke
@ 2015-07-29 16:10   ` Tomas Henzl
  2015-07-30  6:17     ` Viswas G
  1 sibling, 1 reply; 31+ messages in thread
From: Tomas Henzl @ 2015-07-29 16:10 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Suresh.Thiagarajan

On 29.7.2015 08:27, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> In Nexus reset the device state set to DS_IN_RECOVERY before doing
> phy reset and internal cleanup. Once internal cleanup finishes,
> the device state will set to DS_OPERATIONAL.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
> ---
>  drivers/scsi/pm8001/pm8001_sas.c |   14 +++++++++++---
>  drivers/scsi/pm8001/pm8001_sas.h |    8 ++++++++
>  2 files changed, 19 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c
> index b93f289..4e6955f 100644
> --- a/drivers/scsi/pm8001/pm8001_sas.c
> +++ b/drivers/scsi/pm8001/pm8001_sas.c
> @@ -980,13 +980,21 @@ int pm8001_I_T_nexus_reset(struct domain_device *dev)
>  			rc = 0;
>  			goto out;
>  		}
> +		pm8001_dev->setds_completion = &completion_setstate;
> +		PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha,
> +			pm8001_dev, DS_IN_RECOVERY);
> +		wait_for_completion(&completion_setstate);
>  		rc = sas_phy_reset(phy, 1);
>  		msleep(2000);
> +		if (rc) {
> +			PM8001_EH_DBG(pm8001_ha,
> +			pm8001_printk("phy reset failed for device %x\n"
> +			"with rc %d\n", pm8001_dev->device_id, rc));
> +		}
>  		rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev ,
>  			dev, 1, 0);
> -		pm8001_dev->setds_completion = &completion_setstate;
> -		rc = PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha,
> -			pm8001_dev, 0x01);
> +		PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha,
> +			pm8001_dev, DS_OPERATIONAL);
Hi Viswas,
the set_dev_state_req can't fail any more ? Also the
pm8001_exec_internal_task_abort may fail - shouldn't
be error handling also added ?
Cheers,
Tomas
>  		wait_for_completion(&completion_setstate);
>  	} else {
>  		rc = sas_phy_reset(phy, 1);
> diff --git a/drivers/scsi/pm8001/pm8001_sas.h b/drivers/scsi/pm8001/pm8001_sas.h
> index 8dd8b78..c9736cc 100644
> --- a/drivers/scsi/pm8001/pm8001_sas.h
> +++ b/drivers/scsi/pm8001/pm8001_sas.h
> @@ -569,6 +569,14 @@ struct pm8001_fw_image_header {
>  #define	NCQ_READ_LOG_FLAG			0x80000000
>  #define	NCQ_ABORT_ALL_FLAG			0x40000000
>  #define	NCQ_2ND_RLE_FLAG			0x20000000
> +
> +/* Device states */
> +#define DS_OPERATIONAL				0x01
> +#define DS_PORT_IN_RESET			0x02
> +#define DS_IN_RECOVERY				0x03
> +#define DS_IN_ERROR				0x04
> +#define DS_NON_OPERATIONAL			0x07
> +
>  /**
>   * brief param structure for firmware flash update.
>   */
> 


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 3/8] pm80xx: Update For Thermal Page Code
  2015-07-29  6:27 ` [PATCH 3/8] pm80xx: Update For Thermal Page Code Viswas.G
  2015-07-29  8:54   ` Hannes Reinecke
@ 2015-07-29 16:11   ` Tomas Henzl
  1 sibling, 0 replies; 31+ messages in thread
From: Tomas Henzl @ 2015-07-29 16:11 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Suresh.Thiagarajan

On 29.7.2015 08:27, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> Thermal page code has been changed to 7 for the 12G controllers.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
Reviewed-by: Tomas Henzl <thenzl@redhat.com>

Tomas


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 4/8] pm80xx: Fix for Incorrect DMA Unmapping of SG List
  2015-07-29  6:27 ` [PATCH 4/8] pm80xx: Fix for Incorrect DMA Unmapping of SG List Viswas.G
  2015-07-29  8:54   ` Hannes Reinecke
@ 2015-07-29 16:12   ` Tomas Henzl
  1 sibling, 0 replies; 31+ messages in thread
From: Tomas Henzl @ 2015-07-29 16:12 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Suresh.Thiagarajan

On 29.7.2015 08:27, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> In pm8001_ccb_task_free(), the dma unmapping is done based on
> ccb->n_elem value. This should be initialized to zero in the
> task_abort(). Otherwise, pm8001_ccb_task_free() will try for
> dma_unmap_sg() which is invalid for task abort and can lead to
> kernel crash.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 

Reviewed-by: Tomas Henzl <thenzl@redhat.com>

Tomas


^ permalink raw reply	[flat|nested] 31+ messages in thread

* RE: [PATCH 2/8] pm80xx: Corrected device state changes in I_T_Nexus_Reset
  2015-07-29 16:10   ` Tomas Henzl
@ 2015-07-30  6:17     ` Viswas G
  0 siblings, 0 replies; 31+ messages in thread
From: Viswas G @ 2015-07-30  6:17 UTC (permalink / raw)
  To: Tomas Henzl, linux-scsi@vger.kernel.org
  Cc: xjtuwjp@gmail.com, JBottomley@parallels.com, Suresh Thiagarajan



On Wed, Jul 29, 2015 at 9:40 PM, Tomas Henzl <thenzl@redhat.com> wrote:
> On 29.7.2015 08:27, Viswas.G@pmcs.com wrote:
>> From: Viswas G <Viswas.G@pmcs.com>
>>
>> In Nexus reset the device state set to DS_IN_RECOVERY before doing
>> phy reset and internal cleanup. Once internal cleanup finishes,
>> the device state will set to DS_OPERATIONAL.
>>
>> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
>> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com>
>> ---
>>  drivers/scsi/pm8001/pm8001_sas.c |   14 +++++++++++---
>>  drivers/scsi/pm8001/pm8001_sas.h |    8 ++++++++
>>  2 files changed, 19 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c
>> index b93f289..4e6955f 100644
>> --- a/drivers/scsi/pm8001/pm8001_sas.c
>> +++ b/drivers/scsi/pm8001/pm8001_sas.c
>> @@ -980,13 +980,21 @@ int pm8001_I_T_nexus_reset(struct domain_device *dev)
>>                       rc = 0;
>>                       goto out;
>>               }
>> +             pm8001_dev->setds_completion = &completion_setstate;
>> +             PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha,
>> +                     pm8001_dev, DS_IN_RECOVERY);
>> +             wait_for_completion(&completion_setstate);
>>               rc = sas_phy_reset(phy, 1);
>>               msleep(2000);
>> +             if (rc) {
>> +                     PM8001_EH_DBG(pm8001_ha,
>> +                     pm8001_printk("phy reset failed for device %x\n"
>> +                     "with rc %d\n", pm8001_dev->device_id, rc));
>> +             }
>>               rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev ,
>>                       dev, 1, 0);
>> -             pm8001_dev->setds_completion = &completion_setstate;
>> -             rc = PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha,
>> -                     pm8001_dev, 0x01);
>> +             PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha,
>> +                     pm8001_dev, DS_OPERATIONAL);
> Hi Viswas,
> the set_dev_state_req can't fail any more ? Also the
> pm8001_exec_internal_task_abort may fail - shouldn't
> be error handling also added ?
> Cheers,
> Tomas

Hi  Tomas,

The set_dev_state can fail if the ccb/Inbound queue slot is not available. It can happen
If there are more than 256 requests are penning with controller.
Internal task abort failure also can be handled. Will resent the patch with these changes.

Regards,
Viswas G
 

>>               wait_for_completion(&completion_setstate);
>>       } else {
>>               rc = sas_phy_reset(phy, 1);
>> diff --git a/drivers/scsi/pm8001/pm8001_sas.h b/drivers/scsi/pm8001/pm8001_sas.h
>> index 8dd8b78..c9736cc 100644
>> --- a/drivers/scsi/pm8001/pm8001_sas.h
>> +++ b/drivers/scsi/pm8001/pm8001_sas.h
>> @@ -569,6 +569,14 @@ struct pm8001_fw_image_header {
>>  #define      NCQ_READ_LOG_FLAG                       0x80000000
>>  #define      NCQ_ABORT_ALL_FLAG                      0x40000000
>>  #define      NCQ_2ND_RLE_FLAG                        0x20000000
>> +
>> +/* Device states */
>> +#define DS_OPERATIONAL                               0x01
>> +#define DS_PORT_IN_RESET                     0x02
>> +#define DS_IN_RECOVERY                               0x03
>> +#define DS_IN_ERROR                          0x04
>> +#define DS_NON_OPERATIONAL                   0x07
>> +
>>  /**
>>   * brief param structure for firmware flash update.
>>   */
>>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-----Original Message-----
From: Tomas Henzl [mailto:thenzl@redhat.com] 
Sent: Wednesday, July 29, 2015 9:40 PM
To: Viswas G; linux-scsi@vger.kernel.org
Cc: xjtuwjp@gmail.com; JBottomley@parallels.com; Suresh Thiagarajan
Subject: Re: [PATCH 2/8] pm80xx: Corrected device state changes in I_T_Nexus_Reset

On 29.7.2015 08:27, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> In Nexus reset the device state set to DS_IN_RECOVERY before doing phy 
> reset and internal cleanup. Once internal cleanup finishes, the device 
> state will set to DS_OPERATIONAL.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com>
> ---
>  drivers/scsi/pm8001/pm8001_sas.c |   14 +++++++++++---
>  drivers/scsi/pm8001/pm8001_sas.h |    8 ++++++++
>  2 files changed, 19 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/scsi/pm8001/pm8001_sas.c 
> b/drivers/scsi/pm8001/pm8001_sas.c
> index b93f289..4e6955f 100644
> --- a/drivers/scsi/pm8001/pm8001_sas.c
> +++ b/drivers/scsi/pm8001/pm8001_sas.c
> @@ -980,13 +980,21 @@ int pm8001_I_T_nexus_reset(struct domain_device *dev)
>  			rc = 0;
>  			goto out;
>  		}
> +		pm8001_dev->setds_completion = &completion_setstate;
> +		PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha,
> +			pm8001_dev, DS_IN_RECOVERY);
> +		wait_for_completion(&completion_setstate);
>  		rc = sas_phy_reset(phy, 1);
>  		msleep(2000);
> +		if (rc) {
> +			PM8001_EH_DBG(pm8001_ha,
> +			pm8001_printk("phy reset failed for device %x\n"
> +			"with rc %d\n", pm8001_dev->device_id, rc));
> +		}
>  		rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev ,
>  			dev, 1, 0);
> -		pm8001_dev->setds_completion = &completion_setstate;
> -		rc = PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha,
> -			pm8001_dev, 0x01);
> +		PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha,
> +			pm8001_dev, DS_OPERATIONAL);
Hi Viswas,
the set_dev_state_req can't fail any more ? Also the pm8001_exec_internal_task_abort may fail - shouldn't be error handling also added ?
Cheers,
Tomas
>  		wait_for_completion(&completion_setstate);
>  	} else {
>  		rc = sas_phy_reset(phy, 1);
> diff --git a/drivers/scsi/pm8001/pm8001_sas.h 
> b/drivers/scsi/pm8001/pm8001_sas.h
> index 8dd8b78..c9736cc 100644
> --- a/drivers/scsi/pm8001/pm8001_sas.h
> +++ b/drivers/scsi/pm8001/pm8001_sas.h
> @@ -569,6 +569,14 @@ struct pm8001_fw_image_header {
>  #define	NCQ_READ_LOG_FLAG			0x80000000
>  #define	NCQ_ABORT_ALL_FLAG			0x40000000
>  #define	NCQ_2ND_RLE_FLAG			0x20000000
> +
> +/* Device states */
> +#define DS_OPERATIONAL				0x01
> +#define DS_PORT_IN_RESET			0x02
> +#define DS_IN_RECOVERY				0x03
> +#define DS_IN_ERROR				0x04
> +#define DS_NON_OPERATIONAL			0x07
> +
>  /**
>   * brief param structure for firmware flash update.
>   */
> 


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 5/8] pm80xx: Remove unnecessary phy disconnect while link error
  2015-07-29  6:27 ` [PATCH 5/8] pm80xx: Remove unnecessary phy disconnect while link error Viswas.G
  2015-07-29  8:56   ` Hannes Reinecke
@ 2015-07-30 10:08   ` Tomas Henzl
  1 sibling, 0 replies; 31+ messages in thread
From: Tomas Henzl @ 2015-07-30 10:08 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Suresh.Thiagarajan

On 29.7.2015 08:27, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> If the link error happens, we don't need to disconnect the phy,
> which will remove the drive. Instead acknowledging the controller
> and logging the error will be enough.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
Reviewed-by: Tomas Henzl <thenzl@redhat.com>

Tomas



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 6/8] pm80xx: Add PORT RECOVERY TIMEOUT support
  2015-07-29  6:27 ` [PATCH 6/8] pm80xx: Add PORT RECOVERY TIMEOUT support Viswas.G
  2015-07-29  8:57   ` Hannes Reinecke
@ 2015-07-30 10:08   ` Tomas Henzl
  1 sibling, 0 replies; 31+ messages in thread
From: Tomas Henzl @ 2015-07-30 10:08 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Suresh.Thiagarajan

On 29.7.2015 08:27, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> PORT RECOVERY TIMEOUT is the maximum time between the controller's
> detection of the PHY down until the receipt of the ID_Frame (from the
> same remote SAS port). If the time expires before the ID_FRAME is
> received, the port is considered INVALID and can be removed. The
> IOP_EVENT_PORT_RECOVERY_TIMER_TMO event is reported following the
> IOP_EVENT_ PHY_DOWN event when the PHY/port does not recover after
> Port Recovery Time.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 

Reviewed-by: Tomas Henzl <thenzl@redhat.com>

Tomas


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 7/8] pm80xx: Handling Invalid SSP Response frame
  2015-07-29  6:27 ` [PATCH 7/8] pm80xx: Handling Invalid SSP Response frame Viswas.G
  2015-07-29  8:58   ` Hannes Reinecke
@ 2015-07-30 10:09   ` Tomas Henzl
  2015-07-30 10:09   ` Tomas Henzl
  2 siblings, 0 replies; 31+ messages in thread
From: Tomas Henzl @ 2015-07-30 10:09 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Suresh.Thiagarajan

On 29.7.2015 08:27, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> The request has to be retried incase if the length of the SSP
> Response IU is invalid.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
Reviewed-by: Tomas Henzl <thenzl@redhat.com>

Tomas



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 7/8] pm80xx: Handling Invalid SSP Response frame
  2015-07-29  6:27 ` [PATCH 7/8] pm80xx: Handling Invalid SSP Response frame Viswas.G
  2015-07-29  8:58   ` Hannes Reinecke
  2015-07-30 10:09   ` Tomas Henzl
@ 2015-07-30 10:09   ` Tomas Henzl
  2 siblings, 0 replies; 31+ messages in thread
From: Tomas Henzl @ 2015-07-30 10:09 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Suresh.Thiagarajan

On 29.7.2015 08:27, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> The request has to be retried incase if the length of the SSP
> Response IU is invalid.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
Reviewed-by: Tomas Henzl <thenzl@redhat.com>

Tomas


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 8/8] pm80xx: Bump pm80xx driver version to 0.1.38
  2015-07-29  6:27 ` [PATCH 8/8] pm80xx: Bump pm80xx driver version to 0.1.38 Viswas.G
  2015-07-29  8:58   ` Hannes Reinecke
@ 2015-07-30 10:10   ` Tomas Henzl
  1 sibling, 0 replies; 31+ messages in thread
From: Tomas Henzl @ 2015-07-30 10:10 UTC (permalink / raw)
  To: Viswas.G, linux-scsi; +Cc: xjtuwjp, JBottomley, Suresh.Thiagarajan

On 29.7.2015 08:27, Viswas.G@pmcs.com wrote:
> From: Viswas G <Viswas.G@pmcs.com>
> 
> Bump pm80xx driver version to 0.1.38.
> 
> Signed-off-by: Viswas G <Viswas.G@pmcs.com>
> Signed-off-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com> 
Reviewed-by: Tomas Henzl <thenzl@redhat.com>

Tomas


^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2015-07-30 10:10 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-29  6:27 [PATCH 0/8] pm80xx: Driver updates Viswas.G
2015-07-29  6:27 ` [PATCH 1/8] pm80xx: Updated link rate Viswas.G
2015-07-29  8:52   ` Hannes Reinecke
2015-07-29 16:04   ` Tomas Henzl
2015-07-29  6:27 ` [PATCH 2/8] pm80xx: Corrected device state changes in I_T_Nexus_Reset Viswas.G
2015-07-29  8:53   ` Hannes Reinecke
2015-07-29 16:10   ` Tomas Henzl
2015-07-30  6:17     ` Viswas G
2015-07-29  6:27 ` [PATCH 3/8] pm80xx: Update For Thermal Page Code Viswas.G
2015-07-29  8:54   ` Hannes Reinecke
2015-07-29 16:11   ` Tomas Henzl
2015-07-29  6:27 ` [PATCH 4/8] pm80xx: Fix for Incorrect DMA Unmapping of SG List Viswas.G
2015-07-29  8:54   ` Hannes Reinecke
2015-07-29 16:12   ` Tomas Henzl
2015-07-29  6:27 ` [PATCH 5/8] pm80xx: Remove unnecessary phy disconnect while link error Viswas.G
2015-07-29  8:56   ` Hannes Reinecke
2015-07-29  9:20     ` Viswas G
2015-07-29  9:21       ` Hannes Reinecke
2015-07-30 10:08   ` Tomas Henzl
2015-07-29  6:27 ` [PATCH 6/8] pm80xx: Add PORT RECOVERY TIMEOUT support Viswas.G
2015-07-29  8:57   ` Hannes Reinecke
2015-07-30 10:08   ` Tomas Henzl
2015-07-29  6:27 ` [PATCH 7/8] pm80xx: Handling Invalid SSP Response frame Viswas.G
2015-07-29  8:58   ` Hannes Reinecke
2015-07-30 10:09   ` Tomas Henzl
2015-07-30 10:09   ` Tomas Henzl
2015-07-29  6:27 ` [PATCH 8/8] pm80xx: Bump pm80xx driver version to 0.1.38 Viswas.G
2015-07-29  8:58   ` Hannes Reinecke
2015-07-30 10:10   ` Tomas Henzl
2015-07-29  9:10 ` [PATCH 0/8] pm80xx: Driver updates Jack Wang
2015-07-29  9:47   ` Suresh Thiagarajan

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).