Commit | Line | Data |
---|---|---|
489105f9 GW |
1 | Message-Id: <199403270118.RAA00584@corbin.Root.COM> |
2 | From: David Greenman <davidg@root.com> | |
3 | To: "Jordan K. Hubbard" <jkh@whisker.hubbard.ie> | |
4 | Cc: csgr@alpha.ru.ac.za, freebsd-hackers@freefall.cdrom.com | |
5 | Subject: Re: Boune Buffers : Crash and Burn ^&%$&&^% | |
6 | Date: Sat, 26 Mar 1994 17:18:04 -0800 | |
7 | ||
8 | >Ummm. I suppose it would be stupid to wonder whether or not this is good | |
9 | >memory you just stuck in there? :-) It does raise the point: David - what | |
10 | >does your memory test do when it finds memory errors? | |
11 | ||
12 | The order of events is like this: | |
13 | ||
14 | 1) Determine amount of memory by looking at CMOS. | |
15 | 2) Do memory test of this memory, starting at the highest address and going | |
16 | backwards. | |
17 | 3) If a bad page is found, TRUNCATE the physical memory to end just before | |
18 | this page. Continue until all memory is tested. | |
19 | ||
20 | So all memory past the lowest bad page is ignored. The number of pages that | |
21 | were chopped are then reported as # of "bad pages" when the memory information | |
22 | is printed. If there aren't any, then nothing is printed. | |
23 | The rationale for not constructing a bit mask and weeding out just the | |
24 | pages that test bad is a flimsy one - doing so would have required moving the | |
25 | memory test into the machine independant portion of the VM system, and would | |
26 | have required much trickier coding. Since the main purpose of this was to | |
27 | verify that what the CMOS was telling us was correct, and also to identify | |
28 | when there is bad memory, trying to make the best of it when there really is | |
29 | some bad memory didn't seem important to me. ..but hey, if somebody wants to | |
30 | recode it, I won't complain. :-) | |
31 | The problem that Terry eluded to, but didn't state, is where you test memory | |
32 | for the purpose of determining how much you have. This is problematic because | |
33 | many memory controllers will generate a fatal NMI when you 'test' non-existant | |
34 | memory (i.e. the parity check fails, and the condition is handled less than | |
35 | gracefully), and can also happen with some memory controllers that do strange | |
36 | address wrapping in the non-existant memory area. Compaq machines are alledged | |
37 | to be suseptable to one of these two problems. | |
38 | ||
39 | -DG | |
40 |