aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/i386/kernel/setup.c8
-rw-r--r--arch/i386/mm/discontig.c5
-rw-r--r--arch/i386/mm/highmem.c2
-rw-r--r--arch/i386/mm/init.c20
4 files changed, 14 insertions, 21 deletions
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c
index f1682206d304..71a540362b78 100644
--- a/arch/i386/kernel/setup.c
+++ b/arch/i386/kernel/setup.c
@@ -1170,6 +1170,14 @@ static unsigned long __init setup_memory(void)
1170 } 1170 }
1171 printk(KERN_NOTICE "%ldMB HIGHMEM available.\n", 1171 printk(KERN_NOTICE "%ldMB HIGHMEM available.\n",
1172 pages_to_mb(highend_pfn - highstart_pfn)); 1172 pages_to_mb(highend_pfn - highstart_pfn));
1173 num_physpages = highend_pfn;
1174 high_memory = (void *) __va(highstart_pfn * PAGE_SIZE - 1) + 1;
1175#else
1176 num_physpages = max_low_pfn;
1177 high_memory = (void *) __va(max_low_pfn * PAGE_SIZE - 1) + 1;
1178#endif
1179#ifdef CONFIG_FLATMEM
1180 max_mapnr = num_physpages;
1173#endif 1181#endif
1174 printk(KERN_NOTICE "%ldMB LOWMEM available.\n", 1182 printk(KERN_NOTICE "%ldMB LOWMEM available.\n",
1175 pages_to_mb(max_low_pfn)); 1183 pages_to_mb(max_low_pfn));
diff --git a/arch/i386/mm/discontig.c b/arch/i386/mm/discontig.c
index 7c392dc553b8..f0c10b3cd158 100644
--- a/arch/i386/mm/discontig.c
+++ b/arch/i386/mm/discontig.c
@@ -313,6 +313,11 @@ unsigned long __init setup_memory(void)
313 highstart_pfn = system_max_low_pfn; 313 highstart_pfn = system_max_low_pfn;
314 printk(KERN_NOTICE "%ldMB HIGHMEM available.\n", 314 printk(KERN_NOTICE "%ldMB HIGHMEM available.\n",
315 pages_to_mb(highend_pfn - highstart_pfn)); 315 pages_to_mb(highend_pfn - highstart_pfn));
316 num_physpages = highend_pfn;
317 high_memory = (void *) __va(highstart_pfn * PAGE_SIZE - 1) + 1;
318#else
319 num_physpages = system_max_low_pfn;
320 high_memory = (void *) __va(system_max_low_pfn * PAGE_SIZE - 1) + 1;
316#endif 321#endif
317 printk(KERN_NOTICE "%ldMB LOWMEM available.\n", 322 printk(KERN_NOTICE "%ldMB LOWMEM available.\n",
318 pages_to_mb(system_max_low_pfn)); 323 pages_to_mb(system_max_low_pfn));
diff --git a/arch/i386/mm/highmem.c b/arch/i386/mm/highmem.c
index b6eb4dcb8777..ba44000b9069 100644
--- a/arch/i386/mm/highmem.c
+++ b/arch/i386/mm/highmem.c
@@ -54,7 +54,7 @@ void kunmap_atomic(void *kvaddr, enum km_type type)
54 unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK; 54 unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK;
55 enum fixed_addresses idx = type + KM_TYPE_NR*smp_processor_id(); 55 enum fixed_addresses idx = type + KM_TYPE_NR*smp_processor_id();
56 56
57 if (vaddr < FIXADDR_START) { // FIXME 57 if (vaddr >= PAGE_OFFSET && vaddr < (unsigned long)high_memory) {
58 dec_preempt_count(); 58 dec_preempt_count();
59 preempt_check_resched(); 59 preempt_check_resched();
60 return; 60 return;
diff --git a/arch/i386/mm/init.c b/arch/i386/mm/init.c
index 89e8486aac34..d0c2fdf6a4d7 100644
--- a/arch/i386/mm/init.c
+++ b/arch/i386/mm/init.c
@@ -552,18 +552,6 @@ static void __init test_wp_bit(void)
552 } 552 }
553} 553}
554 554
555static void __init set_max_mapnr_init(void)
556{
557#ifdef CONFIG_HIGHMEM
558 num_physpages = highend_pfn;
559#else
560 num_physpages = max_low_pfn;
561#endif
562#ifdef CONFIG_FLATMEM
563 max_mapnr = num_physpages;
564#endif
565}
566
567static struct kcore_list kcore_mem, kcore_vmalloc; 555static struct kcore_list kcore_mem, kcore_vmalloc;
568 556
569void __init mem_init(void) 557void __init mem_init(void)
@@ -590,14 +578,6 @@ void __init mem_init(void)
590 } 578 }
591#endif 579#endif
592 580
593 set_max_mapnr_init();
594
595#ifdef CONFIG_HIGHMEM
596 high_memory = (void *) __va(highstart_pfn * PAGE_SIZE - 1) + 1;
597#else
598 high_memory = (void *) __va(max_low_pfn * PAGE_SIZE - 1) + 1;
599#endif
600
601 /* this will put all low memory onto the freelists */ 581 /* this will put all low memory onto the freelists */
602 totalram_pages += free_all_bootmem(); 582 totalram_pages += free_all_bootmem();
603 583