What's about the CMD640? (was: RZ1000 bugfix in 1.2.14)

carlos fonseca (fonseca@acse.shef.ac.uk)
Fri, 29 Sep 1995 11:53:31 +0100

Delman > From: delman@mipg.upenn.edu (Delman Lee)
Delman > Date: Wed, 27 Sep 95 18:51:11 EDT
Delman > Subject: re: RZ1000 bugfix in 1.2.14?
Delman > [...]
Delman > As long as one doesn't use "hdparm -u1 /dev/hd?", things should be
Delman > safe. If you really want to disable the read-ahead of the RZ1000, the
Delman > following patch against 1.2.13's drivers/block/ide.c should do the
Delman > trick. It's taken from 1.3.x driver.

Shouldn't the CMD640 be detected as well and prefetch disabled (and
perhaps even hda=serialize automatically selected)? Although I don't
used IDE (at the moment anyway), my motherboard has that IDE

>From the PCI EIDE CONTROLLER FLAWS FAQ (Revision 17: 1995 September 14)
> There are serious flaws affecting about 1/3 of all PCI
> motherboards. The flaws affect any motherboard or EIDE
> controller paddleboard containing the PC-Tech RZ-1000 PCI
> EIDE controller chip or the CMD PCIO 640 PCI EIDE controller
> chip. ^^^^^^^^^^^^^^^^^^^^^
> The RZ-1000 has two flaws. The CMD-640 has those same two
> flaws plus three others. To make matters worse, most
> motherboard manufacturers using these two flawed chips
> connected them up incorrectly. There are software bypasses
> for these flaws. However, the Warp fix the CMD-640 reduces
> disk performance by 15 to 50%. The RZ-1000 fix has
> negligible impact on disk I/O though it can slow down
> background processes.

> Linux - Disable prefetch buffer in CMOS
> settings.
^^ Could this be done for sure in the kernel ?

> - To bypass the CMD-640 flaws use the
> boot time kernel parameter:
> hda=serialize.
> - To bypass the prefetch flaws, use the
> default settings to suppress interrupts
> during I/O on the external Hard Disk
> Parameter utility hdparm..

Delman > (You may want to do "hdparm -c1
Delman > /dev/hd?" when read-ahead is disabled.)
Delman >
Delman > Delman.

Also, would "hdparm -c1 /dev/hd?" be useful with the CMD640?