pidns: remove now unused kill_proc function
[pandora-kernel.git] / mm / bootmem.c
index 459da47..4af15d0 100644 (file)
@@ -80,7 +80,7 @@ static void __init link_bootmem(bootmem_data_t *bdata)
                bootmem_data_t *ent;
 
                ent = list_entry(iter, bootmem_data_t, list);
-               if (bdata->node_boot_start < ent->node_boot_start)
+               if (bdata->node_min_pfn < ent->node_min_pfn)
                        break;
        }
        list_add_tail(&bdata->list, iter);
@@ -96,7 +96,7 @@ static unsigned long __init init_bootmem_core(bootmem_data_t *bdata,
 
        mminit_validate_memmodel_limits(&start, &end);
        bdata->node_bootmem_map = phys_to_virt(PFN_PHYS(mapstart));
-       bdata->node_boot_start = PFN_PHYS(start);
+       bdata->node_min_pfn = start;
        bdata->node_low_pfn = end;
        link_bootmem(bdata);
 
@@ -151,7 +151,7 @@ static unsigned long __init free_all_bootmem_core(bootmem_data_t *bdata)
        if (!bdata->node_bootmem_map)
                return 0;
 
-       start = PFN_DOWN(bdata->node_boot_start);
+       start = bdata->node_min_pfn;
        end = bdata->node_low_pfn;
 
        /*
@@ -167,7 +167,7 @@ static unsigned long __init free_all_bootmem_core(bootmem_data_t *bdata)
                unsigned long *map, idx, vec;
 
                map = bdata->node_bootmem_map;
-               idx = start - PFN_DOWN(bdata->node_boot_start);
+               idx = start - bdata->node_min_pfn;
                vec = ~map[idx / BITS_PER_LONG];
 
                if (aligned && vec == ~0UL && start + BITS_PER_LONG < end) {
@@ -192,7 +192,7 @@ static unsigned long __init free_all_bootmem_core(bootmem_data_t *bdata)
        }
 
        page = virt_to_page(bdata->node_bootmem_map);
-       pages = bdata->node_low_pfn - PFN_DOWN(bdata->node_boot_start);
+       pages = bdata->node_low_pfn - bdata->node_min_pfn;
        pages = bootmem_bootmap_pages(pages);
        count += pages;
        while (pages--)
@@ -231,8 +231,8 @@ static void __init __free(bootmem_data_t *bdata,
        unsigned long idx;
 
        bdebug("nid=%td start=%lx end=%lx\n", bdata - bootmem_node_data,
-               sidx + PFN_DOWN(bdata->node_boot_start),
-               eidx + PFN_DOWN(bdata->node_boot_start));
+               sidx + bdata->node_min_pfn,
+               eidx + bdata->node_min_pfn);
 
        if (bdata->hint_idx > sidx)
                bdata->hint_idx = sidx;
@@ -250,8 +250,8 @@ static int __init __reserve(bootmem_data_t *bdata, unsigned long sidx,
 
        bdebug("nid=%td start=%lx end=%lx flags=%x\n",
                bdata - bootmem_node_data,
-               sidx + PFN_DOWN(bdata->node_boot_start),
-               eidx + PFN_DOWN(bdata->node_boot_start),
+               sidx + bdata->node_min_pfn,
+               eidx + bdata->node_min_pfn,
                flags);
 
        for (idx = sidx; idx < eidx; idx++)
@@ -261,7 +261,7 @@ static int __init __reserve(bootmem_data_t *bdata, unsigned long sidx,
                                return -EBUSY;
                        }
                        bdebug("silent double reserve of PFN %lx\n",
-                               idx + PFN_DOWN(bdata->node_boot_start));
+                               idx + bdata->node_min_pfn);
                }
        return 0;
 }
@@ -275,11 +275,11 @@ static int __init mark_bootmem_node(bootmem_data_t *bdata,
        bdebug("nid=%td start=%lx end=%lx reserve=%d flags=%x\n",
                bdata - bootmem_node_data, start, end, reserve, flags);
 
-       BUG_ON(start < PFN_DOWN(bdata->node_boot_start));
+       BUG_ON(start < bdata->node_min_pfn);
        BUG_ON(end > bdata->node_low_pfn);
 
-       sidx = start - PFN_DOWN(bdata->node_boot_start);
-       eidx = end - PFN_DOWN(bdata->node_boot_start);
+       sidx = start - bdata->node_min_pfn;
+       eidx = end - bdata->node_min_pfn;
 
        if (reserve)
                return __reserve(bdata, sidx, eidx, flags);
@@ -299,7 +299,8 @@ static int __init mark_bootmem(unsigned long start, unsigned long end,
                int err;
                unsigned long max;
 
-               if (pos < PFN_DOWN(bdata->node_boot_start)) {
+               if (pos < bdata->node_min_pfn ||
+                   pos >= bdata->node_low_pfn) {
                        BUG_ON(pos != start);
                        continue;
                }
@@ -422,7 +423,7 @@ static void * __init alloc_bootmem_core(struct bootmem_data *bdata,
                bdata - bootmem_node_data, size, PAGE_ALIGN(size) >> PAGE_SHIFT,
                align, goal, limit);
 
-       min = PFN_DOWN(bdata->node_boot_start);
+       min = bdata->node_min_pfn;
        max = bdata->node_low_pfn;
 
        goal >>= PAGE_SHIFT;
@@ -440,8 +441,8 @@ static void * __init alloc_bootmem_core(struct bootmem_data *bdata,
        else
                start = ALIGN(min, step);
 
-       sidx = start - PFN_DOWN(bdata->node_boot_start);
-       midx = max - PFN_DOWN(bdata->node_boot_start);
+       sidx = start - bdata->node_min_pfn;;
+       midx = max - bdata->node_min_pfn;
 
        if (bdata->hint_idx > sidx) {
                /*
@@ -491,7 +492,8 @@ find_block:
                                PFN_UP(end_off), BOOTMEM_EXCLUSIVE))
                        BUG();
 
-               region = phys_to_virt(bdata->node_boot_start + start_off);
+               region = phys_to_virt(PFN_PHYS(bdata->node_min_pfn) +
+                               start_off);
                memset(region, 0, size);
                return region;
        }
@@ -518,7 +520,7 @@ restart:
 
                if (goal && bdata->node_low_pfn <= PFN_DOWN(goal))
                        continue;
-               if (limit && bdata->node_boot_start >= limit)
+               if (limit && bdata->node_min_pfn >= PFN_DOWN(limit))
                        break;
 
                region = alloc_bootmem_core(bdata, size, align, goal, limit);
@@ -632,30 +634,15 @@ void * __init __alloc_bootmem_node(pg_data_t *pgdat, unsigned long size,
 void * __init alloc_bootmem_section(unsigned long size,
                                    unsigned long section_nr)
 {
-       void *ptr;
-       unsigned long limit, goal, start_nr, end_nr, pfn;
-       struct pglist_data *pgdat;
+       bootmem_data_t *bdata;
+       unsigned long pfn, goal, limit;
 
        pfn = section_nr_to_pfn(section_nr);
-       goal = PFN_PHYS(pfn);
-       limit = PFN_PHYS(section_nr_to_pfn(section_nr + 1)) - 1;
-       pgdat = NODE_DATA(early_pfn_to_nid(pfn));
-       ptr = alloc_bootmem_core(pgdat->bdata, size, SMP_CACHE_BYTES, goal,
-                               limit);
-
-       if (!ptr)
-               return NULL;
-
-       start_nr = pfn_to_section_nr(PFN_DOWN(__pa(ptr)));
-       end_nr = pfn_to_section_nr(PFN_DOWN(__pa(ptr) + size));
-       if (start_nr != section_nr || end_nr != section_nr) {
-               printk(KERN_WARNING "alloc_bootmem failed on section %ld.\n",
-                      section_nr);
-               free_bootmem_node(pgdat, __pa(ptr), size);
-               ptr = NULL;
-       }
+       goal = pfn << PAGE_SHIFT;
+       limit = section_nr_to_pfn(section_nr + 1) << PAGE_SHIFT;
+       bdata = &bootmem_node_data[early_pfn_to_nid(pfn)];
 
-       return ptr;
+       return alloc_bootmem_core(bdata, size, SMP_CACHE_BYTES, goal, limit);
 }
 #endif