home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 July / PCpro_2004_07.ISO / docs / memtest / memtest.txt
Encoding:
Text File  |  2003-10-11  |  35.9 KB  |  831 lines

  1.  
  2.   Memtest86 - A Stand-alone Memory Diagnostic
  3.  
  4. Memtest86 is thorough, stand alone memory test for x86 architecture
  5. computers. BIOS based memory tests are only a quick check and often miss
  6. many of the failures that are detected by Memtest86.
  7.  
  8. Memtest86 is released under the terms of the Gnu Public License (GPL)
  9. <http://www.gnu.org/licenses/gpl.html>. Other than the provisions of the
  10. GNU pubic licence (GPL) there are no restrictions for use, private or
  11. commercial.
  12.  
  13. ------------------------------------------------------------------------
  14.  
  15.     * Download <#download0>
  16.           o Memtest86 3.0 Release <#download0>
  17.           o Memtest86 2.9 Release <#download9> 
  18.  
  19.     * Usage <#commands>
  20.           o Online Commands <#commands>
  21.           o Memory Sizing <#size>
  22.           o Error Display <#display>
  23.           o Troubleshooting Memory Errors <#trouble>
  24.           o Execution Time <#timing> 
  25.  
  26.     * Detailed Description <#philo>
  27.           o Memory Testing Philosophy <#philo>
  28.           o Memtest86 Test Algorithms <#algo>
  29.           o Individual Test Descriptions <#details> 
  30.  
  31.     * Problem Reporting - Contact Information <#report>
  32.     * Donations <#donations>
  33.     * Known Problems <#problems>
  34.     * Planned Features List <#feature>
  35.     * Change Log <#change>
  36.     * Acknowledgments <#ack> 
  37.  
  38. ------------------------------------------------------------------------
  39.  
  40.  
  41.       Memtest86 3.0 Release (22/May/2002)
  42.  
  43. Enhancements in v3.0
  44.  
  45.     * Testing of more than 2gb of memory is at last fixed (tested with 6Gb)
  46.     * The infrastructure to poll ecc error reporting chipset regisets,
  47.       and the support has been done for some chipsets.
  48.     * Uses dynamic relocation information records to make itself PIC
  49.       instead of requiring 2 copies of memtest86 in the binary.
  50.     * The serial console code does not do redundant writes to the serial
  51.       port. Very little slow down at 9600 baud.
  52.     * You can press ^l or just l to get a screen refresh, when you are
  53.       connecting and unconnecting a serial cable.
  54.     * Netbooting is working again
  55.     * LinuxBIOS support (To get the memory size)
  56.     * Many bugfixes and code cleanup 
  57.  
  58.     * Download - Linux Memtest86 v3.0 Source and binary Package
  59.       <http://www.memtest86.com/memtest86-3.0.tar.gz>
  60.     * Download - Pre-Compiled Memtest86 v3.0 installable from Windows
  61.       and DOS <http://www.memtest86.com/memt30.zip> 
  62.  
  63.  
  64.       NEW! - ISO images suitable for creating a bootable Memtest86 CDROM
  65.  
  66.     * Download - Memtest86 v3.0 ISO image (zip)
  67.       <http://www.memtest86.com/memtest86-3.0.iso.zip>
  68.     * Download - Memtest86 v3.0 ISO image (gzip)
  69.       <http://www.memtest86.com/memtest86-3.0.iso.gz> 
  70.  
  71.  
  72.       Memtest86 2.9 Release
  73.  
  74. Version 3.0 is the preferred release. The 2.9 release is provided here
  75. as an alternative.
  76.  
  77.     *
  78.       Download - Linux Memtest86 v2.9 Source and binary Package
  79.     * <http://www.memtest86.com/memtest86-2.9.tar.gz> Download -
  80.       Pre-Compiled Memtest86 v2.9 installable from Windows and DOS
  81.       <http://www.memtest86.com/memt29.zip> 
  82.  
  83. Since Memtest86 is a standalone program it does not require any
  84. operating system support for execution. It can be used with any PC
  85. regardless of what operating system, if any, is installed. The test
  86. image may be loaded from a floppy disk or may be loaded via LILO on
  87. Linux systems. Any Unix, Windows or DOS system may be used to create a
  88. boot floppy or bootable CDROM.
  89.  
  90. ------------------------------------------------------------------------
  91.  
  92.  
  93.       Online Commands
  94.  
  95. Memtest86 has a limited number of online commands. Online commands
  96. provide control over cache settings, error report modes, test selection
  97. and test address range. A help bar is displayed at the bottom of the
  98. screen listing the available on-line commands.
  99.  
  100.   Command  Description
  101.  
  102.   ESC   Exits the test and does a warm restart via the BIOS.
  103.  
  104.   c     Enters test configuration menu
  105.         Menu options are:
  106.                1) Cache mode
  107.                2) Test selection
  108.                3) Address Range
  109.                4) Memory Sizing 
  110.                5) Error Summary
  111.                6) Error Report Mode
  112.            7) ECC Mode
  113.                8) Restart Test
  114.                9) Reprint Screen
  115.  
  116.   SP    Set scroll lock (Stops scrolling of error messages)
  117.     Note: Testing is stalled when the scroll lock is
  118.     set and the scroll region is full.
  119.  
  120.   CR    Clear scroll lock (Enables error message scrolling)
  121.     
  122.  
  123. ------------------------------------------------------------------------
  124.  
  125.  
  126.       Memory Sizing
  127.  
  128. The BIOS in modern PC's will often reserve several sections of memory
  129. for it's use and also to communicate information to the operating system
  130. (ie. ACPI tables). It is just as important to test these reserved memory
  131. blocks as it is for the remainder of memory. For proper operation all of
  132. memory needs to function properly regardless of what the eventual use
  133. is. For this reason Memtest86 has been designed to test as much memory
  134. as is possible.
  135.  
  136. However, safely and reliably detecting all of the available memory has
  137. been problematic. Versions of Memtest86 prior to v2.9 would probe to
  138. find where memory is. This works for the vast majority of motherboards
  139. but is not 100% reliable. Sometimes the memory size detection is
  140. incorrect and worse probing the wrong places can in some cases cause the
  141. test to hang or crash.
  142.  
  143. Starting in version 2.9 alternative methods are available for
  144. determining memory size. By default the test attempts to get the memory
  145. size from the BIOS using the "e820" method. With "e820" the BIOS
  146. provides a table of memory segments and identifies what they will be
  147. used for. By default Memtest86 will test all of the ram marked as
  148. available and also the area reserved for the ACPI tables. This is safe
  149. since the test does not use the ACPI tables and the "e820"
  150. specifications state that this memory may be reused after the tables
  151. have been copied. Although this is a safe default some memory will not
  152. be tested.
  153.  
  154. Two additional options are available through online configuration
  155. options. The first option (BIOS-All) also uses the "e820" method to
  156. obtain a memory map. However, when this option is selected all of the
  157. reserved memory segments are tested, regardless of what their intended
  158. use is. The only exception is memory segments that begin above 3gb.
  159. Testing has shown that these segments are typically not safe to test.
  160. The BIOS-All option is more thorough but could be unstable with some
  161. motherboards.
  162.  
  163. The third option for memory sizing is the traditional "Probe" method.
  164. This is a very thorough but not entirely safe method. In the majority of
  165. cases the BIOS-All and Probe methods will return the same memory map.
  166. For older BIOS's that do not support the "e820" method there are two
  167. additional methods (e801 and e88) for getting the memory size from the
  168. BIOS. These methods only provide the amount of extended memory that is
  169. available, not a memory table. When the e801 and e88 methods are used
  170. the BIOS-All option will not be available. The MemMap field on the
  171. display shows what memory size method is in use. Also the RsvdMem field
  172. shows how much memory is reserved and is not being tested.
  173.  
  174. ------------------------------------------------------------------------
  175.  
  176.  
  177.       Error Display
  178.  
  179. Memtest has two options for reporting errors. The default is to report
  180. individual errors. Memtest is also able to create patterns used by the
  181. Linux BadRAM feature. This slick feature allows Linux to avoid bad
  182. memory pages. Details about the BadRAM feature can be found at:
  183. http://home.zonnet.nl/vanrein/badram
  184.  
  185. For individual errors the following information is displayed when a
  186. memory error is detected. An error message is only displayed for errors
  187. with a different address or failing bit pattern. All displayed values
  188. are in hexadecimal.
  189.  
  190.     *Tst:* Test Number
  191.  
  192.     *Failing Address:* Failing memory address
  193.  
  194.     *Good:* Expected data pattern
  195.  
  196.     *Bad:* Failing data pattern
  197.  
  198.     *Err-Bits:* Exclusive or of good and bad data (this shows the
  199.     position of the failing bit(s))
  200.  
  201.     *Count:* Number of consecutive errors with the same address and
  202.     failing bits
  203.  
  204. ------------------------------------------------------------------------
  205.  
  206.  
  207.       Troubleshooting Memory Errors
  208.  
  209. Please be aware that not all errors reported by Memtest86 are due to bad
  210. memory. The test implicitly tests the CPU, L1 and L2 caches as well as
  211. the motherboard. It is impossible for the test to determine what causes
  212. the failure to occur. However, most failures will be due to a problem
  213. with memory. When it is not, the only option is to replace parts until
  214. the failure is corrected.
  215.  
  216. Once a memory error has been detected, determining the failing SIMM/DIMM
  217. module is not a clear cut procedure. With the large number of
  218. motherboard vendors and possible combinations of SIMM slots it would be
  219. difficult if not impossible to assemble complete information about how a
  220. particular error would map to a failing memory module. However, there
  221. are steps that may be taken to determine the failing module. Here are
  222. four techniques that you may wish to use:
  223.  
  224. 1) Removing modules
  225. This is simplest method for isolating a failing modules, but may only be
  226. employed when one or more modules can be removed from the system. By
  227. selectively removing modules from the system and then running the test
  228. you will be able to find the bad modules. Be sure to note exactly which
  229. modules are in the system when the test passes and when the test fails.
  230.  
  231. 2) Rotating modules
  232. When none of the modules can be removed then you may wish to rotate
  233. modules to find the failing one. This technique can only be used if
  234. there are three or more modules in the system. Change the location of
  235. two modules at a time. For example put the module from slot 1 into slot
  236. 2 and put the module from slot 2 in slot 1. Run the test and if either
  237. the failing bit or address changes then you know that the failing module
  238. is one of the ones just moved. By using several combinations of module
  239. movement you should be able to determine which module is failing.
  240.  
  241. 3) Replacing modules
  242. If you are unable to use either of the previous techniques then you are
  243. left to selective replacement of modules to find the failure.
  244.  
  245. 4) Avoiding allocation
  246. The printing mode for BadRAM patterns is intended to construct boot time
  247. parameters for a Linux kernel that is compiled with BadRAM support. This
  248. work-around makes it possible for Linux to reliably run on your average
  249. damaged RAM (or clearly panic if it cannot). For more information on
  250. BadRAM support for Linux, sail to http://home.zonnet.nl/vanrein/badram
  251.  
  252. Sometimes memory errors show up due to component incompatibility. A
  253. memory DIMM/SIMM may work fine in one system and not in another. This is
  254. not uncommon and is a source of confusion. In these situations the
  255. components are not necessarily bad but have marginal conditions that
  256. when combined with other components will cause errors.
  257.  
  258. I have had numerous reports of errors in only tests 5 and 8 on Athlon
  259. systems. Often the memory works in a different system or the vendor
  260. insists that it is good. In these cases the memory is not necessarily
  261. bad but is not able to operate reliably at Athlon speeds. Sometimes more
  262. conservative memory timings on the motherboard will correct these
  263. errors. In other cases the only option is to replace the memory with
  264. better quality, higher speed memory. Don't buy cheap memory and expect
  265. it to work with an Athlon! On occasion test 5/8 errors will occur even
  266. with name brand memory and a quality motherboard. These errors are
  267. legitimate and should be corrected.
  268.  
  269. I am often asked about the reliability of errors reported by Mestest86.
  270. In the vast majority of cases errors reported by the test are valid.
  271. There are some systems that cause Memtest86 to be confused about the
  272. size of memory and it will try to test non-existent memory. This will
  273. cause a large number of consecutive addresses to be reported as bad and
  274. generally there will be many bits in error. If you have a relatively
  275. small number of failing addresses and only one or two bits in error you
  276. can be certain that the errors are valid. Also intermittent errors are
  277. almost without exception valid. Frequently memory vendors question if
  278. Memtest86 supports their particular memory type or a chipset. Memtest86
  279. is designed to work with all memory types and all chipsets. Only support
  280. for ECC requires knowledge of the chipset.
  281.  
  282. All valid memory errors should be corrected. It is possible that a
  283. particular error will never show up in normal operation. However,
  284. operating with marginal memory is risky and can result in data loss and
  285. even disk corruption. Even if there is no overt indication of problems
  286. you cannot assume that your system is unaffected. Sometimes intermittent
  287. errors can cause problems that do not show up for a long time. You can
  288. be sure that Murphy will get you if you know about a memory error and
  289. ignore it.
  290.  
  291. Memtest86 can not diagnose many types of PC failures. For example a
  292. faulty CPU that causes Windows to crash will most likely just cause
  293. Memtest86 to crash in the same way.
  294.  
  295. ------------------------------------------------------------------------
  296.  
  297.  
  298.       Execution Time
  299.  
  300. The time required for a complete pass of Memtest86 will vary greatly
  301. depending on CPU speed, memory speed and memory size. Here are the
  302. execution times from a Pentium-II-366 with 64mb of RAM:
  303. Test 0    0:05
  304. Test 1    0:18
  305. Test 2    1:02
  306. Test 3    1:38
  307. Test 4    8:05
  308. Test 5    1:40
  309. Test 6    4:24
  310. Test 7    6:04
  311. Total (default tests)    23:16
  312. Test 8    12:30
  313. Test 9    49:30
  314. Test 10    30:34
  315. Test 11    3:29:40
  316. Total (all tests)    5:25:30
  317.  
  318. Memtest86 continues executes indefinitely. The pass counter increments
  319. each time that all of the selected tests have been run. Generally a
  320. single pass is sufficient to catch all but the most obscure errors.
  321. However, for complete confidence when intermittent errors are suspected
  322. testing for a longer period is advised.
  323.  
  324. ------------------------------------------------------------------------
  325.  
  326.  
  327.       Memory Testing Philosophy
  328.  
  329. There are many good approaches for testing memory. However, many tests
  330. simply throw some patterns at memory without much thought or knowledge
  331. of the memory architecture or how errors can best be detected. This
  332. works fine for hard memory failures but does little to find intermittent
  333. errors. The BIOS based memory tests are useless for finding intermittent
  334. memory errors.
  335.  
  336. Memory chips consist of a large array of tightly packed memory cells,
  337. one for each bit of data. The vast majority of the intermittent failures
  338. are a result of interaction between these memory cells. Often writing a
  339. memory cell can cause one of the adjacent cells to be written with the
  340. same data. An effective memory test should attempt to test for this
  341. condition. Therefore, an ideal strategy for testing memory would be the
  342. following:
  343.  
  344.     1) write a cell with a zero
  345.     2) write all of the adjacent cells with a one, one or more times
  346.     3) check that the first cell still has a zero
  347.  
  348. It should be obvious that this strategy requires an exact knowledge of
  349. how the memory cells are laid out on the chip. In addition there is a
  350. never ending number of possible chip layouts for different chip types
  351. and manufacturers making this strategy impractical. However, there are
  352. testing algorithms that can approximate this ideal.
  353.  
  354. ------------------------------------------------------------------------
  355.  
  356.  
  357.       Memtest86 Test Algorithms
  358.  
  359. Memtest86 uses two algorithms that provide a reasonable approximation of
  360. the ideal test strategy above. The first of these strategies is called
  361. moving inversions. The moving inversion test works as follows:
  362.  
  363.     1) Fill memory with a pattern
  364.     2) Starting at the lowest address
  365.     2a check that the pattern has not changed
  366.     2b write the patterns complement
  367.     2c increment the address
  368.     repeat 2a - 2c
  369.     3) Starting at the highest address
  370.     3a check that the pattern has not changed
  371.     3b write the patterns complement
  372.     3c decrement the address
  373.     repeat 3a - 3c
  374.  
  375. This algorithm is a good approximation of an ideal memory test but there
  376. are some limitations. Most high density chips today store data 4 to 16
  377. bits wide. With chips that are more than one bit wide it is impossible
  378. to selectively read or write just one bit. This means that we cannot
  379. guarantee that all adjacent cells have been tested for interaction. In
  380. this case the best we can do is to use some patterns to insure that all
  381. adjacent cells have at least been written with all possible one and zero
  382. combinations.
  383.  
  384. It can also be seen that caching, buffering and out of order execution
  385. will interfere with the moving inversions algorithm and make less
  386. effective. It is possible to turn off cache but the memory buffering in
  387. new high performance chips can not be disabled. To address this
  388. limitation a new algorithm I call Modulo-X was created. This algorithm
  389. is not affected by cache or buffering. The algorithm works as follows:
  390.  
  391.     1) For starting offsets of 0 - 20 do
  392.     1a write every 20th location with a pattern
  393.     1b write all other locations with the patterns complement
  394.     repeat 1b one or more times
  395.     1c check every 20th location for the pattern
  396.  
  397. This algorithm accomplishes nearly the same level of adjacency testing
  398. as moving inversions but is not affected by caching or buffering. Since
  399. separate write passes (1a, 1b) and the read pass (1c) are done for all
  400. of memory we can be assured that all of the buffers and cache have been
  401. flushed between passes. The selection of 20 as the stride size was
  402. somewhat arbitrary. Larger strides may be more effective but would take
  403. longer to execute. The choice of 20 seemed to be a reasonable compromise
  404. between speed and thoroughness.
  405.  
  406. ------------------------------------------------------------------------
  407.  
  408.  
  409.       Individual Test Descriptions
  410.  
  411. Memtest86 executes a series of numbered test sections to check for
  412. errors. These test sections consist of a combination of test algorithm,
  413. data pattern and cache setting. The execution order for these tests were
  414. arranged so that errors will be detected as rapidly as possible. Tests
  415. 8, 9, 10 and 11 are very long running extended tests and are only
  416. executed when extended testing is selected. The extended tests have a
  417. low probability of finding errors that were missed by the default tests.
  418. A description of each of the test sections follows:
  419.  
  420. *Test 0 [Address test, walking ones, no cache]*
  421.  
  422.     Tests all address bits in all memory banks by using a walking ones
  423.     address pattern. 
  424.  
  425. *Test 1 [Moving Inv, ones&zeros, cached]*
  426.  
  427.     This test uses the moving inversions algorithm with patterns of only
  428.     ones and zeros. Cache is enabled even though it interferes to some
  429.     degree with the test algorithm. With cache enabled this test does
  430.     not take long and should quickly find all "hard" errors and some
  431.     more subtle errors. This test is only a quick check. 
  432.  
  433. *Test 2 [Address test, own address, no cache]*
  434.  
  435.     Each address is written with its own address and then is checked for
  436.     consistency. In theory previous tests should have caught any memory
  437.     addressing problems. This test should catch any addressing errors
  438.     that somehow were not previously detected. 
  439.  
  440. *Test 3 [Moving inv, 8 bit pat, cached]*
  441.  
  442.     This is the same as test one but uses a 8 bit wide pattern of
  443.     "walking" ones and zeros. This test will better detect subtle errors
  444.     in "wide" memory chips. A total of 20 data patterns are used.
  445.  
  446. *Test 4 [Moving inv, 32 bit pat, cached]*
  447.  
  448.     This is a variation of the moving inversions algorithm that shifts
  449.     the data pattern left one bit for each successive address. The
  450.     starting bit position is shifted left for each pass. To use all
  451.     possible data patterns 32 passes are required. This test is
  452.     effective in detecting data sensitive errors in "wide" memory chips. 
  453.  
  454. *Test 5 [Block move, 64 moves, cached]*
  455.  
  456.     This test stresses memory by using block move (movsl) instructions
  457.     and is based on Robert Redelmeier's burnBX test. Memory is
  458.     initialized with shifting patterns that are inverted every 8 bytes.
  459.     Then 4mb blocks of memory are moved around using the movsl
  460.     instruction. After the moves are completed the data patterns are
  461.     checked. Because the data is checked only after the memory moves are
  462.     completed it is not possible to know where the error occurred. The
  463.     addresses reported are only for where the bad pattern was found.
  464.     Since the moves are constrained to a 8mb segment of memory the
  465.     failing address will always be less than 8mb away from the reported
  466.     address. Errors from this test are not used to calculate BadRAM
  467.     patterns. 
  468.  
  469. *Test 6 [Modulo 20, ones&zeros, cached]*
  470.  
  471.     Using the Modulo-X algorithm should uncover errors that are not
  472.     detected by moving inversions due to cache and buffering
  473.     interference with the the algorithm. As with test one only ones and
  474.     zeros are used for data patterns. 
  475.  
  476. *Test 7 [Moving inv, ones&zeros, no cache]*
  477.  
  478.     This is the same as test one but without cache. With cache off there
  479.     will be much less interference with the test algorithm. However, the
  480.     execution time is much, much longer. This test may find very subtle
  481.     errors missed by previous tests. 
  482.  
  483. *Test 8 [Block move, 512 moves, cached]*
  484.  
  485.     This is the first extended test. This is the same as test #5 except
  486.     that we do more memory moves before checking memory. Errors from
  487.     this test are not used to calculate BadRAM patterns. 
  488.  
  489. *Test 9 [Moving inv, 8 bit pat, no cache]*
  490.  
  491.     By using an 8 bit pattern with cache off this test should be
  492.     effective in detecting all types of errors. However, it takes a very
  493.     long time to execute and there is a low probability that it will
  494.     detect errors not found by the previous tests. 
  495.  
  496. *Test 10 [Modulo 20, 8 bit, cached]*
  497.  
  498.     This is the first test to use the Modulo-X algorithm with a data
  499.     pattern other than ones and zeros. This combination of algorithm and
  500.     data pattern should be quite effective. However, it's very long
  501.     execution time relegates it to the extended test section. 
  502.  
  503. *Test 11 [Moving inv, 32 bit pat, no cache]*
  504.  
  505.     This test should be the most effective in finding errors that are
  506.     data pattern sensitive. However, without cache it's execution time
  507.     is excessively long. 
  508.  
  509. ------------------------------------------------------------------------
  510.  
  511.  
  512.       Problem Reporting - Contact Information
  513.  
  514. Due to the growing popularity of Memtest86 (almost 100,000 downloads per
  515. month) I have been inundated by, questions, feedback, problem reports
  516. and requests for enhancements. Memtest86 is a sideline project and often
  517. my day job interferes with Memtest86 support. To help me keep up with
  518. this project, please use the following guidelines.
  519.  
  520.  
  521.         Problems/Bugs
  522.  
  523. Before submitting a problem report please check the Known Problems
  524. <#problems> section to see if this problem has already been reported. Be
  525. sure to include the version number and also any details that may be
  526. relevant.
  527.  
  528. With some PC's Memtest86 will just die with no hints as to what went
  529. wrong. Without any details it is impossible to fix these failures.
  530. Fixing these problems will require debugging assistance on your part.
  531. There is no point in reporting these failures unless you have a Linux
  532. system and would be willing to assist me in finding the failure.
  533.  
  534.  
  535.         Enhancements
  536.  
  537. If you would like to request an enhancement please see if is already on
  538. the Planned Features List <#features> before sending your request. All
  539. requests will be considered, but not all will be implemented. If you are
  540. be interested in contributing code please contact me so that the
  541. integration can be co-ordinated.
  542.  
  543.  
  544.         Questions
  545.  
  546. Unfortunately, I simply do not have time to respond to questions or
  547. provide assistance with troubleshooting problems. Please read the
  548. Troubleshooting and Known Problems <http://www.memtest86.com/problems>
  549. sections for assistance with problems. These sections have the answers
  550. for the questions that I have answers to. If there is not an answer for
  551. your problem in these sections it is probably not something I can help
  552. you with.
  553.  
  554.  
  555.       Chris Brady, Email: chris@memtest86.com <mailto:chris@memtest86.com>
  556.  
  557. ------------------------------------------------------------------------
  558.  
  559.  
  560.       Donations
  561.  
  562. With considerable reluctance I am resorting to a low key solicitation
  563. for donations. It never has been my intent to profit from this program
  564. and I am pleased that Memtest86 has been helpful. However, the time
  565. required to support this program has grown significantly. I also have
  566. the modest cost of hosting this web-site that I would like to recover.
  567. So if you find Memtest86 useful and you feel inclined to make a small
  568. PayPal <https://www.paypal.com/> donation please do so. Use my e-mail
  569. address "chris@memtest86.com" for the recipient.
  570.  
  571. ------------------------------------------------------------------------
  572.  
  573.  
  574.       Known Problems
  575.  
  576. Sometimes when booting from a floppy disk the following messages scroll
  577. up on the screen:
  578.  
  579.         X:8000
  580.         AX:0212
  581.         BX:8600
  582.         CX:0201
  583.         DX:0000
  584.  
  585. This the BIOS reporting floppy disk read errors. Either re-write or toss
  586. the floppy disk.
  587.  
  588. Memtest86 can not diagnose many types of PC failures. For example a
  589. faulty CPU that causes Windows to crash will most likely just cause
  590. Memtest86 to crash in the same way.
  591.  
  592. There have been numerous reports of errors in only tests 5 and 8 on
  593. Athlon systems. Often the memory works in a different system or the
  594. vendor insists that it is good. In these cases the memory is not
  595. necessarily bad but is not able to operate reliably at Athlon speeds.
  596. Sometimes more conservative memory timings on the motherboard will
  597. correct these errors. In other cases the only option is to replace the
  598. memory with better quality, higher speed memory. Don't buy cheap memory
  599. and expect it to work with an Athlon! On occasion test 5/8 errors will
  600. occur even with name brand memory and a quality motherboard. These
  601. errors are legitimate and should be corrected.
  602.  
  603. Memtest86 has no support for multiple processors. Memtest86 should run
  604. without problems, but it will only use one CPU.
  605.  
  606. Memtest86 supports all types of memory. If fact the test has no
  607. knowledge of the memory type nor does it need to. This not a problem or
  608. bug but is listed here due to the many questions I get about this issue.
  609.  
  610. Changes in the compiler and loader have caused problems with Memtest86
  611. resulting in both build failures and errors in execution. A binary image
  612. (precomp.bin) of the test is included and may be used if problems are
  613. encountered.
  614.  
  615. ------------------------------------------------------------------------
  616.  
  617.  
  618.       Planned Features List
  619.  
  620. This is a list of enhancements planned for future releases of Memtest86.
  621. There is no timetable for when these will be implemented, if ever.
  622.  
  623.     * Option to allow printing of error information on an attached printer.
  624.     * A startup menu for configuring Memtest86 before testing starts.
  625.     * Supply Memtest in RPM format.
  626.     * Read and display RAM SPD information. 
  627.  
  628. ------------------------------------------------------------------------
  629.  
  630.  
  631.       Change Log
  632.  
  633. *Enhancements in v3.0 (22/May/2002) - Provided by Eric Biederman*
  634.  
  635.     * Testing of more than 2gb of memory is at last fixed (tested with 6Gb)
  636.     * The infrastructure is to poll ecc error reporting chipset
  637.       regisets, and the support has been done for some chipsets.
  638.     * Uses dynamic relocation information records to make itself PIC
  639.       instead of requiring 2 copies of memtest86 in the binary.
  640.     * The serial console code does not do redundant writes to the serial
  641.       port. Very little slow down at 9600 baud.
  642.     * You can press ^l or just l to get a screen refresh, when you are
  643.       connecting and unconnecting a serial cable.
  644.     * Netbooting is working again
  645.     * LinuxBIOS support (To get the memory size)
  646.     * Many bugfixes and code cleanup 
  647.  
  648. *Enhancements in v2.9 (29/Feb/2002)*
  649.  
  650.     * The memory sizing code has been completely rewritten. By default
  651.       Memtest86 gets a memory map from the BIOS that is now used to find
  652.       available memory. A new online configuration option provides three
  653.       choices for how memory will be sized, including the old "probe"
  654.       method. The default mode generally will not test all of memory,
  655.       but should be more stable. See the Memory Sizing <#size> section
  656.       for details.
  657.     * Testing of more than 2gb of memory should now work. A number of
  658.       bugs were found and corrected that prevented testing above 2gb.
  659.       Testing with more than 2gb has been limited and there could be
  660.       problems with a full 4gb of memory.
  661.     * Memory is divided into segments for testing. This allow for
  662.       frequent progress updates and responsiveness to interactive
  663.       commands. The memory segment size has been increased from 8 to
  664.       32mb. This should improve testing effectivness but progress
  665.       reports will be less frequent.
  666.     * Minor bug fixes 
  667.  
  668. *Enhancements in v2.8 (18/Oct/2001)*
  669.  
  670.     * Eric Biederman reworked the build process making it far simpler
  671.       and also to produce a network bootable ELF image.
  672.     * Re-wrote the memory and cache speed detection code. Previously the
  673.       reported numbers were inaccurate for intel CPU's and completely
  674.       wrong for the Athlon and Duron.
  675.     * Disabled the serial console by default since it was slowing down
  676.       testing.
  677.     * Added CPU detection for Pentium 4
  678.     * Minor bug fixes 
  679.  
  680. *Enhancements in v2.7 (12/Jul/2001)*
  681.  
  682.     * Expanded workaround for errors caused by BIOS USB keyboard support
  683.       to include test #5.
  684.     * Re-worked L1 / L2 cache detection code to provide clearer reporting.
  685.     * Fixed an obvious bug in the computation of cache and memory speeds.
  686.     * Added a menu option to disable the serial console.
  687.     * Changed on-line menu to stay in the menu between option selections.
  688.     * Fixed bugs in the test restart and redraw code.
  689.     * Adjusted code size to fix compilation problems with RedHat 7.1.
  690.     * Misc updates to the documentation. 
  691.  
  692. *Enhancements in v2.6 (25/May/2001)*
  693.  
  694.     * Added workaround for errors caused by BIOS USB keyboard support.
  695.     * Fixed problems with reporting of 1 GHZ + processor speeds.
  696.     * Fixed Duron cache detection.
  697.     * Added screen buffer so that menus will work correctly from a
  698.       serial console.
  699.     * The Memtest86 image is now built in ELF format. 
  700.  
  701. *Enhancements in v2.5 (13/Dec/00)*
  702.  
  703.     * Enhanced CPU and cache detection to correctly identify Duron CPU
  704.       and K6-III 1mb cache.
  705.     * Added code to report cache-able memory size.
  706.     * Added limited support for parity memory.
  707.     * Support was added to allow use of on-line commands from a serial
  708.       port.
  709.     * Dropped option for changing refresh rates. This was not useful and
  710.       did not work on newer motherboards.
  711.     * Improved fatal exception reporting to include a register and stack
  712.       dump.
  713.     * The pass number is now displayed in the error report.
  714.     * Fixed a bug that crashed the test when selecting one of the
  715.       extended tests. 
  716.  
  717. *Enhancements in v2.4*
  718.  
  719.     * The error report format was reworked for better clarity and now
  720.       includes a decimal address in megabytes.
  721.     * A new memory move test was added (from Robert Redelmeier's CPU-Burn)
  722.     * The test sequence and iterations were modified.
  723.     * Fixed scrolling problems with the BadRAM patterns.
  724.     * Updated and improved CPU and cache detection. 
  725.  
  726. *Enhancements in v2.3*
  727.  
  728.     * Measurement and reporting of memory and cache performance was added.
  729.     * All of the test routines were rewritten in assembler to improve
  730.       both error detection and speed.
  731.     * A progress meter was added to show pass and test completion.
  732.     * The screen layout was reworked to hopefully be more readable.
  733.     * Support for creating BadRAM patterns was added.
  734.     * An error summary option was added to the online commands. 
  735.  
  736. *Enhancements in v2.2*
  737.  
  738.     * Added two new address tests.
  739.     * Added an on-line command for setting test address range.
  740.     * Optimized test code for faster execution (-O3, -funroll-loops and
  741.       -fomit-frame-pointer).
  742.     * Added and elapsed time counter.
  743.     * Adjusted menu options for better consistency. 
  744.  
  745. *Enhancements in v2.1*
  746.  
  747.     * Fixed a bug in the CPU detection that caused the test to hang or
  748.       crash with some 486 and Cryrix CPU's
  749.     * Added CPU detection for Cyrix CPU's
  750.     * Extended and improved CPU detection for Intel and AMD CPU's
  751.     * Added a compile time option (BIOS_MEMSZ) for obtaining the last
  752.       memory address from the BIOS. This should fix problems with memory
  753.       sizing on certain motherboards. This option is not enabled by
  754.       default. It may be enabled by default in a future release. 
  755.  
  756. *Enhancements in v2.0*
  757.  
  758.     * Added new Modulo-20 test algorithm.
  759.     * Added a 32 bit shifting pattern to the moving inversions algorithm.
  760.     * Created test sections to specify algorithm, pattern, cache and
  761.       refresh rate.
  762.     * Improved test progress indicators.
  763.     * Created popup menus for configuration.
  764.     * Added menu for test selection.
  765.     * Added CPU and cache identification.
  766.     * Added a "bail out" feature to quit the current test when it does
  767.       not fit the test selection parameters.
  768.     * Re-arranged the screen layout and colors.
  769.     * Created local include files for I/O and serial interface
  770.       definitions rather than using the sometimes incompatible system
  771.       include files.
  772.     * Broke up the "C" source code into four separate source modules. 
  773.  
  774. *Enhancements in v1.5*
  775.  
  776.     * Some additional changes were made to fix obscure memory sizing
  777.       problems.
  778.     * The 4 bit wide data pattern was increased to 8 bits since 8 bit
  779.       wide memory chips are becoming more common.
  780.     * A new test algorithm was added to improve detection of data
  781.       pattern sensitive errors. 
  782.  
  783. *Enhancements in v1.4*
  784.  
  785.     * Changes to the memory sizing code to avoid problems with some
  786.       motherboards where Memtest86 would find more memory than actually
  787.       exists.
  788.     * Added support for a console serial port. (thanks to Doug Sisk)
  789.     * On-line commands are now available for configuring Memtest86 on
  790.       the fly (see On-line Commands). 
  791.  
  792. *Enhancements in v1.3*
  793.  
  794.     * Scrolling of memory errors is now provided. Previously, only one
  795.       screen of error information was displayed.
  796.     * Memtest86 can now be booted from any disk via lilo.
  797.     * Detection of up to 4gb of memory has been fixed is now enabled by
  798.       default. This capability was clearly broken in v1.2a and should
  799.       work correctly now but has not been fully tested (4gb PC's are a
  800.       bit rare).
  801.     * The maximum memory size supported by the motherboard is now being
  802.       calculated correctly. In previous versions there were cases where
  803.       not all of memory would be tested and the maximum memory size
  804.       supported was incorrect.
  805.     * For some types of failures the good and bad values were reported
  806.       to be same with an Xor value of 0. This has been fixed by
  807.       retaining the data read from memory and not re-reading the bad
  808.       data in the error reporting routine.
  809.     * APM (advanced power management) is now disabled by Memtest86. This
  810.       keeps the screen from blanking while the test is running.
  811.     * Problems with enabling & disabling cache on some motherboards have
  812.       been corrected. 
  813.  
  814. ------------------------------------------------------------------------
  815.  
  816.  
  817.       Acknowledgments
  818.  
  819. The initial versions of the source files bootsect.S, setup.S, head.S and
  820. build.c are from the Linux 1.2.1 kernel and have been heavily modified.
  821.  
  822. Doug Sisk provided code to support a console connected via a serial port.
  823.  
  824. Code to create BadRAM patterns was provided by Rick van Rein.
  825.  
  826. Screen buffer code was provided by Jani Averbach.
  827.  
  828. Eric Biederman reworked the build process making it far simpler and also
  829. to produce a network bootable ELF image.
  830.  
  831.