Re: [PATCH] x86: use add_highpages_with_active_regions for high pages init

Yinghai Lu
2008-06-16T03:47:05Z

On Sun, Jun 15, 2008 at 6:20 PM, Huang, Ying <ying.huang@intel.com> wrote:
> On Sat, 2008-06-14 at 02:05 -0700, Yinghai Lu wrote:
>> On Sat, Jun 14, 2008 at 1:23 AM, Ingo Molnar <mingo@elte.hu> wrote:
>> >
>> > * Yinghai Lu <yhlu.kernel@gmail.com> wrote:
>> >
>> >> use early_node_map to init high pages, so can remove page_is_ram and
>> >> page_is_reserved_early in the big loop with add_one_highpage
>> >>
>> >> also remove the page_is_reserved_early that is not needed.
>> >
>> > applied to tip/x86/mpparse for testing, thanks.
>> >
>> > Andrew: mm/page_alloc.c modification.
>>
>> Ying Huang,
>>
>> I removed page_is_reserved_early....it cause init highmem take extra
>> time on my big box.
>
> OK.
>
>> please check efi_reserve_early that is calling reserve_early. so need
>> to make sure "EFI memmap" is reserved in itself...otherwise you may
>> need to update e820 table by add_memory_region (....,
>> E820_RESERVED)...
>
> EFI memmap may be in highmem, it can not be reserved by bootmem
> allocator on i386. So I think it is necessary to have an early highmem
> allocator. It can be used for EFI memory map and linked list of setup
> data which comes from boot-loader and may be located in highmem.
>
> As for the implementation, what about adding a remove_active_range()
> which operate on early_node_map and an early_res_to_early_node_map()?

don't need,
EFI memmap should be reserved in e820map, so it should not show up in
early_node_map.
if it is not reserved in e820map, you could use e820_add_region or
e820_update_range make it reserved

YH