• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/mm/

Lines Matching refs:bdata

52  * link bdata in order
54 static void __init link_bootmem(bootmem_data_t *bdata)
59 list_add(&bdata->list, &bdata_list);
64 if (bdata->node_boot_start < ent->node_boot_start) {
65 list_add_tail(&bdata->list, &ent->list);
69 list_add_tail(&bdata->list, &bdata_list);
73 * Given an initialised bdata, it returns the size of the boot bitmap
75 static unsigned long __init get_mapsize(bootmem_data_t *bdata)
78 unsigned long start = PFN_DOWN(bdata->node_boot_start);
79 unsigned long end = bdata->node_low_pfn;
91 bootmem_data_t *bdata = pgdat->bdata;
94 bdata->node_bootmem_map = phys_to_virt(PFN_PHYS(mapstart));
95 bdata->node_boot_start = PFN_PHYS(start);
96 bdata->node_low_pfn = end;
97 link_bootmem(bdata);
103 mapsize = get_mapsize(bdata);
105 memset(bdata->node_bootmem_map, 0xff, mapsize);
116 static void __init reserve_bootmem_core(bootmem_data_t *bdata, unsigned long addr,
127 BUG_ON(PFN_DOWN(addr) >= bdata->node_low_pfn);
128 BUG_ON(PFN_UP(addr + size) > bdata->node_low_pfn);
130 sidx = PFN_DOWN(addr - bdata->node_boot_start);
131 eidx = PFN_UP(addr + size - bdata->node_boot_start);
134 if (test_and_set_bit(i, bdata->node_bootmem_map)) {
141 static void __init free_bootmem_core(bootmem_data_t *bdata, unsigned long addr,
152 BUG_ON(PFN_DOWN(addr + size) > bdata->node_low_pfn);
154 if (addr < bdata->last_success)
155 bdata->last_success = addr;
160 sidx = PFN_UP(addr) - PFN_DOWN(bdata->node_boot_start);
161 eidx = PFN_DOWN(addr + size - bdata->node_boot_start);
164 if (unlikely(!test_and_clear_bit(i, bdata->node_bootmem_map)))
183 __alloc_bootmem_core(struct bootmem_data *bdata, unsigned long size,
196 if (limit && bdata->node_boot_start >= limit)
200 if (!bdata->node_bootmem_map)
203 end_pfn = bdata->node_low_pfn;
208 eidx = end_pfn - PFN_DOWN(bdata->node_boot_start);
210 if (align && (bdata->node_boot_start & (align - 1UL)) != 0)
211 offset = align - (bdata->node_boot_start & (align - 1UL));
218 if (goal && goal >= bdata->node_boot_start && PFN_DOWN(goal) < end_pfn) {
219 preferred = goal - bdata->node_boot_start;
221 if (bdata->last_success >= preferred)
222 if (!limit || (limit && limit > bdata->last_success))
223 preferred = bdata->last_success;
234 i = find_next_zero_bit(bdata->node_bootmem_map, eidx, i);
238 if (test_bit(i, bdata->node_bootmem_map))
243 if (test_bit(j, bdata->node_bootmem_map))
259 bdata->last_success = PFN_PHYS(start);
268 bdata->last_offset && bdata->last_pos+1 == start) {
269 offset = ALIGN(bdata->last_offset, align);
275 bdata->last_offset = offset + size;
276 ret = phys_to_virt(bdata->last_pos * PAGE_SIZE +
278 bdata->node_boot_start);
282 ret = phys_to_virt(bdata->last_pos * PAGE_SIZE +
284 bdata->node_boot_start);
285 bdata->last_pos = start + areasize - 1;
286 bdata->last_offset = remaining_size;
288 bdata->last_offset &= ~PAGE_MASK;
290 bdata->last_pos = start + areasize - 1;
291 bdata->last_offset = size & ~PAGE_MASK;
292 ret = phys_to_virt(start * PAGE_SIZE + bdata->node_boot_start);
299 if (unlikely(test_and_set_bit(i, bdata->node_bootmem_map)))
311 bootmem_data_t *bdata = pgdat->bdata;
317 BUG_ON(!bdata->node_bootmem_map);
321 pfn = PFN_DOWN(bdata->node_boot_start);
322 idx = bdata->node_low_pfn - pfn;
323 map = bdata->node_bootmem_map;
325 if (bdata->node_boot_start == 0 ||
326 ffs(bdata->node_boot_start) - PAGE_SHIFT > ffs(BITS_PER_LONG))
361 page = virt_to_page(bdata->node_bootmem_map);
363 idx = (get_mapsize(bdata) + PAGE_SIZE-1) >> PAGE_SHIFT;
369 bdata->node_bootmem_map = NULL;
383 reserve_bootmem_core(pgdat->bdata, physaddr, size);
389 free_bootmem_core(pgdat->bdata, physaddr, size);
407 reserve_bootmem_core(NODE_DATA(0)->bdata, addr, size);
413 free_bootmem_core(NODE_DATA(0)->bdata, addr, size);
424 bootmem_data_t *bdata;
427 list_for_each_entry(bdata, &bdata_list, list) {
428 ptr = __alloc_bootmem_core(bdata, size, align, goal, 0);
456 ptr = __alloc_bootmem_core(pgdat->bdata, size, align, goal, 0);
470 bootmem_data_t *bdata;
473 list_for_each_entry(bdata, &bdata_list, list) {
474 ptr = __alloc_bootmem_core(bdata, size, align, goal,
491 return __alloc_bootmem_core(pgdat->bdata, size, align, goal,