[coreboot] kernel panics reserving EBDA pages

yhlu yinghailu at gmail.com
Mon Jul 21 23:52:03 CEST 2008


On Mon, Jul 21, 2008 at 2:27 PM, Roman Kononov <kononov at dls.net> wrote:
> Hello,
>
> I have this chain: coreboot v2 -> etherboot as the payload -> x86_64 kernel
> 2.6.25.6.
>
> The kernel panics in arch/x86/e820_64.c, reserve_early() with the message:
>
> Overlapping early reservations f0-100ef EBDA to 0-fff BIOS data page
>
> reserve_early(start,end) is called from arch/x86/head64.c, reserve_ebda()
> with start=0xf0 and end=0x100f0.
>
> The address and size of EBDA is gotten this way:
>
>    #define EBDA_ADDR_POINTER 0x40E
>    ebda_addr = *(unsigned short *)__va(EBDA_ADDR_POINTER);
>    ebda_addr <<= 4;
>    ebda_size = *(unsigned short *)__va(ebda_addr);
>
> After the above sequence ebda_addr=0xf0 and ebda_size=0x2049 KiB;
>
> This all happened in a very well working system after I added the second
> dual-core Opteron.
>
> Without the second CPU, ebda_addr=0x12010 and ebda_size=0, which combination
> passes reserve_early() without overlapping. The resulting reservations are:
>  early res: 0 [0-fff] BIOS data page
>  early res: 1 [6000-7fff] SMP_TRAMPOLINE
>  early res: 2 [200000-75b503] TEXT DATA BSS
>  early res: 3 [800000-9bd8dd] RAMDISK
>  early res: 4 [12010-1300f] EBDA
>  early res: 5 [8000-cfff] PGTABLE
>
> How come? What is responsible to clear the memory at 0x40e? What is EBDA and
> what needs it?

interesting, EBDA should be in [0x90000, 0x100000]

please check with 2.6.26

YH




More information about the coreboot mailing list