Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
e820irc:irc_logs_for_e820_issue [2006/06/14 22:47]
ashieh created
e820irc:irc_logs_for_e820_issue [2006/06/14 22:50] (current)
ashieh
Line 77: Line 77:
 </​file>​ </​file>​
  
-I fixed the 640KB reporting, but there were other problems:+After an adventure through 16-bit real mode code. I fixed the 640KB e820 hole, but there were other problems ​with the E820 map:
  
 +<​file>​
 +Date: Mon, 12 Jun 2006 04:20:08 -0400
 +From: "Alan Shieh" <​alancshieh@gmail.com>​
 +To: Etherboot <​Etherboot-discuss@lists.sourceforge.net>​
 +Subject: E820 map
 +MIME-Version:​ 1.0
 +Content-Type:​ text/plain; charset=ISO-8859-1;​ format=flowed
 +Content-Transfer-Encoding:​ 7bit
 +Content-Disposition:​ inline
 +Delivered-To:​ alancshieh@gmail.com
  
 +As discussed on IRC, my PXE booted Linux was not getting a E820 map
 +that reflected the resident PXE stack.
 +
 +I tracked down the problem for my Etherboot 5.2 snapshot. _hide_memory
 +only had 2 entries, one for the .text segment, and one for the heap.
 +However, the UNDI Code and Data segments are allocated from base
 +memory, which is not covered by either of these regions.
 +
 +So I fixed hide_etherboot() and _hide_memory to reflect the UNDI
 +segments, and now they are correctly omitted from the e820 map.
 +
 +However, I'm still wary of my e820 map:
 +
 + ​BIOS-e820:​ 0000000000000000 - 000000000009e000 (usable)
 + ​BIOS-e820:​ 0000000000100000 - 0000000007eeeee0 (usable)
 +
 +I expect another hole for the Etherboot .text and heap segments,
 +located at [01eeef70,​01f00000). On entry to pxelinux (and while Linux
 +is active), the hide_memory regions array includes
 +
 +[01eeef70,​01f00000)
 +[01eeef60,​01eeef70)
 +// as well as UNDI Data & Code
 +
 +Based on my understanding of the E820 adjustment code, I should get a
 +memory region of [1f00000,​7eeeee0).
 +
 +I've instrumented my Linux kernel to dump the E820 map as it is
 +processed, and it looks like the E820 map I am getting has not been
 +modified from the BIOS version.
 +
 +Any ideas on how to proceed?
 +
 +</​file>​
 +
 +<​file>​
 +Date: Wed, 14 Jun 2006 15:12:16 +0100 (BST)
 +From: Michael Brown <​mbrown@fensystems.co.uk>​
 +X-X-Sender: mcb30@dolphin.home
 +To: Alan Shieh <​alancshieh@gmail.com>​
 +Cc: Etherboot <​Etherboot-discuss@lists.sourceforge.net>​
 +Subject: Re: [Etherboot-discuss] E820 map
 +In-Reply-To:​ <​1a7e305d0606120120l39b78b49n610b4ab7c9c03e05@mail.gmail.com>​
 +Message-ID: <​Pine.LNX.4.62.0606141509050.27611@dolphin.home>​
 +References: <​1a7e305d0606120120l39b78b49n610b4ab7c9c03e05@mail.gmail.com>​
 +MIME-Version:​ 1.0
 +Content-Type:​ TEXT/PLAIN; charset=US-ASCII;​ format=flowed
 +
 +On Mon, 12 Jun 2006, Alan Shieh wrote:
 +> As discussed on IRC, my PXE booted Linux was not getting a E820 map
 +> that reflected the resident PXE stack.
 +>
 +> I tracked down the problem for my Etherboot 5.2 snapshot. _hide_memory
 +> only had 2 entries, one for the .text segment, and one for the heap.
 +> However, the UNDI Code and Data segments are allocated from base
 +> memory, which is not covered by either of these regions.
 +>
 +> So I fixed hide_etherboot() and _hide_memory to reflect the UNDI
 +> segments, and now they are correctly omitted from the e820 map.
 +>
 +> However, I'm still wary of my e820 map:
 +>
 +> BIOS-e820: 0000000000000000 - 000000000009e000 (usable)
 +> BIOS-e820: 0000000000100000 - 0000000007eeeee0 (usable)
 +>
 +> I expect another hole for the Etherboot .text and heap segments,
 +> located at [01eeef70,​01f00000). On entry to pxelinux (and while Linux
 +> is active), the hide_memory regions array includes
 +>
 +> [01eeef70,​01f00000)
 +> [01eeef60,​01eeef70)
 +> // as well as UNDI Data & Code
 +
 +How much memory does this machine actually have?  The 0x07eeeee0 suggests ​
 +a figure around the 128MB mark.  Etherboot should be relocating itself to 
 +somewhere near the top of this, yet 0x01eeef70 is around the 32MB mark. 
 +Something here doesn'​t add up.
 +
 +Michael
 +
 +</​file>​
 +
 +<​file>​
 +Date: Wed, 14 Jun 2006 16:14:11 +0100 (BST)
 +From: Michael Brown <​mbrown@fensystems.co.uk>​
 +X-X-Sender: mcb30@dolphin.home
 +To: Alan Shieh <​alancshieh@gmail.com>​
 +Cc: Etherboot <​Etherboot-discuss@lists.sourceforge.net>​
 +Subject: Re: [Etherboot-discuss] E820 map
 +In-Reply-To:​ <​1a7e305d0606140727r2cdc2576u527c082b5b39eef6@mail.gmail.com>​
 +Message-ID: <​Pine.LNX.4.62.0606141611220.27611@dolphin.home>​
 +References: <​1a7e305d0606120120l39b78b49n610b4ab7c9c03e05@mail.gmail.com>​
 + <​Pine.LNX.4.62.0606141509050.27611@dolphin.home>​
 + <​1a7e305d0606140727r2cdc2576u527c082b5b39eef6@mail.gmail.com>​
 +MIME-Version:​ 1.0
 +Content-Type:​ TEXT/PLAIN; charset=US-ASCII;​ format=flowed
 +
 +On Wed, 14 Jun 2006, Alan Shieh wrote:
 +>>>​ [01eeef70,​01f00000)
 +>>>​ [01eeef60,​01eeef70)
 +>>>​ // as well as UNDI Data & Code
 +>>
 +>> How much memory does this machine actually have?  The 0x07eeeee0 suggests
 +>> a figure around the 128MB mark.  Etherboot should be relocating itself to
 +>> somewhere near the top of this, yet 0x01eeef70 is around the 32MB mark.
 +>> Something here doesn'​t add up.
 +>
 +> Yes, the machine has 128 MB.
 +
 +Thanks. ​ Can you add some debug statements to the relocation logic, to see 
 +how Etherboot ends up making the decision to relocate to the 32MB mark?
 +
 +For Etherboot 5.4 and below, the e820 map mangler can only truncate ​
 +regions; it can't split them.  This can result in wasting huge amounts ​
 +of memory space unless the region to be hidden is located near the end of 
 +an existing region.
 +
 +This is fixed in gpxe-0.5 (which can split regions), but that branch ​
 +doesn'​t currently have a working PXE API and so is not much use for your 
 +tests.
 +
 +Michael
 +
 +</​file>​

QR Code
QR Code e820irc:irc_logs_for_e820_issue (generated for current page)