[coreboot] kernel panics reserving EBDA pages
Roman Kononov
kononov at dls.net
Mon Jul 21 23:27:21 CEST 2008
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?
Thanks,
Roman Kononov
More information about the coreboot
mailing list