[coreboot] memtest86 reading 0k memory

Timothy Pearson tpearson at raptorengineeringinc.com
Fri Feb 6 04:45:25 CET 2015


On 02/05/2015 09:13 PM, Scott Duplichan wrote:
> Timothy Pearson [mailto:tpearson at raptorengineeringinc.com] wrote:
>
> ]Sent: Thursday, February 05, 2015 06:49 PM
> ]To: Coreboot
> ]Subject: Re: [coreboot] memtest86 reading 0k memory
> ]
> ]On 02/05/2015 06:42 PM, Timothy Pearson wrote:
> ]>  On 02/05/2015 02:06 PM, Timothy Pearson wrote:
> ]>>  On 02/05/2015 01:51 PM, Aaron Durbin wrote:
> ]>>>  Do you have the coreboot console log? Looking at memtest86 it
> ]>>>  constructs its own e820 when using linuxbios. Additionally, it also
> ]>>>  has some concept of a "window" to test as well as plim_lower and
> ]>>>  plim_upper variables that seem to add to the mix.
> ]>>>
> ]>>>  What's super frightening is that find_chunks(int tst) is called in the
> ]>>>  code as find_chunks() while the find_chunks() function actually
> ]>>>  references tst as an array index. That's all from config.c. But I
> ]>>>  think that's only if you hit c on the keyboard. I wouldn't do that...
> ]>>>
> ]>>>  I can't make heads or tails of that code at the moment. for selecting
> ]>>>  the window to test.
> ]>>
> ]>>  Please see text log attached. It looks like the failing accesses start
> ]>>  at 0xa0000, which (judging by memtest's effects on the screen) appears
> ]>>  to be mapped to the VGA text buffer. That region is *not* reserved under
> ]>>  the proprietary BIOS's e820 map.
> ]>>
> ]>>  Thanks!
> ]>>
> ]>
> ]>  I was able to resolve the lower MMIO region failures (coreboot driver
> ]>  patch in for review), but memtest86 is stubbornly insisting on testing
> ]>  reserved memory, causing a single failure at 3ffade80. The e820 map says
> ]>  that address is out of bounds but the coreboot tables do not:
> ]>
> ]>  e820 map has 6 items:
> ]>  0: 0000000000000000 - 000000000009fc00 = 1 RAM
> ]>  1: 000000000009fc00 - 00000000000a0000 = 2 RESERVED
> ]>  2: 00000000000f0000 - 0000000000100000 = 2 RESERVED
> ]>  3: 0000000000100000 - 000000003ffad000 = 1 RAM
> ]>  4: 000000003ffad000 - 0000000040000000 = 2 RESERVED
> ]>  5: 00000000e0000000 - 00000000f0000000 = 2 RESERVED
> ]>
> ]>  coreboot table: 460 bytes.
> ]>  CBMEM ROOT 0. 3ffff000 00001000
> ]>  CONSOLE 1. 3ffdf000 00020000
> ]>  TIME STAMP 2. 3ffde000 00001000
> ]>  GDT 3. 3ffdd000 00001000
> ]>  SMP TABLE 4. 3ffdc000 00001000
> ]>  ACPI 5. 3ffb8000 00024000
> ]>  SMBIOS 6. 3ffb7000 00001000
> ]>  COREBOOT 7. 3ffaf000 00008000
> ]>
> ]>  Why the discrepancy? Am I correct in assuming this is a bug in coreboot
> ]>  that needs to be fixed?
> ]>
> ]
> ]Sorry, wrong coreboot table above:
> ]
> ]Writing coreboot table at 0x3ffaf000
> ]rom_table_end = 0x3ffaf000
> ]... aligned to 0x3ffb0000
> ]  0. 0000000000000000-0000000000000fff: CONFIGURATION TABLES
> ]  1. 0000000000001000-000000000009ffff: RAM
> ]  2. 00000000000a0000-00000000000affff: RESERVED
> ]  3. 00000000000b0000-00000000000b7fff: RAM
> ]  4. 00000000000b8000-00000000000bffff: RESERVED
> ]  5. 00000000000c0000-000000003ffaefff: RAM
> ]  6. 000000003ffaf000-000000003fffffff: CONFIGURATION TABLES
> ]  7. 00000000e0000000-00000000efffffff: RESERVED
> ]
> ]I assume something is placing itself at 3ffad000 (coreboot? SeaBIOS?)
> ]and that overwriting it is a Bad Thing, but whatever it is does not
> ]update the coreboot tables and memtest86 promptly stomps on it.
>
> I imagine SeaBIOS is taking memory from the end of free RAM below
> 4GB for USB structures. There is probably an incrementing frame
> counter at 3ffade80. It looks like SeaBIOS builds the E820 table
> to properly account for the memory it uses. If memtest86 uses the
> coreboot tables even when an E820 handler is installed, that seems
> wrong. Unless SeaBIOS is supposed to adjust the coreboot tables to
> reflect its memory usage, which I don't think is the case.

I suspect you're right about the USB structures; my USB keyboard quit 
working when memtest started.  Looks like I'll be building memtest86 
with coreboot support disabled; judging by the numerous problems 
reported by other coreboot users memtest badly needs an update to 
disable coreboot support by default.

-- 
Timothy Pearson
Raptor Engineering
+1 (415) 727-8645
http://www.raptorengineeringinc.com



More information about the coreboot mailing list