From: Yinghai <yinghai.lu@oracle.com>
To: Mike Travis <travis@sgi.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@elte.hu>,
Thomas Gleixner <tglx@linutronix.de>,
x86@kernel.org, Suresh Siddha <suresh.b.siddha@intel.com>,
Rusty Russell <rusty@rustcorp.com.au>,
Jens Axboe <jens.axboe@oracle.com>,
Jack Steiner <steiner@sgi.com>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [Patch 1/1] x86 efi: Fill all reserved memmap entries if add_efi_memmap specified.
Date: Thu, 13 May 2010 14:48:34 -0700 [thread overview]
Message-ID: <4BEC73B2.2020909@oracle.com> (raw)
In-Reply-To: <4BEC6C94.2020100@sgi.com>
On 05/13/2010 02:18 PM, Mike Travis wrote:
>
>
> Mike Travis wrote:
>>
>>
>> Yinghai wrote:
>>> On 05/12/2010 11:55 AM, H. Peter Anvin wrote:
>>>> On 05/12/2010 11:10 AM, Mike Travis wrote:
>>>>> Currently, the e820_reserve_resources() function does not add entries
>>>>> obtained via the "add_efi_memmap" kernel cmdline option. This causes
>>>>> /sys/firmware/memmap/... to be incomplete (stops after 128 entries).
>>>>> Utilities that examine these entries then do not get the complete
>>>>> picture of system memory.
>>>>>
>>>>> This patch causes the above function to use the e820 memmap instead
>>>>> of the e820_saved memmap if "add_efi_memmap" cmdline option is
>>>>> specified.
>>>>>
>>>>> Signed-off-by: Mike Travis <travis@sgi.com>
>>>>> Signed-off-by: Jack Steiner <steiner@sgi.com>
>>>> If I'm not mistaken, the very reason for the e820 vs e820_saved map is
>>>> that the latter is supposed to reflect the firmware report, whereas the
>>>> former is subject to be modified by the kernel. As this is actually a
>>>> reflection of the firmware (although it would be better if you could
>>>> fix
>>>> the bootloader instead of adding hacks in the kernel...) it really
>>>> should go into e820_saved as well as e820. Displaying the adjusted
>>>> e820
>>>> map doesn't seem appropriate under any circumstances.
>>>
>>> Yes, you are right.
>>>
>>> We should not touch e820_saved and keep /sys/firmware/memmap to be
>>> consistent with it.
>>>
>>> YH
>>
>
> Here's where it gets confusing:
>
> /*
> * The e820 map is the map that gets modified e.g. with command line
> parameters
> * and that is also registered with modifications in the kernel resource
> tree
> * with the iomem_resource as parent.
> *
> * The e820_saved is directly saved after the BIOS-provided memory map is
> * copied. It doesn't get modified afterwards. It's registered for the
> * /sys/firmware/memmap interface.
> *
> * That memory map is not modified and is used as base for kexec. The
> kexec'd
> * kernel should get the same memory map as the firmware provides. Then the
> * user can e.g. boot the original kernel with mem=1G while still booting
> the
> * next kernel with full memory.
> */
> struct e820map e820;
> struct e820map e820_saved;
>
>
> It specifically mentions that kexec needs the unmodified address map. But
> we know it does not work if it does not have the "extra memmap entries"
> from BIOS (added with option "add_efi_memmap".)
>
> So in essence I see it as a lie that e820_saved contains the memmap
> provided by the firmware. It clearly does not. It is missing all
> the entries greater than 128.
>
> So the question remains, should /sys/firmware/memmap be provisioned
> from e820_saved with changes to add to that map the extra memmap
> entries? Or should it be provisioned from the updated e820 map
> that is also printed by e820_print_map()?
> The output to the console and the contents of /sys/firmware/memmap
> should match, and this is what this patch was intending to do.
> /sys/firmware/memmap should not be truncated due to legacy BIOS
> limitations.
>
> If the e820 memmap changes further due to other circumstances,
> that should not change the mappings under /sys/firmware/memmap?
> Unless I'm missing something here, I don't see the downside.
>
> So which should it be?
in setup.c::setup_arch()
setup_memory_map();
parse_setup_data();
/* update the e820_saved too */
e820_reserve_setup_data();
...
parse_early_param();
...
finish_e820_parsing();
efi memmap is appended to e820 by parse_setup_data
e820_reserve_setup_data() will copy e820 to e820_saved.
or do you have old boot loader
if (boot_params.hdr.version < 0x0209)
return;
YH
next prev parent reply other threads:[~2010-05-13 21:50 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-12 18:10 [Patch 1/1] x86 efi: Fill all reserved memmap entries if add_efi_memmap specified Mike Travis
2010-05-12 18:55 ` H. Peter Anvin
2010-05-12 20:19 ` Yinghai
2010-05-12 21:02 ` Mike Travis
2010-05-13 21:18 ` Mike Travis
2010-05-13 21:48 ` Yinghai [this message]
2010-05-13 21:55 ` Mike Travis
2010-05-13 22:46 ` H. Peter Anvin
2010-05-24 23:04 ` [Patch 1/1] x86 efi: insert add_efi_memmap entries into both e820 maps Mike Travis
2010-05-25 22:34 ` [Patch 1/1] x86 efi: Fill all reserved memmap entries if add_efi_memmap specified Mike Travis
2010-05-25 22:41 ` H. Peter Anvin
2010-05-25 22:46 ` Mike Travis
2010-05-25 22:49 ` H. Peter Anvin
2010-05-26 17:39 ` Yinghai Lu
2010-05-26 17:42 ` Mike Travis
2010-05-26 18:22 ` H. Peter Anvin
2010-05-26 18:47 ` Mike Travis
2010-05-26 19:04 ` H. Peter Anvin
2010-05-26 19:09 ` Mike Travis
2010-05-26 20:10 ` H. Peter Anvin
2010-05-25 22:59 ` [Patch 1/1] x86 efi: Fill all reserved memmap entries if add_efi_memmap specified v2 Mike Travis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4BEC73B2.2020909@oracle.com \
--to=yinghai.lu@oracle.com \
--cc=hpa@zytor.com \
--cc=jens.axboe@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rusty@rustcorp.com.au \
--cc=steiner@sgi.com \
--cc=suresh.b.siddha@intel.com \
--cc=tglx@linutronix.de \
--cc=travis@sgi.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.