On Sun, Nov 26, 2006 at 07:02:51PM +0100, Segher Boessenkool wrote:
Is that the canonical way to test whether RAM init works?
The "canonical" way is to attach a memory bus analyser to your board. Failing that, you can run some stress tests (like, boot Linux and do some disk+network load on it, or similar). If everything works, your memory works, eh? :-)
Sure, if I could boot Linux or memtest my problems would be solved. But currently I haven't yet managed to do so. The problem now is, that I don't know whether booting memtest fails because I need to setup more of the mainboard-specific stuff or because my RAM init doesn't work yet.
What's the absolute minimum config I need to get _something_ to boot, so that I can verify that RAM init works?
You can dump out the PCI config space of the memory controller after its init -- so you can check if that looks good (against the data sheet).
I think it does, I specifically hard-coded the values so that they match the output I got from a running Linux using the factory BIOS (and as far as I can see that's fine compared with what the datasheet says, too).
lspci -xxx 0:0.0 on Linux system: 00: 86 80 90 71 06 00 10 22 02 00 00 06 00 40 00 00 10: 08 00 00 d8 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 a0 00 00 00 00 00 00 00 00 00 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 0c 8a 00 ff 00 00 00 09 00 10 11 01 00 00 00 00 60: 00 00 00 00 00 00 08 08 00 00 00 00 00 2a 00 00 70: 20 1f 0a 38 00 10 10 01 23 ff 10 38 00 00 00 00 80: 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 98 cc 00 00 04 61 00 00 00 05 00 00 00 00 00 00 a0: 02 00 10 00 03 02 00 1f 00 00 00 00 00 00 00 00 b0: 80 20 00 00 30 00 00 00 00 00 9f 03 20 10 00 00 c0: 00 00 00 00 ff ff ff ff 18 0c ff ff 61 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 4c ad ff bb 8a 3e 00 80 2c d3 f7 cf 9d 3e 00 00 f0: 40 01 00 00 00 f8 00 60 20 0f 00 00 00 00 00 00
Northbridge dump from LB via serial: 00: 86 80 90 71 06 00 10 22 02 00 00 06 00 40 00 00 10: 08 00 00 d0 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 a0 00 00 00 00 00 00 00 00 00 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 0c 8a 00 ff 00 00 00 09 00 10 11 01 00 00 00 00 60: 00 00 00 00 00 00 08 08 00 00 00 00 00 2a 00 00 70: 20 1f 0a 38 00 10 10 01 23 ff 10 38 00 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 80 00 00 00 04 61 00 00 00 05 00 00 00 00 00 00 a0: 02 00 10 00 03 02 00 1f 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 ff ff ff ff 18 0c 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 f8 00 00 20 0f 00 00 00 00 00 00
There _are_ differences, but nothing related to the RAM config registers as far as I can see.
Uwe.