2008-03-23 07:14:40

by Yinghai Lu

[permalink] [raw]
Subject: [PATCH] x86_32: fix trim mtrr not to setup_memory two times


we could call find_max_pfn() directly instead of setup_memory() to get
max_pfn needed for mtrr trimming.

otherwise setup_mempry is called two times... that is duplicated...

Signed-off-by: Yinghai Lu <[email protected]>

Index: linux-2.6/arch/x86/kernel/setup_32.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/setup_32.c
+++ linux-2.6/arch/x86/kernel/setup_32.c
@@ -448,8 +448,6 @@ static unsigned long __init setup_memory
*/
min_low_pfn = PFN_UP(init_pg_tables_end);

- find_max_pfn();
-
max_low_pfn = find_max_low_pfn();

#ifdef CONFIG_HIGHMEM
@@ -811,12 +809,13 @@ void __init setup_arch(char **cmdline_p)
if (efi_enabled)
efi_init();

- max_low_pfn = setup_memory();
-
/* update e820 for memory not covered by WB MTRRs */
+ find_max_pfn();
mtrr_bp_init();
if (mtrr_trim_uncached_memory(max_pfn))
- max_low_pfn = setup_memory();
+ find_max_pfn();
+
+ max_low_pfn = setup_memory();

#ifdef CONFIG_VMI
/*
Index: linux-2.6/arch/x86/mm/discontig_32.c
===================================================================
--- linux-2.6.orig/arch/x86/mm/discontig_32.c
+++ linux-2.6/arch/x86/mm/discontig_32.c
@@ -324,7 +324,6 @@ unsigned long __init setup_memory(void)
* this space and use it to adjust the boundary between ZONE_NORMAL
* and ZONE_HIGHMEM.
*/
- find_max_pfn();
get_memcfg_numa();

kva_pages = calculate_numa_remap_pages();