I am sorry for my fault in capturing logs.
from the picture, we can obviously find the common kernel's BIOS e820map has
mistake.
I captured these logs from serial port , it seems that serial port has lost
some key words,sometimes it will lost 'f' ,so confused me.
for example:
I am sorry for waste your time. very sorry!
You can ignore my old emails about this difference. let's begin now:
I used "dmesg " to get common kernel's e820 map. this is different from XEN
hypervisor's e820 map:
common kernel's e820 map is like this:
------
BIOS-provided physical RAM map:
BIOS-e820: 0000000000010000 - 0000000000090400 (usable)
BIOS-e820: 0000000000090400 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000007f5f0000 (usable)
BIOS-e820: 000000007f5f0000 - 000000007f62c000 (ACPI data)
BIOS-e820: 000000007f62c000 - 000000007f62d000 (usable)
BIOS-e820: 000000007f62d000 - 000000007f79d000 (reserved)
BIOS-e820: 000000007f79d000 - 000000007f7a0000 (ACPI data)
BIOS-e820: 000000007f7a0000 - 0000000090000000 (reserved)
BIOS-e820: 00000000fec00000 - 00000000fee10000 (reserved)
BIOS-e820: 00000000ff800000 - 0000000100000000 (reserved)
BIOS-e820: 0000000100000000 - 0000000480000000 (usable)
BIOS-e820: 0000002000000000 - 0000002400000000 (usable)
BIOS-e820: 0000004000000000 - 0000004400000000 (usable)
BIOS-e820: 0000006000000000 - 0000006400000000 (usable)
-------
then , I differ them just like
this:https://lh4.googleusercontent.com/-HDA7ZNp_Bc0/Tl3a_sYgl-I/AAAAAAAAAV4/3Bt8LIziSlg/s800/e820%252520map_xen_and_commonkernel.jpg
they are basicly same.
only difference :
(XEN) 0000000000000000 - 0000000000090400 (usable)
common kernel:
BIOS-e820: 0000000000010000 - 0000000000090400 (usable)
I don't think this difference is important for xen-hypervisor . when
xen-hypervisor has been excuted, BIOS and grub has been ended, so
xen-hypervisor can operate any memory area.
xen-hypervisor can use low memory( < 1M) .
based on my existed knowledge ,I know that :
0- 3FF 0000:0000-0000:03FF RAM real-mode interrupt vector table (IVT)
400- 4FF 0040:0000-0040:00FF BIOS data area (BDA)
1, IVT and BDA occupied 0x500 Bytes.
"After all the BIOS functions have been called, and your
kernel is loaded into memory somewhere, the bootloader or kernel may exit
Real Mode forever (often by going into 32bit Protected Mode). If the kernel
never uses Real Mode again, then the first
0x500 bytes of memory in the PC may be reused and overwritten. (However, it is
very common to temporarily return to Real Mode in order to change the Video
Display Mode.)"
2, grub stage1.S will be loaded 0x7c00 ~ 0x7dff (512Bytes).
Grub stage2 will be loaded 0x8000 .
from 0x8000~0x10000 ,about 32K,it seems that this 32K will be used by grub.
some other information can be found at:
http://wiki.osdev.org/Memory_Map_(x86)#.22Low.22_memory_.28.3C_1_MiB.29
--
now xen-hypervisor has been executed ,we can destroy any parts of grub and
BIOS.
so I think ,xen-hypervisor can arbitrarily any parts below 0x10000 (64K).
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|