linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / ia64 / mm / init.c
index 4eb2f59..b38b6d2 100644 (file)
@@ -4,6 +4,7 @@
  * Copyright (C) 1998-2003 Hewlett-Packard Co
  *     David Mosberger-Tang <davidm@hpl.hp.com>
  */
+#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
 
@@ -108,7 +109,6 @@ lazy_mmu_prot_update (pte_t pte)
 {
        unsigned long addr;
        struct page *page;
-       unsigned long order;
 
        if (!pte_exec(pte))
                return;                         /* not an executable page... */
@@ -119,12 +119,7 @@ lazy_mmu_prot_update (pte_t pte)
        if (test_bit(PG_arch_1, &page->flags))
                return;                         /* i-cache is already coherent with d-cache */
 
-       if (PageCompound(page)) {
-               order = (unsigned long) (page[1].lru.prev);
-               flush_icache_range(addr, addr + (1UL << order << PAGE_SHIFT));
-       }
-       else
-               flush_icache_range(addr, addr + PAGE_SIZE);
+       flush_icache_range(addr, addr + PAGE_SIZE);
        set_bit(PG_arch_1, &page->flags);       /* mark page as clean */
 }
 
@@ -202,7 +197,7 @@ free_initmem (void)
        eaddr = (unsigned long) ia64_imva(__init_end);
        while (addr < eaddr) {
                ClearPageReserved(virt_to_page(addr));
-               init_page_count(virt_to_page(addr));
+               set_page_count(virt_to_page(addr), 1);
                free_page(addr);
                ++totalram_pages;
                addr += PAGE_SIZE;
@@ -211,7 +206,7 @@ free_initmem (void)
               (__init_end - __init_begin) >> 10);
 }
 
-void __init
+void
 free_initrd_mem (unsigned long start, unsigned long end)
 {
        struct page *page;
@@ -257,23 +252,16 @@ free_initrd_mem (unsigned long start, unsigned long end)
                        continue;
                page = virt_to_page(start);
                ClearPageReserved(page);
-               init_page_count(page);
+               set_page_count(page, 1);
                free_page(start);
                ++totalram_pages;
        }
 }
 
-int page_is_ram(unsigned long pagenr)
-{
-      //FIXME: implement w/efi walk
-      printk("page is ram is called!!!!!\n");  
-      return 1;
-}
-
 /*
  * This installs a clean page in the kernel's page table.
  */
-static struct page * __init
+struct page *
 put_kernel_page (struct page *page, unsigned long address, pgprot_t pgprot)
 {
        pgd_t *pgd;
@@ -306,7 +294,7 @@ put_kernel_page (struct page *page, unsigned long address, pgprot_t pgprot)
        return page;
 }
 
-static void __init
+static void
 setup_gate (void)
 {
        struct page *page;
@@ -422,63 +410,8 @@ ia64_mmu_init (void *my_cpu_data)
 }
 
 #ifdef CONFIG_VIRTUAL_MEM_MAP
-int vmemmap_find_next_valid_pfn(int node, int i)
-{
-       unsigned long end_address, hole_next_pfn;
-       unsigned long stop_address;
-       pg_data_t *pgdat = NODE_DATA(node);
-
-       end_address = (unsigned long) &vmem_map[pgdat->node_start_pfn + i];
-       end_address = PAGE_ALIGN(end_address);
 
-       stop_address = (unsigned long) &vmem_map[
-               pgdat->node_start_pfn + pgdat->node_spanned_pages];
-
-       do {
-               pgd_t *pgd;
-               pud_t *pud;
-               pmd_t *pmd;
-               pte_t *pte;
-
-               pgd = pgd_offset_k(end_address);
-               if (pgd_none(*pgd)) {
-                       end_address += PGDIR_SIZE;
-                       continue;
-               }
-
-               pud = pud_offset(pgd, end_address);
-               if (pud_none(*pud)) {
-                       end_address += PUD_SIZE;
-                       continue;
-               }
-
-               pmd = pmd_offset(pud, end_address);
-               if (pmd_none(*pmd)) {
-                       end_address += PMD_SIZE;
-                       continue;
-               }
-
-               pte = pte_offset_kernel(pmd, end_address);
-retry_pte:
-               if (pte_none(*pte)) {
-                       end_address += PAGE_SIZE;
-                       pte++;
-                       if ((end_address < stop_address) &&
-                           (end_address != ALIGN(end_address, 1UL << PMD_SHIFT)))
-                               goto retry_pte;
-                       continue;
-               }
-               /* Found next valid vmem_map page */
-               break;
-       } while (end_address < stop_address);
-
-       end_address = min(end_address, stop_address);
-       end_address = end_address - (unsigned long) vmem_map + sizeof(struct page) - 1;
-       hole_next_pfn = end_address / sizeof(struct page);
-       return hole_next_pfn - pgdat->node_start_pfn;
-}
-
-int __init
+int
 create_mem_map_page_table (u64 start, u64 end, void *arg)
 {
        unsigned long address, start_page, end_page;
@@ -586,7 +519,7 @@ ia64_pfn_valid (unsigned long pfn)
 }
 EXPORT_SYMBOL(ia64_pfn_valid);
 
-int __init
+int
 find_largest_hole (u64 start, u64 end, void *arg)
 {
        u64 *max_gap = arg;
@@ -602,7 +535,7 @@ find_largest_hole (u64 start, u64 end, void *arg)
 }
 #endif /* CONFIG_VIRTUAL_MEM_MAP */
 
-static int __init
+static int
 count_reserved_pages (u64 start, u64 end, void *arg)
 {
        unsigned long num_reserved = 0;
@@ -623,7 +556,7 @@ count_reserved_pages (u64 start, u64 end, void *arg)
  * purposes.
  */
 
-static int nolwsys __initdata;
+static int nolwsys;
 
 static int __init
 nolwsys_setup (char *s)
@@ -634,7 +567,7 @@ nolwsys_setup (char *s)
 
 __setup("nolwsys", nolwsys_setup);
 
-void __init
+void
 mem_init (void)
 {
        long reserved_pages, codesize, datasize, initsize;
@@ -667,7 +600,7 @@ mem_init (void)
        kclist_add(&kcore_vmem, (void *)VMALLOC_START, VMALLOC_END-VMALLOC_START);
        kclist_add(&kcore_kernel, _stext, _end - _stext);
 
-       for_each_online_pgdat(pgdat)
+       for_each_pgdat(pgdat)
                if (pgdat->bdata->node_bootmem_map)
                        totalram_pages += free_all_bootmem_node(pgdat);
 
@@ -707,13 +640,13 @@ mem_init (void)
 void online_page(struct page *page)
 {
        ClearPageReserved(page);
-       init_page_count(page);
+       set_page_count(page, 1);
        __free_page(page);
        totalram_pages++;
        num_physpages++;
 }
 
-int arch_add_memory(int nid, u64 start, u64 size)
+int add_memory(u64 start, u64 size)
 {
        pg_data_t *pgdat;
        struct zone *zone;
@@ -721,7 +654,7 @@ int arch_add_memory(int nid, u64 start, u64 size)
        unsigned long nr_pages = size >> PAGE_SHIFT;
        int ret;
 
-       pgdat = NODE_DATA(nid);
+       pgdat = NODE_DATA(0);
 
        zone = pgdat->node_zones + ZONE_NORMAL;
        ret = __add_pages(zone, start_pfn, nr_pages);
@@ -737,5 +670,4 @@ int remove_memory(u64 start, u64 size)
 {
        return -EINVAL;
 }
-EXPORT_SYMBOL_GPL(remove_memory);
 #endif