Revert to Fedora kernel-2.6.17-1.2187_FC5 patched with vs2.0.2.1; there are too many...
[linux-2.6.git] / arch / sparc64 / mm / init.c
index 09cb7fc..1539a83 100644 (file)
@@ -5,6 +5,7 @@
  *  Copyright (C) 1997-1999 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
  */
  
+#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/sched.h>
@@ -17,7 +18,6 @@
 #include <linux/initrd.h>
 #include <linux/swap.h>
 #include <linux/pagemap.h>
-#include <linux/poison.h>
 #include <linux/fs.h>
 #include <linux/seq_file.h>
 #include <linux/kprobes.h>
@@ -42,7 +42,6 @@
 #include <asm/sections.h>
 #include <asm/tsb.h>
 #include <asm/hypervisor.h>
-#include <asm/prom.h>
 
 extern void device_scan(void);
 
@@ -102,6 +101,8 @@ static void __init read_obp_memory(const char *property,
                prom_halt();
        }
 
+       *num_ents = ents;
+
        /* Sanitize what we got from the firmware, by page aligning
         * everything.
         */
@@ -123,25 +124,6 @@ static void __init read_obp_memory(const char *property,
                regs[i].phys_addr = base;
                regs[i].reg_size = size;
        }
-
-       for (i = 0; i < ents; i++) {
-               if (regs[i].reg_size == 0UL) {
-                       int j;
-
-                       for (j = i; j < ents - 1; j++) {
-                               regs[j].phys_addr =
-                                       regs[j+1].phys_addr;
-                               regs[j].reg_size =
-                                       regs[j+1].reg_size;
-                       }
-
-                       ents--;
-                       i--;
-               }
-       }
-
-       *num_ents = ents;
-
        sort(regs, ents, sizeof(struct linux_prom64_registers),
             cmp_p64, NULL);
 }
@@ -920,7 +902,8 @@ static unsigned long __init bootmem_init(unsigned long *pages_avail,
        if (sparc_ramdisk_image || sparc_ramdisk_image64) {
                unsigned long ramdisk_image = sparc_ramdisk_image ?
                        sparc_ramdisk_image : sparc_ramdisk_image64;
-               ramdisk_image -= KERNBASE;
+               if (ramdisk_image >= (unsigned long)_end - 2 * PAGE_SIZE)
+                       ramdisk_image -= KERNBASE;
                initrd_start = ramdisk_image + phys_base;
                initrd_end = initrd_start + sparc_ramdisk_size;
                if (initrd_end > end_of_phys_memory) {
@@ -1356,8 +1339,6 @@ void __init paging_init(void)
 
        kernel_physical_mapping_init();
 
-       prom_build_devicetree();
-
        {
                unsigned long zones_size[MAX_NR_ZONES];
                unsigned long zholes_size[MAX_NR_ZONES];
@@ -1395,7 +1376,7 @@ static void __init taint_real_pages(void)
                while (old_start < old_end) {
                        int n;
 
-                       for (n = 0; n < pavail_rescan_ents; n++) {
+                       for (n = 0; pavail_rescan_ents; n++) {
                                unsigned long new_start, new_end;
 
                                new_start = pavail_rescan[n].phys_addr;
@@ -1417,32 +1398,6 @@ static void __init taint_real_pages(void)
        }
 }
 
-int __init page_in_phys_avail(unsigned long paddr)
-{
-       int i;
-
-       paddr &= PAGE_MASK;
-
-       for (i = 0; i < pavail_rescan_ents; i++) {
-               unsigned long start, end;
-
-               start = pavail_rescan[i].phys_addr;
-               end = start + pavail_rescan[i].reg_size;
-
-               if (paddr >= start && paddr < end)
-                       return 1;
-       }
-       if (paddr >= kern_base && paddr < (kern_base + kern_size))
-               return 1;
-#ifdef CONFIG_BLK_DEV_INITRD
-       if (paddr >= __pa(initrd_start) &&
-           paddr < __pa(PAGE_ALIGN(initrd_end)))
-               return 1;
-#endif
-
-       return 0;
-}
-
 void __init mem_init(void)
 {
        unsigned long codepages, datapages, initpages;
@@ -1519,7 +1474,7 @@ void free_initmem(void)
                page = (addr +
                        ((unsigned long) __va(kern_base)) -
                        ((unsigned long) KERNBASE));
-               memset((void *)addr, POISON_FREE_INITMEM, PAGE_SIZE);
+               memset((void *)addr, 0xcc, PAGE_SIZE);
                p = virt_to_page(page);
 
                ClearPageReserved(p);
@@ -1567,7 +1522,6 @@ pgprot_t PAGE_EXEC __read_mostly;
 unsigned long pg_iobits __read_mostly;
 
 unsigned long _PAGE_IE __read_mostly;
-EXPORT_SYMBOL(_PAGE_IE);
 
 unsigned long _PAGE_E __read_mostly;
 EXPORT_SYMBOL(_PAGE_E);