home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / eidete19.zip / EIDEFLAW.TXT < prev    next >
Text File  |  1995-10-29  |  59KB  |  1,559 lines

  1. PCI EIDE CONTROLLER FLAWS REV 19
  2.  
  3.  
  4. Revision 19: 1995 October 29
  5.  
  6.  
  7. SUMMARY OF RECENT CHANGES
  8.  
  9. 1)   The RZ-1000 and CMD-640 flaws have still not been fixed
  10.     in new versions of the chips.
  11.  
  12. 2)   Intel's CtrlTest to check for both the RZ-1000 and CMD-
  13.   640 chips is now available under the name RZtest.exe.
  14.   Beware! old versions of the MS Word documentation contains a
  15.   macro virus. The virus was removed in October 95. See
  16.   http://www.intel.com/procs/support/rz1000/index.html
  17.  
  18. 3)   There is a mysterious new patch for 640B for Warp
  19.   called 640x_v20.zip dated Sept 1, 1995. Its source is
  20.   unknown, however it appears to work, and work faster than
  21.   Fixpack 10. It is probably the code the CMD company wrote. I
  22.   have had one report that it was available via FTP at
  23.   Phen.techhouse.brown.edu, but I have never been able to get
  24.   through myself. I have another report it was not there. CMD
  25.   has an OEM BBS for its customers, but it is not open to the
  26.   public. I could not find it on the public BBS at (714) 454-
  27.   1134, however I did find 640X_USR.403 which contains a
  28.   variety of patches for various operating systems.
  29.  
  30. 4)   Art Scott (scotta@pilot.msu.edu) suggests that you can
  31.   sometimes tweak the performance of the RZ-1000 back up by
  32.   configuring the setting in advanced BIOS for the maximum
  33.   number of cycles that a PCI device can hold onto the PCI bus
  34.   before the next board gets a turn, from 66 to 33.
  35.  
  36. 5)   According to John Blenkinsop (jblenkin@ccs.carleton.ca)
  37.   WFWIN10.ZIP is now available to update the install diskettes
  38.   to the Fixpack 10 level. It includes the RZ-1000 and CMD-640
  39.   fixes, but does not automatically install the CMD fixes. See
  40.   ftp://service.boulder.ibm.com/ps/products/os2/fixes/v3.0warp
  41.   /english-us/wfwin10/wfwin10.zip
  42.  
  43. 6)   IBM heard about the RZ-1000 flaw back in June 1994, but
  44.   dismissed it as a "hardware error".
  45.  
  46. 7)   According to lovergin@ens.lifl.fr, one retailer, La Cle
  47.   Informatique, in France is offering to replace the defective
  48.   Vobis motherboards it sold.
  49.  
  50. 8)   EIDEtest 1.9 and CDTest 1.1 released. The only change
  51.   is a warning to run your tests with background execution
  52.   configured on.
  53.  
  54. 9)   Fixpack 10 contains the necessary fixes for Warp.
  55.   Beware! There are leaked, buggy copies of Fixpack 10 out on
  56.   the net.
  57.  
  58. 10)  PJ19409.zip has been changed. It now contains all the
  59.   fixes necessary for the RZ-1000 and for the CMD-640. Follow
  60.   the installation instructions carefully. If you just follow
  61.   your nose, chances are you will be worse off than you are
  62.   now. This fix has been incorporated into Fixpack 10.
  63.  
  64. 11)  Intel contradicts itself on the performance hit from
  65.   disabling prefetch to bypass the flaws. Robert Schultz
  66.   (robert.schultz@execnet.com) reports a 50% performance hit
  67.   after applying the CMD-640 fix. Marco Trunzer
  68.   (ujjm@rzstud1.rz.uni-karlsruhe.de) reports a 15% slowdown.
  69.   There are still no benchmarks on the effects on background
  70.   bus-intensive processes.
  71.  
  72. 12)  Dell is upgrading its XPS 90 to avoid the flawed chips,
  73.   but they are keeping the old kiss of death name.
  74.  
  75. 13)  Micron P5-90 M54Pi-N 11P has flawed CMD 640 chip on the
  76.   primary channel, but a working SMC chip on the secondary
  77.   channel. By moving your EIDE devices to the secondary
  78.   channel, you can avoid the flawed chip.
  79.  
  80. 14)  The precise mechanism of failure for both the RZ-1000
  81.   and CMD-640 is now understood. The RZ-1000 has two different
  82.   flaws and the CMD-640 has five. In addition most motherboard
  83.   manufacturers using these two chips hooked them up
  84.   improperly.
  85.  
  86. 15)  SMC 37650 controller is probably ok.
  87.  
  88. 16)  NT 3.5 not immune after all. It handles the RZ-1000 but
  89.   not the CMD PCIO 640. Fix is available.
  90.  
  91. 17)  Software from IBM and Intel to detect both faulty chips
  92.   directly.
  93.  
  94. 18)  Explanation of what "Intel Inside" means.
  95.  
  96. 19)  Dell offers upgrade BIOS to turn off the prefetch
  97.   buffers.
  98.  
  99. 20)  List of safe and unsafe operating system software.
  100.  
  101. 21)  IBM hardware is clean.
  102.  
  103. 22)  Stonewall rebuilds. Intel recants on offer to replace
  104.   defective motherboard.
  105.  
  106. 23)  Problem is showing up under Windows For WorkGroups in
  107.   32-bit mode.
  108.  
  109. INTRODUCTION
  110.  
  111. There are serious flaws affecting about 1/3 of all PCI
  112. motherboards. The flaws affect any motherboard or EIDE
  113. controller paddleboard containing the PC-Tech RZ-1000 PCI
  114. EIDE controller chip or the CMD PCIO 640 PCI EIDE controller
  115. chip.
  116.  
  117. The flaws affect motherboards from ASUSTeK, AT&T, DEC, Dell,
  118. Gateway, Intel, Micron, NEC, Zeos and others. Since Intel
  119. makes so many of the motherboards sold under other brand
  120. names, the flaws affect many machines, both 486 and Pentium
  121. PCI.
  122.  
  123. The flaws show up most frequently when you run a true
  124. multitasking operating system such as OS/2 Warp or NT. It
  125. also shows up under Windows For WorkGroups in 32-bit mode
  126. during tape or floppy backup and restore. In theory the
  127. flaws could do damage under DOS, DESQview, Windows and
  128. Windows For WorkGroups in 16-bit mode, but so far there have
  129. been no damage reports. Windows-95 contains code to bypass
  130. the flaws.
  131.  
  132. The RZ-1000 has two flaws. The CMD-640 has those same two
  133. flaws plus three others. To make matters worse, most
  134. motherboard manufacturers using these two flawed chips
  135. connected them up incorrectly. There are software bypasses
  136. for these flaws. However, the Warp fix the CMD-640 reduces
  137. disk performance by 15 to 50%. The RZ-1000 fix has
  138. negligible impact on disk I/O though it can slow down
  139. background processes.
  140.  
  141. I would advise new hardware to bypass the CMD-640 flaws, and
  142. living with software fixes to bypass the RZ-1000 flaws.
  143.  
  144.  
  145. WHAT ARE THE SYMPTOMS?
  146.  
  147. When you are using an IDE or EIDE hard disk attached to the
  148. EIDE motherboard port, the flaws subtly corrupt your files
  149. by randomly changing bytes every once in a while. The flaws
  150. introduce bugs into EXE files, subtle errors into your
  151. spreadsheets, stray characters into your word processing
  152. documents, changes to the deductions in last year's tax
  153. return files, and random changes to engineering design
  154. files.
  155.  
  156. This corruption happens when you are simultaneously using
  157. your EIDE or IDE hard disk and some other device, most
  158. commonly the floppy drive or mag tape backup.
  159.  
  160. The same sorts of problem may occur on reading a CD-ROM
  161. drive attached to an EIDE port.
  162.  
  163.  
  164. IS IT SERIOUS?
  165.  
  166. These flaws are nasty. They are causing hundreds of times
  167. more havoc than the infamous Pentium divide flaw ever did.
  168. "I am Pentium of Borg. You will be approximated."
  169.  
  170. Not only does this corruption occur, but it occurs quietly,
  171. often going unnoticed.
  172.  
  173. If the system crashes, you usually put the blame on the
  174. operating system software, or the application. It might
  175. actually be a faulty RZ-1000 or CMD-640 EIDE controller chip
  176. nailing you.
  177.  
  178. When a directory becomes corrupted, you may not notice it
  179. until the damage is irreparable. If a spreadsheet
  180. application reads a comma-delimited ASCII file, it may
  181. simply miss a few bytes in a number, an error that may go
  182. unnoticed, and that error could cascade through the rest of
  183. the spreadsheet.
  184.  
  185. If you have had unexplained crashes in OS/2, you have
  186. probably experienced the problem, and should make a thorough
  187. check for hidden corruption. Remember that the bug may only
  188. slightly alter your data, and the corruption may not be
  189. obvious.
  190.  
  191. Keep in mind that not every problem is the RZ-1000's or the
  192. CMD-640's fault. Overheating, unrelated hardware faults and
  193. design flaws, or software bugs can cause similar symptoms.
  194. DMA channel conflicts also cause similar symptoms. Happily,
  195. EIDEtest and CDTest can unmask all manner of simultaneous
  196. I/O faults.
  197.  
  198. Unfortunately, correcting the problem just stops further
  199. file corruption. It will not help to clean up the existing
  200. damage to your files. Right now, the focus is on bypassing
  201. the flaws. Preventing further corruption is child's play
  202. compared with the nightmare of trying to track down all the
  203. existing random errors in files. Backups even from day one
  204. may be corrupt. If you have the either of the flawed chips,
  205. you will probably never be able to completely eliminate the
  206. effects of past corruption.
  207.  
  208.  
  209. HOW DO YOU TELL IF YOU HAVE THE FLAWED CHIPS?
  210.  
  211. There are four categories of motherboard:
  212.  
  213. 1)   Definitely safe. Motherboards may still have flaws, but
  214.   all software in use bypasses them.
  215.  
  216. 2)   Probably safe. In theory there could be problems, but
  217.   no one has reported any so far.
  218.  
  219. 3)   Possibly dangerous. You will have to run EIDEtest,
  220.   CDtest, or IOTest to find out.
  221.  
  222. 4)   Probably dangerous. You will still have to run the
  223.   tests to find out for sure.
  224.  
  225. Definitely Safe
  226.  
  227. Definitely safe includes older machines with ISA. EISA, or
  228. MCA buses. The flaws only affect machines with the new PCI
  229. bus or the VESA VL bus. PCI machines that use the new Triton
  230. chipset from Intel do not have the flaws
  231.  
  232. PCI machines with Intel BIOSes that run only DOS, DESQview,
  233. Windows 3.1 or Windows-95 are safe. If you have a non-Intel
  234. BIOS and run only DOS, DESQview, Windows 3.1, Windows-95 and
  235. never use the "fast mode" simultaneous disk I/O feature on
  236. floppy or tape backup/restore, you are safe.
  237.  
  238. You still might want to test your machine. There are similar
  239. problems with other causes the tests will unmask.
  240.  
  241.  
  242. Probably Safe
  243.  
  244. If you have a non-Intel BIOS and run only DOS, DESQview,
  245. Windows 3.1, or Windows for WorkGroups 3.11 in 16-bit disk
  246. access mode, you probably will not see the problem, even
  247. though you may have one of the faulty chips.
  248.  
  249.  
  250. Possibly Dangerous
  251.  
  252. Most auxiliary chipsets (e.g., OPTI Viper, SMC, Mercury and
  253. Neptune) used on PCI motherboards do not include a built in
  254. EIDE controller. Such motherboards use a separate EIDE
  255. controller chip -- often the flawed RZ-1000 or CMD-640. If
  256. you use a separate no-name EIDE paddleboard, it will likely
  257. use the one of the flawed chips. In theory, the flaws could
  258. affect DOS, Windows, and Windows For WorkGroups with 16-bit
  259. disk access during floppy/tape backup and restore, though no
  260. one has reported problems yet. Windows For WorkGroups with
  261. 32-bit disk access is dangerous if you have the flaws.
  262.  
  263.  
  264. Probably Dangerous
  265.  
  266. PCI Motherboards (both 486 and Pentium) with the older
  267. Mercury and Neptune chipsets are likely to have the flawed
  268. chips. The Mercury chipset was popular in P60 and P66
  269. systems, and the Neptune in P70, P90 and P100 systems.
  270. Mercury chipsets are labelled with an MX suffix and Neptune
  271. with NX. If you are using NT, OS/2 Warp or Linux, you are
  272. likely to have already experienced extensive file corruption
  273. if either of the flawed chips are present. Check the list
  274. later in the article for motherboards known to carry the
  275. flawed chips.
  276.  
  277.  
  278. TESTING FOR THE FLAWS
  279.  
  280. Scot Llewelyn, one of the eight authors of PowerQuest's
  281. PartitionMagic, discovered one of the RZ-1000 flaws and made
  282. it public. Prior to that, only employees of PC-Tech, Intel
  283. and Microsoft were aware of how to bypass the flaws. In the
  284. process of tracking the RZ-1000 problems down, Internet
  285. comp.os.os2.bugs participants discovered a second flawed
  286. chip, the CMD-640.
  287.  
  288. Scot did most of the initial work documenting the first RZ-
  289. 1000 flaw. He wrote a program called IOtest that can detect
  290. the flaws if:
  291.  
  292. 1)   You are using OS/2 Warp.
  293.  
  294. 2)   You are willing to go through the hassle of creating a
  295.   separate small partition to run the test. You can use his
  296.   program, PartitionMagic, to make room to create one.
  297.  
  298. 3)   You have an EIDE hard disk attached to your EIDE port.
  299.   It cannot detect the problem if you only have an EIDE CD-
  300.   ROM, or if the EIDE port is currently unused.
  301.   Scot originally called his test program DMAtest because he
  302.   erroneously thought simultaneous DMA was the sole culprit.
  303.   Do not confuse PowerQuest DMAtest with Gazelle's DMAtest
  304.   which only tests if the floppy drive will work happily
  305.   simultaneously with the hard disk.
  306.  
  307. The world needed an easier-to-use test that would run under
  308. DESQview, Windows, Windows For WorkGroups, Windows 95, NT
  309. and OS/2. So I wrote EIDEtest to test for the flaws without
  310. requiring you to create a special partition or buy Warp
  311. OS/2. I also wrote CDTest to test for the flaws when you
  312. have an EIDE CD-ROM drive.
  313.  
  314. You can also get both programs from me by snail mail.
  315.  
  316. If these tests fail, it proves you have a serious problem,
  317. but not necessarily that you have the RZ-1000 or CMD-640
  318. chip.
  319.  
  320. If the tests pass, you still may have a problem since,
  321. especially under DOS, DESQview and Windows, the flaws may
  322. only show up very rarely. If you run the tests under Windows-
  323. 95 they will always pass, even if you have a defective chip,
  324. because the operating system already bypasses the flaws. If
  325. you suspect trouble, run the tests several times.
  326.  
  327.  
  328. VISUAL INSPECTION
  329.  
  330. You can also have a look at your motherboard. Between the
  331. PCI slots, at the edge of the motherboard, look for a
  332. rectangular chip about 1 by 2 cm (0.5" x 0.75") that says RZ-
  333. 1000 near the top of the chip. There are variations on the
  334. chip name, e.g., "RZ-1000BP". Unfortunately, the markings
  335. are not always present, especially in ASUSTeK motherboards
  336. which may have the "CMD PCIO 640A" or "CMD PCIO 640B" chip.
  337. As of October 1995, all versions of the RZ-1000 and CMD-640
  338. are defective, even new ones.
  339.  
  340.  
  341. DIRECT TESTS
  342.  
  343. The OS/2 Warp Bonus Pack Sysinfo version 3.02 utility (the
  344. upgraded downloaded version) will report on your EIDE
  345. controller. The signature for the RZ-1000 looks like this:
  346.  
  347. manufacturer: PC TECHNOLOGY INC
  348. class code : 0001
  349. Vendor ID: 1042
  350. Device ID: 1000
  351. Revision ID: 0001
  352.  
  353. For the CMD-640B it will look like this:
  354. manufacturer : CMD TECHNOLOGY INC
  355. class code : 0001
  356. Vendor ID :1095
  357. Device ID : 0640
  358. Revision ID : 0002
  359.  
  360. The Warp disk driver IBM1S506.ADD with the /V switch will
  361. tell you if you have the RZ-1000 or CMD-640 chip.
  362.  
  363. Intel has written a new test that looks directly for either
  364. of the two faulty chips called CtrlTest.exe, however it is
  365. filed under its old name RZTest.exe.
  366.  
  367. The Windows-95 Control panel will also report on the EIDE
  368. controller chip.
  369.  
  370.  
  371. WHERE HAVE FLAWS BEEN FOUND?
  372.  
  373. Via email, on BIX and on the Internet and in
  374. comp.os.os2.bugs, people have reported finding flaws in the
  375. following specific motherboards.
  376.  
  377. Motherboard          Chip     Reporters
  378.  
  379. Acculogic VL         CMD-640  Mark Lord (mlord@bnr.ca)
  380. Paddleboard                   tentative
  381.  
  382. ACMA P590            ?        Bob Smith
  383.  
  384. AST Bravo MS-T P/75  CMD-640  Mike Coplien
  385.                               (kcoplien@facstaff.wisc.edu)
  386.  
  387. ASUSTeK PCI/I        CMD-640  Marco Trunzer
  388. P54SP4                        (ujjm@rzstud1.rz.uni-
  389.                               karlsruhe.de)
  390.  
  391.                               Maurice Schekkerman
  392.                               (schekker@prl.philips.nl)
  393.  
  394.                               Mike Coplien
  395.                               (kcoplien@facstaff.wisc.edu)
  396.  
  397.                               Robert Schultz
  398.                               (robert.schultz@execnet.com)
  399.  
  400.                               Thomas L. Kusterer
  401.                               (kustetl1@aplcomm.jhuapl.edu)
  402.  
  403. AT&T Globalyst 630   CMD-640  Mike Coplien
  404.                               (kcoplien@facstaff.wisc.edu)
  405.  
  406. CMD CSA-62101Kx VL2  CMD-     George Voros
  407. IDE paddleboard      640B     (george.voros@ghbbs.com)
  408.  
  409. Compaq Presario      CMD-640  Walter Wu
  410.                               (wu000016@mc.duke.edu)
  411.  
  412. Compaq Prolinea      CMD-640  Walter Wu
  413.                               (wu000016@mc.duke.edu)
  414.  
  415. DEC Celbris 590      CMD-640  Fred Thomsen
  416.                               (fthomsen@lexis.pop.upenn.edu)
  417.  
  418. DEC Starion 700I     CMD-640  Mike Coplien
  419.                               (kcoplien@facstaff.wisc.edu)
  420.  
  421. DEC Venturis 466     CMD-640  Mike Coplien
  422.                               (kcoplien@facstaff.wisc.edu)
  423.  
  424. DEC Venturis 560     CMD-640  Fred Thomsen
  425.                               (fthomsen@lexis.pop.upenn.edu)
  426.  
  427. Dell Dimension XPS   RZ-1000  Scot Llewelyn
  428. P100                          (scotl@itsnet.com)
  429.  
  430. Dell Dimension XPS   RZ-1000  Steve Ertman
  431. P75                           (sertman@ocean.fsu.edu)
  432.  
  433. Dell Dimension XPS   RZ-1000  Dong Chen (D_Chen@netcom.com)
  434. P90
  435.                               Larry Lai (lai@iastate.edu)
  436.  
  437.                               Lawrence Rounds
  438.                               (ljrounds@netcom.com)
  439.  
  440.                               Mike Griggs (mpg@iadfw.net)
  441.  
  442.                               Mike Heath
  443.                               (heath@rohan.sdsu.edu)
  444.  
  445.                               Moira Watson
  446.                               (watson6@uwindsor.ca)
  447.  
  448.                               Nathaniel Beck @weber.ucsd.edu
  449.  
  450.                               Pete (pag@interramp.com)
  451.  
  452.                               Shallenberg
  453.                               (bobshall@subtone.wanet.com)
  454.  
  455.                               Wijadi Jodi
  456.                               (r2nw@dax.cc.uakron.edu)
  457.  
  458. Dell Optiplex 575    CMD-640  Mike Coplien
  459.                               (kcoplien@facstaff.wisc.edu)
  460.  
  461. Dell Optiplex XM     CMD-640  Aron Eisenpress
  462. 590                           (afecu@cunyvm.cuny.edu)
  463.  
  464. Dell XPS-133c        neither  Blake Scholl (bscholl@one.net)
  465.  
  466. EliteGroup UM8810P-  CMD-640  Bodo Huckestein (bh@thp.Uni-
  467. AIO                           Koeln.DE)
  468.  
  469.                               Guy Kapteijns
  470.                               (W.Kapteijns@kub.nl)
  471.  
  472. Escom P5/60          CMD-640  Detlef Meier
  473. (Intel Premiere               (detlef.meier@materna.de)
  474. ATLX)                         Rogier van Wanroij
  475.                               (wanroij@cs.utwente.nl)
  476.  
  477. Escom P60I           CMD-640  Tim Schofield
  478.                               (schofieldt@logica.com)
  479.  
  480. Escom P90            RZ-1000  Karl Knoflach
  481.                               (151579kk@student.eur.nl )
  482.  
  483.                               (Xav@mantra01.demon.co.uk)
  484.  
  485. Gateway 2000 P5-60,  RZ-1000  Angus Black
  486. Intel Mercury Rev 3           (angus@spanner.hiway.co.uk)
  487.  
  488.                               Gary Farr
  489.                               (garyfarr@ix.netcom.com)
  490.  
  491.                               Daron Davis
  492.                               (daron_davis@dca.com)
  493.  
  494.                               Jerry Lynch (lynch.94@osu.edu)
  495.  
  496.                               Keith Patterson
  497.                               (dinosaur@buffnet.net)
  498.  
  499.                               Rick Gregory
  500.                               (rfg@us.dynix.com)
  501.  
  502.                               Roy L. Smith
  503.                               (smittyry@ix.netcom.com)
  504.  
  505. Gateway 2000 P5-66   RZ-1000  Randy Nerwick
  506.                               (nerwick@netcom.com)
  507.  
  508. Gateway 2000 P5-90   RZ-1000  Alan Murphy (alan@jac.co.uk)
  509.  
  510.                               Roy L. Smith
  511.                               (smittyry@ix.netcom.com)
  512.  
  513. Intel Hendrix        CMD-640  Clif Purkiser Intel Corp
  514.                               (support@cs.intel.com)
  515.  
  516. Intel Insight P5-60  RZ-1000  Jim Arnone
  517. Premiere PCI II               (arnone@primenet.com)
  518. Baby AT, Neptune
  519. Chipset
  520.  
  521. Intel Plato 90       RZ-1000  Adrian Teo
  522.                               (adriant@singnet.com.sg)
  523.  
  524.                               Alain Rassel
  525.                               (Alain.Rassel@restena.lu)
  526.  
  527.                               Chris Norman
  528.                               (cnorman@oboe.aix.calpoly.edu)
  529.  
  530.                               Clif Purkiser Intel Corp
  531.                               (support@cs.intel.com)
  532.  
  533.                               Kevin Chua
  534.                               (chua@server.uwindsor.ca)
  535.  
  536.                               Kevin T. Van Maren
  537.                               (vanmaren@cs.utah.edu)
  538.  
  539.                               Kim Hvarre
  540.                               (kims@crash.ping.dk)
  541.  
  542.                               Martin Kogelbauer
  543.                               (e8826847@student.tuwien.ac.at
  544.                               )
  545.  
  546.                               Rick Nelson
  547.                               (rnelson2@ccmail.unl.edu)
  548.  
  549.                               Richard Techmanski
  550.                               (richt@netcom.com)
  551.  
  552. Intel Premiere       RZ-1000  Clif Purkiser Intel Corp
  553.                               (support@cs.intel.com)
  554.  
  555. Intel Premiere LPX   CMD-640  Clif Purkiser Intel Corp
  556.                               (support@cs.intel.com)
  557.  
  558. Intel Premiere MM    CMD-640  Clif Purkiser Intel Corp
  559.                               (support@cs.intel.com)
  560.  
  561. Intel Robin LC       CMD-640  Clif Purkiser Intel Corp
  562.                               (support@cs.intel.com)
  563.  
  564. Knowledgebase P90    CMD-640  Andy Longton
  565. laptop                        (alongton@clark.net)
  566.  
  567. Micron P5-90         CMD-640  Primary fails, secondary is
  568.                               OK.
  569.  
  570.                               Eric Johnson
  571.                               (johnson@scripps.edu)
  572.  
  573.                               Jim Short
  574.                               (jdshort@primenet.com)
  575.  
  576.                               Mike Coplien
  577.                               (kcoplien@facstaff.wisc.edu)
  578.  
  579. Micronics M54Pi      CMD-640  Adam Haar
  580.                               (s9406709@yallara.cs.rmit.edu.
  581.                               au)
  582.  
  583. Midwest Micro P90    CMD-640  (412d25$e8j@clarknet.clark.net
  584.                               )
  585.  
  586. NEC Image P90        CMD-640  Mike Coplien
  587.                               (kcoplien@facstaff.wisc.edu)
  588.  
  589. Packard Bell Legend  CMD-640  James Treworgy
  590. 100CD                         (jamie@access.digex.net)
  591.  
  592. PCI-EIDE local       CMD-640  (whelk@ios.com)
  593. clone, Phoenix BIOS
  594. 4.04, ALI chipset
  595.  
  596. Quantex P5/90 PM-2   RZ-1000  Jay Schamus
  597.                               (jaylord@rcinet.com)
  598.  
  599. Soyo SY-4SA2 486     ?        Jeffrey Hurwit
  600. prior to B5                   (jhurwit@netcom.com)
  601.  
  602. Unknown 486 DX       SMC3765  Eric Stephen Mountain
  603.                      0        (esm1@oak70.doc.ic.ac.uk )
  604.  
  605. Unknown 90 MHz       ?        Andreas
  606.                               (abenamou@galaxy.csc.calpoly.e
  607.                               du)
  608.  
  609.                               Carol Lim (law30185@nus.sg)
  610.  
  611. Viglen P90 (Intel    RZ-1000  Phil Buckley
  612. Plato)                        (phil@starbug.swstyle.co.uk)
  613.  
  614. Vobis                RZ-1000  Thomas Wagner
  615.                               (twagner@bix.com)
  616.  
  617. Vobis 4886DX2-66     CMD-640  Guy Kapteijns
  618.                               (W.Kapteijns@kub.nl)
  619.  
  620. Zenon P90            RZ-1000  Aria Novianto
  621.                               (novianap@cs.purdue.edu)
  622.  
  623. ZEOS Pantera         RZ-1000  Paul Whitelock
  624.                               (paulw9DDFL3r.DDI@netcom.com)
  625.  
  626.  
  627.  
  628.  
  629. KNOWN GOOD MOTHERBOARDS
  630.  
  631. The following motherboards have been tested with EIDEtest or
  632. CDtest and found to be ok. Not to worry, there are many more
  633. good boards than I have listed here:
  634.  
  635. Motherboard      Chip    Reporters
  636.  
  637. Arsys P200-PCI   Triton  Robert Aboud
  638.                  /sis    (raboud@pacific.telebyte.c
  639.                          om)
  640.  
  641. ASUSTek PCI/I-   Triton  Roedy Green
  642. P54TP4                   (Roedy@bix.com)
  643.  
  644. Dell Dimension   ?       Note: older versions of
  645. XPS P90c                 this board were flawed.
  646.  
  647.                          Dave Nuttall
  648.                          (dnuttall@texas.net)
  649.  
  650. Intel Zappa      Triton  Ron McGlade
  651.                          (ronmc@primenet.com)
  652.  
  653. Micronics 486    ?       Bob Meredith
  654. VLB                      (meredith@interactive.net)
  655.  
  656. Seanix           Opti    Bill Unruh
  657.                  Viper   (unruh@physics.ubc.ca)
  658.  
  659. Soyo SY-4SA2     SYS     Jeffrey Hurwit
  660. 486/B5                   (jhurwit@netcom.com)
  661.  
  662.  
  663.  
  664.  
  665. WHAT CAN YOU DO IF YOU HAVE A FLAW?
  666.  
  667.  1)  Pester the manufacturer. Unfortunately, the EIDE
  668.    controller chips are soldered in. The only way to repair a
  669.    flaw is to replace the whole motherboard, recycling the
  670.    socketed chips -- the CPU, DRAM and SRAM cache. It would be
  671.    very expensive for computer and motherboard manufacturers to
  672.    fix a flaw.
  673.    After a month of stonewalling, Dell has announced it will
  674.    offer a BIOS upgrade to turn off the prefetch buffers.
  675.    According to lovergin@ens.lifl.fr, one retailer, La Cle
  676.    Informatique, in France is offering to replace the defective
  677.    Vobis motherboards it sold.
  678.    You can contact Dell at support@us.dell.com or (800) 624-
  679.    9896.
  680.    Intel is now acknowledging the problem. For a short while,
  681.    Intel offered to replace defective motherboards, then they
  682.    reneged. You can contact them at support@cs.intel.com or
  683.    call their tech support line (800) 628-8686. Select options
  684.    1-3-1. You can find international contact numbers at:
  685.    http://www.intel.com/intel/intelis/contact.html.
  686.    You can call ASUSTeK at (408) 956-9077.
  687.    Call PC-Tech at (612) 345-4555.
  688.    Call CMD Technology at (714) 454-0800, (800) 426-3832 or
  689.    (714) 455-1656 FAX.
  690.  
  691.  2)  Buy a new unpopulated Triton PCI motherboard and
  692.   recycle the CPU, DRAM and SRAM cache chips from the old
  693.   motherboard. Unfortunately, the Triton chipset has design
  694.   shortcuts that hamper performance in simultaneous I/O
  695.   situations. At least they don't corrupt data.
  696.  
  697. 3)  Run the controller in degraded mode. Some BIOSes have a
  698.   feature disable the EIDE prefetch buffer. Vendors may offer
  699.   a BIOS upgrade to allow you to manually disable prefetch.
  700.   The BIOS may also turn it off automatically if either of the
  701.   defective chips is present. This will bypass both RZ-1000
  702.   flaws and two of the five CMD-640 flaws. Art Scott
  703.   (scotta@pilot.msu.edu) suggests that you can sometimes tweak
  704.   the performance of the RZ-1000 back up by configuring the
  705.   setting in advanced BIOS for the maximum number of cycles
  706.   that a PCI device can hold onto the PCI bus before the next
  707.   board gets a turn from 66 to 33.
  708.  
  709. 4)  Buy a PCI EIDE paddleboard controller such as the DTC
  710.   2130S, the Tekram 290N/290S, the Promise 2300+ or the
  711.   BusLogic BT-910 to replace the one on the motherboard. You
  712.   must disable the EIDE controller on the motherboard. This
  713.   fix will waste one of your precious slots. Be careful. You
  714.   could be leaping out of the RZ-1000 frying pan into the CMD-
  715.   640 fire since paddleboards often use the CMD-640.
  716.  
  717. 5)  Buy a SCSI hard disk and CD-ROM, and avoid using the
  718.   EIDE ports entirely. Under OS/2 and Linux, SCSI gives better
  719.   performance, but costs more. DOS, Windows, Windows For
  720.   WorkGroups and Windows-95 are unable to exploit the advanced 
  721.   features of SCSI, but at least avoid the EIDE flaws when you
  722.   go pure SCSI.
  723.  
  724.  6)  Find a software work-around. There are fixes for Warp
  725.   to bypass all the flaws in the RZ-1000 and CMD-640. Fixpack
  726.   10 is the first fixpack to bypass the flaws. Now that Intel
  727.   and IBM have finally revealed the technical details, all the
  728.   operating system writers can patch their EIDE drivers to
  729.   bypass the flaws. There are also fixes for NT 3.1 and 3.5.
  730.   See below for details.
  731.  
  732.  7)  Get a BIOS upgrade. For DOS, DESQview, and Windows 3.1,
  733.   to bypass the flaws you may need a new BIOS -- an EPROM
  734.   chip. If you have a flash BIOS, you can update it simply by
  735.   downloading a file. Most BIOSes already have code to bypass
  736.   the flaws for DOS, DESQview and Windows. However, more
  737.   advanced operating systems bypass the BIOS, so even a smart
  738.   BIOS will not protect you. However, the BIOS CMOS settings
  739.   may allow you to disable prefetch, which also protects you
  740.   even in true multitasking operating systems.
  741.  
  742.  8)  Cut the trace. Cut the trace on the motherboard from
  743.   the floppy changeline to the EIDE controller. However this
  744.   just bypasses one of the CMD-640's five flaws and one of the
  745.   RZ-1000's two flaws.
  746.  
  747. 9)  Use the Secondary EIDE Controller. Some motherboards
  748.   such as the Micron P5-90 M54Pi-N 11P use different kinds of
  749.   controller on the primary and secondary EIDE ports. The
  750.   primary may be flawed, but the secondary OK.
  751.   Whatever method you use to bypass the flaws, retest with
  752.   EIDEtest and CDTest afterwards to be sure your fix worked
  753.   and you caught all the problems.
  754.  
  755.  
  756. CLEANING UP THE MESS
  757.  
  758. Once you have bypassed the flaws, you can start working the
  759. problem of cleaning up your files.
  760.  
  761. The first thing to do is to re-install your operating system
  762. and all your application programs. This will replace any
  763. damaged EXE and DLL files.
  764.  
  765. Catching errors in your data files is more difficult. Keep
  766. your eyes peeled for any improbable spreadsheet results. You
  767. may have to hire a programmer to write you some comb
  768. programs to sniff through your databases, looking for
  769. suspicious values.
  770.  
  771. If you routinely use the verify feature of Lotus Magellan,
  772. it can detect changes to files that should not have changed.
  773. This may help you uncover some of the damage. The flaws are
  774. not polite enough to redate the files they corrupt.
  775.  
  776. If you have backups from before the time you bought the
  777. faulty machine, you can restore them and re-key everything.
  778.  
  779. Most people will not be so fortunate. All their backups will
  780. also be corrupt.
  781.  
  782. Most people with flaws will just have to put up with random
  783. errors dotting their data files ever after.
  784.  
  785.  
  786. OPERATING SYSTEM SUMMARY
  787.  
  788. Operating System   Work Around
  789.  
  790. Netware            - No problems reported.
  791. Unixware 1.1
  792. NEXTSTEP
  793. Banyan
  794. Solaris 2.4+
  795. SCO Unix 3.1+
  796. Windows-95
  797.  
  798. DOS                - No problems reported so far. If you do
  799. DESQview           have trouble:
  800. Windows 3.1        - Turn off EIDE prefetch in CMOS
  801.                    settings.
  802.                    - Upgrade BIOS chip.
  803.                    - Turn off simultaneous disk/floppy/tape
  804.                    I/O in your backup programs.
  805.  
  806. Windows For        - Turn off 32 disk access mode.
  807. WorkGroups         - Turn off EIDE prefetch in CMOS
  808.                    settings.
  809.                    - Upgrade BIOS chip.
  810.                    - Turn off simultaneous disk/floppy/tape
  811.                    I/O in your backup programs.
  812.  
  813. Windows NT 3.1     - Turn off EIDE prefetch in CMOS
  814.                    settings.
  815.                    - Apply ATDISK.SYS fix.
  816.  
  817. Windows NT 3.5     - Turn off EIDE prefetch in CMOS
  818.                    settings.
  819.                    - Apply the 640XNT35.ZIP fix.
  820.  
  821. OS/2 2.1           - Disable prefetch buffer in CMOS
  822.                    settings.
  823.                    - Load the IBMINT13.I13 driver instead
  824.                    of the IBM1S506.ADD driver. This trick
  825.                    will only work if your BIOS has flaw
  826.                    bypass code. It will be slow.
  827.                    - Upgrade to Warp
  828.  
  829. OS/2 Warp 3        - Apply Fixpack 10, it contains all the
  830.                    special fixes.
  831.  
  832.                    If for some reason, you are unwilling to
  833.                    apply Fixpack 10, you can do the
  834.                    following:
  835.                    - Disable prefetch buffer in CMOS
  836.                    settings.
  837.                    - Apply the RZ-1000 portion of
  838.                    pj19409.zip if you have the RZ-1000.
  839.                    - Apply the CMD portion of pj19409.zip
  840.                    including IBMIDECD.FLT if you have the
  841.                    CMD-640.
  842.                    - If that does not work, try
  843.                    basedev=CMD640x.add /16BIT.
  844.                    - In a pinch, if you cannot do either of
  845.                    the first two things, add a line to
  846.                    config.sys BASEDEV=IBMINT13.I13 and
  847.                    remove the line BASDEV=IBM1S506.SYS. The
  848.                    IBMINTI3.I13 Device driver lives in
  849.                    C:\OS2\BOOT, and on the first install
  850.                    diskette, and the on the CDROM in
  851.                    \OS2IMAGE\DISK_1. This trick will work
  852.                    only if your BIOS has flaw-bypass code.
  853.                    It will be slow.
  854.  
  855. Linux              - Disable prefetch buffer in CMOS
  856.                    settings.
  857.                    - To bypass the CMD-640 flaws use the
  858.                    boot time kernel parameter:
  859.                    hda=serialize.
  860.                    - To bypass the prefetch flaws, use the
  861.                    default settings to suppress interrupts
  862.                    during I/O on the external Hard Disk
  863.                    Parameter utility hdparm..
  864.  
  865.  
  866. REPORTING YOUR FINDINGS
  867.  
  868. Whether or not you find any flaws, please email me at
  869. Roedy@bix.com or post the following information in the
  870. Internet newsgroup comp.os.os2.bugs:
  871.  
  872. 1)   Test results. (I would like to hear about both machines
  873.     with and without flaws.)
  874.  
  875. 2)   Brand and model of your motherboard.
  876.  
  877. 3)   Brand and model of your entire system.
  878.  
  879. 4)   Which chip did you find, the RZ-1000, the CMD-640, the
  880.   SMC 37650? What did SYSINFO 3.02 report about your EIDE
  881.   controller chip?
  882.  
  883. 5)   Have you noticed data file corruption?
  884.  
  885. 6)   Which tests and versions did you use? (IOtest,
  886.   EIDEtest, CDtest, RZtest, CtrlTest or visual inspection)
  887.  
  888. 7)   What activities did you run in the background during
  889.   the test?
  890.  
  891. 8)   Which operating system and version you used to run the
  892.   test (e.g. Warp Connect blue spine)
  893.  
  894. 9)   Which fixpacks and patches did you applied before
  895.   running the test?
  896.  
  897. 10)  Brand and model of EIDE hard disk
  898.  
  899. 11)  Brand and model of EIDE CD-ROM
  900.  
  901. 12)  Markings on the suspect chip, e.g., "RZ-1000BP", "CMD
  902.   PCIO640B", "SMC 37650".
  903.  
  904. 13)  Vendor's name
  905.  
  906. 14)  Vendor's response on informing him of your problem.
  907.  
  908. WHOSE FAULT IS IT?
  909.  
  910. The wags will have fun tormenting Intel for using the flawed
  911. RZ-1000 and CMD-640 in its motherboard designs, even though
  912. Intel did not manufacture either of the two faulty chips.
  913. Intel is not the only company to manufacture motherboards
  914. with the faulty chips, but Intel will bear the brunt of the
  915. bad publicity.
  916.  
  917. PC-Tech manufactured the faulty RZ-1000 EIDE controller chip
  918. used in many PCI motherboards. PC-Tech is a subsidiary of
  919. ZEOS, the clonemaker. In turn Micron Electronics owns ZEOS.
  920. PC-Tech has offices just down the street from Zeos in
  921. Minnesota. Intel bought the chips from PC-Tech, and in turn
  922. many clone makers bought motherboards from Intel. Other
  923. motherboard manufacturers also used the faulty chips. In a
  924. similar way Intel and other companies also used the CMD-640
  925. chip from the CMD Technology Corporation of Irvine
  926. California.
  927.  
  928. PC-Tech, Intel and the clone makers all failed to test their
  929. designs properly. The software makers did not test their
  930. software on enough machines to show up the problem before
  931. releasing it.
  932.  
  933. Even worse, in some motherboard designs, Intel used the CMD-
  934. 640 chip. This goof was inexcusable, since the chip, by
  935. deliberate design, is incapable of simultaneous I/O.
  936.  
  937. How did the flawed CMD-640 chip and the RZ-1000 slip through
  938. Quality Assurance testing? My guess is no one did real world
  939. testing; technicians only tested under laboratory conditions
  940. using only simple operating systems like DOS. They might
  941. have ignored flaws that happened only sporadically, blaming
  942. it on a faulty chip rather than a faulty design. It is very
  943. hard to catch a flaw that only manifests rarely.
  944.  
  945. CMD, PC-Tech, Intel, and Microsoft have known about how to
  946. bypass these problems for quite some time. IBM was aware
  947. there was a problem but was unaware of the solution. For
  948. obvious reasons, these companies were reluctant to inform
  949. the public of the danger of the ongoing subtle corruption.
  950.  
  951. No one who understood the RZ-1000 and CMD-640 flaws
  952. publicised their findings. If PC-TECH, Intel and Microsoft
  953. had not been so secretive, they could have averted the
  954. damage. Perhaps they were silent because the flaws primarily
  955. hurt the customers of competitor, IBM.
  956.  
  957. The collective damage done by withholding information about
  958. the flaws is huge, certainly many millions of dollars for
  959. those large companies whose backups are corrupt as well. It
  960. will be interesting to see if anyone launches a damage
  961. lawsuit against CMD, PC-Tech, Intel or Microsoft. If they
  962. do, it might make both hardware and software makers more
  963. careful about releasing improperly tested products.
  964.  
  965. IBM is not totally innocent either. According to
  966. Massimiliano Vispi (massiv@mix.it), on June 17, 1994, IBM
  967. posted a document:
  968. http://ps.boulder.ibm.com/pbin-usa-
  969. ps/pub_huic_getrec.pl?DVantero.swm.boulder.ibm.com+DBos2+DA2
  970. 2398+ST"H085835"+USPublic
  971. that stated:
  972.  
  973.      "Another case has been where the PCTech chip RZ-
  974.      1000 used for IDE operations on the PCI bus is in
  975.      use (PJ15378). On Intel Pentium motherboards with
  976.      PCI/IDE on board slot, data is sometimes lost.
  977.      This is a hardware error. This is PJ15378."
  978.  
  979. Sam Detweiler of IBM explained that this referred only to
  980. the trailing 2 byte loss RZ-1000 problem. IBM was not aware
  981. of the concurrent floppy problem with prefetch at that time.
  982.  
  983. Discussions with Intel and PC-Tech lead IBM to believe that
  984. re-writing the interrupt handler to avoid reading the IDE
  985. status register recursively would solve the problem. PC-Tech
  986. never did explain the precise failure mechanism.
  987.  
  988. IBM says the CMD-640 problem also appeared in October 1994
  989. with the Vobis systems. CMD did not inform IBM of the
  990. problem.
  991.  
  992. Prefetch also affected the CMD chips (640, 640A and 640B).
  993. CMD built their own driver based on IBM code to handle the
  994. serialisation problem. They did not fix the prefetch problem
  995. in their driver so it appears they too were unaware of it at
  996. this time.
  997.  
  998. There is potential here for some massive lawsuits. No wonder
  999. the companies who knew about the flaws have been so tight-
  1000. lipped. Think of the damage if Boeing or GM had its plans
  1001. for coming products stored on flawed machines. Literally,
  1002. these flaws could cause plane crashes.
  1003.  
  1004.  
  1005. INTEL'S SPIN
  1006.  
  1007. There are three levels of "Intel Inside".
  1008.  
  1009. 1)   Weak. Your motherboard has an Intel CPU but a support
  1010.   chipset from another manufacturer.
  1011.  
  1012. 2)   Medium. Your motherboard has an Intel CPU and Intel
  1013.   support chipset such as the Neptune or Triton, but some
  1014.   other company built the BIOS and motherboard.
  1015.  
  1016. 3)   Strong. Your motherboard has an Intel CPU, Intel
  1017.   support chipset, Intel motherboard and Intel BIOS.
  1018.  
  1019. Intel literature on the RZ-1000 and CMD-640 only refers to
  1020. (3). Intel cannot very well speak for (1) and (2) where
  1021. the PCI EIDE controller design was out of their control,
  1022. even though these machines bear the "Intel Inside" logo.
  1023.  
  1024. Intel does not make this distinction clear in their
  1025. literature.
  1026.  
  1027. According to Intel, "This problem is a consequence of the RZ-
  1028. 1000's inability to fully compensate for all the
  1029. implications of running an IDE hard disk as an extension of
  1030. the PCI bus, instead of running as an extension of the AT
  1031. bus which it was originally designed to do."
  1032.  
  1033. Intel would have us believe the problems are flaws per se,
  1034. but rather a limitation that the programmers forgot to take
  1035. into consideration.
  1036.  
  1037. The truth is grey. UART chips have similar flaws.
  1038. Programmers have gradually learned to code around them. We
  1039. don't insist that all COM port hardware be recalled. We now
  1040. tend to blame a programmer if he does not bypass the known
  1041. UART flaws.
  1042.  
  1043. Given that software work-arounds are now possible, the
  1044. primary blame shifts for any perpetuation of the problem to
  1045. the software authors.
  1046.  
  1047. However, there are many other EIDE chip designs that do not
  1048. have this "limitation". Since the chip are supposedly
  1049. generic implementations of the ATA interface standard, I
  1050. cannot so lightly excuse these flaws.
  1051.  
  1052.  
  1053. SPECULATION
  1054.  
  1055. Because setting the flaws right would be so expensive, I
  1056. suspect that clone makers and motherboard manufacturers will
  1057. continue to refuse to replace the defective equipment. At
  1058. best they may offer BIOS upgrades to bypass the flaws.
  1059. Microsoft has already added code to Windows-95 to bypass the
  1060. flaws. Clone makers will rely on software vendors to write
  1061. drivers that bypass the flaws for Warp, NT, Linux and the
  1062. various UNIXes.
  1063.  
  1064. Now that the OS/2 fixes are out, the pressure to set things
  1065. right will dwindle. Since DOS, Windows in 16-bit mode,
  1066. Windows-95 are immune, little pressure to correct the
  1067. problem is likely to come from those camps.
  1068.  
  1069. The motherboard manufacturer has five options:
  1070.  
  1071. 1)   Replace the motherboard. Recalls on a mass scale would
  1072.   be extremely costly for the motherboard manufacturers, so
  1073.   you can count on them to fight. ($400 parts + $250 labour)
  1074.  
  1075. 2)   Provide a replacement paddleboard EIDE controller that
  1076.   takes up a PCI slot. ($75)
  1077.  
  1078. 3)   Provide a new BIOS chip that bypasses potential
  1079.   problems for DOS and Windows. The BIOS could also turn off
  1080.   prefetch which would rescue multitasking operating systems
  1081.   that do not use the BIOS for I/O. ($10)
  1082.  
  1083. 4)   Tell the users to upgrade to software that bypasses the
  1084.   flaws, and to turn off simultaneous disk/tape/floppy I/O in
  1085.   any backup software run under DOS, DESQview or Windows.
  1086.   Users won't like the performance hit, however. ($0)
  1087.  
  1088. 5)   Stonewall and refuse to even acknowledge the problem.
  1089.   This will be more difficult now that Intel and Dell have
  1090.   publicly admitted the problem. ($0)
  1091.  
  1092. Intel has already set the precedent by offering to replace
  1093. defective Pentiums, even though software can bypass its
  1094. divide flaw. The RZ-1000 flaws are far more serious, and the
  1095. CMD-640 flaws are even more serious still.
  1096.  
  1097. Keeping this under wraps is going to be hard for the clone
  1098. builders. Brooke Crothers of Infoworld did several stories
  1099. based on my compilations. I have been in contact with Jerry
  1100. Pournelle of Byte. I sent email to John Dvorak. Even Dean
  1101. Takahashi of the San Jose Mercury Daily News did story. In
  1102. the November 1995 editions, a 1000-word abridged version of
  1103. this essay appeared across Canada in The Computer Paper
  1104. and Toronto Computes. The stonewall is coming tumbling down.
  1105. As one individual pointed out, I read your postings on the
  1106. Internet, and see them the next day quoted in my daily
  1107. newspaper.
  1108.  
  1109.  
  1110. WHAT ARE THE FLAWS?
  1111.  
  1112. IBM Confirmed the RZ-1000 has two different flaws:
  1113.  
  1114. 1)   In prefetch mode, multi-sector reads often fail.
  1115.  
  1116. 2)   The chip erroneously responds to floppy status commands
  1117.   and corrupts hard disk or CD-ROM I/O in the process.
  1118.  
  1119. IBM confirmed the CMD-640 has five different flaws:
  1120.  
  1121. 1)   It has the same prefetch problem as the RZ-1000.
  1122.  
  1123. 2)   It has the same floppy status problem as the RZ-1000.
  1124.  
  1125. 3)   It does not support simultaneous I/O on the primary and
  1126.   secondary EIDE ports.
  1127.  
  1128. 4)   Confusion over legacy and PCI mode.
  1129.  
  1130. 5)   Does not support 32-bit writes.
  1131.  
  1132. THE FLAWS UNDER A MICROSCOPE
  1133.  
  1134. After the manner of Ionesco, Roedy Green said, "All great
  1135. programmers are paranoid." Programmers have to anticipate
  1136. problems that could happen only once in a trillion machine
  1137. cycles since such problems would still show up on average
  1138. every three hours. EIDE problems sometimes go days without
  1139. manifesting. Sometimes they show up within seconds,
  1140. depending on the unrelated I/O activity in the machine.
  1141.  
  1142. I have read about ten conflicting explanations from
  1143. authorities on the cause of the problems. Much of the
  1144. confusion comes because there are so many different flaws --
  1145. all generating similar symptoms. I based the following
  1146. explanations on postings from Sam Detweiler of IBM's Warp
  1147. Device Driver section (sdetweil@vnet.ibm.com).
  1148.  
  1149. The RZ-1000 and CMD-640 both have the prefetch flaw and the
  1150. floppy status flaw. The CMD-640 has three additional flaws.
  1151. I will focus on the three most important.
  1152.  
  1153.  
  1154. FLAW 1: PREFETCH BUFFER FLAW
  1155.  
  1156. The RZ-1000 and CMD-640 both have the prefetch flaw.
  1157.  
  1158. Data moves from the hard disk to RAM via a bit bucket
  1159. brigade. The RZ-1000 grabs data 16 bits at a time from a
  1160. buffer in the integrated controller in the hard disk, and
  1161. hands it off 32 bits at a time off to the PCI bus. The CPU
  1162. sits in a tight loop grabbing data from PCI bus and storing
  1163. it in RAM. In prefetch mode, the RZ-1000 keeps ahead of the
  1164. CPU, requesting two 16-bit chunks from the hard disk, in
  1165. order to have a 32-bit chunk ready when the CPU asks.
  1166.  
  1167. When you disable the prefetch buffer, you turn off the
  1168. parallelism and run in a degraded lock-step mode. In
  1169. degraded mode, the RZ-1000 waits until the CPU asks for a 32-
  1170. bit chunk. Then it puts the CPU on hold while it asks the
  1171. hard disk for two 16-bit chunks. It glues them together, and
  1172. puts them on the PCI bus and allows the CPU to continue.
  1173.  
  1174. I advise all but the most dedicated technophiles to skip the
  1175. next paragraph.
  1176.  
  1177. If the RZ-1000 is running with prefetch enabled, it
  1178. erroneously considers a sector read complete as soon as it
  1179. has grabbed the last 16 bits from the hard disk and stuffed
  1180. it into the prefetch FIFO buffer. It should not consider it
  1181. complete until the CPU has stuffed all the data into RAM.
  1182. The RZ-1000 then starts to read the next sector. If the
  1183. current read operation is interrupted, or delayed by
  1184. simultaneous DMA from some unrelated device, before the last
  1185. two bytes are read from the FIFO, and the next sector is
  1186. prefetched into the FIFO before the current data transfer
  1187. completes, then the chip will erroneously signal yet another
  1188. Data Available Interrupt. Because OS/2 has already signalled
  1189. EOI (End Of Interrupt) to the PIC (Programmable Interrupt
  1190. Controller) and enabled interrupts, it recurses into the
  1191. disk driver interrupt handler. The driver then reads the
  1192. status register. Unfortunately, because of a cheap design
  1193. shortcut, the FIFO is used both for data and status. The CPU
  1194. reads the data in front of the status as if it were the
  1195. status. This causes the interrupted data transfer to later
  1196. read the following status as if it were data, resulting in
  1197. corruption. Both the RZ-1000 and CMD-640 fail in exactly the
  1198. same way.
  1199.  
  1200. There are two software techniques to bypass this flaw:
  1201.  
  1202. 1)   Never schedule more than one I/O at a time. Use strict
  1203.   polled mode with no interrupts. Turn off all unrelated
  1204.   interrupts during I/O. This is the DOS/Windows approach. The
  1205.   disadvantage is poor performance and possible lost incoming
  1206.   modem characters.
  1207.  
  1208. 2)   Turn off the prefetch buffer. According to Intel and
  1209.   IBM, in a lightly loaded system, there is sufficient spare
  1210.   capacity on the PCI bus so running in degraded mode only
  1211.   slows the disk down by 1%. However, programs making
  1212.   extensive use of the PCI bus such as LANs or video bit-map
  1213.   painting will also slow down. Both Intel and IBM tell us
  1214.   that turning off prefetch to bypass the flaw has negligible
  1215.   effect on performance. Yet in the Plato BIOS rev 12, Intel
  1216.   says that enabling the prefetch buffers will "significantly
  1217.   increase PCI IDE Hard Disk performance." They can't have it
  1218.   both ways.
  1219.  
  1220. FLAW 2: FLOPPY STATUS
  1221.  
  1222. The RZ-1000 and CMD-640 both have the floppy status flaw.
  1223.  
  1224. This flaw is the result of an incredible chain of blunders.
  1225.  
  1226. The original MFM (the predecessor to IDE) interface design
  1227. blunder was using different bits of the same I/O port, 3F7,
  1228. for two unrelated purposes, detecting the floppy changeline
  1229. and reporting hard disk status. Modern EIDE controllers are
  1230. no longer supposed to do this, but some chips carry on in
  1231. the old tradition and provide legacy logic. Motherboard
  1232. manufacturers then often blunder by attaching the floppy
  1233. changeline to the EIDE controller. This way both the EIDE
  1234. controller and the floppy controller think they are in
  1235. charge of reporting floppy changeline status. On top of
  1236. that, the designers of both the RZ-1000 and CMD-640 chips
  1237. both blundered by trying to save a little silicon by using
  1238. the same registers to store both hard disk status and data.
  1239.  
  1240. For the insatiably curious here is precisely how the
  1241. corruption occurs. Simultaneously I/Os to both the hard disk
  1242. are floppy disk are running. The floppy controller generates
  1243. an I/O complete interrupt. The floppy driver then check the
  1244. floppy status. Part of reading floppy status is checking the
  1245. changeline bit -- contained in the ambiguous port 3F7.
  1246.  
  1247. If the motherboard manufacturer goofed and hooked up the
  1248. floppy changeline to the EIDE controller, the RZ-1000
  1249. erroneously responds to the floppy status request. It is in
  1250. charge of the hard disk, not the floppy. It is the floppy
  1251. controller's job is to respond. The RZ-1000 feeds two data
  1252. bytes from its FIFO out as floppy status. These data were
  1253. was supposed to go to the hard disk driver. Thus the chip
  1254. loses two bytes from the hard disk transfer, corrupting
  1255. data. Turning off prefetch also solves this problem. Unlike
  1256. the first flaw, only simultaneous floppy I/O start can
  1257. trigger this problem. Simultaneous I/O of any kind can
  1258. trigger the first flaw.
  1259.  
  1260.  
  1261. FLAW 3: NO SIMULTANEOUS I/O
  1262.  
  1263. Only the CMD-640 has this flaw. The CMD-640 can't do more
  1264. than one I/O at a time. This flaw was so obvious everyone
  1265. found out about it long ago. All EIDE controllers (even
  1266. fully functioning ones) cannot run master and slave
  1267. simultaneously. However, two separate EIDE controllers are
  1268. supposed to allow primary and secondary channels to run at
  1269. once. The CMD-640 has dual controllers on one chip. However,
  1270. because of a lack of two register sets, the primary and
  1271. secondary channels will not work simultaneously unlike every
  1272. other design. For example, you can't run your EIDE hard disk
  1273. and EIDE CD-ROM at the same time.
  1274.  
  1275. Simultaneous I/O speed is the reason we put two EIDE devices
  1276. on separate channels, both as masters, rather than making
  1277. one a master and one a slave on the same channel.
  1278.  
  1279. IBM has a bypass for this blunder. When it detects a CMD-
  1280. 640, Warp never schedules more than one I/O at a time when
  1281. the CMD-640 is active, reducing the operating system to DOS-
  1282. like performance. Independent experiments show the
  1283. degradation from using the CMD fix is 15 to 50%.
  1284.  
  1285.  
  1286. BACKGROUND
  1287.  
  1288. If you read the literature on this problem, you will see
  1289. various daunting technical terms. Here is a rough
  1290. explanation.
  1291.  
  1292. There are six kinds of I/O used in PCs.
  1293.  
  1294. 1)   PIO - Programmed I/O. The CPU spoon-feeds each byte to
  1295.    the I/O port. The port can usually accept data as fast as
  1296.    the CPU can feed it. Typical IDE drives work this way under
  1297.    DOS. For slower devices, the CPU polls the status to see if
  1298.    the device is ready for yet another byte.
  1299.  
  1300. 2)   Scheduled I/O. This is a variant of PIO where the
  1301.   operating system feeds the I/O device some bytes, then
  1302.   calculates how long it should take for the I/O device to
  1303.   digest them, then it goes away for a while to do something
  1304.   else, then it comes back when it figures the I/O should be
  1305.   complete, and feeds the device a few more bytes. This is how
  1306.   Warp usually controls parallel port printers.
  1307.  
  1308. 3)   Interrupt I/O. Every time the port is ready to eat
  1309.   another byte, it raises an interrupt and the CPU feeds it
  1310.   some more. This is the typical way COM ports work and how
  1311.   Warp uses printers with the /IRQ option. Warp EIDE drivers
  1312.   combine methods (1) and (2). The hard disk interrupts when
  1313.   it has completed the read into its on-board buffer. Then the
  1314.   CPU fetches data out of the buffer with PIO mode.
  1315.  
  1316. 4)   Third party DMA. The DMA controller on the motherboard
  1317.   copies data from RAM to the port and generates an interrupt
  1318.   when it is done with a block. Floppy drives and inexpensive
  1319.   mag tape backup drives use this method. Because of the
  1320.   unfortunate original AT design compromises, this method is
  1321.   exceedingly slow. Third Party DMA is never used for PCI bus
  1322.   devices though it is still used for ISA or motherboard-based
  1323.   floppy controllers on PCI motherboards.
  1324.  
  1325. 5)   First party DMA, sometimes called Bus Mastering. A DMA
  1326.   controller on the device copies data from RAM to the port
  1327.   and generates an interrupt when done High end SCSI cards --
  1328.   such as the Adaptec 2940 or 2940W use this ultimate way to
  1329.   fly.
  1330.  
  1331. 6)   Memory mapped I/O. The CPU copies data to a magic
  1332.   region of RAM which is actually on the I/O device. LAN cards
  1333.   or REGEN VRAM on video cards use this technique.
  1334.   In a true multi-tasking system, such as OS/2, the CPU goes
  1335.   off and works on behalf of applications when the port is
  1336.   busy, and trusts an interrupt to bring it back when the
  1337.   device needs more service. It schedules several I/Os
  1338.   simultaneously. In contrast, DOS and Windows never do more
  1339.   than one I/O at a time. Further, under DOS/Windows the CPU
  1340.   idles while waiting for its single I/O to complete rather
  1341.   than working on applications.
  1342.  
  1343.  
  1344. LEARNING MORE
  1345.  
  1346. You can use the Internet to learn more about this problem.
  1347. If you do not have Internet access, I can provide you these
  1348. files on diskette. See below for details. When accessing
  1349. files on the Internet generally you must use lower case.
  1350.  
  1351.  
  1352. TEST PROGRAMS
  1353.  
  1354. Roedy Green's EIDEtest and CDtest programs for DOS,
  1355. DESQview, Windows, Windows For WorkGroups, Windows 95, NT,
  1356. OS/2 and Warp. They ensure your hard disk and CDROM will
  1357. function without interference from background I/O activity.
  1358. These indirectly detect the flawed RZ-1000 and CMD-640
  1359. chips. By the time you read this, I may have posted a newer
  1360. version.
  1361.  
  1362.      ftp://garbo.uwasa.fi/pc/diskutil/eidete19.zip
  1363. alternatively
  1364.      ftp://ftp.cdrom.com/.4/os2/incoming/eidete19.zip
  1365. or
  1366.      ftp://ftp.cdrom.com/.4/os2/sysutil/eidete19.zip
  1367.  
  1368. Intel's RZ-1000 and CMD-640 chip detect program. RZtest.exe
  1369. expands to form CtrlTest.exe. Beware! the CtrlTest.Doc
  1370. documentation contains an MSWord macro virus.
  1371.  
  1372.      http://www.intel.com/procs/support/rz1000/index.html
  1373.  
  1374. IOTest from PowerQuest, the makers of Partition Magic, a
  1375.      Warp test for the flaws.
  1376.  
  1377.      http://www.powerquest.com/download/iotest.zip
  1378.  
  1379. Version 3.02 of the self-extracting Warp utility, that
  1380. should be placed in OS2\APPS. SYSIGUI.EXE will emerge.
  1381.  
  1382.      ftp://ftp.software.ibm.com/ps/products/os2/fixes/v3.0wa
  1383.      rp/english-us/sitcsd/sysinfo.exe
  1384.  
  1385.  
  1386. FIXES
  1387.  
  1388. Warp Fixpack 10. This bypasses the flaws for both the RZ-
  1389. 1000 and CMD-640 faulty EIDE chips. It also fixes numerous
  1390. other bugs in Warp. It comes as a set of six files file --
  1391. totalling about 8 MB. Make sure you get it from an official
  1392. IBM CSD site because there are leaked pre-released buggy
  1393. copies floating about the net. Before applying it, verify
  1394. that the readme.1st on the first fixpack disk is dated
  1395. 9/21/95 at 17:40. The package as a whole should be dated
  1396. 9/22/95 or later. This fixpack applies to all versions of
  1397. Warp including Warp Connect. It contains in itself all
  1398. earlier fixpacks. You don't need to apply any previous
  1399. fixpacks first. If you have the CMD-640, it is especially
  1400. important you carefully read the installation instructions.
  1401. You need to manually modify config.sys. DO A COMPLETE BACKUP
  1402. FIRST. Many people are having a variety of troubles with
  1403. Fixpack 10 -- often traced to failure to carefully follow
  1404. the installation instructions, including a COMMIT step.
  1405.  
  1406.  
  1407. ftp://service.boulder.ibm.com/ps/products/os2/fixes/v3.0warp
  1408. /english-us/xr_w010/xr_w010.1dk
  1409.  
  1410. ftp://service.boulder.ibm.com/ps/products/os2/fixes/v3.0warp
  1411. /english-us/xr_w010/xr_w010.2dk
  1412.  
  1413. ftp://service.boulder.ibm.com/ps/products/os2/fixes/v3.0warp
  1414. /english-us/xr_w010/xr_w010.3dk
  1415.  
  1416. ftp://service.boulder.ibm.com/ps/products/os2/fixes/v3.0warp
  1417. /english-us/xr_w010/xr_w010.4dk
  1418.  
  1419. ftp://service.boulder.ibm.com/ps/products/os2/fixes/v3.0warp
  1420. /english-us/xr_w010/xr_w010.5dk
  1421.  
  1422. ftp://service.boulder.ibm.com/ps/products/os2/fixes/v3.0warp
  1423. /english-us/xr_w010/xr_w010.6dk
  1424.  
  1425. alternatively
  1426.  
  1427.  
  1428. ftp://ftp.pcco.ibm.com/pub/corrective_service/xr_w010.1dk
  1429.  
  1430. ftp://ftp.pcco.ibm.com/pub/corrective_service/xr_w010.2dk
  1431.  
  1432. ftp://ftp.pcco.ibm.com/pub/corrective_service/xr_w010.3dk
  1433.  
  1434. ftp://ftp.pcco.ibm.com/pub/corrective_service/xr_w010.4dk
  1435.  
  1436. ftp://ftp.pcco.ibm.com/pub/corrective_service/xr_w010.5dk
  1437.  
  1438. ftp://ftp.pcco.ibm.com/pub/corrective_service/xr_w010.6dk
  1439.  
  1440. WFWIN10.ZIP. It updates the Warp install diskettes (for all
  1441. released versions) to the FixPak 10 level, including the RZ-
  1442. 1000/CMD-640 fixes. However, it does not automatically
  1443. install the CMD-640 files.
  1444.  
  1445.  
  1446. ftp://service.boulder.ibm.com/ps/products/os2/fixes/v3.0warp
  1447. /english-us/wfwin10/wfwin10.zip
  1448.  
  1449. Microsoft Windows NT 3.1 ATDISK.SYS fix for the CMD-640
  1450.      chip:
  1451.  
  1452.      http://www.microsoft.com/KB/softlib/mslfiles/pciatdsk.e
  1453.      xe
  1454.  
  1455. Microsoft Windows NT 3.5 fix for the CMD-640 chip:
  1456.  
  1457.      CMD's BBS at (714) 454-1134. File 640XNT35.ZIP
  1458.  
  1459. If you don't want to install the entire Fixpack 10, you can
  1460. install these Warp bypasses for the RZ-1000 and the CMD
  1461. flaws. Warning. This file has been updated several times
  1462. without changing the name. Make sure you get the most
  1463. recent. The installation instructions are tricky. Follow
  1464. them carefully.
  1465.  
  1466.      ftp://service.boulder.ibm.com/ps/products/os2/fixes/v3.
  1467.      0warp/english-us/pj19409/pj19409.zip
  1468.  
  1469. CMD fixes for various operating systems CMD-640 chip. Expand
  1470.      with PkUnZip -d 640X_USR.403
  1471.  
  1472.      CMD's BBS at (714) 454-1134. File 640X_USR.403
  1473.  
  1474. Warp bypass for the early CMD-640 chip flaws. It has been
  1475. superseded by pj19409.zip. You no longer need to install it
  1476. before pj19409.zip.
  1477.  
  1478.      ftp://ftp-os2.cdrom.com/pub/os2/drivers/cmd640x.zip
  1479.  
  1480.  
  1481. ESSAYS
  1482.  
  1483. Roedy Green's FAQ (Frequently Asked Questions) an unabridged
  1484. copy of this article in both Winword and ASCII format. By
  1485. the time you read this, I may have posted a newer version.
  1486.  
  1487.      ftp://garbo.uwasa.fi/pc/diskutil/eidete19.zip
  1488. alternatively
  1489.      ftp://ftp.cdrom.com/.4/os2/incoming/eidete19.zip
  1490. or
  1491.      ftp://ftp.cdrom.com/.4/os2/sysutil/eidete19.zip
  1492.  
  1493. PowerQuest essay:
  1494.  
  1495.      http://www.powerquest.com/
  1496.  
  1497. Intel's FAQ
  1498.  
  1499.      http://www.intel.com/procs/support/rz1000
  1500.  
  1501. PC-Tech's essay:
  1502.  
  1503.      http://www.mei.micron.com/rz1000/rz1000.txt
  1504.  
  1505. Catch Pat Duffy's (duffy@theory.chem.ubc.ca) essays each
  1506.      Sunday in:
  1507.  
  1508. comp.os.os2.misc, comp.os.os2.setup.misc,
  1509.      comp.os.os2.setup.storage and
  1510.      comp.sys.ibm.pc.hardware.misc
  1511.  
  1512. Check out Pat Duffy's Web site at:
  1513.  
  1514.      http://warp.eecs.berkeley.edu/os2/workbench/work.htm
  1515. and
  1516.      ftp://ftp.netcom.com/pub/ab/abe/
  1517.  
  1518.  
  1519. WHAT IF YOU DON'T HAVE INTERNET ACCESS?
  1520.  
  1521. If you send me $5 (US or Canadian) to cover duplication,
  1522. postage to anywhere in the world, and handling I will send
  1523. you a diskette containing the relevant test programs, fixes,
  1524. Internet postings and essays. Sorry, but for various reasons
  1525. I do not provide this package via EMAIL. See the address
  1526. below.
  1527.  
  1528.  
  1529. CONTACTING THE AUTHOR
  1530.  
  1531. The author, Roedy Green is a computer consultant who prefers
  1532. to work on Forth, C++, Delphi, DOS, OS/2 and Internet Web
  1533. projects.  (604) 685-8412.
  1534.  
  1535. I have been swamped with phone calls and Email from people
  1536. who have not yet read this essay. If you phone to ask a
  1537. question already covered in this essay I may be rather short
  1538. with you. You may be only asking for a few minutes of my
  1539. time free, but it adds up so that I have not been able to
  1540. earn any money for four months.
  1541.  
  1542. Please report any machines with flaws. Send email to:
  1543.  
  1544.      Roedy@bix.com
  1545.  
  1546. or discuss this problem on the Internet newsgroup in:
  1547.  
  1548.      comp.os.os2.bugs.
  1549.  
  1550. You can also write via snail mail:
  1551.  
  1552. Roedy Green
  1553. Canadian Mind Products
  1554. #601 - 1330 Burrard Street
  1555. Vancouver, BC CANADA
  1556. V6Z 2B8
  1557.  
  1558. -30-
  1559.