Re: [PATCH 08/12] SFI, x86: hook e820() for memory map initialization

H. Peter Anvin
2009-07-08T21:38:20Z

This bothers me... we keep saying that memory map initialization belongs
to the boot loader, and yet we keep doing the opposite. This isn't just
an arbitrary difference, either: it is pretty essential to being able to
use the early range allocator safely.

-hpa

Len Brown wrote:
> From: Feng Tang <feng.tang@intel.com>
>
> Signed-off-by: Feng Tang <feng.tang@intel.com>
> Signed-off-by: Len Brown <len.brown@intel.com>
> ---
> arch/x86/kernel/e820.c | 5 +++++
> 1 files changed, 5 insertions(+), 0 deletions(-)
>
> diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
> index c4ca89d..e399d0e 100644
> --- a/arch/x86/kernel/e820.c
> +++ b/arch/x86/kernel/e820.c
> @@ -20,6 +20,7 @@
> #include <linux/pfn.h>
> #include <linux/suspend.h>
> #include <linux/firmware-map.h>
> +#include <linux/sfi.h>
>
> #include <asm/pgtable.h>
> #include <asm/page.h>
> @@ -1437,6 +1438,10 @@ char *__init default_machine_specific_memory_setup(void)
> < 0) {
> u64 mem_size;
>
> + /* if SFI mmap table exists, use SFI to setup e820 mmap */
> + if (!sfi_init_memory_map())
> + return "SFI";
> +
> /* compare results from other methods and take the greater */
> if (boot_params.alt_mem_k
> < boot_params.screen_info.ext_mem_k) {