[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] difference between xen hypervisor and common kernel on handling BIOS's e820 map ?

  • To: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
  • From: Lin-bao Zhang <zhang.linbao@xxxxxxxxx>
  • Date: Wed, 31 Aug 2011 00:44:57 -0700 (PDT)
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Wed, 31 Aug 2011 00:45:34 -0700
  • Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=X-YMail-OSG:Received:X-Mailer:References:Message-ID:Date:From:Reply-To:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=fsiNprhh1vA1XU0irlcaud3x0c83Ap6xaI2B9kmjCPdDwpiGl4J92hfDN5kputiAna2XXh+nyXuAuU0Kds31xHCshLwuSZC+1dUP0QimJ9FIIaetxwQj118vc7YWSQuuefrOgjebog1SWh1Z5Pt9FTGEm2ceDcnbyJCknCsEySw=;
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

I am sorry for my fault in capturing logs.
from the picture, we can obviously find the common kernel's BIOS e820map has 
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 
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: 

now xen-hypervisor has been executed ,we can destroy any parts of grub and 
so I think ,xen-hypervisor can arbitrarily any parts below 0x10000 (64K). 

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.