aic94xx: disable split completion timer/setting by default
PATCH 1/1 aic94xx: disable split completion timer/setting by default
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.
----------
drivers/scsi/aic94xx/aic94xx_hwi.c +15 -0
@@ -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);
drivers/scsi/aic94xx/aic94xx_reg_def.h +1 -0
@@ -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
Quoted 6 lines · Alexis Bruemmer
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 AdaptecAcked-by Alexis Bruemmer <[email protected]>
There are various aic94xx driver bits floating about, and I'm worried that it will stay forever outside the kernel.org tree.
Can you (a) make sure to CC [email protected] on all aic94xx patches, and (b) work with James Bottomley and the crew to get it working with the upstream tree?
Jeff