2.4.x swim3 performance problem on PM4400 identified
Mikael Pettersson
mikpe at user.it.uu.se
Sat Mar 29 02:40:10 EST 2003
With 2.4 kernels, writes to floppy are about a factor of 10 slower
on my PowerMac 4400 than they are with 2.2 kernels.
The cause for this is a poll-loop in swim3.c which doesn't exist
in the 2.2 version. The patch below reverts that change, and
restores floppy write performance to 2.2 levels. I've built many
boot floppies with this modified driver w/o any problems.
/Mikael
--- linux-2.4.21-pre6/drivers/block/swim3.c.~1~ Wed Aug 7 00:52:20 2002
+++ linux-2.4.21-pre6/drivers/block/swim3.c Fri Mar 28 16:02:17 2003
@@ -679,10 +679,14 @@
break;
dr = fs->dma;
cp = fs->dma_cmd;
+#if 0 /* This causes massive performance problems for my PM4400. /Mikael */
/* We must wait a bit for dbdma to complete */
for (n=0; (in_le32(&dr->status) & ACTIVE) && n < 1000; n++)
udelay(10);
DBDMA_DO_STOP(dr);
+#else /* This is from 2.2 and it works much better for my PM4400. /Mikael */
+ st_le32(&dr->control, RUN << 16);
+#endif
out_8(&sw->intr_enable, 0);
out_8(&sw->control_bic, WRITE_SECTORS | DO_ACTION);
out_8(&sw->select, RELAX);
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-dev
mailing list