From: mikem@beardog.cca.cpqcorp.net
This patch addresses a bug in the ASIC on the 6400 series controllers. When
prefetching from host memory we grab an extra 750 or so bytes of data. If
this occurs on a memory boundary the machine will MCA. This bug affects IPF
and Alpha based platforms. It is not known to be a problem on x86.
Prefetch will be disabled via the f/w. We need to enable it on x86 to
address a _big_ performance hit on RAID 1 operations.
It is in the 2.4 tree.
printk("Does not appear to be a valid CISS config table\n");
return -1;
}
+
+#ifdef CONFIG_X86
+{
+ /* Need to enable prefetch in the SCSI core for 6400 in x86 */
+ __u32 prefetch;
+ prefetch = readl(&(c->cfgtable->SCSI_Prefetch));
+ prefetch |= 0x100;
+ writel(prefetch, &(c->cfgtable->SCSI_Prefetch));
+}
+#endif
+
#ifdef CCISS_DEBUG
printk("Trying to put board into Simple mode\n");
#endif /* CCISS_DEBUG */
DWORD Reserved;
BYTE ServerName[16];
DWORD HeartBeat;
+ DWORD SCSI_Prefetch;
} CfgTable_struct;
#pragma pack()
#endif // CCISS_CMD_H