Re: cciss update for 2.4.24-pre1, #3

From: mikem
Date: Fri Dec 19 2003 - 12:22:25 EST


Marcelo,
Prefetch has undergone extensive testing internally. Other groups are
continuing to test it, also. All controllers on the street now have
prefetch enabled. When version 1.92 of the controller f/w is released
prefetch will be disabled by default. This patch re-enables it on x86 only
because of a _big_ performance hit in RAID1 operations.
This is on my list for 2.6. Since it has now been released I will begin
submitting updates after Christmas. (My list for 2.6 is extensive.)
Also, please include this version of the patch rather than my first
submission. I moved a variable inside the ifdef to clean up warnings on
non-x86 platforms.

Thanks,
mikem
mike.miller@xxxxxx
------------------------------------------------------------------------------
diff -burN lx2424pre1.test2/drivers/block/cciss.c lx2424pre1.test/drivers/block/cciss.c
--- lx2424pre1.test2/drivers/block/cciss.c 2003-12-18 09:12:52.000000000 -0600
+++ lx2424pre1.test/drivers/block/cciss.c 2003-12-18 09:09:11.000000000 -0600
@@ -2675,6 +2675,15 @@
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 */
diff -burN lx2424pre1.test2/drivers/block/cciss_cmd.h lx2424pre1.test/drivers/block/cciss_cmd.h
--- lx2424pre1.test2/drivers/block/cciss_cmd.h 2003-06-13 09:51:32.000000000 -0500
+++ lx2424pre1.test/drivers/block/cciss_cmd.h 2003-12-18 09:10:01.000000000 -0600
@@ -266,6 +266,7 @@
DWORD Reserved;
BYTE ServerName[16];
DWORD HeartBeat;
+ DWORD SCSI_Prefetch;
} CfgTable_struct;
#pragma pack()
#endif /* CCISS_CMD_H */
-------------------------------------------------------------------------------
On Fri, 19 Dec 2003, Marcelo Tosatti wrote:

>
>
> On Wed, 17 Dec 2003 mikem@xxxxxxxxxxxxxxxxxxxxxxx wrote:
>
> > Sorry I forgot to send this fix in with the 2 patches I submitted
> > yesterday. We found a bug in the ASIC used on the 64xx Smart Array
> > 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 crash.
> > This is primarily an issue on IPF and Alpha systems although it could happen
> > on other platforms. Proliant systems are not affected by this bug because
> > memory is contiguous and the top 4k of memory is masked off by the system
> > firmware. The solution to the problem is to disable SCSI prefetch in the
> > controller firmware. This results in a performance hit on x86 during RAID1
> > operations. This patch turns on prefetch for x86 based systems only.
> > Please consider this patch for inclusion in the 2.4.24 kernel.
> > This patch should be applied after the 2 I submitted yesterday. It will
> > patch into a fresh tree with offsets.
>
> The other two patches have been included.
>
> Has the prefetching been tested for long? Which kernels have it enabled?
>
> What about 2.6?
>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/