Skip to contentSkip to conversation

pm80xx: thermal, sas controller config and error handling update

PATCH Superseded Anand 1 participant 1 message Mar 14, 2013

Subsystems (2)

v2 of 5 Superseded Latest is v5 →

lore
Share & tools
lore

Anand

author
#0 lore raw

PATCH v2 12/12 pm80xx: thermal, sas controller config and error handling update

Quoted 1 line

From 375653061c0db3189e9e5678b11291b7b0195ac3 Mon Sep 17 00:00:00 2001

From: Sakthivel K <[email protected]>
Date: Mon, 11 Mar 2013 20:44:36 +0530
Subject: [PATCH V2 12/12] pm80xx: thermal, sas controller config and error handling update

Modified thermal configuration to happen after interrupt registration Added SAS controller configuration during initialization Added error handling logic to handle I_T_Nexus errors and variants

---
 drivers/scsi/pm8001/pm8001_hwi.c  |    2 +-
 drivers/scsi/pm8001/pm8001_init.c |    2 +
 drivers/scsi/pm8001/pm8001_sas.c  |   66 ++++++++++++++++
 drivers/scsi/pm8001/pm8001_sas.h  |    2 +
 drivers/scsi/pm8001/pm80xx_hwi.c  |  150 +++++++++++++++++++++++++++++++++----
 drivers/scsi/pm8001/pm80xx_hwi.h  |   44 +++++++++++-
 6 files changed, 249 insertions(+), 17 deletions(-)
drivers/scsi/pm8001/pm8001_hwi.c +1 -1
index a90c002..d18f421 100644
@@ -1670,7 +1670,7 @@ void pm8001_work_fn(struct work_struct *work)
 	}	break;
 	case IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS:
 		dev = pm8001_dev->sas_device;
-		pm8001_I_T_nexus_reset(dev);
+		pm8001_I_T_nexus_event_handler(dev);
 		break;
 	case IO_OPEN_CNX_ERROR_STP_RESOURCES_BUSY:
 		dev = pm8001_dev->sas_device;
drivers/scsi/pm8001/pm8001_init.c +2 -0
index adda111..27d519d 100644
@@ -1165,6 +1165,8 @@ static int pm8001_pci_probe(struct pci_dev *pdev,
 	if (pm8001_ha->chip_id != chip_8001) {
 		for (i = 1; i < pm8001_ha->number_of_intr; i++)
 			PM8001_CHIP_DISP->interrupt_enable(pm8001_ha, i);
+		/* setup thermal configuration. */
+		pm80xx_set_thermal_config(pm8001_ha);
 	}
 
 	pm8001_init_sas_add(pm8001_ha);
drivers/scsi/pm8001/pm8001_sas.c +66 -0

72 lines not on this page · raw message

drivers/scsi/pm8001/pm8001_sas.h +2 -0
index 2fa73fc..29a6a7b 100644
@@ -562,6 +562,7 @@ int pm8001_dev_found(struct domain_device *dev);
 void pm8001_dev_gone(struct domain_device *dev);
 int pm8001_lu_reset(struct domain_device *dev, u8 *lun);
 int pm8001_I_T_nexus_reset(struct domain_device *dev);
+int pm8001_I_T_nexus_event_handler(struct domain_device *dev);
 int pm8001_query_task(struct sas_task *task);
 void pm8001_open_reject_retry(
 	struct pm8001_hba_info *pm8001_ha,
@@ -624,6 +625,7 @@ void pm8001_free_task(struct sas_task *task);
 void pm8001_tag_free(struct pm8001_hba_info *pm8001_ha, u32 tag);
 struct pm8001_device *pm8001_find_dev(struct pm8001_hba_info *pm8001_ha,
 					u32 device_id);
+int pm80xx_set_thermal_config(struct pm8001_hba_info *pm8001_ha);
 
 int pm8001_bar4_shift(struct pm8001_hba_info *pm8001_ha, u32 shiftValue);
 
drivers/scsi/pm8001/pm80xx_hwi.c +135 -15

228 lines not on this page · raw message

drivers/scsi/pm8001/pm80xx_hwi.h +43 -1

62 lines not on this page · raw message

Signature · 1 line
1.7.1
Quoted 1 line

From 375653061c0db3189e9e5678b11291b7b0195ac3 Mon Sep 17 00:00:00 2001

From: Sakthivel K <[email protected]>
Date: Mon, 11 Mar 2013 20:44:36 +0530
Subject: [PATCH V2 12/12] pm80xx: thermal, sas controller config and error handling update

Modified thermal configuration to happen after interrupt registration Added SAS controller configuration during initialization Added error handling logic to handle I_T_Nexus errors and variants

---
 drivers/scsi/pm8001/pm8001_hwi.c  |    2 +-
 drivers/scsi/pm8001/pm8001_init.c |    2 +
 drivers/scsi/pm8001/pm8001_sas.c  |   66 ++++++++++++++++
 drivers/scsi/pm8001/pm8001_sas.h  |    2 +
 drivers/scsi/pm8001/pm80xx_hwi.c  |  150 +++++++++++++++++++++++++++++++++----
 drivers/scsi/pm8001/pm80xx_hwi.h  |   44 +++++++++++-
 6 files changed, 249 insertions(+), 17 deletions(-)
drivers/scsi/pm8001/pm8001_hwi.c +1 -1
index a90c002..d18f421 100644
@@ -1670,7 +1670,7 @@ void pm8001_work_fn(struct work_struct *work)
 	}	break;
 	case IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS:
 		dev = pm8001_dev->sas_device;
-		pm8001_I_T_nexus_reset(dev);
+		pm8001_I_T_nexus_event_handler(dev);
 		break;
 	case IO_OPEN_CNX_ERROR_STP_RESOURCES_BUSY:
 		dev = pm8001_dev->sas_device;
drivers/scsi/pm8001/pm8001_init.c +2 -0
index adda111..27d519d 100644
@@ -1165,6 +1165,8 @@ static int pm8001_pci_probe(struct pci_dev *pdev,
 	if (pm8001_ha->chip_id != chip_8001) {
 		for (i = 1; i < pm8001_ha->number_of_intr; i++)
 			PM8001_CHIP_DISP->interrupt_enable(pm8001_ha, i);
+		/* setup thermal configuration. */
+		pm80xx_set_thermal_config(pm8001_ha);
 	}
 
 	pm8001_init_sas_add(pm8001_ha);
drivers/scsi/pm8001/pm8001_sas.c +66 -0

72 lines not on this page · raw message

drivers/scsi/pm8001/pm8001_sas.h +2 -0
index 2fa73fc..29a6a7b 100644
@@ -562,6 +562,7 @@ int pm8001_dev_found(struct domain_device *dev);
 void pm8001_dev_gone(struct domain_device *dev);
 int pm8001_lu_reset(struct domain_device *dev, u8 *lun);
 int pm8001_I_T_nexus_reset(struct domain_device *dev);
+int pm8001_I_T_nexus_event_handler(struct domain_device *dev);
 int pm8001_query_task(struct sas_task *task);
 void pm8001_open_reject_retry(
 	struct pm8001_hba_info *pm8001_ha,
@@ -624,6 +625,7 @@ void pm8001_free_task(struct sas_task *task);
 void pm8001_tag_free(struct pm8001_hba_info *pm8001_ha, u32 tag);
 struct pm8001_device *pm8001_find_dev(struct pm8001_hba_info *pm8001_ha,
 					u32 device_id);
+int pm80xx_set_thermal_config(struct pm8001_hba_info *pm8001_ha);
 
 int pm8001_bar4_shift(struct pm8001_hba_info *pm8001_ha, u32 shiftValue);
 
drivers/scsi/pm8001/pm80xx_hwi.c +135 -15

228 lines not on this page · raw message

drivers/scsi/pm8001/pm80xx_hwi.h +43 -1

62 lines not on this page · raw message

Signature · 1 line
1.7.1