Re: [PATCH 1/2] x86 boot: add E820_RESVD_KERN

From: Yinghai Lu
Date: Mon Jun 30 2008 - 15:05:24 EST


On Mon, Jun 30, 2008 at 2:38 AM, Huang, Ying <ying.huang@xxxxxxxxx> wrote:
> On Mon, 2008-06-30 at 02:15 -0700, Yinghai Lu wrote:
> [...]
>> >
>> > I mean memory area reserved with reserved_early() or e820_update_range()
>> > before reserve_setup_data() is called.
>>
>> before parse_setup_data, reserve_early is called for
>> 1. kernel text/data/bss + initial pgt
>> 2. ramdisk
>> 3. ebda
>> e820_update_range is not called.
>> at this time early_res have RAM reserved by kernel.
>>
>> then setup_memory_map is called, so e820 have some ranges...directly
>> from e820 table
>>
>> next need to call parse_setup_data
>> it will add some entries in e820
>>
>> then reserve_setup_data is called, it will use e820_update_range to
>> reserve setup_data itself directly in e820
>>
>> ...
>
> Yes. There is no real conflict now. I think a better rule is:
>
> - Reserve memory area (directly from BIOS or boot-loader, not from
> find_e820_area) needed as early as possible.
> - Don't touch reserved area until all possible reservation is made, that
> is, before conflict check is done.
no one touch the reserved area. before all reserved in early_res or e820.
>
>> >
>> > And because there is no conflict check in e820_update_range(), what to
>> > deal with potential conflict between setup_data and other memory area
>> > regardless which one is reserved earlier?
>>
>> find_e820_area will make sure it only find ram from e820 and it is not
>> conflict with early_res
>
> For find_e820_area, this is safe enough. But what about conflict between
> setup_data and ebda or ramdisk?

can you have setup_data and ebda at the same time?

setup_data and ramdisk should be ok, because bootloader is supposed to
make them not to be conflicts.

YH
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/