All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] aic94xx: disable split completion timer/setting by default
@ 2006-06-30 21:10 Alexis Bruemmer
  2006-06-30 21:17 ` Jeff Garzik
  0 siblings, 1 reply; 4+ messages in thread
From: Alexis Bruemmer @ 2006-06-30 21:10 UTC (permalink / raw)
  To: linux-kernel

The aic94xx driver will lock up under heavy load with a split completion
error.  There is a split completion timer/setting which should be
disabled by default but is not.  This patch fixes this problem.

Signed-off-by: Adaptec
Acked-by: Alexis Bruemmer <alexisb@us.ibm.com>

----------

Index: aic94xx-sas-2.6-patched/drivers/scsi/aic94xx/aic94xx_hwi.c
===================================================================
--- aic94xx-sas-2.6-patched.orig/drivers/scsi/aic94xx/aic94xx_hwi.c	2006-06-23 11:12:01.000000000 -0700
+++ aic94xx-sas-2.6-patched/drivers/scsi/aic94xx/aic94xx_hwi.c	2006-06-29 12:10:08.000000000 -0700
@@ -604,11 +604,26 @@
 int asd_init_hw(struct asd_ha_struct *asd_ha)
 {
 	int err;
+	u32 v;
 
 	err = asd_init_sw(asd_ha);
 	if (err)
 		return err;
 
+	err = pci_read_config_dword(asd_ha->pcidev, PCIC_HSTPCIX_CNTRL, &v);
+	if (err) {
+		asd_printk("couldn't read PCIC_HSTPCIX_CNTRL of %s\n",
+			   pci_name(asd_ha->pcidev));
+		return err;
+	}
+	pci_write_config_dword(asd_ha->pcidev, PCIC_HSTPCIX_CNTRL,
+					v | SC_TMR_DIS);
+	if (err) {
+		asd_printk("couldn't disable split completion timer of %s\n",
+			   pci_name(asd_ha->pcidev));
+		return err;
+	}
+
 	err = asd_read_ocm(asd_ha);
 	if (err) {
 		asd_printk("couldn't read ocm(%d)\n", err);
Index: aic94xx-sas-2.6-patched/drivers/scsi/aic94xx/aic94xx_reg_def.h
===================================================================
--- aic94xx-sas-2.6-patched.orig/drivers/scsi/aic94xx/aic94xx_reg_def.h	2006-06-23 11:12:01.000000000 -0700
+++ aic94xx-sas-2.6-patched/drivers/scsi/aic94xx/aic94xx_reg_def.h	2006-06-29 11:57:49.000000000 -0700
@@ -1787,6 +1787,7 @@
 #define PCIC_HSTPCIX_CNTRL	0xA0
 
 #define 	REWIND_DIS		0x0800
+#define		SC_TMR_DIS		0x04000000
 
 #define PCIC_MBAR0_MASK	0xA8
 #define		PCIC_MBAR0_SIZE_MASK 	0x1FFFE000



^ permalink raw reply	[flat|nested] 4+ messages in thread
* [PATCH] aic94xx: disable split completion timer/setting by default
@ 2006-06-30 21:17 Alexis Bruemmer
  2006-06-30 21:24 ` Arjan van de Ven
  0 siblings, 1 reply; 4+ messages in thread
From: Alexis Bruemmer @ 2006-06-30 21:17 UTC (permalink / raw)
  To: linux-scsi

The aic94xx driver will lock up under heavy load with a split completion
error.  There is a split completion timer/setting which should be
disabled by default but is not.  This patch fixes this problem.

Signed-off-by: Adaptec
Acked-by: Alexis Bruemmer <alexisb@us.ibm.com>

----------

Index: aic94xx-sas-2.6-patched/drivers/scsi/aic94xx/aic94xx_hwi.c
===================================================================
--- aic94xx-sas-2.6-patched.orig/drivers/scsi/aic94xx/aic94xx_hwi.c	2006-06-23 11:12:01.000000000 -0700
+++ aic94xx-sas-2.6-patched/drivers/scsi/aic94xx/aic94xx_hwi.c	2006-06-29 12:10:08.000000000 -0700
@@ -604,11 +604,26 @@
 int asd_init_hw(struct asd_ha_struct *asd_ha)
 {
 	int err;
+	u32 v;
 
 	err = asd_init_sw(asd_ha);
 	if (err)
 		return err;
 
+	err = pci_read_config_dword(asd_ha->pcidev, PCIC_HSTPCIX_CNTRL, &v);
+	if (err) {
+		asd_printk("couldn't read PCIC_HSTPCIX_CNTRL of %s\n",
+			   pci_name(asd_ha->pcidev));
+		return err;
+	}
+	pci_write_config_dword(asd_ha->pcidev, PCIC_HSTPCIX_CNTRL,
+					v | SC_TMR_DIS);
+	if (err) {
+		asd_printk("couldn't disable split completion timer of %s\n",
+			   pci_name(asd_ha->pcidev));
+		return err;
+	}
+
 	err = asd_read_ocm(asd_ha);
 	if (err) {
 		asd_printk("couldn't read ocm(%d)\n", err);
Index: aic94xx-sas-2.6-patched/drivers/scsi/aic94xx/aic94xx_reg_def.h
===================================================================
--- aic94xx-sas-2.6-patched.orig/drivers/scsi/aic94xx/aic94xx_reg_def.h	2006-06-23 11:12:01.000000000 -0700
+++ aic94xx-sas-2.6-patched/drivers/scsi/aic94xx/aic94xx_reg_def.h	2006-06-29 11:57:49.000000000 -0700
@@ -1787,6 +1787,7 @@
 #define PCIC_HSTPCIX_CNTRL	0xA0
 
 #define 	REWIND_DIS		0x0800
+#define		SC_TMR_DIS		0x04000000
 
 #define PCIC_MBAR0_MASK	0xA8
 #define		PCIC_MBAR0_SIZE_MASK 	0x1FFFE000



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

end of thread, other threads:[~2006-06-30 21:24 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-06-30 21:10 [PATCH] aic94xx: disable split completion timer/setting by default Alexis Bruemmer
2006-06-30 21:17 ` Jeff Garzik
  -- strict thread matches above, loose matches on Subject: below --
2006-06-30 21:17 Alexis Bruemmer
2006-06-30 21:24 ` Arjan van de Ven

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.