/* * linux/mm/page_alloc.c * * Manages the free list, the system allocates free pages here. * Note that kmalloc() lives in slab.c * * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds * Swap reorganised 29.12.95, Stephen Tweedie * Support of BIGMEM added by Gerhard Wichert, Siemens AG, July 1999 * Reshaped it to be a zoned allocator, Ingo Molnar, Red Hat, 1999 * Discontiguous memory support, Kanoj Sarcar, SGI, Nov 1999 * Zone balancing, Kanoj Sarcar, SGI, Jan 2000 * Per cpu hot/cold page lists, bulk allocation, Martin J. Bligh, Sept 2002 * (lots of bits borrowed from Ingo Molnar & Andrew Morton) */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "internal.h" /* * Array of node states. */ nodemask_t node_states[NR_NODE_STATES] __read_mostly = { [N_POSSIBLE] = NODE_MASK_ALL, [N_ONLINE] = { { [0] = 1UL } }, #ifndef CONFIG_NUMA [N_NORMAL_MEMORY] = { { [0] = 1UL } }, #ifdef CONFIG_HIGHMEM [N_HIGH_MEMORY] = { { [0] = 1UL } }, #endif [N_CPU] = { { [0] = 1UL } }, #endif /* NUMA */ }; EXPORT_SYMBOL(node_states); unsigned long totalram_pages __read_mostly; unsigned long totalreserve_pages __read_mostly; int percpu_pagelist_fraction; gfp_t gfp_allowed_mask __read_mostly = GFP_BOOT_MASK; #ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE int pageblock_order __read_mostly; #endif static void __free_pages_ok(struct page *page, unsigned int order); /* * results with 256, 32 in the lowmem_reserve sysctl: * 1G machine -> (16M dma, 800M-16M normal, 1G-800M high) * 1G machine -> (16M dma, 784M normal, 224M high) * NORMAL allocation will leave 784M/256 of ram reserved in the ZONE_DMA * HIGHMEM allocation will leave 224M/32 of ram reserved in ZONE_NORMAL * HIGHMEM allocation will (224M+784M)/256 of ram reserved in ZONE_DMA * * TBD: should special case ZONE_DMA32 machines here - in those we normally * don't need any ZONE_NORMAL reservation */ int sysctl_lowmem_reserve_ratio[MAX_NR_ZONES-1] = { #ifdef CONFIG_ZONE_DMA 256, #endif #ifdef CONFIG_ZONE_DMA32 256, #endif #ifdef CONFIG_HIGHMEM 32, #endif 32, }; EXPORT_SYMBOL(totalram_pages); static char * const zone_names[MAX_NR_ZONES] = { #ifdef CONFIG_ZONE_DMA "DMA", #endif #ifdef CONFIG_ZONE_DMA32 "DMA32", #endif "Normal", #ifdef CONFIG_HIGHMEM "HighMem", #endif "Movable", }; int min_free_kbytes = 1024; static unsigned long __meminitdata nr_kernel_pages; static unsigned long __meminitdata nr_all_pages; static unsigned long __meminitdata dma_reserve; #ifdef CONFIG_ARCH_POPULATES_NODE_MAP /* * MAX_ACTIVE_REGIONS determines the maximum number of distinct * ranges of memory (RAM) that may be registered with add_active_range(). * Ranges passed to add_active_range() will be merged if possible * so the number of times add_active_range() can be called is * related to the number of nodes and the number of holes */ #ifdef CONFIG_MAX_ACTIVE_REGIONS /* Allow an architecture to set MAX_ACTIVE_REGIONS to save memory */ #define MAX_ACTIVE_REGIONS CONFIG_MAX_ACTIVE_REGIONS #else #if MAX_NUMNODES >= 32 /* If there can be many nodes, allow up to 50 holes per node */ #define MAX_ACTIVE_REGIONS (MAX_NUMNODES*50) #else /* By default, allow up to 256 distinct regions */ #define MAX_ACTIVE_REGIONS 256 #endif #endif static struct node_active_region __meminitdata early_node_map[MAX_ACTIVE_REGIONS]; static int __meminitdata nr_nodemap_entries; static unsigned long __meminitdata arch_zone_lowest_possible_pfn[MAX_NR_ZONES]; static unsigned long __meminitdata arch_zone_highest_possible_pfn[MAX_NR_ZONES]; static unsigned long __initdata required_kernelcore; static unsigned long __initdata required_movablecore; static unsigned long __meminitdata zone_movable_pfn[MAX_NUMNODES]; /* movable_zone is the "real" zone pages in ZONE_MOVABLE are taken from */ int movable_zone; EXPORT_SYMBOL(movable_zone); #endif /* CONFIG_ARCH_POPULATES_NODE_MAP */ #if MAX_NUMNODES > 1 int nr_node_ids __read_mostly = MAX_NUMNODES; int nr_online_nodes __read_mostly = 1; EXPORT_SYMBOL(nr_node_ids); EXPORT_SYMBOL(nr_online_nodes); #endif int page_group_by_mobility_disabled __read_mostly; static void set_pageblock_migratetype(struct page *page, int migratetype) { if (unlikely(page_group_by_mobility_disabled)) migratetype = MIGRATE_UNMOVABLE; set_pageblock_flags_group(page, (unsigned long)migratetype, PB_migrate, PB_migrate_end); } bool oom_killer_disabled __read_mostly; #ifdef CONFIG_DEBUG_VM static int page_outside_zone_boundaries(struct zone *zone, struct page *page) { int ret = 0; unsigned seq; unsigned long pfn = page_to_pfn(page); do { seq = zone_span_seqbegin(zone); if (pfn >= zone->zone_start_pfn + zone->spanned_pages) ret = 1; else if (pfn < zone->zone_start_pfn) ret = 1; } while (zone_span_seqretry(zone, seq)); return ret; } static int page_is_consistent(struct zone *zone, struct page *page) { if (!pfn_valid_within(page_to_pfn(page))) return 0; if (zone != page_zone(page)) return 0; return 1; } /* * Temporary debugging check for pages not lying within a given zone. */ static int bad_range(struct zone *zone, struct page *page) { if (page_outside_zone_boundaries(zone, page)) return 1; if (!page_is_consistent(zone, page)) return 1; return 0; } #else static inline int bad_range(struct zone *zone, struct page *page) { return 0; } #endif static void bad_page(struct page *page) { static unsigned long resume; static unsigned long nr_shown; static unsigned long nr_unshown; /* Don't complain about poisoned pages */ if (PageHWPoison(page)) { __ClearPageBuddy(page); return; } /* * Allow a burst of 60 reports, then keep quiet for that minute; * or allow a steady drip of one report per second. */ if (nr_shown == 60) { if (time_before(jiffies, resume)) { nr_unshown++; goto out; } if (nr_unshown) { printk(KERN_ALERT "BUG: Bad page state: %lu messages suppressed\n", nr_unshown); nr_unshown = 0; } nr_shown = 0; } if (nr_shown++ == 0) resume = jiffies + 60 * HZ; printk(KERN_ALERT "BUG: Bad page state in process %s pfn:%05lx\n", current->comm, page_to_pfn(page)); printk(KERN_ALERT "page:%p flags:%p count:%d mapcount:%d mapping:%p index:%lx\n", page, (void *)page->flags, page_count(page), page_mapcount(page), page->mapping, page->index); dump_stack(); out: /* Leave bad fields for debug, except PageBuddy could make trouble */ __ClearPageBuddy(page); add_taint(TAINT_BAD_PAGE); } /* * Higher-order pages are called "compound pages". They are structured thusly: * * The first PAGE_SIZE page is called the "head page". * * The remaining PAGE_SIZE pages are called "tail pages". * * All pages have PG_compound set. All pages have their ->private pointing at * the head page (even the head page has this). * * The first tail page's ->lru.next holds the address of the compound page's * put_page() function. Its ->lru.prev holds the order of allocation. * This usage means that zero-order pages may not be compound. */ static void free_compound_page(struct page *page) { __free_pages_ok(page, compound_order(page)); } void prep_compound_page(struct page *page, unsigned long order) { int i; int nr_pages = 1 << order; set_compound_page_dtor(page, free_compound_page); set_compound_order(page, order); __SetPageHead(page); for (i = 1; i < nr_pages; i++) { struct page *p = page + i; __SetPageTail(p); p->first_page = page; } } static int destroy_compound_page(struct page *page, unsigned long order) { int i; int nr_pages = 1 << order; int bad = 0; if (unlikely(compound_order(page) != order) || unlikely(!PageHead(page))) { bad_page(page); bad++; } __ClearPageHead(page); for (i = 1; i < nr_pages; i++) { struct page *p = page + i; if (unlikely(!PageTail(p) || (p->first_page != page))) { bad_page(page); bad++; } __ClearPageTail(p); } return bad; } static inline void prep_zero_page(struct page *page, int order, gfp_t gfp_flags) { int i; /* * clear_highpage() will use KM_USER0, so it's a bug to use __GFP_ZERO * and __GFP_HIGHMEM from hard or soft interrupt context. */ VM_BUG_ON((gfp_flags & __GFP_HIGHMEM) && in_interrupt()); for (i = 0; i < (1 << order); i++) clear_highpage(page + i); } static inline void set_page_order(struct page *page, int order) { set_page_private(page, order); __SetPageBuddy(page); } static inline void rmv_page_order(struct page *page) { __ClearPageBuddy(page); set_page_private(page, 0); } /* * Locate the struct page for both the matching buddy in our * pair (buddy1) and the combined O(n+1) page they form (page). * * 1) Any buddy B1 will have an order O twin B2 which satisfies * the following equation: * B2 = B1 ^ (1 << O) * For example, if the starting buddy (buddy2) is #8 its order * 1 buddy is #10: * B2 = 8 ^ (1 << 1) = 8 ^ 2 = 10 * * 2) Any buddy B will have an order O+1 parent P which * satisfies the following equation: * P = B & ~(1 << O) * * Assumption: *_mem_map is contiguous at least up to MAX_ORDER */ static inline struct page * __page_find_buddy(struct page *page, unsigned long page_idx, unsigned int order) { unsigned long buddy_idx = page_idx ^ (1 << order); return page + (buddy_idx - page_idx); } static inline unsigned long __find_combined_index(unsigned long page_idx, unsigned int order) { return (page_idx & ~(1 << order)); } /* * This function checks whether a page is free && is the buddy * we can do coalesce a page and its buddy if * (a) the buddy is not in a hole && * (b) the buddy is in the buddy system && * (c) a page and its buddy have the same order && * (d) a page and its buddy are in the same zone. * * For recording whether a page is in the buddy system, we use PG_buddy. * Setting, clearing, and testing PG_buddy is serialized by zone->lock. * * For recording page's order, we use page_private(page). */ static inline int page_is_buddy(struct page *page, struct page *buddy, int order) { if (!pfn_valid_within(page_to_pfn(buddy))) return 0; if (page_zone_id(page) != page_zone_id(buddy)) return 0; if (PageBuddy(buddy) && page_order(buddy) == order) { VM_BUG_ON(page_count(buddy) != 0); return 1; } return 0; } /* * Freeing function for a buddy system allocator. * * The concept of a buddy system is to maintain direct-mapped table * (containing bit values) for memory blocks of various "orders". * The bottom level table contains the map for the smallest allocatable * units of memory (here, pages), and each level above it describes * pairs of units from the levels below, hence, "buddies". * At a high level, all that happens here is marking the table entry * at the bottom level available, and propagating the changes upward * as necessary, plus some accounting needed to play nicely with other * parts of the VM system. * At each level, we keep a list of pages, which are heads of continuous * free pages of length of (1 << order) and marked with PG_buddy. Page's * order is recorded in page_private(page) field. * So when we are allocating or freeing one, we can derive the state of the * other. That is, if we allocate a small block, and both were * free, the remainder of the region must be split into blocks. * If a block is freed, and its buddy is also free, then this * triggers coalescing into a block of larger size. * * -- wli */ static inline void __free_one_page(struct page *page, struct zone *zone, unsigned int order, int migratetype) { unsigned long page_idx; if (unlikely(PageCompound(page))) if (unlikely(destroy_compound_page(page, order))) return; VM_BUG_ON(migratetype == -1); page_idx = page_to_pfn(page) & ((1 << MAX_ORDER) - 1); VM_BUG_ON(page_idx & ((1 << order) - 1)); VM_BUG_ON(bad_range(zone, page)); while (order < MAX_ORDER-1) { unsigned long combined_idx; struct page *buddy; buddy = __page_find_buddy(page, page_idx, order); if (!page_is_buddy(page, buddy, order)) break; /* Our buddy is free, merge with it and move up one order. */ list_del(&buddy->lru); zone->free_area[order].nr_free--; rmv_page_order(buddy); combined_idx = __find_combined_index(page_idx, order); page = page + (combined_idx - page_idx); page_idx = combined_idx; order++; } set_page_order(page, order); list_add(&page->lru, &zone->free_area[order].free_list[migratetype]); zone->free_area[order].nr_free++; } #ifdef CONFIG_HAVE_MLOCKED_PAGE_BIT /* * free_page_mlock() -- clean up attempts to free and mlocked() page. * Page should not be on lru, so no need to fix that up. * free_pages_check() will verify... */ static inline void free_page_mlock(struct page *page) { __dec_zone_page_state(page, NR_MLOCK); __count_vm_event(UNEVICTABLE_MLOCKFREED); } #else static void free_page_mlock(struct page *page) { } #endif static inline int free_pages_check(struct page *page) { if (unlikely(page_mapcount(page) | (page->mapping != NULL) | (atomic_read(&page->_count) != 0) | (page->flags & PAGE_FLAGS_CHECK_AT_FREE))) { bad_page(page); return 1; } if (page->flags & PAGE_FLAGS_CHECK_AT_PREP) page->flags &= ~PAGE_FLAGS_CHECK_AT_PREP; return 0; } /* * Frees a number of pages from the PCP lists * Assumes all pages on list are in same zone, and of same order. * count is the number of pages to free. * * If the zone was previously in an "all pages pinned" state then look to * see if this freeing clears that state. * * And clear the zone's pages_scanned counter, to hold off the "all pages are * pinned" detection logic. */ static void free_pcppages_bulk(struct zone *zone, int count, struct per_cpu_pages *pcp) { int migratetype = 0; int batch_free = 0; spin_lock(&zone->lock); zone_clear_flag(zone, ZONE_ALL_UNRECLAIMABLE); zone->pages_scanned = 0; __mod_zone_page_state(zone, NR_FREE_PAGES, count); while (count) { struct page *page; struct list_head *list; /* * Remove pages from lists in a round-robin fashion. A * batch_free count is maintained that is incremented when an * empty list is encountered. This is so more pages are freed * off fuller lists instead of spinning excessively around empty * lists */ do { batch_free++; if (++migratetype == MIGRATE_PCPTYPES) migratetype = 0; list = &pcp->lists[migratetype]; } while (list_empty(list)); do { page = list_entry(list->prev, struct page, lru); /* must delete as __free_one_page list manipulates */ list_del(&page->lru); __free_one_page(page, zone, 0, migratetype); trace_mm_page_pcpu_drain(page, 0, migratetype); } while (--count && --batch_free && !list_empty(list)); } spin_unlock(&zone->lock); } static void free_one_page(struct zone *zone, struct page *page, int order, int migratetype) { spin_lock(&zone->lock); zone_clear_flag(zone, ZONE_ALL_UNRECLAIMABLE); zone->pages_scanned = 0; __mod_zone_page_state(zone, NR_FREE_PAGES, 1 << order); __free_one_page(page, zone, order, migratetype); spin_unlock(&zone->lock); } static void __free_pages_ok(struct page *page, unsigned int order) { unsigned long flags; int i; int bad = 0; int wasMlocked = __TestClearPageMlocked(page); kmemcheck_free_shadow(page, order); for (i = 0 ; i < (1 << order) ; ++i) bad += free_pages_check(page + i); if (bad) return; if (!PageHighMem(page)) { debug_check_no_locks_freed(page_address(page),PAGE_SIZE< low) { area--; high--; size >>= 1; VM_BUG_ON(bad_range(zone, &page[size])); list_add(&page[size].lru, &area->free_list[migratetype]); area->nr_free++; set_page_order(&page[size], high); } } /* * This page is about to be returned from the page allocator */ static inline int check_new_page(struct page *page) { if (unlikely(page_mapcount(page) | (page->mapping != NULL) | (atomic_read(&page->_count) != 0) | (page->flags & PAGE_FLAGS_CHECK_AT_PREP))) { bad_page(page); return 1; } return 0; } static int prep_new_page(struct page *page, int order, gfp_t gfp_flags) { int i; for (i = 0; i < (1 << order); i++) { struct page *p = page + i; if (unlikely(check_new_page(p))) return 1; } set_page_private(page, 0); set_page_refcounted(page); arch_alloc_page(page, order); kernel_map_pages(page, 1 << order, 1); if (gfp_flags & __GFP_ZERO) prep_zero_page(page, order, gfp_flags); if (order && (gfp_flags & __GFP_COMP)) prep_compound_page(page, order); return 0; } /* * Go through the free lists for the given migratetype and remove * the smallest available page from the freelists */ static inline struct page *__rmqueue_smallest(struct zone *zone, unsigned int order, int migratetype) { unsigned int current_order; struct free_area * area; struct page *page; /* Find a page of the appropriate size in the preferred list */ for (current_order = order; current_order < MAX_ORDER; ++current_order) { area = &(zone->free_area[current_order]); if (list_empty(&area->free_list[migratetype])) continue; page = list_entry(area->free_list[migratetype].next, struct page, lru); list_del(&page->lru); rmv_page_order(page); area->nr_free--; expand(zone, page, order, current_order, area, migratetype); return page; } return NULL; } /* * This array describes the order lists are fallen back to when * the free lists for the desirable migrate type are depleted */ static int fallbacks[MIGRATE_TYPES][MIGRATE_TYPES-1] = { [MIGRATE_UNMOVABLE] = { MIGRATE_RECLAIMABLE, MIGRATE_MOVABLE, MIGRATE_RESERVE }, [MIGRATE_RECLAIMABLE] = { MIGRATE_UNMOVABLE, MIGRATE_MOVABLE, MIGRATE_RESERVE }, [MIGRATE_MOVABLE] = { MIGRATE_RECLAIMABLE, MIGRATE_UNMOVABLE, MIGRATE_RESERVE }, [MIGRATE_RESERVE] = { MIGRATE_RESERVE, MIGRATE_RESERVE, MIGRATE_RESERVE }, /* Never used */ }; /* * Move the free pages in a range to the free lists of the requested type. * Note that start_page and end_pages are not aligned on a pageblock * boundary. If alignment is required, use move_freepages_block() */ static int move_freepages(struct zone *zone, struct page *start_page, struct page *end_page, int migratetype) { struct page *page; unsigned long order; int pages_moved = 0; #ifndef CONFIG_HOLES_IN_ZONE /* * page_zone is not safe to call in this context when * CONFIG_HOLES_IN_ZONE is set. This bug check is probably redundant * anyway as we check zone boundaries in move_freepages_block(). * Remove at a later date when no bug reports exist related to * grouping pages by mobility */ BUG_ON(page_zone(start_page) != page_zone(end_page)); #endif for (page = start_page; page <= end_page;) { /* Make sure we are not inadvertently changing nodes */ VM_BUG_ON(page_to_nid(page) != zone_to_nid(zone)); if (!pfn_valid_within(page_to_pfn(page))) { page++; continue; } if (!PageBuddy(page)) { page++; continue; } order = page_order(page); list_del(&page->lru); list_add(&page->lru, &zone->free_area[order].free_list[migratetype]); page += 1 << order; pages_moved += 1 << order; } return pages_moved; } static int move_freepages_block(struct zone *zone, struct page *page, int migratetype) { unsigned long start_pfn, end_pfn; struct page *start_page, *end_page; start_pfn = page_to_pfn(page); start_pfn = start_pfn & ~(pageblock_nr_pages-1); start_page = pfn_to_page(start_pfn); end_page = start_page + pageblock_nr_pages - 1; end_pfn = start_pfn + pageblock_nr_pages - 1; /* Do not cross zone boundaries */ if (start_pfn < zone->zone_start_pfn) start_page = page; if (end_pfn >= zone->zone_start_pfn + zone->spanned_pages) return 0; return move_freepages(zone, start_page, end_page, migratetype); } static void change_pageblock_range(struct page *pageblock_page, int start_order, int migratetype) { int nr_pageblocks = 1 << (start_order - pageblock_order); while (nr_pageblocks--) { set_pageblock_migratetype(pageblock_page, migratetype); pageblock_page += pageblock_nr_pages; } } /* Remove an element from the buddy allocator from the fallback list */ static inline struct page * __rmqueue_fallback(struct zone *zone, int order, int start_migratetype) { struct free_area * area; int current_order; struct page *page; int migratetype, i; /* Find the largest possible block of pages in the other list */ for (current_order = MAX_ORDER-1; current_order >= order; --current_order) { for (i = 0; i < MIGRATE_TYPES - 1; i++) { migratetype = fallbacks[start_migratetype][i]; /* MIGRATE_RESERVE handled later if necessary */ if (migratetype == MIGRATE_RESERVE) continue; area = &(zone->free_area[current_order]); if (list_empty(&area->free_list[migratetype])) continue; page = list_entry(area->free_list[migratetype].next, struct page, lru); area->nr_free--; /* * If breaking a large block of pages, move all free * pages to the preferred allocation list. If falling * back for a reclaimable kernel allocation, be more * agressive about taking ownership of free pages */ if (unlikely(current_order >= (pageblock_order >> 1)) || start_migratetype == MIGRATE_RECLAIMABLE || page_group_by_mobility_disabled) { unsigned long pages; pages = move_freepages_block(zone, page, start_migratetype); /* Claim the whole block if over half of it is free */ if (pages >= (1 << (pageblock_order-1)) || page_group_by_mobility_disabled) set_pageblock_migratetype(page, start_migratetype); migratetype = start_migratetype; } /* Remove the page from the freelists */ list_del(&page->lru); rmv_page_order(page); /* Take ownership for orders >= pageblock_order */ if (current_order >= pageblock_order) change_pageblock_range(page, current_order, start_migratetype); expand(zone, page, order, current_order, area, migratetype); trace_mm_page_alloc_extfrag(page, order, current_order, start_migratetype, migratetype); return page; } } return NULL; } /* * Do the hard work of removing an element from the buddy allocator. * Call me with the zone->lock already held. */ static struct page *__rmqueue(struct zone *zone, unsigned int order, int migratetype) { struct page *page; retry_reserve: page = __rmqueue_smallest(zone, order, migratetype); if (unlikely(!page) && migratetype != MIGRATE_RESERVE) { page = __rmqueue_fallback(zone, order, migratetype); /* * Use MIGRATE_RESERVE rather than fail an allocation. goto * is used because __rmqueue_smallest is an inline function * and we want just one call site */ if (!page) { migratetype = MIGRATE_RESERVE; goto retry_reserve; } } trace_mm_page_alloc_zone_locked(page, order, migratetype); return page; } /* * Obtain a specified number of elements from the buddy allocator, all under * a single hold of the lock, for efficiency. Add them to the supplied list. * Returns the number of new pages which were placed at *list. */ static int rmqueue_bulk(struct zone *zone, unsigned int order, unsigned long count, struct list_head *list, int migratetype, int cold) { int i; spin_lock(&zone->lock); for (i = 0; i < count; ++i) { struct page *page = __rmqueue(zone, order, migratetype); if (unlikely(page == NULL)) break; /* * Split buddy pages returned by expand() are received here * in physical page order. The page is added to the callers and * list and the list head then moves forward. From the callers * perspective, the linked list is ordered by page number in * some conditions. This is useful for IO devices that can * merge IO requests if the physical pages are ordered * properly. */ if (likely(cold == 0)) list_add(&page->lru, list); else list_add_tail(&page->lru, list); set_page_private(page, migratetype); list = &page->lru; } __mod_zone_page_state(zone, NR_FREE_PAGES, -(i << order)); spin_unlock(&zone->lock); return i; } #ifdef CONFIG_NUMA /* * Called from the vmstat counter updater to drain pagesets of this * currently executing processor on remote nodes after they have * expired. * * Note that this function must be called with the thread pinned to * a single processor. */ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) { unsigned long flags; int to_drain; local_irq_save(flags); if (pcp->count >= pcp->batch) to_drain = pcp->batch; else to_drain = pcp->count; free_pcppages_bulk(zone, to_drain, pcp); pcp->count -= to_drain; local_irq_restore(flags); } #endif /* * Drain pages of the indicated processor. * * The processor must either be the current processor and the * thread pinned to the current processor or a processor that * is not online. */ static void drain_pages(unsigned int cpu) { unsigned long flags; struct zone *zone; for_each_populated_zone(zone) { struct per_cpu_pageset *pset; struct per_cpu_pages *pcp; pset = zone_pcp(zone, cpu); pcp = &pset->pcp; local_irq_save(flags); free_pcppages_bulk(zone, pcp->count, pcp); pcp->count = 0; local_irq_restore(flags); } } /* * Spill all of this CPU's per-cpu pages back into the buddy allocator. */ void drain_local_pages(void *arg) { drain_pages(smp_processor_id()); } /* * Spill all the per-cpu pages from all CPUs back into the buddy allocator */ void drain_all_pages(void) { on_each_cpu(drain_local_pages, NULL, 1); } #ifdef CONFIG_HIBERNATION void mark_free_pages(struct zone *zone) { unsigned long pfn, max_zone_pfn; unsigned long flags; int order, t; struct list_head *curr; if (!zone->spanned_pages) return; spin_lock_irqsave(&zone->lock, flags); max_zone_pfn = zone->zone_start_pfn + zone->spanned_pages; for (pfn = zone->zone_start_pfn; pfn < max_zone_pfn; pfn++) if (pfn_valid(pfn)) { struct page *page = pfn_to_page(pfn); if (!swsusp_page_is_forbidden(page)) swsusp_unset_page_free(page); } for_each_migratetype_order(order, t) { list_for_each(curr, &zone->free_area[order].free_list[t]) { unsigned long i; pfn = page_to_pfn(list_entry(curr, struct page, lru)); for (i = 0; i < (1UL << order); i++) swsusp_set_page_free(pfn_to_page(pfn + i)); } } spin_unlock_irqrestore(&zone->lock, flags); } #endif /* CONFIG_PM */ /* * Free a 0-order page */ static void free_hot_cold_page(struct page *page, int cold) { struct zone *zone = page_zone(page); struct per_cpu_pages *pcp; unsigned long flags; int migratetype; int wasMlocked = __TestClearPageMlocked(page); kmemcheck_free_shadow(page, 0); if (PageAnon(page)) page->mapping = NULL; if (free_pages_check(page)) return; if (!PageHighMem(page)) { debug_check_no_locks_freed(page_address(page), PAGE_SIZE); debug_check_no_obj_freed(page_address(page), PAGE_SIZE); } arch_free_page(page, 0); kernel_map_pages(page, 1, 0); pcp = &zone_pcp(zone, get_cpu())->pcp; migratetype = get_pageblock_migratetype(page); set_page_private(page, migratetype); local_irq_save(flags); if (unlikely(wasMlocked)) free_page_mlock(page); __count_vm_event(PGFREE); /* * We only track unmovable, reclaimable and movable on pcp lists. * Free ISOLATE pages back to the allocator because they are being * offlined but treat RESERVE as movable pages so we can get those * areas back if necessary. Otherwise, we may have to free * excessively into the page allocator */ if (migratetype >= MIGRATE_PCPTYPES) { if (unlikely(migratetype == MIGRATE_ISOLATE)) { free_one_page(zone, page, 0, migratetype); goto out; } migratetype = MIGRATE_MOVABLE; } if (cold) list_add_tail(&page->lru, &pcp->lists[migratetype]); else list_add(&page->lru, &pcp->lists[migratetype]); pcp->count++; if (pcp->count >= pcp->high) { free_pcppages_bulk(zone, pcp->batch, pcp); pcp->count -= pcp->batch; } out: local_irq_restore(flags); put_cpu(); } void free_hot_page(struct page *page) { trace_mm_page_free_direct(page, 0); free_hot_cold_page(page, 0); } /* * split_page takes a non-compound higher-order page, and splits it into * n (1< 0 path. Saves a branch * or two. */ static inline struct page *buffered_rmqueue(struct zone *preferred_zone, struct zone *zone, int order, gfp_t gfp_flags, int migratetype) { unsigned long flags; struct page *page; int cold = !!(gfp_flags & __GFP_COLD); int cpu; again: cpu = get_cpu(); if (likely(order == 0)) { struct per_cpu_pages *pcp; struct list_head *list; pcp = &zone_pcp(zone, cpu)->pcp; list = &pcp->lists[migratetype]; local_irq_save(flags); if (list_empty(list)) { pcp->count += rmqueue_bulk(zone, 0, pcp->batch, list, migratetype, cold); if (unlikely(list_empty(list))) goto failed; } if (cold) page = list_entry(list->prev, struct page, lru); else page = list_entry(list->next, struct page, lru); list_del(&page->lru); pcp->count--; } else { if (unlikely(gfp_flags & __GFP_NOFAIL)) { /* * __GFP_NOFAIL is not to be used in new code. * * All __GFP_NOFAIL callers should be fixed so that they * properly detect and handle allocation failures. * * We most definitely don't want callers attempting to * allocate greater than order-1 page units with * __GFP_NOFAIL. */ WARN_ON_ONCE(order > 1); } spin_lock_irqsave(&zone->lock, flags); page = __rmqueue(zone, order, migratetype); __mod_zone_page_state(zone, NR_FREE_PAGES, -(1 << order)); spin_unlock(&zone->lock); if (!page) goto failed; } __count_zone_vm_events(PGALLOC, zone, 1 << order); zone_statistics(preferred_zone, zone); local_irq_restore(flags); put_cpu(); VM_BUG_ON(bad_range(zone, page)); if (prep_new_page(page, order, gfp_flags)) goto again; return page; failed: local_irq_restore(flags); put_cpu(); return NULL; } /* The ALLOC_WMARK bits are used as an index to zone->watermark */ #define ALLOC_WMARK_MIN WMARK_MIN #define ALLOC_WMARK_LOW WMARK_LOW #define ALLOC_WMARK_HIGH WMARK_HIGH #define ALLOC_NO_WATERMARKS 0x04 /* don't check watermarks at all */ /* Mask to get the watermark bits */ #define ALLOC_WMARK_MASK (ALLOC_NO_WATERMARKS-1) #define ALLOC_HARDER 0x10 /* try to alloc harder */ #define ALLOC_HIGH 0x20 /* __GFP_HIGH set */ #define ALLOC_CPUSET 0x40 /* check for correct cpuset */ #ifdef CONFIG_FAIL_PAGE_ALLOC static struct fail_page_alloc_attr { struct fault_attr attr; u32 ignore_gfp_highmem; u32 ignore_gfp_wait; u32 min_order; #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS struct dentry *ignore_gfp_highmem_file; struct dentry *ignore_gfp_wait_file; struct dentry *min_order_file; #endif /* CONFIG_FAULT_INJECTION_DEBUG_FS */ } fail_page_alloc = { .attr = FAULT_ATTR_INITIALIZER, .ignore_gfp_wait = 1, .ignore_gfp_highmem = 1, .min_order = 1, }; static int __init setup_fail_page_alloc(char *str) { return setup_fault_attr(&fail_page_alloc.attr, str); } __setup("fail_page_alloc=", setup_fail_page_alloc); static int should_fail_alloc_page(gfp_t gfp_mask, unsigned int order) { if (order < fail_page_alloc.min_order) return 0; if (gfp_mask & __GFP_NOFAIL) return 0; if (fail_page_alloc.ignore_gfp_highmem && (gfp_mask & __GFP_HIGHMEM)) return 0; if (fail_page_alloc.ignore_gfp_wait && (gfp_mask & __GFP_WAIT)) return 0; return should_fail(&fail_page_alloc.attr, 1 << order); } #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS static int __init fail_page_alloc_debugfs(void) { mode_t mode = S_IFREG | S_IRUSR | S_IWUSR; struct dentry *dir; int err; err = init_fault_attr_dentries(&fail_page_alloc.attr, "fail_page_alloc"); if (err) return err; dir = fail_page_alloc.attr.dentries.dir; fail_page_alloc.ignore_gfp_wait_file = debugfs_create_bool("ignore-gfp-wait", mode, dir, &fail_page_alloc.ignore_gfp_wait); fail_page_alloc.ignore_gfp_highmem_file = debugfs_create_bool("ignore-gfp-highmem", mode, dir, &fail_page_alloc.ignore_gfp_highmem); fail_page_alloc.min_order_file = debugfs_create_u32("min-order", mode, dir, &fail_page_alloc.min_order); if (!fail_page_alloc.ignore_gfp_wait_file || !fail_page_alloc.ignore_gfp_highmem_file || !fail_page_alloc.min_order_file) { err = -ENOMEM; debugfs_remove(fail_page_alloc.ignore_gfp_wait_file); debugfs_remove(fail_page_alloc.ignore_gfp_highmem_file); debugfs_remove(fail_page_alloc.min_order_file); cleanup_fault_attr_dentries(&fail_page_alloc.attr); } return err; } late_initcall(fail_page_alloc_debugfs); #endif /* CONFIG_FAULT_INJECTION_DEBUG_FS */ #else /* CONFIG_FAIL_PAGE_ALLOC */ static inline int should_fail_alloc_page(gfp_t gfp_mask, unsigned int order) { return 0; } #endif /* CONFIG_FAIL_PAGE_ALLOC */ /* * Return 1 if free pages are above 'mark'. This takes into account the order * of the allocation. */ int zone_watermark_ok(struct zone *z, int order, unsigned long mark, int classzone_idx, int alloc_flags) { /* free_pages my go negative - that's OK */ long min = mark; long free_pages = zone_page_state(z, NR_FREE_PAGES) - (1 << order) + 1; int o; if (alloc_flags & ALLOC_HIGH) min -= min / 2; if (alloc_flags & ALLOC_HARDER) min -= min / 4; if (free_pages <= min + z->lowmem_reserve[classzone_idx]) return 0; for (o = 0; o < order; o++) { /* At the next order, this order's pages become unavailable */ free_pages -= z->free_area[o].nr_free << o; /* Require fewer higher order pages to be free */ min >>= 1; if (free_pages <= min) return 0; } return 1; } #ifdef CONFIG_NUMA /* * zlc_setup - Setup for "zonelist cache". Uses cached zone data to * skip over zones that are not allowed by the cpuset, or that have * been recently (in last second) found to be nearly full. See further * comments in mmzone.h. Reduces cache footprint of zonelist scans * that have to skip over a lot of full or unallowed zones. * * If the zonelist cache is present in the passed in zonelist, then * returns a pointer to the allowed node mask (either the current * tasks mems_allowed, or node_states[N_HIGH_MEMORY].) * * If the zonelist cache is not available for this zonelist, does * nothing and returns NULL. * * If the fullzones BITMAP in the zonelist cache is stale (more than * a second since last zap'd) then we zap it out (clear its bits.) * * We hold off even calling zlc_setup, until after we've checked the * first zone in the zonelist, on the theory that most allocations will * be satisfied from that first zone, so best to examine that zone as * quickly as we can. */ static nodemask_t *zlc_setup(struct zonelist *zonelist, int alloc_flags) { struct zonelist_cache *zlc; /* cached zonelist speedup info */ nodemask_t *allowednodes; /* zonelist_cache approximation */ zlc = zonelist->zlcache_ptr; if (!zlc) return NULL; if (time_after(jiffies, zlc->last_full_zap + HZ)) { bitmap_zero(zlc->fullzones, MAX_ZONES_PER_ZONELIST); zlc->last_full_zap = jiffies; } allowednodes = !in_interrupt() && (alloc_flags & ALLOC_CPUSET) ? &cpuset_current_mems_allowed : &node_states[N_HIGH_MEMORY]; return allowednodes; } /* * Given 'z' scanning a zonelist, run a couple of quick checks to see * if it is worth looking at further for free memory: * 1) Check that the zone isn't thought to be full (doesn't have its * bit set in the zonelist_cache fullzones BITMAP). * 2) Check that the zones node (obtained from the zonelist_cache * z_to_n[] mapping) is allowed in the passed in allowednodes mask. * Return true (non-zero) if zone is worth looking at further, or * else return false (zero) if it is not. * * This check -ignores- the distinction between various watermarks, * such as GFP_HIGH, GFP_ATOMIC, PF_MEMALLOC, ... If a zone is * found to be full for any variation of these watermarks, it will * be considered full for up to one second by all requests, unless * we are so low on memory on all allowed nodes that we are forced * into the second scan of the zonelist. * * In the second scan we ignore this zonelist cache and exactly * apply the watermarks to all zones, even it is slower to do so. * We are low on memory in the second scan, and should leave no stone * unturned looking for a free page. */ static int zlc_zone_worth_trying(struct zonelist *zonelist, struct zoneref *z, nodemask_t *allowednodes) { struct zonelist_cache *zlc; /* cached zonelist speedup info */ int i; /* index of *z in zonelist zones */ int n; /* node that zone *z is on */ zlc = zonelist->zlcache_ptr; if (!zlc) return 1; i = z - zonelist->_zonerefs; n = zlc->z_to_n[i]; /* This zone is worth trying if it is allowed but not full */ return node_isset(n, *allowednodes) && !test_bit(i, zlc->fullzones); } /* * Given 'z' scanning a zonelist, set the corresponding bit in * zlc->fullzones, so that subsequent attempts to allocate a page * from that zone don't waste time re-examining it. */ static void zlc_mark_zone_full(struct zonelist *zonelist, struct zoneref *z) { struct zonelist_cache *zlc; /* cached zonelist speedup info */ int i; /* index of *z in zonelist zones */ zlc = zonelist->zlcache_ptr; if (!zlc) return; i = z - zonelist->_zonerefs; set_bit(i, zlc->fullzones); } #else /* CONFIG_NUMA */ static nodemask_t *zlc_setup(struct zonelist *zonelist, int alloc_flags) { return NULL; } static int zlc_zone_worth_trying(struct zonelist *zonelist, struct zoneref *z, nodemask_t *allowednodes) { return 1; } static void zlc_mark_zone_full(struct zonelist *zonelist, struct zoneref *z) { } #endif /* CONFIG_NUMA */ /* * get_page_from_freelist goes through the zonelist trying to allocate * a page. */ static struct page * get_page_from_freelist(gfp_t gfp_mask, nodemask_t *nodemask, unsigned int order, struct zonelist *zonelist, int high_zoneidx, int alloc_flags, struct zone *preferred_zone, int migratetype) { struct zoneref *z; struct page *page = NULL; int classzone_idx; struct zone *zone; nodemask_t *allowednodes = NULL;/* zonelist_cache approximation */ int zlc_active = 0; /* set if using zonelist_cache */ int did_zlc_setup = 0; /* just call zlc_setup() one time */ classzone_idx = zone_idx(preferred_zone); zonelist_scan: /* * Scan zonelist, looking for a zone with enough free. * See also cpuset_zone_allowed() comment in kernel/cpuset.c. */ for_each_zone_zonelist_nodemask(zone, z, zonelist, high_zoneidx, nodemask) { if (NUMA_BUILD && zlc_active && !zlc_zone_worth_trying(zonelist, z, allowednodes)) continue; if ((alloc_flags & ALLOC_CPUSET) && !cpuset_zone_allowed_softwall(zone, gfp_mask)) goto try_next_zone; BUILD_BUG_ON(ALLOC_NO_WATERMARKS < NR_WMARK); if (!(alloc_flags & ALLOC_NO_WATERMARKS)) { unsigned long mark; int ret; mark = zone->watermark[alloc_flags & ALLOC_WMARK_MASK]; if (zone_watermark_ok(zone, order, mark, classzone_idx, alloc_flags)) goto try_this_zone; if (zone_reclaim_mode == 0) goto this_zone_full; ret = zone_reclaim(zone, gfp_mask, order); switch (ret) { case ZONE_RECLAIM_NOSCAN: /* did not scan */ goto try_next_zone; case ZONE_RECLAIM_FULL: /* scanned but unreclaimable */ goto this_zone_full; default: /* did we reclaim enough */ if (!zone_watermark_ok(zone, order, mark, classzone_idx, alloc_flags)) goto this_zone_full; } } try_this_zone: page = buffered_rmqueue(preferred_zone, zone, order, gfp_mask, migratetype); if (page) break; this_zone_full: if (NUMA_BUILD) zlc_mark_zone_full(zonelist, z); try_next_zone: if (NUMA_BUILD && !did_zlc_setup && nr_online_nodes > 1) { /* * we do zlc_setup after the first zone is tried but only * if there are multiple nodes make it worthwhile */ allowednodes = zlc_setup(zonelist, alloc_flags); zlc_active = 1; did_zlc_setup = 1; } } if (unlikely(NUMA_BUILD && page == NULL && zlc_active)) { /* Disable zlc cache for second zonelist scan */ zlc_active = 0; goto zonelist_scan; } return page; } static inline int should_alloc_retry(gfp_t gfp_mask, unsigned int order, unsigned long pages_reclaimed) { /* Do not loop if specifically requested */ if (gfp_mask & __GFP_NORETRY) return 0; /* * In this implementation, order <= PAGE_ALLOC_COSTLY_ORDER * means __GFP_NOFAIL, but that may not be true in other * implementations. */ if (order <= PAGE_ALLOC_COSTLY_ORDER) return 1; /* * For order > PAGE_ALLOC_COSTLY_ORDER, if __GFP_REPEAT is * specified, then we retry until we no longer reclaim any pages * (above), or we've reclaimed an order of pages at least as * large as the allocation's order. In both cases, if the * allocation still fails, we stop retrying. */ if (gfp_mask & __GFP_REPEAT && pages_reclaimed < (1 << order)) return 1; /* * Don't let big-order allocations loop unless the caller * explicitly requests that. */ if (gfp_mask & __GFP_NOFAIL) return 1; return 0; } static inline struct page * __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order, struct zonelist *zonelist, enum zone_type high_zoneidx, nodemask_t *nodemask, struct zone *preferred_zone, int migratetype) { struct page *page; /* Acquire the OOM killer lock for the zones in zonelist */ if (!try_set_zone_oom(zonelist, gfp_mask)) { schedule_timeout_uninterruptible(1); return NULL; } /* * Go through the zonelist yet one more time, keep very high watermark * here, this is only to catch a parallel oom killing, we must fail if * we're still under heavy pressure. */ page = get_page_from_freelist(gfp_mask|__GFP_HARDWALL, nodemask, order, zonelist, high_zoneidx, ALLOC_WMARK_HIGH|ALLOC_CPUSET, preferred_zone, migratetype); if (page) goto out; /* The OOM killer will not help higher order allocs */ if (order > PAGE_ALLOC_COSTLY_ORDER && !(gfp_mask & __GFP_NOFAIL)) goto out; /* Exhausted what can be done so it's blamo time */ out_of_memory(zonelist, gfp_mask, order); out: clear_zonelist_oom(zonelist, gfp_mask); return page; } /* The really slow allocator path where we enter direct reclaim */ static inline struct page * __alloc_pages_direct_reclaim(gfp_t gfp_mask, unsigned int order, struct zonelist *zonelist, enum zone_type high_zoneidx, nodemask_t *nodemask, int alloc_flags, struct zone *preferred_zone, int migratetype, unsigned long *did_some_progress) { struct page *page = NULL; struct reclaim_state reclaim_state; struct task_struct *p = current; cond_resched(); /* We now go into synchronous reclaim */ cpuset_memory_pressure_bump(); p->flags |= PF_MEMALLOC; lockdep_set_current_reclaim_state(gfp_mask); reclaim_state.reclaimed_slab = 0; p->reclaim_state = &reclaim_state; *did_some_progress = try_to_free_pages(zonelist, order, gfp_mask, nodemask); p->reclaim_state = NULL; lockdep_clear_current_reclaim_state(); p->flags &= ~PF_MEMALLOC; cond_resched(); if (order != 0) drain_all_pages(); if (likely(*did_some_progress)) page = get_page_from_freelist(gfp_mask, nodemask, order, zonelist, high_zoneidx, alloc_flags, preferred_zone, migratetype); return page; } /* * This is called in the allocator slow-path if the allocation request is of * sufficient urgency to ignore watermarks and take other desperate measures */ static inline struct page * __alloc_pages_high_priority(gfp_t gfp_mask, unsigned int order, struct zonelist *zonelist, enum zone_type high_zoneidx, nodemask_t *nodemask, struct zone *preferred_zone, int migratetype) { struct page *page; do { page = get_page_from_freelist(gfp_mask, nodemask, order, zonelist, high_zoneidx, ALLOC_NO_WATERMARKS, preferred_zone, migratetype); if (!page && gfp_mask & __GFP_NOFAIL) congestion_wait(BLK_RW_ASYNC, HZ/50); } while (!page && (gfp_mask & __GFP_NOFAIL)); return page; } static inline void wake_all_kswapd(unsigned int order, struct zonelist *zonelist, enum zone_type high_zoneidx) { struct zoneref *z; struct zone *zone; for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) wakeup_kswapd(zone, order); } static inline int gfp_to_alloc_flags(gfp_t gfp_mask) { struct task_struct *p = current; int alloc_flags = ALLOC_WMARK_MIN | ALLOC_CPUSET; const gfp_t wait = gfp_mask & __GFP_WAIT; /* __GFP_HIGH is assumed to be the same as ALLOC_HIGH to save a branch. */ BUILD_BUG_ON(__GFP_HIGH != ALLOC_HIGH); /* * The caller may dip into page reserves a bit more if the caller * cannot run direct reclaim, or if the caller has realtime scheduling * policy or is asking for __GFP_HIGH memory. GFP_ATOMIC requests will * set both ALLOC_HARDER (!wait) and ALLOC_HIGH (__GFP_HIGH). */ alloc_flags |= (gfp_mask & __GFP_HIGH); if (!wait) { alloc_flags |= ALLOC_HARDER; /* * Ignore cpuset if GFP_ATOMIC (!wait) rather than fail alloc. * See also cpuset_zone_allowed() comment in kernel/cpuset.c. */ alloc_flags &= ~ALLOC_CPUSET; } else if (unlikely(rt_task(p))) alloc_flags |= ALLOC_HARDER; if (likely(!(gfp_mask & __GFP_NOMEMALLOC))) { if (!in_interrupt() && ((p->flags & PF_MEMALLOC) || unlikely(test_thread_flag(TIF_MEMDIE)))) alloc_flags |= ALLOC_NO_WATERMARKS; } return alloc_flags; } static inline struct page * __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order, struct zonelist *zonelist, enum zone_type high_zoneidx, nodemask_t *nodemask, struct zone *preferred_zone, int migratetype) { const gfp_t wait = gfp_mask & __GFP_WAIT; struct page *page = NULL; int alloc_flags; unsigned long pages_reclaimed = 0; unsigned long did_some_progress; struct task_struct *p = current; /* * In the slowpath, we sanity check order to avoid ever trying to * reclaim >= MAX_ORDER areas which will never succeed. Callers may * be using allocators in order of preference for an area that is * too large. */ if (order >= MAX_ORDER) { WARN_ON_ONCE(!(gfp_mask & __GFP_NOWARN)); return NULL; } /* * GFP_THISNODE (meaning __GFP_THISNODE, __GFP_NORETRY and * __GFP_NOWARN set) should not cause reclaim since the subsystem * (f.e. slab) using GFP_THISNODE may choose to trigger reclaim * using a larger set of nodes after it has established that the * allowed per node queues are empty and that nodes are * over allocated. */ if (NUMA_BUILD && (gfp_mask & GFP_THISNODE) == GFP_THISNODE) goto nopage; wake_all_kswapd(order, zonelist, high_zoneidx); restart: /* * OK, we're below the kswapd watermark and have kicked background * reclaim. Now things get more complex, so set up alloc_flags according * to how we want to proceed. */ alloc_flags = gfp_to_alloc_flags(gfp_mask); /* This is the last chance, in general, before the goto nopage. */ page = get_page_from_freelist(gfp_mask, nodemask, order, zonelist, high_zoneidx, alloc_flags & ~ALLOC_NO_WATERMARKS, preferred_zone, migratetype); if (page) goto got_pg; rebalance: /* Allocate without watermarks if the context allows */ if (alloc_flags & ALLOC_NO_WATERMARKS) { page = __alloc_pages_high_priority(gfp_mask, order, zonelist, high_zoneidx, nodemask, preferred_zone, migratetype); if (page) goto got_pg; } /* Atomic allocations - we can't balance anything */ if (!wait) goto nopage; /* Avoid recursion of direct reclaim */ if (p->flags & PF_MEMALLOC) goto nopage; /* Avoid allocations with no watermarks from looping endlessly */ if (test_thread_flag(TIF_MEMDIE) && !(gfp_mask & __GFP_NOFAIL)) goto nopage; /* Try direct reclaim and then allocating */ page = __alloc_pages_direct_reclaim(gfp_mask, order, zonelist, high_zoneidx, nodemask, alloc_flags, preferred_zone, migratetype, &did_some_progress); if (page) goto got_pg; /* * If we failed to make any progress reclaiming, then we are * running out of options and have to consider going OOM */ if (!did_some_progress) { if ((gfp_mask & __GFP_FS) && !(gfp_mask & __GFP_NORETRY)) { if (oom_killer_disabled) goto nopage; page = __alloc_pages_may_oom(gfp_mask, order, zonelist, high_zoneidx, nodemask, preferred_zone, migratetype); if (page) goto got_pg; /* * The OOM killer does not trigger for high-order * ~__GFP_NOFAIL allocations so if no progress is being * made, there are no other options and retrying is * unlikely to help. */ if (order > PAGE_ALLOC_COSTLY_ORDER && !(gfp_mask & __GFP_NOFAIL)) goto nopage; goto restart; } } /* Check if we should retry the allocation */ pages_reclaimed += did_some_progress; if (should_alloc_retry(gfp_mask, order, pages_reclaimed)) { /* Wait for some write requests to complete then retry */ congestion_wait(BLK_RW_ASYNC, HZ/50); goto rebalance; } nopage: if (!(gfp_mask & __GFP_NOWARN) && printk_ratelimit()) { printk(KERN_WARNING "%s: page allocation failure." " order:%d, mode:0x%x\n", p->comm, order, gfp_mask); dump_stack(); show_mem(); } return page; got_pg: if (kmemcheck_enabled) kmemcheck_pagealloc_alloc(page, order, gfp_mask); return page; } /* * This is the 'heart' of the zoned buddy allocator. */ struct page * __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, struct zonelist *zonelist, nodemask_t *nodemask) { enum zone_type high_zoneidx = gfp_zone(gfp_mask); struct zone *preferred_zone; struct page *page; int migratetype = allocflags_to_migratetype(gfp_mask); gfp_mask &= gfp_allowed_mask; lockdep_trace_alloc(gfp_mask); might_sleep_if(gfp_mask & __GFP_WAIT); if (should_fail_alloc_page(gfp_mask, order)) return NULL; /* * Check the zones suitable for the gfp_mask contain at least one * valid zone. It's possible to have an empty zonelist as a result * of GFP_THISNODE and a memoryless node */ if (unlikely(!zonelist->_zonerefs->zone)) return NULL; /* The preferred zone is used for statistics later */ first_zones_zonelist(zonelist, high_zoneidx, nodemask, &preferred_zone); if (!preferred_zone) return NULL; /* First allocation attempt */ page = get_page_from_freelist(gfp_mask|__GFP_HARDWALL, nodemask, order, zonelist, high_zoneidx, ALLOC_WMARK_LOW|ALLOC_CPUSET, preferred_zone, migratetype); if (unlikely(!page)) page = __alloc_pages_slowpath(gfp_mask, order, zonelist, high_zoneidx, nodemask, preferred_zone, migratetype); trace_mm_page_alloc(page, order, gfp_mask, migratetype); return page; } EXPORT_SYMBOL(__alloc_pages_nodemask); /* * Common helper functions. */ unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order) { struct page *page; /* * __get_free_pages() returns a 32-bit address, which cannot represent * a highmem page */ VM_BUG_ON((gfp_mask & __GFP_HIGHMEM) != 0); page = alloc_pages(gfp_mask, order); if (!page) return 0; return (unsigned long) page_address(page); } EXPORT_SYMBOL(__get_free_pages); unsigned long get_zeroed_page(gfp_t gfp_mask) { return __get_free_pages(gfp_mask | __GFP_ZERO, 0); } EXPORT_SYMBOL(get_zeroed_page); void __pagevec_free(struct pagevec *pvec) { int i = pagevec_count(pvec); while (--i >= 0) { trace_mm_pagevec_free(pvec->pages[i], pvec->cold); free_hot_cold_page(pvec->pages[i], pvec->cold); } } void __free_pages(struct page *page, unsigned int order) { if (put_page_testzero(page)) { trace_mm_page_free_direct(page, order); if (order == 0) free_hot_page(page); else __free_pages_ok(page, order); } } EXPORT_SYMBOL(__free_pages); void free_pages(unsigned long addr, unsigned int order) { if (addr != 0) { VM_BUG_ON(!virt_addr_valid((void *)addr)); __free_pages(virt_to_page((void *)addr), order); } } EXPORT_SYMBOL(free_pages); /** * alloc_pages_exact - allocate an exact number physically-contiguous pages. * @size: the number of bytes to allocate * @gfp_mask: GFP flags for the allocation * * This function is similar to alloc_pages(), except that it allocates the * minimum number of pages to satisfy the request. alloc_pages() can only * allocate memory in power-of-two pages. * * This function is also limited by MAX_ORDER. * * Memory allocated by this function must be released by free_pages_exact(). */ void *alloc_pages_exact(size_t size, gfp_t gfp_mask) { unsigned int order = get_order(size); unsigned long addr; addr = __get_free_pages(gfp_mask, order); if (addr) { unsigned long alloc_end = addr + (PAGE_SIZE << order); unsigned long used = addr + PAGE_ALIGN(size); split_page(virt_to_page((void *)addr), order); while (used < alloc_end) { free_page(used); used += PAGE_SIZE; } } return (void *)addr; } EXPORT_SYMBOL(alloc_pages_exact); /** * free_pages_exact - release memory allocated via alloc_pages_exact() * @virt: the value returned by alloc_pages_exact. * @size: size of allocation, same value as passed to alloc_pages_exact(). * * Release the memory allocated by a previous call to alloc_pages_exact. */ void free_pages_exact(void *virt, size_t size) { unsigned long addr = (unsigned long)virt; unsigned long end = addr + PAGE_ALIGN(size); while (addr < end) { free_page(addr); addr += PAGE_SIZE; } } EXPORT_SYMBOL(free_pages_exact); static unsigned int nr_free_zone_pages(int offset) { struct zoneref *z; struct zone *zone; /* Just pick one node, since fallback list is circular */ unsigned int sum = 0; struct zonelist *zonelist = node_zonelist(numa_node_id(), GFP_KERNEL); for_each_zone_zonelist(zone, z, zonelist, offset) { unsigned long size = zone->present_pages; unsigned long high = high_wmark_pages(zone); if (size > high) sum += size - high; } return sum; } /* * Amount of free RAM allocatable within ZONE_DMA and ZONE_NORMAL */ unsigned int nr_free_buffer_pages(void) { return nr_free_zone_pages(gfp_zone(GFP_USER)); } EXPORT_SYMBOL_GPL(nr_free_buffer_pages); /* * Amount of free RAM allocatable within all zones */ unsigned int nr_free_pagecache_pages(void) { return nr_free_zone_pages(gfp_zone(GFP_HIGHUSER_MOVABLE)); } static inline void show_node(struct zone *zone) { if (NUMA_BUILD) printk("Node %d ", zone_to_nid(zone)); } void si_meminfo(struct sysinfo *val) { val->totalram = totalram_pages; val->sharedram = 0; val->freeram = global_page_state(NR_FREE_PAGES); val->bufferram = nr_blockdev_pages(); val->totalhigh = totalhigh_pages; val->freehigh = nr_free_highpages(); val->mem_unit = PAGE_SIZE; } EXPORT_SYMBOL(si_meminfo); #ifdef CONFIG_NUMA void si_meminfo_node(struct sysinfo *val, int nid) { pg_data_t *pgdat = NODE_DATA(nid); val->totalram = pgdat->node_present_pages; val->freeram = node_page_state(nid, NR_FREE_PAGES); #ifdef CONFIG_HIGHMEM val->totalhigh = pgdat->node_zones[ZONE_HIGHMEM].present_pages; val->freehigh = zone_page_state(&pgdat->node_zones[ZONE_HIGHMEM], NR_FREE_PAGES); #else val->totalhigh = 0; val->freehigh = 0; #endif val->mem_unit = PAGE_SIZE; } #endif #define K(x) ((x) << (PAGE_SHIFT-10)) /* * Show free area list (used inside shift_scroll-lock stuff) * We also calculate the percentage fragmentation. We do this by counting the * memory on each free list with the exception of the first item on the list. */ void show_free_areas(void) { int cpu; struct zone *zone; for_each_populated_zone(zone) { show_node(zone); printk("%s per-cpu:\n", zone->name); for_each_online_cpu(cpu) { struct per_cpu_pageset *pageset; pageset = zone_pcp(zone, cpu); printk("CPU %4d: hi:%5d, btch:%4d usd:%4d\n", cpu, pageset->pcp.high, pageset->pcp.batch, pageset->pcp.count); } } printk("active_anon:%lu inactive_anon:%lu isolated_anon:%lu\n" " active_file:%lu inactive_file:%lu isolated_file:%lu\n" " unevictable:%lu" " dirty:%lu writeback:%lu unstable:%lu buffer:%lu\n" " free:%lu slab_reclaimable:%lu slab_unreclaimable:%lu\n" " mapped:%lu shmem:%lu pagetables:%lu bounce:%lu\n", global_page_state(NR_ACTIVE_ANON), global_page_state(NR_INACTIVE_ANON), global_page_state(NR_ISOLATED_ANON), global_page_state(NR_ACTIVE_FILE), global_page_state(NR_INACTIVE_FILE), global_page_state(NR_ISOLATED_FILE), global_page_state(NR_UNEVICTABLE), global_page_state(NR_FILE_DIRTY), global_page_state(NR_WRITEBACK), global_page_state(NR_UNSTABLE_NFS), nr_blockdev_pages(), global_page_state(NR_FREE_PAGES), global_page_state(NR_SLAB_RECLAIMABLE), global_page_state(NR_SLAB_UNRECLAIMABLE), global_page_state(NR_FILE_MAPPED), global_page_state(NR_SHMEM), global_page_state(NR_PAGETABLE), global_page_state(NR_BOUNCE)); for_each_populated_zone(zone) { int i; show_node(zone); printk("%s" " free:%lukB" " min:%lukB" " low:%lukB" " high:%lukB" " active_anon:%lukB" " inactive_anon:%lukB" " active_file:%lukB" " inactive_file:%lukB" " unevictable:%lukB" " isolated(anon):%lukB" " isolated(file):%lukB" " present:%lukB" " mlocked:%lukB" " dirty:%lukB" " writeback:%lukB" " mapped:%lukB" " shmem:%lukB" " slab_reclaimable:%lukB" " slab_unreclaimable:%lukB" " kernel_stack:%lukB" " pagetables:%lukB" " unstable:%lukB" " bounce:%lukB" " writeback_tmp:%lukB" " pages_scanned:%lu" " all_unreclaimable? %s" "\n", zone->name, K(zone_page_state(zone, NR_FREE_PAGES)), K(min_wmark_pages(zone)), K(low_wmark_pages(zone)), K(high_wmark_pages(zone)), K(zone_page_state(zone, NR_ACTIVE_ANON)), K(zone_page_state(zone, NR_INACTIVE_ANON)), K(zone_page_state(zone, NR_ACTIVE_FILE)), K(zone_page_state(zone, NR_INACTIVE_FILE)), K(zone_page_state(zone, NR_UNEVICTABLE)), K(zone_page_state(zone, NR_ISOLATED_ANON)), K(zone_page_state(zone, NR_ISOLATED_FILE)), K(zone->present_pages), K(zone_page_state(zone, NR_MLOCK)), K(zone_page_state(zone, NR_FILE_DIRTY)), K(zone_page_state(zone, NR_WRITEBACK)), K(zone_page_state(zone, NR_FILE_MAPPED)), K(zone_page_state(zone, NR_SHMEM)), K(zone_page_state(zone, NR_SLAB_RECLAIMABLE)), K(zone_page_state(zone, NR_SLAB_UNRECLAIMABLE)), zone_page_state(zone, NR_KERNEL_STACK) * THREAD_SIZE / 1024, K(zone_page_state(zone, NR_PAGETABLE)), K(zone_page_state(zone, NR_UNSTABLE_NFS)), K(zone_page_state(zone, NR_BOUNCE)), K(zone_page_state(zone, NR_WRITEBACK_TEMP)), zone->pages_scanned, (zone_is_all_unreclaimable(zone) ? "yes" : "no") ); printk("lowmem_reserve[]:"); for (i = 0; i < MAX_NR_ZONES; i++) printk(" %lu", zone->lowmem_reserve[i]); printk("\n"); } for_each_populated_zone(zone) { unsigned long nr[MAX_ORDER], flags, order, total = 0; show_node(zone); printk("%s: ", zone->name); spin_lock_irqsave(&zone->lock, flags); for (order = 0; order < MAX_ORDER; order++) { nr[order] = zone->free_area[order].nr_free; total += nr[order] << order; } spin_unlock_irqrestore(&zone->lock, flags); for (order = 0; order < MAX_ORDER; order++) printk("%lu*%lukB ", nr[order], K(1UL) << order); printk("= %lukB\n", K(total)); } printk("%ld total pagecache pages\n", global_page_state(NR_FILE_PAGES)); show_swap_cache_info(); } static void zoneref_set_zone(struct zone *zone, struct zoneref *zoneref) { zoneref->zone = zone; zoneref->zone_idx = zone_idx(zone); } /* * Builds allocation fallback zone lists. * * Add all populated zones of a node to the zonelist. */ static int build_zonelists_node(pg_data_t *pgdat, struct zonelist *zonelist, int nr_zones, enum zone_type zone_type) { struct zone *zone; BUG_ON(zone_type >= MAX_NR_ZONES); zone_type++; do { zone_type--; zone = pgdat->node_zones + zone_type; if (populated_zone(zone)) { zoneref_set_zone(zone, &zonelist->_zonerefs[nr_zones++]); check_highest_zone(zone_type); } } while (zone_type); return nr_zones; } /* * zonelist_order: * 0 = automatic detection of better ordering. * 1 = order by ([node] distance, -zonetype) * 2 = order by (-zonetype, [node] distance) * * If not NUMA, ZONELIST_ORDER_ZONE and ZONELIST_ORDER_NODE will create * the same zonelist. So only NUMA can configure this param. */ #define ZONELIST_ORDER_DEFAULT 0 #define ZONELIST_ORDER_NODE 1 #define ZONELIST_ORDER_ZONE 2 /* zonelist order in the kernel. * set_zonelist_order() will set this to NODE or ZONE. */ static int current_zonelist_order = ZONELIST_ORDER_DEFAULT; static char zonelist_order_name[3][8] = {"Default", "Node", "Zone"}; #ifdef CONFIG_NUMA /* The value user specified ....changed by config */ static int user_zonelist_order = ZONELIST_ORDER_DEFAULT; /* string for sysctl */ #define NUMA_ZONELIST_ORDER_LEN 16 char numa_zonelist_order[16] = "default"; /* * interface for configure zonelist ordering. * command line option "numa_zonelist_order" * = "[dD]efault - default, automatic configuration. * = "[nN]ode - order by node locality, then by zone within node * = "[zZ]one - order by zone, then by locality within zone */ static int __parse_numa_zonelist_order(char *s) { if (*s == 'd' || *s == 'D') { user_zonelist_order = ZONELIST_ORDER_DEFAULT; } else if (*s == 'n' || *s == 'N') { user_zonelist_order = ZONELIST_ORDER_NODE; } else if (*s == 'z' || *s == 'Z') { user_zonelist_order = ZONELIST_ORDER_ZONE; } else { printk(KERN_WARNING "Ignoring invalid numa_zonelist_order value: " "%s\n", s); return -EINVAL; } return 0; } static __init int setup_numa_zonelist_order(char *s) { if (s) return __parse_numa_zonelist_order(s); return 0; } early_param("numa_zonelist_order", setup_numa_zonelist_order); /* * sysctl handler for numa_zonelist_order */ int numa_zonelist_order_handler(ctl_table *table, int write, void __user *buffer, size_t *length, loff_t *ppos) { char saved_string[NUMA_ZONELIST_ORDER_LEN]; int ret; if (write) strncpy(saved_string, (char*)table->data, NUMA_ZONELIST_ORDER_LEN); ret = proc_dostring(table, write, buffer, length, ppos); if (ret) return ret; if (write) { int oldval = user_zonelist_order; if (__parse_numa_zonelist_order((char*)table->data)) { /* * bogus value. restore saved string */ strncpy((char*)table->data, saved_string, NUMA_ZONELIST_ORDER_LEN); user_zonelist_order = oldval; } else if (oldval != user_zonelist_order) build_all_zonelists(); } return 0; } #define MAX_NODE_LOAD (nr_online_nodes) static int node_load[MAX_NUMNODES]; /** * find_next_best_node - find the next node that should appear in a given node's fallback list * @node: node whose fallback list we're appending * @used_node_mask: nodemask_t of already used nodes * * We use a number of factors to determine which is the next node that should * appear on a given node's fallback list. The node should not have appeared * already in @node's fallback list, and it should be the next closest node * according to the distance array (which contains arbitrary distance values * from each node to each node in the system), and should also prefer nodes * with no CPUs, since presumably they'll have very little allocation pressure * on them otherwise. * It returns -1 if no node is found. */ static int find_next_best_node(int node, nodemask_t *used_node_mask) { int n, val; int min_val = INT_MAX; int best_node = -1; const struct cpumask *tmp = cpumask_of_node(0); /* Use the local node if we haven't already */ if (!node_isset(node, *used_node_mask)) { node_set(node, *used_node_mask); return node; } for_each_node_state(n, N_HIGH_MEMORY) { /* Don't want a node to appear more than once */ if (node_isset(n, *used_node_mask)) continue; /* Use the distance array to find the distance */ val = node_distance(node, n); /* Penalize nodes under us ("prefer the next node") */ val += (n < node); /* Give preference to headless and unused nodes */ tmp = cpumask_of_node(n); if (!cpumask_empty(tmp)) val += PENALTY_FOR_NODE_WITH_CPUS; /* Slight preference for less loaded node */ val *= (MAX_NODE_LOAD*MAX_NUMNODES); val += node_load[n]; if (val < min_val) { min_val = val; best_node = n; } } if (best_node >= 0) node_set(best_node, *used_node_mask); return best_node; } /* * Build zonelists ordered by node and zones within node. * This results in maximum locality--normal zone overflows into local * DMA zone, if any--but risks exhausting DMA zone. */ static void build_zonelists_in_node_order(pg_data_t *pgdat, int node) { int j; struct zonelist *zonelist; zonelist = &pgdat->node_zonelists[0]; for (j = 0; zonelist->_zonerefs[j].zone != NULL; j++) ; j = build_zonelists_node(NODE_DATA(node), zonelist, j, MAX_NR_ZONES - 1); zonelist->_zonerefs[j].zone = NULL; zonelist->_zonerefs[j].zone_idx = 0; } /* * Build gfp_thisnode zonelists */ static void build_thisnode_zonelists(pg_data_t *pgdat) { int j; struct zonelist *zonelist; zonelist = &pgdat->node_zonelists[1]; j = build_zonelists_node(pgdat, zonelist, 0, MAX_NR_ZONES - 1); zonelist->_zonerefs[j].zone = NULL; zonelist->_zonerefs[j].zone_idx = 0; } /* * Build zonelists ordered by zone and nodes within zones. * This results in conserving DMA zone[s] until all Normal memory is * exhausted, but results in overflowing to remote node while memory * may still exist in local DMA zone. */ static int node_order[MAX_NUMNODES]; static void build_zonelists_in_zone_order(pg_data_t *pgdat, int nr_nodes) { int pos, j, node; int zone_type; /* needs to be signed */ struct zone *z; struct zonelist *zonelist; zonelist = &pgdat->node_zonelists[0]; pos = 0; for (zone_type = MAX_NR_ZONES - 1; zone_type >= 0; zone_type--) { for (j = 0; j < nr_nodes; j++) { node = node_order[j]; z = &NODE_DATA(node)->node_zones[zone_type]; if (populated_zone(z)) { zoneref_set_zone(z, &zonelist->_zonerefs[pos++]); check_highest_zone(zone_type); } } } zonelist->_zonerefs[pos].zone = NULL; zonelist->_zonerefs[pos].zone_idx = 0; } static int default_zonelist_order(void) { int nid, zone_type; unsigned long low_kmem_size,total_size; struct zone *z; int average_size; /* * ZONE_DMA and ZONE_DMA32 can be very small area in the sytem. * If they are really small and used heavily, the system can fall * into OOM very easily. * This function detect ZONE_DMA/DMA32 size and confgigures zone order. */ /* Is there ZONE_NORMAL ? (ex. ppc has only DMA zone..) */ low_kmem_size = 0; total_size = 0; for_each_online_node(nid) { for (zone_type = 0; zone_type < MAX_NR_ZONES; zone_type++) { z = &NODE_DATA(nid)->node_zones[zone_type]; if (populated_zone(z)) { if (zone_type < ZONE_NORMAL) low_kmem_size += z->present_pages; total_size += z->present_pages; } } } if (!low_kmem_size || /* there are no DMA area. */ low_kmem_size > total_size/2) /* DMA/DMA32 is big. */ return ZONELIST_ORDER_NODE; /* * look into each node's config. * If there is a node whose DMA/DMA32 memory is very big area on * local memory, NODE_ORDER may be suitable. */ average_size = total_size / (nodes_weight(node_states[N_HIGH_MEMORY]) + 1); for_each_online_node(nid) { low_kmem_size = 0; total_size = 0; for (zone_type = 0; zone_type < MAX_NR_ZONES; zone_type++) { z = &NODE_DATA(nid)->node_zones[zone_type]; if (populated_zone(z)) { if (zone_type < ZONE_NORMAL) low_kmem_size += z->present_pages; total_size += z->present_pages; } } if (low_kmem_size && total_size > average_size && /* ignore small node */ low_kmem_size > total_size * 70/100) return ZONELIST_ORDER_NODE; } return ZONELIST_ORDER_ZONE; } static void set_zonelist_order(void) { if (user_zonelist_order == ZONELIST_ORDER_DEFAULT) current_zonelist_order = default_zonelist_order(); else current_zonelist_order = user_zonelist_order; } static void build_zonelists(pg_data_t *pgdat) { int j, node, load; enum zone_type i; nodemask_t used_mask; int local_node, prev_node; struct zonelist *zonelist; int order = current_zonelist_order; /* initialize zonelists */ for (i = 0; i < MAX_ZONELISTS; i++) { zonelist = pgdat->node_zonelists + i; zonelist->_zonerefs[0].zone = NULL; zonelist->_zonerefs[0].zone_idx = 0; } /* NUMA-aware ordering of nodes */ local_node = pgdat->node_id; load = nr_online_nodes; prev_node = local_node; nodes_clear(used_mask); memset(node_order, 0, sizeof(node_order)); j = 0; while ((node = find_next_best_node(local_node, &used_mask)) >= 0) { int distance = node_distance(local_node, node); /* * If another node is sufficiently far away then it is better * to reclaim pages in a zone before going off node. */ if (distance > RECLAIM_DISTANCE) zone_reclaim_mode = 1; /* * We don't want to pressure a particular node. * So adding penalty to the first node in same * distance group to make it round-robin. */ if (distance != node_distance(local_node, prev_node)) node_load[node] = load; prev_node = node; load--; if (order == ZONELIST_ORDER_NODE) build_zonelists_in_node_order(pgdat, node); else node_order[j++] = node; /* remember order */ } if (order == ZONELIST_ORDER_ZONE) { /* calculate node order -- i.e., DMA last! */ build_zonelists_in_zone_order(pgdat, j); } build_thisnode_zonelists(pgdat); } /* Construct the zonelist performance cache - see further mmzone.h */ static void build_zonelist_cache(pg_data_t *pgdat) { struct zonelist *zonelist; struct zonelist_cache *zlc; struct zoneref *z; zonelist = &pgdat->node_zonelists[0]; zonelist->zlcache_ptr = zlc = &zonelist->zlcache; bitmap_zero(zlc->fullzones, MAX_ZONES_PER_ZONELIST); for (z = zonelist->_zonerefs; z->zone; z++) zlc->z_to_n[z - zonelist->_zonerefs] = zonelist_node_idx(z); } #else /* CONFIG_NUMA */ static void set_zonelist_order(void) { current_zonelist_order = ZONELIST_ORDER_ZONE; } static void build_zonelists(pg_data_t *pgdat) { int node, local_node; enum zone_type j; struct zonelist *zonelist; local_node = pgdat->node_id; zonelist = &pgdat->node_zonelists[0]; j = build_zonelists_node(pgdat, zonelist, 0, MAX_NR_ZONES - 1); /* * Now we build the zonelist so that it contains the zones * of all the other nodes. * We don't want to pressure a particular node, so when * building the zones for node N, we make sure that the * zones coming right after the local ones are those from * node N+1 (modulo N) */ for (node = local_node + 1; node < MAX_NUMNODES; node++) { if (!node_online(node)) continue; j = build_zonelists_node(NODE_DATA(node), zonelist, j, MAX_NR_ZONES - 1); } for (node = 0; node < local_node; node++) { if (!node_online(node)) continue; j = build_zonelists_node(NODE_DATA(node), zonelist, j, MAX_NR_ZONES - 1); } zonelist->_zonerefs[j].zone = NULL; zonelist->_zonerefs[j].zone_idx = 0; } /* non-NUMA variant of zonelist performance cache - just NULL zlcache_ptr */ static void build_zonelist_cache(pg_data_t *pgdat) { pgdat->node_zonelists[0].zlcache_ptr = NULL; } #endif /* CONFIG_NUMA */ /* return values int ....just for stop_machine() */ static int __build_all_zonelists(void *dummy) { int nid; #ifdef CONFIG_NUMA memset(node_load, 0, sizeof(node_load)); #endif for_each_online_node(nid) { pg_data_t *pgdat = NODE_DATA(nid); build_zonelists(pgdat); build_zonelist_cache(pgdat); } return 0; } void build_all_zonelists(void) { set_zonelist_order(); if (system_state == SYSTEM_BOOTING) { __build_all_zonelists(NULL); mminit_verify_zonelist(); cpuset_init_current_mems_allowed(); } else { /* we have to stop all cpus to guarantee there is no user of zonelist */ stop_machine(__build_all_zonelists, NULL, NULL); /* cpuset refresh routine should be here */ } vm_total_pages = nr_free_pagecache_pages(); /* * Disable grouping by mobility if the number of pages in the * system is too low to allow the mechanism to work. It would be * more accurate, but expensive to check per-zone. This check is * made on memory-hotadd so a system can start with mobility * disabled and enable it later */ if (vm_total_pages < (pageblock_nr_pages * MIGRATE_TYPES)) page_group_by_mobility_disabled = 1; else page_group_by_mobility_disabled = 0; printk("Built %i zonelists in %s order, mobility grouping %s. " "Total pages: %ld\n", nr_online_nodes, zonelist_order_name[current_zonelist_order], page_group_by_mobility_disabled ? "off" : "on", vm_total_pages); #ifdef CONFIG_NUMA printk("Policy zone: %s\n", zone_names[policy_zone]); #endif } /* * Helper functions to size the waitqueue hash table. * Essentially these want to choose hash table sizes sufficiently * large so that collisions trying to wait on pages are rare. * But in fact, the number of active page waitqueues on typical * systems is ridiculously low, less than 200. So this is even * conservative, even though it seems large. * * The constant PAGES_PER_WAITQUEUE specifies the ratio of pages to * waitqueues, i.e. the size of the waitq table given the number of pages. */ #define PAGES_PER_WAITQUEUE 256 #ifndef CONFIG_MEMORY_HOTPLUG static inline unsigned long wait_table_hash_nr_entries(unsigned long pages) { unsigned long size = 1; pages /= PAGES_PER_WAITQUEUE; while (size < pages) size <<= 1; /* * Once we have dozens or even hundreds of threads sleeping * on IO we've got bigger problems than wait queue collision. * Limit the size of the wait table to a reasonable size. */ size = min(size, 4096UL); return max(size, 4UL); } #else /* * A zone's size might be changed by hot-add, so it is not possible to determine * a suitable size for its wait_table. So we use the maximum size now. * * The max wait table size = 4096 x sizeof(wait_queue_head_t). ie: * * i386 (preemption config) : 4096 x 16 = 64Kbyte. * ia64, x86-64 (no preemption): 4096 x 20 = 80Kbyte. * ia64, x86-64 (preemption) : 4096 x 24 = 96Kbyte. * * The maximum entries are prepared when a zone's memory is (512K + 256) pages * or more by the traditional way. (See above). It equals: * * i386, x86-64, powerpc(4K page size) : = ( 2G + 1M)byte. * ia64(16K page size) : = ( 8G + 4M)byte. * powerpc (64K page size) : = (32G +16M)byte. */ static inline unsigned long wait_table_hash_nr_entries(unsigned long pages) { return 4096UL; } #endif /* * This is an integer logarithm so that shifts can be used later * to extract the more random high bits from the multiplicative * hash function before the remainder is taken. */ static inline unsigned long wait_table_bits(unsigned long size) { return ffz(~size); } #define LONG_ALIGN(x) (((x)+(sizeof(long))-1)&~((sizeof(long))-1)) /* * Mark a number of pageblocks as MIGRATE_RESERVE. The number * of blocks reserved is based on min_wmark_pages(zone). The memory within * the reserve will tend to store contiguous free pages. Setting min_free_kbytes * higher will lead to a bigger reserve which will get freed as contiguous * blocks as reclaim kicks in */ static void setup_zone_migrate_reserve(struct zone *zone) { unsigned long start_pfn, pfn, end_pfn; struct page *page; unsigned long block_migratetype; int reserve; /* Get the start pfn, end pfn and the number of blocks to reserve */ start_pfn = zone->zone_start_pfn; end_pfn = start_pfn + zone->spanned_pages; reserve = roundup(min_wmark_pages(zone), pageblock_nr_pages) >> pageblock_order; /* * Reserve blocks are generally in place to help high-order atomic * allocations that are short-lived. A min_free_kbytes value that * would result in more than 2 reserve blocks for atomic allocations * is assumed to be in place to help anti-fragmentation for the * future allocation of hugepages at runtime. */ reserve = min(2, reserve); for (pfn = start_pfn; pfn < end_pfn; pfn += pageblock_nr_pages) { if (!pfn_valid(pfn)) continue; page = pfn_to_page(pfn); /* Watch out for overlapping nodes */ if (page_to_nid(page) != zone_to_nid(zone)) continue; /* Blocks with reserved pages will never free, skip them. */ if (PageReserved(page)) continue; block_migratetype = get_pageblock_migratetype(page); /* If this block is reserved, account for it */ if (reserve > 0 && block_migratetype == MIGRATE_RESERVE) { reserve--; continue; } /* Suitable for reserving if this block is movable */ if (reserve > 0 && block_migratetype == MIGRATE_MOVABLE) { set_pageblock_migratetype(page, MIGRATE_RESERVE); move_freepages_block(zone, page, MIGRATE_RESERVE); reserve--; continue; } /* * If the reserve is met and this is a previous reserved block, * take it back */ if (block_migratetype == MIGRATE_RESERVE) { set_pageblock_migratetype(page, MIGRATE_MOVABLE); move_freepages_block(zone, page, MIGRATE_MOVABLE); } } } /* * Initially all pages are reserved - free ones are freed * up by free_all_bootmem() once the early boot process is * done. Non-atomic initialization, single-pass. */ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone, unsigned long start_pfn, enum memmap_context context) { struct page *page; unsigned long end_pfn = start_pfn + size; unsigned long pfn; struct zone *z; if (highest_memmap_pfn < end_pfn - 1) highest_memmap_pfn = end_pfn - 1; z = &NODE_DATA(nid)->node_zones[zone]; for (pfn = start_pfn; pfn < end_pfn; pfn++) { /* * There can be holes in boot-time mem_map[]s * handed to this function. They do not * exist on hotplugged memory. */ if (context == MEMMAP_EARLY) { if (!early_pfn_valid(pfn)) continue; if (!early_pfn_in_nid(pfn, nid)) continue; } page = pfn_to_page(pfn); set_page_links(page, zone, nid, pfn); mminit_verify_page_links(page, zone, nid, pfn); init_page_count(page); reset_page_mapcount(page); SetPageReserved(page); /* * Mark the block movable so that blocks are reserved for * movable at startup. This will force kernel allocations * to reserve their blocks rather than leaking throughout * the address space during boot when many long-lived * kernel allocations are made. Later some blocks near * the start are marked MIGRATE_RESERVE by * setup_zone_migrate_reserve() * * bitmap is created for zone's valid pfn range. but memmap * can be created for invalid pages (for alignment) * check here not to call set_pageblock_migratetype() against * pfn out of zone. */ if ((z->zone_start_pfn <= pfn) && (pfn < z->zone_start_pfn + z->spanned_pages) && !(pfn & (pageblock_nr_pages - 1))) set_pageblock_migratetype(page, MIGRATE_MOVABLE); INIT_LIST_HEAD(&page->lru); #ifdef WANT_PAGE_VIRTUAL /* The shift won't overflow because ZONE_NORMAL is below 4G. */ if (!is_highmem_idx(zone)) set_page_address(page, __va(pfn << PAGE_SHIFT)); #endif } } static void __meminit zone_init_free_lists(struct zone *zone) { int order, t; for_each_migratetype_order(order, t) { INIT_LIST_HEAD(&zone->free_area[order].free_list[t]); zone->free_area[order].nr_free = 0; } } #ifndef __HAVE_ARCH_MEMMAP_INIT #define memmap_init(size, nid, zone, start_pfn) \ memmap_init_zone((size), (nid), (zone), (start_pfn), MEMMAP_EARLY) #endif static int zone_batchsize(struct zone *zone) { #ifdef CONFIG_MMU int batch; /* * The per-cpu-pages pools are set to around 1000th of the * size of the zone. But no more than 1/2 of a meg. * * OK, so we don't know how big the cache is. So guess. */ batch = zone->present_pages / 1024; if (batch * PAGE_SIZE > 512 * 1024) batch = (512 * 1024) / PAGE_SIZE; batch /= 4; /* We effectively *= 4 below */ if (batch < 1) batch = 1; /* * Clamp the batch to a 2^n - 1 value. Having a power * of 2 value was found to be more likely to have * suboptimal cache aliasing properties in some cases. * * For example if 2 tasks are alternately allocating * batches of pages, one task can end up with a lot * of pages of one half of the possible page colors * and the other with pages of the other colors. */ batch = rounddown_pow_of_two(batch + batch/2) - 1; return batch; #else /* The deferral and batching of frees should be suppressed under NOMMU * conditions. * * The problem is that NOMMU needs to be able to allocate large chunks * of contiguous memory as there's no hardware page translation to * assemble apparent contiguous memory from discontiguous pages. * * Queueing large contiguous runs of pages for batching, however, * causes the pages to actually be freed in smaller chunks. As there * can be a significant delay between the individual batches being * recycled, this leads to the once large chunks of space being * fragmented and becoming unavailable for high-order allocations. */ return 0; #endif } static void setup_pageset(struct per_cpu_pageset *p, unsigned long batch) { struct per_cpu_pages *pcp; int migratetype; memset(p, 0, sizeof(*p)); pcp = &p->pcp; pcp->count = 0; pcp->high = 6 * batch; pcp->batch = max(1UL, 1 * batch); for (migratetype = 0; migratetype < MIGRATE_PCPTYPES; migratetype++) INIT_LIST_HEAD(&pcp->lists[migratetype]); } /* * setup_pagelist_highmark() sets the high water mark for hot per_cpu_pagelist * to the value high for the pageset p. */ static void setup_pagelist_highmark(struct per_cpu_pageset *p, unsigned long high) { struct per_cpu_pages *pcp; pcp = &p->pcp; pcp->high = high; pcp->batch = max(1UL, high/4); if ((high/4) > (PAGE_SHIFT * 8)) pcp->batch = PAGE_SHIFT * 8; } #ifdef CONFIG_NUMA /* * Boot pageset table. One per cpu which is going to be used for all * zones and all nodes. The parameters will be set in such a way * that an item put on a list will immediately be handed over to * the buddy list. This is safe since pageset manipulation is done * with interrupts disabled. * * Some NUMA counter updates may also be caught by the boot pagesets. * * The boot_pagesets must be kept even after bootup is complete for * unused processors and/or zones. They do play a role for bootstrapping * hotplugged processors. * * zoneinfo_show() and maybe other functions do * not check if the processor is online before following the pageset pointer. * Other parts of the kernel may not check if the zone is available. */ static struct per_cpu_pageset boot_pageset[NR_CPUS]; /* * Dynamically allocate memory for the * per cpu pageset array in struct zone. */ static int __cpuinit process_zones(int cpu) { struct zone *zone, *dzone; int node = cpu_to_node(cpu); node_set_state(node, N_CPU); /* this node has a cpu */ for_each_populated_zone(zone) { zone_pcp(zone, cpu) = kmalloc_node(sizeof(struct per_cpu_pageset), GFP_KERNEL, node); if (!zone_pcp(zone, cpu)) goto bad; setup_pageset(zone_pcp(zone, cpu), zone_batchsize(zone)); if (percpu_pagelist_fraction) setup_pagelist_highmark(zone_pcp(zone, cpu), (zone->present_pages / percpu_pagelist_fraction)); } return 0; bad: for_each_zone(dzone) { if (!populated_zone(dzone)) continue; if (dzone == zone) break; kfree(zone_pcp(dzone, cpu)); zone_pcp(dzone, cpu) = &boot_pageset[cpu]; } return -ENOMEM; } static inline void free_zone_pagesets(int cpu) { struct zone *zone; for_each_zone(zone) { struct per_cpu_pageset *pset = zone_pcp(zone, cpu); /* Free per_cpu_pageset if it is slab allocated */ if (pset != &boot_pageset[cpu]) kfree(pset); zone_pcp(zone, cpu) = &boot_pageset[cpu]; } } static int __cpuinit pageset_cpuup_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) { int cpu = (long)hcpu; int ret = NOTIFY_OK; switch (action) { case CPU_UP_PREPARE: case CPU_UP_PREPARE_FROZEN: if (process_zones(cpu)) ret = NOTIFY_BAD; break; case CPU_UP_CANCELED: case CPU_UP_CANCELED_FROZEN: case CPU_DEAD: case CPU_DEAD_FROZEN: free_zone_pagesets(cpu); break; default: break; } return ret; } static struct notifier_block __cpuinitdata pageset_notifier = { &pageset_cpuup_callback, NULL, 0 }; void __init setup_per_cpu_pageset(void) { int err; /* Initialize per_cpu_pageset for cpu 0. * A cpuup callback will do this for every cpu * as it comes online */ err = process_zones(smp_processor_id()); BUG_ON(err); register_cpu_notifier(&pageset_notifier); } #endif static noinline __init_refok int zone_wait_table_init(struct zone *zone, unsigned long zone_size_pages) { int i; struct pglist_data *pgdat = zone->zone_pgdat; size_t alloc_size; /* * The per-page waitqueue mechanism uses hashed waitqueues * per zone. */ zone->wait_table_hash_nr_entries = wait_table_hash_nr_entries(zone_size_pages); zone->wait_table_bits = wait_table_bits(zone->wait_table_hash_nr_entries); alloc_size = zone->wait_table_hash_nr_entries * sizeof(wait_queue_head_t); if (!slab_is_available()) { zone->wait_table = (wait_queue_head_t *) alloc_bootmem_node(pgdat, alloc_size); } else { /* * This case means that a zone whose size was 0 gets new memory * via memory hot-add. * But it may be the case that a new node was hot-added. In * this case vmalloc() will not be able to use this new node's * memory - this wait_table must be initialized to use this new * node itself as well. * To use this new node's memory, further consideration will be * necessary. */ zone->wait_table = vmalloc(alloc_size); } if (!zone->wait_table) return -ENOMEM; for(i = 0; i < zone->wait_table_hash_nr_entries; ++i) init_waitqueue_head(zone->wait_table + i); return 0; } static int __zone_pcp_update(void *data) { struct zone *zone = data; int cpu; unsigned long batch = zone_batchsize(zone), flags; for (cpu = 0; cpu < NR_CPUS; cpu++) { struct per_cpu_pageset *pset; struct per_cpu_pages *pcp; pset = zone_pcp(zone, cpu); pcp = &pset->pcp; local_irq_save(flags); free_pcppages_bulk(zone, pcp->count, pcp); setup_pageset(pset, batch); local_irq_restore(flags); } return 0; } void zone_pcp_update(struct zone *zone) { stop_machine(__zone_pcp_update, zone, NULL); } static __meminit void zone_pcp_init(struct zone *zone) { int cpu; unsigned long batch = zone_batchsize(zone); for (cpu = 0; cpu < NR_CPUS; cpu++) { #ifdef CONFIG_NUMA /* Early boot. Slab allocator not functional yet */ zone_pcp(zone, cpu) = &boot_pageset[cpu]; setup_pageset(&boot_pageset[cpu],0); #else setup_pageset(zone_pcp(zone,cpu), batch); #endif } if (zone->present_pages) printk(KERN_DEBUG " %s zone: %lu pages, LIFO batch:%lu\n", zone->name, zone->present_pages, batch); } __meminit int init_currently_empty_zone(struct zone *zone, unsigned long zone_start_pfn, unsigned long size, enum memmap_context context) { struct pglist_data *pgdat = zone->zone_pgdat; int ret; ret = zone_wait_table_init(zone, size); if (ret) return ret; pgdat->nr_zones = zone_idx(zone) + 1; zone->zone_start_pfn = zone_start_pfn; mminit_dprintk(MMINIT_TRACE, "memmap_init", "Initialising map node %d zone %lu pfns %lu -> %lu\n", pgdat->node_id, (unsigned long)zone_idx(zone), zone_start_pfn, (zone_start_pfn + size)); zone_init_free_lists(zone); return 0; } #ifdef CONFIG_ARCH_POPULATES_NODE_MAP /* * Basic iterator support. Return the first range of PFNs for a node * Note: nid == MAX_NUMNODES returns first region regardless of node */ static int __meminit first_active_region_index_in_nid(int nid) { int i; for (i = 0; i < nr_nodemap_entries; i++) if (nid == MAX_NUMNODES || early_node_map[i].nid == nid) return i; return -1; } /* * Basic iterator support. Return the next active range of PFNs for a node * Note: nid == MAX_NUMNODES returns next region regardless of node */ static int __meminit next_active_region_index_in_nid(int index, int nid) { for (index = index + 1; index < nr_nodemap_entries; index++) if (nid == MAX_NUMNODES || early_node_map[index].nid == nid) return index; return -1; } #ifndef CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID /* * Required by SPARSEMEM. Given a PFN, return what node the PFN is on. * Architectures may implement their own version but if add_active_range() * was used and there are no special requirements, this is a convenient * alternative */ int __meminit __early_pfn_to_nid(unsigned long pfn) { int i; for (i = 0; i < nr_nodemap_entries; i++) { unsigned long start_pfn = early_node_map[i].start_pfn; unsigned long end_pfn = early_node_map[i].end_pfn; if (start_pfn <= pfn && pfn < end_pfn) return early_node_map[i].nid; } /* This is a memory hole */ return -1; } #endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */ int __meminit early_pfn_to_nid(unsigned long pfn) { int nid; nid = __early_pfn_to_nid(pfn); if (nid >= 0) return nid; /* just returns 0 */ return 0; } #ifdef CONFIG_NODES_SPAN_OTHER_NODES bool __meminit early_pfn_in_nid(unsigned long pfn, int node) { int nid; nid = __early_pfn_to_nid(pfn); if (nid >= 0 && nid != node) return false; return true; } #endif /* Basic iterator support to walk early_node_map[] */ #define for_each_active_range_index_in_nid(i, nid) \ for (i = first_active_region_index_in_nid(nid); i != -1; \ i = next_active_region_index_in_nid(i, nid)) /** * free_bootmem_with_active_regions - Call free_bootmem_node for each active range * @nid: The node to free memory on. If MAX_NUMNODES, all nodes are freed. * @max_low_pfn: The highest PFN that will be passed to free_bootmem_node * * If an architecture guarantees that all ranges registered with * add_active_ranges() contain no holes and may be freed, this * this function may be used instead of calling free_bootmem() manually. */ void __init free_bootmem_with_active_regions(int nid, unsigned long max_low_pfn) { int i; for_each_active_range_index_in_nid(i, nid) { unsigned long size_pages = 0; unsigned long end_pfn = early_node_map[i].end_pfn; if (early_node_map[i].start_pfn >= max_low_pfn) continue; if (end_pfn > max_low_pfn) end_pfn = max_low_pfn; size_pages = end_pfn - early_node_map[i].start_pfn; free_bootmem_node(NODE_DATA(early_node_map[i].nid), PFN_PHYS(early_node_map[i].start_pfn), size_pages << PAGE_SHIFT); } } void __init work_with_active_regions(int nid, work_fn_t work_fn, void *data) { int i; int ret; for_each_active_range_index_in_nid(i, nid) { ret = work_fn(early_node_map[i].start_pfn, early_node_map[i].end_pfn, data); if (ret) break; } } /** * sparse_memory_present_with_active_regions - Call memory_present for each active range * @nid: The node to call memory_present for. If MAX_NUMNODES, all nodes will be used. * * If an architecture guarantees that all ranges registered with * add_active_ranges() contain no holes and may be freed, this * function may be used instead of calling memory_present() manually. */ void __init sparse_memory_present_with_active_regions(int nid) { int i; for_each_active_range_index_in_nid(i, nid) memory_present(early_node_map[i].nid, early_node_map[i].start_pfn, early_node_map[i].end_pfn); } /** * get_pfn_range_for_nid - Return the start and end page frames for a node * @nid: The nid to return the range for. If MAX_NUMNODES, the min and max PFN are returned. * @start_pfn: Passed by reference. On return, it will have the node start_pfn. * @end_pfn: Passed by reference. On return, it will have the node end_pfn. * * It returns the start and end page frame of a node based on information * provided by an arch calling add_active_range(). If called for a node * with no available memory, a warning is printed and the start and end * PFNs will be 0. */ void __meminit get_pfn_range_for_nid(unsigned int nid, unsigned long *start_pfn, unsigned long *end_pfn) { int i; *start_pfn = -1UL; *end_pfn = 0; for_each_active_range_index_in_nid(i, nid) { *start_pfn = min(*start_pfn, early_node_map[i].start_pfn); *end_pfn = max(*end_pfn, early_node_map[i].end_pfn); } if (*start_pfn == -1UL) *start_pfn = 0; } /* * This finds a zone that can be used for ZONE_MOVABLE pages. The * assumption is made that zones within a node are ordered in monotonic * increasing memory addresses so that the "highest" populated zone is used */ static void __init find_usable_zone_for_movable(void) { int zone_index; for (zone_index = MAX_NR_ZONES - 1; zone_index >= 0; zone_index--) { if (zone_index == ZONE_MOVABLE) continue; if (arch_zone_highest_possible_pfn[zone_index] > arch_zone_lowest_possible_pfn[zone_index]) break; } VM_BUG_ON(zone_index == -1); movable_zone = zone_index; } /* * The zone ranges provided by the architecture do not include ZONE_MOVABLE * because it is sized independant of architecture. Unlike the other zones, * the starting point for ZONE_MOVABLE is not fixed. It may be different * in each node depending on the size of each node and how evenly kernelcore * is distributed. This helper function adjusts the zone ranges * provided by the architecture for a given node by using the end of the * highest usable zone for ZONE_MOVABLE. This preserves the assumption that * zones within a node are in order of monotonic increases memory addresses */ static void __meminit adjust_zone_range_for_zone_movable(int nid, unsigned long zone_type, unsigned long node_start_pfn, unsigned long node_end_pfn, unsigned long *zone_start_pfn, unsigned long *zone_end_pfn) { /* Only adjust if ZONE_MOVABLE is on this node */ if (zone_movable_pfn[nid]) { /* Size ZONE_MOVABLE */ if (zone_type == ZONE_MOVABLE) { *zone_start_pfn = zone_movable_pfn[nid]; *zone_end_pfn = min(node_end_pfn, arch_zone_highest_possible_pfn[movable_zone]); /* Adjust for ZONE_MOVABLE starting within this range */ } else if (*zone_start_pfn < zone_movable_pfn[nid] && *zone_end_pfn > zone_movable_pfn[nid]) { *zone_end_pfn = zone_movable_pfn[nid]; /* Check if this whole range is within ZONE_MOVABLE */ } else if (*zone_start_pfn >= zone_movable_pfn[nid]) *zone_start_pfn = *zone_end_pfn; } } /* * Return the number of pages a zone spans in a node, including holes * present_pages = zone_spanned_pages_in_node() - zone_absent_pages_in_node() */ static unsigned long __meminit zone_spanned_pages_in_node(int nid, unsigned long zone_type, unsigned long *ignored) { unsigned long node_start_pfn, node_end_pfn; unsigned long zone_start_pfn, zone_end_pfn; /* Get the start and end of the node and zone */ get_pfn_range_for_nid(nid, &node_start_pfn, &node_end_pfn); zone_start_pfn = arch_zone_lowest_possible_pfn[zone_type]; zone_end_pfn = arch_zone_highest_possible_pfn[zone_type]; adjust_zone_range_for_zone_movable(nid, zone_type, node_start_pfn, node_end_pfn, &zone_start_pfn, &zone_end_pfn); /* Check that this node has pages within the zone's required range */ if (zone_end_pfn < node_start_pfn || zone_start_pfn > node_end_pfn) return 0; /* Move the zone boundaries inside the node if necessary */ zone_end_pfn = min(zone_end_pfn, node_end_pfn); zone_start_pfn = max(zone_start_pfn, node_start_pfn); /* Return the spanned pages */ return zone_end_pfn - zone_start_pfn; } /* * Return the number of holes in a range on a node. If nid is MAX_NUMNODES, * then all holes in the requested range will be accounted for. */ static unsigned long __meminit __absent_pages_in_range(int nid, unsigned long range_start_pfn, unsigned long range_end_pfn) { int i = 0; unsigned long prev_end_pfn = 0, hole_pages = 0; unsigned long start_pfn; /* Find the end_pfn of the first active range of pfns in the node */ i = first_active_region_index_in_nid(nid); if (i == -1) return 0; prev_end_pfn = min(early_node_map[i].start_pfn, range_end_pfn); /* Account for ranges before physical memory on this node */ if (early_node_map[i].start_pfn > range_start_pfn) hole_pages = prev_end_pfn - range_start_pfn; /* Find all holes for the zone within the node */ for (; i != -1; i = next_active_region_index_in_nid(i, nid)) { /* No need to continue if prev_end_pfn is outside the zone */ if (prev_end_pfn >= range_end_pfn) break; /* Make sure the end of the zone is not within the hole */ start_pfn = min(early_node_map[i].start_pfn, range_end_pfn); prev_end_pfn = max(prev_end_pfn, range_start_pfn); /* Update the hole size cound and move on */ if (start_pfn > range_start_pfn) { BUG_ON(prev_end_pfn > start_pfn); hole_pages += start_pfn - prev_end_pfn; } prev_end_pfn = early_node_map[i].end_pfn; } /* Account for ranges past physical memory on this node */ if (range_end_pfn > prev_end_pfn) hole_pages += range_end_pfn - max(range_start_pfn, prev_end_pfn); return hole_pages; } /** * absent_pages_in_range - Return number of page frames in holes within a range * @start_pfn: The start PFN to start searching for holes * @end_pfn: The end PFN to stop searching for holes * * It returns the number of pages frames in memory holes within a range. */ unsigned long __init absent_pages_in_range(unsigned long start_pfn, unsigned long end_pfn) { return __absent_pages_in_range(MAX_NUMNODES, start_pfn, end_pfn); } /* Return the number of page frames in holes in a zone on a node */ static unsigned long __meminit zone_absent_pages_in_node(int nid, unsigned long zone_type, unsigned long *ignored) { unsigned long node_start_pfn, node_end_pfn; unsigned long zone_start_pfn, zone_end_pfn; get_pfn_range_for_nid(nid, &node_start_pfn, &node_end_pfn); zone_start_pfn = max(arch_zone_lowest_possible_pfn[zone_type], node_start_pfn); zone_end_pfn = min(arch_zone_highest_possible_pfn[zone_type], node_end_pfn); adjust_zone_range_for_zone_movable(nid, zone_type, node_start_pfn, node_end_pfn, &zone_start_pfn, &zone_end_pfn); return __absent_pages_in_range(nid, zone_start_pfn, zone_end_pfn); } #else static inline unsigned long __meminit zone_spanned_pages_in_node(int nid, unsigned long zone_type, unsigned long *zones_size) { return zones_size[zone_type]; } static inline unsigned long __meminit zone_absent_pages_in_node(int nid, unsigned long zone_type, unsigned long *zholes_size) { if (!zholes_size) return 0; return zholes_size[zone_type]; } #endif static void __meminit calculate_node_totalpages(struct pglist_data *pgdat, unsigned long *zones_size, unsigned long *zholes_size) { unsigned long realtotalpages, totalpages = 0; enum zone_type i; for (i = 0; i < MAX_NR_ZONES; i++) totalpages += zone_spanned_pages_in_node(pgdat->node_id, i, zones_size); pgdat->node_spanned_pages = totalpages; realtotalpages = totalpages; for (i = 0; i < MAX_NR_ZONES; i++) realtotalpages -= zone_absent_pages_in_node(pgdat->node_id, i, zholes_size); pgdat->node_present_pages = realtotalpages; printk(KERN_DEBUG "On node %d totalpages: %lu\n", pgdat->node_id, realtotalpages); } #ifndef CONFIG_SPARSEMEM /* * Calculate the size of the zone->blockflags rounded to an unsigned long * Start by making sure zonesize is a multiple of pageblock_order by rounding * up. Then use 1 NR_PAGEBLOCK_BITS worth of bits per pageblock, finally * round what is now in bits to nearest long in bits, then return it in * bytes. */ static unsigned long __init usemap_size(unsigned long zonesize) { unsigned long usemapsize; usemapsize = roundup(zonesize, pageblock_nr_pages); usemapsize = usemapsize >> pageblock_order; usemapsize *= NR_PAGEBLOCK_BITS; usemapsize = roundup(usemapsize, 8 * sizeof(unsigned long)); return usemapsize / 8; } static void __init setup_usemap(struct pglist_data *pgdat, struct zone *zone, unsigned long zonesize) { unsigned long usemapsize = usemap_size(zonesize); zone->pageblock_flags = NULL; if (usemapsize) zone->pageblock_flags = alloc_bootmem_node(pgdat, usemapsize); } #else static void inline setup_usemap(struct pglist_data *pgdat, struct zone *zone, unsigned long zonesize) {} #endif /* CONFIG_SPARSEMEM */ #ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE /* Return a sensible default order for the pageblock size. */ static inline int pageblock_default_order(void) { if (HPAGE_SHIFT > PAGE_SHIFT) return HUGETLB_PAGE_ORDER; return MAX_ORDER-1; } /* Initialise the number of pages represented by NR_PAGEBLOCK_BITS */ static inline void __init set_pageblock_order(unsigned int order) { /* Check that pageblock_nr_pages has not already been setup */ if (pageblock_order) return; /* * Assume the largest contiguous order of interest is a huge page. * This value may be variable depending on boot parameters on IA64 */ pageblock_order = order; } #else /* CONFIG_HUGETLB_PAGE_SIZE_VARIABLE */ /* * When CONFIG_HUGETLB_PAGE_SIZE_VARIABLE is not set, set_pageblock_order() * and pageblock_default_order() are unused as pageblock_order is set * at compile-time. See include/linux/pageblock-flags.h for the values of * pageblock_order based on the kernel config */ static inline int pageblock_default_order(unsigned int order) { return MAX_ORDER-1; } #define set_pageblock_order(x) do {} while (0) #endif /* CONFIG_HUGETLB_PAGE_SIZE_VARIABLE */ /* * Set up the zone data structures: * - mark all pages reserved * - mark all memory queues empty * - clear the memory bitmaps */ static void __paginginit free_area_init_core(struct pglist_data *pgdat, unsigned long *zones_size, unsigned long *zholes_size) { enum zone_type j; int nid = pgdat->node_id; unsigned long zone_start_pfn = pgdat->node_start_pfn; int ret; pgdat_resize_init(pgdat); pgdat->nr_zones = 0; init_waitqueue_head(&pgdat->kswapd_wait); pgdat->kswapd_max_order = 0; pgdat_page_cgroup_init(pgdat); for (j = 0; j < MAX_NR_ZONES; j++) { struct zone *zone = pgdat->node_zones + j; unsigned long size, realsize, memmap_pages; enum lru_list l; size = zone_spanned_pages_in_node(nid, j, zones_size); realsize = size - zone_absent_pages_in_node(nid, j, zholes_size); /* * Adjust realsize so that it accounts for how much memory * is used by this zone for memmap. This affects the watermark * and per-cpu initialisations */ memmap_pages = PAGE_ALIGN(size * sizeof(struct page)) >> PAGE_SHIFT; if (realsize >= memmap_pages) { realsize -= memmap_pages; if (memmap_pages) printk(KERN_DEBUG " %s zone: %lu pages used for memmap\n", zone_names[j], memmap_pages); } else printk(KERN_WARNING " %s zone: %lu pages exceeds realsize %lu\n", zone_names[j], memmap_pages, realsize); /* Account for reserved pages */ if (j == 0 && realsize > dma_reserve) { realsize -= dma_reserve; printk(KERN_DEBUG " %s zone: %lu pages reserved\n", zone_names[0], dma_reserve); } if (!is_highmem_idx(j)) nr_kernel_pages += realsize; nr_all_pages += realsize; zone->spanned_pages = size; zone->present_pages = realsize; #ifdef CONFIG_NUMA zone->node = nid; zone->min_unmapped_pages = (realsize*sysctl_min_unmapped_ratio) / 100; zone->min_slab_pages = (realsize * sysctl_min_slab_ratio) / 100; #endif zone->name = zone_names[j]; spin_lock_init(&zone->lock); spin_lock_init(&zone->lru_lock); zone_seqlock_init(zone); zone->zone_pgdat = pgdat; zone->prev_priority = DEF_PRIORITY; zone_pcp_init(zone); for_each_lru(l) { INIT_LIST_HEAD(&zone->lru[l].list); zone->reclaim_stat.nr_saved_scan[l] = 0; } zone->reclaim_stat.recent_rotated[0] = 0; zone->reclaim_stat.recent_rotated[1] = 0; zone->reclaim_stat.recent_scanned[0] = 0; zone->reclaim_stat.recent_scanned[1] = 0; zap_zone_vm_stats(zone); zone->flags = 0; if (!size) continue; set_pageblock_order(pageblock_default_order()); setup_usemap(pgdat, zone, size); ret = init_currently_empty_zone(zone, zone_start_pfn, size, MEMMAP_EARLY); BUG_ON(ret); memmap_init(size, nid, j, zone_start_pfn); zone_start_pfn += size; } } static void __init_refok alloc_node_mem_map(struct pglist_data *pgdat) { /* Skip empty nodes */ if (!pgdat->node_spanned_pages) return; #ifdef CONFIG_FLAT_NODE_MEM_MAP /* ia64 gets its own node_mem_map, before this, without bootmem */ if (!pgdat->node_mem_map) { unsigned long size, start, end; struct page *map; /* * The zone's endpoints aren't required to be MAX_ORDER * aligned but the node_mem_map endpoints must be in order * for the buddy allocator to function correctly. */ start = pgdat->node_start_pfn & ~(MAX_ORDER_NR_PAGES - 1); end = pgdat->node_start_pfn + pgdat->node_spanned_pages; end = ALIGN(end, MAX_ORDER_NR_PAGES); size = (end - start) * sizeof(struct page); map = alloc_remap(pgdat->node_id, size); if (!map) map = alloc_bootmem_node(pgdat, size); pgdat->node_mem_map = map + (pgdat->node_start_pfn - start); } #ifndef CONFIG_NEED_MULTIPLE_NODES /* * With no DISCONTIG, the global mem_map is just set as node 0's */ if (pgdat == NODE_DATA(0)) { mem_map = NODE_DATA(0)->node_mem_map; #ifdef CONFIG_ARCH_POPULATES_NODE_MAP if (page_to_pfn(mem_map) != pgdat->node_start_pfn) mem_map -= (pgdat->node_start_pfn - ARCH_PFN_OFFSET); #endif /* CONFIG_ARCH_POPULATES_NODE_MAP */ } #endif #endif /* CONFIG_FLAT_NODE_MEM_MAP */ } void __paginginit free_area_init_node(int nid, unsigned long *zones_size, unsigned long node_start_pfn, unsigned long *zholes_size) { pg_data_t *pgdat = NODE_DATA(nid); pgdat->node_id = nid; pgdat->node_start_pfn = node_start_pfn; calculate_node_totalpages(pgdat, zones_size, zholes_size); alloc_node_mem_map(pgdat); #ifdef CONFIG_FLAT_NODE_MEM_MAP printk(KERN_DEBUG "free_area_init_node: node %d, pgdat %08lx, node_mem_map %08lx\n", nid, (unsigned long)pgdat, (unsigned long)pgdat->node_mem_map); #endif free_area_init_core(pgdat, zones_size, zholes_size); } #ifdef CONFIG_ARCH_POPULATES_NODE_MAP #if MAX_NUMNODES > 1 /* * Figure out the number of possible node ids. */ static void __init setup_nr_node_ids(void) { unsigned int node; unsigned int highest = 0; for_each_node_mask(node, node_possible_map) highest = node; nr_node_ids = highest + 1; } #else static inline void setup_nr_node_ids(void) { } #endif /** * add_active_range - Register a range of PFNs backed by physical memory * @nid: The node ID the range resides on * @start_pfn: The start PFN of the available physical memory * @end_pfn: The end PFN of the available physical memory * * These ranges are stored in an early_node_map[] and later used by * free_area_init_nodes() to calculate zone sizes and holes. If the * range spans a memory hole, it is up to the architecture to ensure * the memory is not freed by the bootmem allocator. If possible * the range being registered will be merged with existing ranges. */ void __init add_active_range(unsigned int nid, unsigned long start_pfn, unsigned long end_pfn) { int i; mminit_dprintk(MMINIT_TRACE, "memory_register", "Entering add_active_range(%d, %#lx, %#lx) " "%d entries of %d used\n", nid, start_pfn, end_pfn, nr_nodemap_entries, MAX_ACTIVE_REGIONS); mminit_validate_memmodel_limits(&start_pfn, &end_pfn); /* Merge with existing active regions if possible */ for (i = 0; i < nr_nodemap_entries; i++) { if (early_node_map[i].nid != nid) continue; /* Skip if an existing region covers this new one */ if (start_pfn >= early_node_map[i].start_pfn && end_pfn <= early_node_map[i].end_pfn) return; /* Merge forward if suitable */ if (start_pfn <= early_node_map[i].end_pfn && end_pfn > early_node_map[i].end_pfn) { early_node_map[i].end_pfn = end_pfn; return; } /* Merge backward if suitable */ if (start_pfn < early_node_map[i].end_pfn && end_pfn >= early_node_map[i].start_pfn) { early_node_map[i].start_pfn = start_pfn; return; } } /* Check that early_node_map is large enough */ if (i >= MAX_ACTIVE_REGIONS) { printk(KERN_CRIT "More than %d memory regions, truncating\n", MAX_ACTIVE_REGIONS); return; } early_node_map[i].nid = nid; early_node_map[i].start_pfn = start_pfn; early_node_map[i].end_pfn = end_pfn; nr_nodemap_entries = i + 1; } /** * remove_active_range - Shrink an existing registered range of PFNs * @nid: The node id the range is on that should be shrunk * @start_pfn: The new PFN of the range * @end_pfn: The new PFN of the range * * i386 with NUMA use alloc_remap() to store a node_mem_map on a local node. * The map is kept near the end physical page range that has already been * registered. This function allows an arch to shrink an existing registered * range. */ void __init remove_active_range(unsigned int nid, unsigned long start_pfn, unsigned long end_pfn) { int i, j; int removed = 0; printk(KERN_DEBUG "remove_active_range (%d, %lu, %lu)\n", nid, start_pfn, end_pfn); /* Find the old active region end and shrink */ for_each_active_range_index_in_nid(i, nid) { if (early_node_map[i].start_pfn >= start_pfn && early_node_map[i].end_pfn <= end_pfn) { /* clear it */ early_node_map[i].start_pfn = 0; early_node_map[i].end_pfn = 0; removed = 1; continue; } if (early_node_map[i].start_pfn < start_pfn && early_node_map[i].end_pfn > start_pfn) { unsigned long temp_end_pfn = early_node_map[i].end_pfn; early_node_map[i].end_pfn = start_pfn; if (temp_end_pfn > end_pfn) add_active_range(nid, end_pfn, temp_end_pfn); continue; } if (early_node_map[i].start_pfn >= start_pfn && early_node_map[i].end_pfn > end_pfn && early_node_map[i].start_pfn < end_pfn) { early_node_map[i].start_pfn = end_pfn; continue; } } if (!removed) return; /* remove the blank ones */ for (i = nr_nodemap_entries - 1; i > 0; i--) { if (early_node_map[i].nid != nid) continue; if (early_node_map[i].end_pfn) continue; /* we found it, get rid of it */ for (j = i; j < nr_nodemap_entries - 1; j++) memcpy(&early_node_map[j], &early_node_map[j+1], sizeof(early_node_map[j])); j = nr_nodemap_entries - 1; memset(&early_node_map[j], 0, sizeof(early_node_map[j])); nr_nodemap_entries--; } } /** * remove_all_active_ranges - Remove all currently registered regions * * During discovery, it may be found that a table like SRAT is invalid * and an alternative discovery method must be used. This function removes * all currently registered regions. */ void __init remove_all_active_ranges(void) { memset(early_node_map, 0, sizeof(early_node_map)); nr_nodemap_entries = 0; } /* Compare two active node_active_regions */ static int __init cmp_node_active_region(const void *a, const void *b) { struct node_active_region *arange = (struct node_active_region *)a; struct node_active_region *brange = (struct node_active_region *)b; /* Done this way to avoid overflows */ if (arange->start_pfn > brange->start_pfn) return 1; if (arange->start_pfn < brange->start_pfn) return -1; return 0; } /* sort the node_map by start_pfn */ static void __init sort_node_map(void) { sort(early_node_map, (size_t)nr_nodemap_entries, sizeof(struct node_active_region), cmp_node_active_region, NULL); } /* Find the lowest pfn for a node */ static unsigned long __init find_min_pfn_for_node(int nid) { int i; unsigned long min_pfn = ULONG_MAX; /* Assuming a sorted map, the first range found has the starting pfn */ for_each_active_range_index_in_nid(i, nid) min_pfn = min(min_pfn, early_node_map[i].start_pfn); if (min_pfn == ULONG_MAX) { printk(KERN_WARNING "Could not find start_pfn for node %d\n", nid); return 0; } return min_pfn; } /** * find_min_pfn_with_active_regions - Find the minimum PFN registered * * It returns the minimum PFN based on information provided via * add_active_range(). */ unsigned long __init find_min_pfn_with_active_regions(void) { return find_min_pfn_for_node(MAX_NUMNODES); } /* * early_calculate_totalpages() * Sum pages in active regions for movable zone. * Populate N_HIGH_MEMORY for calculating usable_nodes. */ static unsigned long __init early_calculate_totalpages(void) { int i; unsigned long totalpages = 0; for (i = 0; i < nr_nodemap_entries; i++) { unsigned long pages = early_node_map[i].end_pfn - early_node_map[i].start_pfn; totalpages += pages; if (pages) node_set_state(early_node_map[i].nid, N_HIGH_MEMORY); } return totalpages; } /* * Find the PFN the Movable zone begins in each node. Kernel memory * is spread evenly between nodes as long as the nodes have enough * memory. When they don't, some nodes will have more kernelcore than * others */ static void __init find_zone_movable_pfns_for_nodes(unsigned long *movable_pfn) { int i, nid; unsigned long usable_startpfn; unsigned long kernelcore_node, kernelcore_remaining; /* save the state before borrow the nodemask */ nodemask_t saved_node_state = node_states[N_HIGH_MEMORY]; unsigned long totalpages = early_calculate_totalpages(); int usable_nodes = nodes_weight(node_states[N_HIGH_MEMORY]); /* * If movablecore was specified, calculate what size of * kernelcore that corresponds so that memory usable for * any allocation type is evenly spread. If both kernelcore * and movablecore are specified, then the value of kernelcore * will be used for required_kernelcore if it's greater than * what movablecore would have allowed. */ if (required_movablecore) { unsigned long corepages; /* * Round-up so that ZONE_MOVABLE is at least as large as what * was requested by the user */ required_movablecore = roundup(required_movablecore, MAX_ORDER_NR_PAGES); corepages = totalpages - required_movablecore; required_kernelcore = max(required_kernelcore, corepages); } /* If kernelcore was not specified, there is no ZONE_MOVABLE */ if (!required_kernelcore) goto out; /* usable_startpfn is the lowest possible pfn ZONE_MOVABLE can be at */ find_usable_zone_for_movable(); usable_startpfn = arch_zone_lowest_possible_pfn[movable_zone]; restart: /* Spread kernelcore memory as evenly as possible throughout nodes */ kernelcore_node = required_kernelcore / usable_nodes; for_each_node_state(nid, N_HIGH_MEMORY) { /* * Recalculate kernelcore_node if the division per node * now exceeds what is necessary to satisfy the requested * amount of memory for the kernel */ if (required_kernelcore < kernelcore_node) kernelcore_node = required_kernelcore / usable_nodes; /* * As the map is walked, we track how much memory is usable * by the kernel using kernelcore_remaining. When it is * 0, the rest of the node is usable by ZONE_MOVABLE */ kernelcore_remaining = kernelcore_node; /* Go through each range of PFNs within this node */ for_each_active_range_index_in_nid(i, nid) { unsigned long start_pfn, end_pfn; unsigned long size_pages; start_pfn = max(early_node_map[i].start_pfn, zone_movable_pfn[nid]); end_pfn = early_node_map[i].end_pfn; if (start_pfn >= end_pfn) continue; /* Account for what is only usable for kernelcore */ if (start_pfn < usable_startpfn) { unsigned long kernel_pages; kernel_pages = min(end_pfn, usable_startpfn) - start_pfn; kernelcore_remaining -= min(kernel_pages, kernelcore_remaining); required_kernelcore -= min(kernel_pages, required_kernelcore); /* Continue if range is now fully accounted */ if (end_pfn <= usable_startpfn) { /* * Push zone_movable_pfn to the end so * that if we have to rebalance * kernelcore across nodes, we will * not double account here */ zone_movable_pfn[nid] = end_pfn; continue; } start_pfn = usable_startpfn; } /* * The usable PFN range for ZONE_MOVABLE is from * start_pfn->end_pfn. Calculate size_pages as the * number of pages used as kernelcore */ size_pages = end_pfn - start_pfn; if (size_pages > kernelcore_remaining) size_pages = kernelcore_remaining; zone_movable_pfn[nid] = start_pfn + size_pages; /* * Some kernelcore has been met, update counts and * break if the kernelcore for this node has been * satisified */ required_kernelcore -= min(required_kernelcore, size_pages); kernelcore_remaining -= size_pages; if (!kernelcore_remaining) break; } } /* * If there is still required_kernelcore, we do another pass with one * less node in the count. This will push zone_movable_pfn[nid] further * along on the nodes that still have memory until kernelcore is * satisified */ usable_nodes--; if (usable_nodes && required_kernelcore > usable_nodes) goto restart; /* Align start of ZONE_MOVABLE on all nids to MAX_ORDER_NR_PAGES */ for (nid = 0; nid < MAX_NUMNODES; nid++) zone_movable_pfn[nid] = roundup(zone_movable_pfn[nid], MAX_ORDER_NR_PAGES); out: /* restore the node_state */ node_states[N_HIGH_MEMORY] = saved_node_state; } /* Any regular memory on that node ? */ static void check_for_regular_memory(pg_data_t *pgdat) { #ifdef CONFIG_HIGHMEM enum zone_type zone_type; for (zone_type = 0; zone_type <= ZONE_NORMAL; zone_type++) { struct zone *zone = &pgdat->node_zones[zone_type]; if (zone->present_pages) node_set_state(zone_to_nid(zone), N_NORMAL_MEMORY); } #endif } /** * free_area_init_nodes - Initialise all pg_data_t and zone data * @max_zone_pfn: an array of max PFNs for each zone * * This will call free_area_init_node() for each active node in the system. * Using the page ranges provided by add_active_range(), the size of each * zone in each node and their holes is calculated. If the maximum PFN * between two adjacent zones match, it is assumed that the zone is empty. * For example, if arch_max_dma_pfn == arch_max_dma32_pfn, it is assumed * that arch_max_dma32_pfn has no pages. It is also assumed that a zone * starts where the previous one ended. For example, ZONE_DMA32 starts * at arch_max_dma_pfn. */ void __init free_area_init_nodes(unsigned long *max_zone_pfn) { unsigned long nid; int i; /* Sort early_node_map as initialisation assumes it is sorted */ sort_node_map(); /* Record where the zone boundaries are */ memset(arch_zone_lowest_possible_pfn, 0, sizeof(arch_zone_lowest_possible_pfn)); memset(arch_zone_highest_possible_pfn, 0, sizeof(arch_zone_highest_possible_pfn)); arch_zone_lowest_possible_pfn[0] = find_min_pfn_with_active_regions(); arch_zone_highest_possible_pfn[0] = max_zone_pfn[0]; for (i = 1; i < MAX_NR_ZONES; i++) { if (i == ZONE_MOVABLE) continue; arch_zone_lowest_possible_pfn[i] = arch_zone_highest_possible_pfn[i-1]; arch_zone_highest_possible_pfn[i] = max(max_zone_pfn[i], arch_zone_lowest_possible_pfn[i]); } arch_zone_lowest_possible_pfn[ZONE_MOVABLE] = 0; arch_zone_highest_possible_pfn[ZONE_MOVABLE] = 0; /* Find the PFNs that ZONE_MOVABLE begins at in each node */ memset(zone_movable_pfn, 0, sizeof(zone_movable_pfn)); find_zone_movable_pfns_for_nodes(zone_movable_pfn); /* Print out the zone ranges */ printk("Zone PFN ranges:\n"); for (i = 0; i < MAX_NR_ZONES; i++) { if (i == ZONE_MOVABLE) continue; printk(" %-8s %0#10lx -> %0#10lx\n", zone_names[i], arch_zone_lowest_possible_pfn[i], arch_zone_highest_possible_pfn[i]); } /* Print out the PFNs ZONE_MOVABLE begins at in each node */ printk("Movable zone start PFN for each node\n"); for (i = 0; i < MAX_NUMNODES; i++) { if (zone_movable_pfn[i]) printk(" Node %d: %lu\n", i, zone_movable_pfn[i]); } /* Print out the early_node_map[] */ printk("early_node_map[%d] active PFN ranges\n", nr_nodemap_entries); for (i = 0; i < nr_nodemap_entries; i++) printk(" %3d: %0#10lx -> %0#10lx\n", early_node_map[i].nid, early_node_map[i].start_pfn, early_node_map[i].end_pfn); /* Initialise every node */ mminit_verify_pageflags_layout(); setup_nr_node_ids(); for_each_online_node(nid) { pg_data_t *pgdat = NODE_DATA(nid); free_area_init_node(nid, NULL, find_min_pfn_for_node(nid), NULL); /* Any memory on that node */ if (pgdat->node_present_pages) node_set_state(nid, N_HIGH_MEMORY); check_for_regular_memory(pgdat); } } static int __init cmdline_parse_core(char *p, unsigned long *core) { unsigned long long coremem; if (!p) return -EINVAL; coremem = memparse(p, &p); *core = coremem >> PAGE_SHIFT; /* Paranoid check that UL is enough for the coremem value */ WARN_ON((coremem >> PAGE_SHIFT) > ULONG_MAX); return 0; } /* * kernelcore=size sets the amount of memory for use for allocations that * cannot be reclaimed or migrated. */ static int __init cmdline_parse_kernelcore(char *p) { return cmdline_parse_core(p, &required_kernelcore); } /* * movablecore=size sets the amount of memory for use for allocations that * can be reclaimed or migrated. */ static int __init cmdline_parse_movablecore(char *p) { return cmdline_parse_core(p, &required_movablecore); } early_param("kernelcore", cmdline_parse_kernelcore); early_param("movablecore", cmdline_parse_movablecore); #endif /* CONFIG_ARCH_POPULATES_NODE_MAP */ /** * set_dma_reserve - set the specified number of pages reserved in the first zone * @new_dma_reserve: The number of pages to mark reserved * * The per-cpu batchsize and zone watermarks are determined by present_pages. * In the DMA zone, a significant percentage may be consumed by kernel image * and other unfreeable allocations which can skew the watermarks badly. This * function may optionally be used to account for unfreeable pages in the * first zone (e.g., ZONE_DMA). The effect will be lower watermarks and * smaller per-cpu batchsize. */ void __init set_dma_reserve(unsigned long new_dma_reserve) { dma_reserve = new_dma_reserve; } #ifndef CONFIG_NEED_MULTIPLE_NODES struct pglist_data __refdata contig_page_data = { .bdata = &bootmem_node_data[0] }; EXPORT_SYMBOL(contig_page_data); #endif void __init free_area_init(unsigned long *zones_size) { free_area_init_node(0, zones_size, __pa(PAGE_OFFSET) >> PAGE_SHIFT, NULL); } static int page_alloc_cpu_notify(struct notifier_block *self, unsigned long action, void *hcpu) { int cpu = (unsigned long)hcpu; if (action == CPU_DEAD || action == CPU_DEAD_FROZEN) { drain_pages(cpu); /* * Spill the event counters of the dead processor * into the current processors event counters. * This artificially elevates the count of the current * processor. */ vm_events_fold_cpu(cpu); /* * Zero the differential counters of the dead processor * so that the vm statistics are consistent. * * This is only okay since the processor is dead and cannot * race with what we are doing. */ refresh_cpu_vm_stats(cpu); } return NOTIFY_OK; } void __init page_alloc_init(void) { hotcpu_notifier(page_alloc_cpu_notify, 0); } /* * calculate_totalreserve_pages - called when sysctl_lower_zone_reserve_ratio * or min_free_kbytes changes. */ static void calculate_totalreserve_pages(void) { struct pglist_data *pgdat; unsigned long reserve_pages = 0; enum zone_type i, j; for_each_online_pgdat(pgdat) { for (i = 0; i < MAX_NR_ZONES; i++) { struct zone *zone = pgdat->node_zones + i; unsigned long max = 0; /* Find valid and maximum lowmem_reserve in the zone */ for (j = i; j < MAX_NR_ZONES; j++) { if (zone->lowmem_reserve[j] > max) max = zone->lowmem_reserve[j]; } /* we treat the high watermark as reserved pages. */ max += high_wmark_pages(zone); if (max > zone->present_pages) max = zone->present_pages; reserve_pages += max; } } totalreserve_pages = reserve_pages; } /* * setup_per_zone_lowmem_reserve - called whenever * sysctl_lower_zone_reserve_ratio changes. Ensures that each zone * has a correct pages reserved value, so an adequate number of * pages are left in the zone after a successful __alloc_pages(). */ static void setup_per_zone_lowmem_reserve(void) { struct pglist_data *pgdat; enum zone_type j, idx; for_each_online_pgdat(pgdat) { for (j = 0; j < MAX_NR_ZONES; j++) { struct zone *zone = pgdat->node_zones + j; unsigned long present_pages = zone->present_pages; zone->lowmem_reserve[j] = 0; idx = j; while (idx) { struct zone *lower_zone; idx--; if (sysctl_lowmem_reserve_ratio[idx] < 1) sysctl_lowmem_reserve_ratio[idx] = 1; lower_zone = pgdat->node_zones + idx; lower_zone->lowmem_reserve[j] = present_pages / sysctl_lowmem_reserve_ratio[idx]; present_pages += lower_zone->present_pages; } } } /* update totalreserve_pages */ calculate_totalreserve_pages(); } /** * setup_per_zone_wmarks - called when min_free_kbytes changes * or when memory is hot-{added|removed} * * Ensures that the watermark[min,low,high] values for each zone are set * correctly with respect to min_free_kbytes. */ void setup_per_zone_wmarks(void) { unsigned long pages_min = min_free_kbytes >> (PAGE_SHIFT - 10); unsigned long lowmem_pages = 0; struct zone *zone; unsigned long flags; /* Calculate total number of !ZONE_HIGHMEM pages */ for_each_zone(zone) { if (!is_highmem(zone)) lowmem_pages += zone->present_pages; } for_each_zone(zone) { u64 tmp; spin_lock_irqsave(&zone->lock, flags); tmp = (u64)pages_min * zone->present_pages; do_div(tmp, lowmem_pages); if (is_highmem(zone)) { /* * __GFP_HIGH and PF_MEMALLOC allocations usually don't * need highmem pages, so cap pages_min to a small * value here. * * The WMARK_HIGH-WMARK_LOW and (WMARK_LOW-WMARK_MIN) * deltas controls asynch page reclaim, and so should * not be capped for highmem. */ int min_pages; min_pages = zone->present_pages / 1024; if (min_pages < SWAP_CLUSTER_MAX) min_pages = SWAP_CLUSTER_MAX; if (min_pages > 128) min_pages = 128; zone->watermark[WMARK_MIN] = min_pages; } else { /* * If it's a lowmem zone, reserve a number of pages * proportionate to the zone's size. */ zone->watermark[WMARK_MIN] = tmp; } zone->watermark[WMARK_LOW] = min_wmark_pages(zone) + (tmp >> 2); zone->watermark[WMARK_HIGH] = min_wmark_pages(zone) + (tmp >> 1); setup_zone_migrate_reserve(zone); spin_unlock_irqrestore(&zone->lock, flags); } /* update totalreserve_pages */ calculate_totalreserve_pages(); } /* * The inactive anon list should be small enough that the VM never has to * do too much work, but large enough that each inactive page has a chance * to be referenced again before it is swapped out. * * The inactive_anon ratio is the target ratio of ACTIVE_ANON to * INACTIVE_ANON pages on this zone's LRU, maintained by the * pageout code. A zone->inactive_ratio of 3 means 3:1 or 25% of * the anonymous pages are kept on the inactive list. * * total target max * memory ratio inactive anon * ------------------------------------- * 10MB 1 5MB * 100MB 1 50MB * 1GB 3 250MB * 10GB 10 0.9GB * 100GB 31 3GB * 1TB 101 10GB * 10TB 320 32GB */ void calculate_zone_inactive_ratio(struct zone *zone) { unsigned int gb, ratio; /* Zone size in gigabytes */ gb = zone->present_pages >> (30 - PAGE_SHIFT); if (gb) ratio = int_sqrt(10 * gb); else ratio = 1; zone->inactive_ratio = ratio; } static void __init setup_per_zone_inactive_ratio(void) { struct zone *zone; for_each_zone(zone) calculate_zone_inactive_ratio(zone); } /* * Initialise min_free_kbytes. * * For small machines we want it small (128k min). For large machines * we want it large (64MB max). But it is not linear, because network * bandwidth does not increase linearly with machine size. We use * * min_free_kbytes = 4 * sqrt(lowmem_kbytes), for better accuracy: * min_free_kbytes = sqrt(lowmem_kbytes * 16) * * which yields * * 16MB: 512k * 32MB: 724k * 64MB: 1024k * 128MB: 1448k * 256MB: 2048k * 512MB: 2896k * 1024MB: 4096k * 2048MB: 5792k * 4096MB: 8192k * 8192MB: 11584k * 16384MB: 16384k */ static int __init init_per_zone_wmark_min(void) { unsigned long lowmem_kbytes; lowmem_kbytes = nr_free_buffer_pages() * (PAGE_SIZE >> 10); min_free_kbytes = int_sqrt(lowmem_kbytes * 16); if (min_free_kbytes < 128) min_free_kbytes = 128; if (min_free_kbytes > 65536) min_free_kbytes = 65536; setup_per_zone_wmarks(); setup_per_zone_lowmem_reserve(); setup_per_zone_inactive_ratio(); return 0; } module_init(init_per_zone_wmark_min) /* * min_free_kbytes_sysctl_handler - just a wrapper around proc_dointvec() so * that we can call two helper functions whenever min_free_kbytes * changes. */ int min_free_kbytes_sysctl_handler(ctl_table *table, int write, void __user *buffer, size_t *length, loff_t *ppos) { proc_dointvec(table, write, buffer, length, ppos); if (write) setup_per_zone_wmarks(); return 0; } #ifdef CONFIG_NUMA int sysctl_min_unmapped_ratio_sysctl_handler(ctl_table *table, int write, void __user *buffer, size_t *length, loff_t *ppos) { struct zone *zone; int rc; rc = proc_dointvec_minmax(table, write, buffer, length, ppos); if (rc) return rc; for_each_zone(zone) zone->min_unmapped_pages = (zone->present_pages * sysctl_min_unmapped_ratio) / 100; return 0; } int sysctl_min_slab_ratio_sysctl_handler(ctl_table *table, int write, void __user *buffer, size_t *length, loff_t *ppos) { struct zone *zone; int rc; rc = proc_dointvec_minmax(table, write, buffer, length, ppos); if (rc) return rc; for_each_zone(zone) zone->min_slab_pages = (zone->present_pages * sysctl_min_slab_ratio) / 100; return 0; } #endif /* * lowmem_reserve_ratio_sysctl_handler - just a wrapper around * proc_dointvec() so that we can call setup_per_zone_lowmem_reserve() * whenever sysctl_lowmem_reserve_ratio changes. * * The reserve ratio obviously has absolutely no relation with the * minimum watermarks. The lowmem reserve ratio can only make sense * if in function of the boot time zone sizes. */ int lowmem_reserve_ratio_sysctl_handler(ctl_table *table, int write, void __user *buffer, size_t *length, loff_t *ppos) { proc_dointvec_minmax(table, write, buffer, length, ppos); setup_per_zone_lowmem_reserve(); return 0; } /* * percpu_pagelist_fraction - changes the pcp->high for each zone on each * cpu. It is the fraction of total pages in each zone that a hot per cpu pagelist * can have before it gets flushed back to buddy allocator. */ int percpu_pagelist_fraction_sysctl_handler(ctl_table *table, int write, void __user *buffer, size_t *length, loff_t *ppos) { struct zone *zone; unsigned int cpu; int ret; ret = proc_dointvec_minmax(table, write, buffer, length, ppos); if (!write || (ret == -EINVAL)) return ret; for_each_populated_zone(zone) { for_each_online_cpu(cpu) { unsigned long high; high = zone->present_pages / percpu_pagelist_fraction; setup_pagelist_highmark(zone_pcp(zone, cpu), high); } } return 0; } int hashdist = HASHDIST_DEFAULT; #ifdef CONFIG_NUMA static int __init set_hashdist(char *str) { if (!str) return 0; hashdist = simple_strtoul(str, &str, 0); return 1; } __setup("hashdist=", set_hashdist); #endif /* * allocate a large system hash table from bootmem * - it is assumed that the hash table must contain an exact power-of-2 * quantity of entries * - limit is the number of hash buckets, not the total allocation size */ void *__init alloc_large_system_hash(const char *tablename, unsigned long bucketsize, unsigned long numentries, int scale, int flags, unsigned int *_hash_shift, unsigned int *_hash_mask, unsigned long limit) { unsigned long long max = limit; unsigned long log2qty, size; void *table = NULL; /* allow the kernel cmdline to have a say */ if (!numentries) { /* round applicable memory size up to nearest megabyte */ numentries = nr_kernel_pages; numentries += (1UL << (20 - PAGE_SHIFT)) - 1; numentries >>= 20 - PAGE_SHIFT; numentries <<= 20 - PAGE_SHIFT; /* limit to 1 bucket per 2^scale bytes of low memory */ if (scale > PAGE_SHIFT) numentries >>= (scale - PAGE_SHIFT); else numentries <<= (PAGE_SHIFT - scale); /* Make sure we've got at least a 0-order allocation.. */ if (unlikely(flags & HASH_SMALL)) { /* Makes no sense without HASH_EARLY */ WARN_ON(!(flags & HASH_EARLY)); if (!(numentries >> *_hash_shift)) { numentries = 1UL << *_hash_shift; BUG_ON(!numentries); } } else if (unlikely((numentries * bucketsize) < PAGE_SIZE)) numentries = PAGE_SIZE / bucketsize; } numentries = roundup_pow_of_two(numentries); /* limit allocation size to 1/16 total memory by default */ if (max == 0) { max = ((unsigned long long)nr_all_pages << PAGE_SHIFT) >> 4; do_div(max, bucketsize); } if (numentries > max) numentries = max; log2qty = ilog2(numentries); do { size = bucketsize << log2qty; if (flags & HASH_EARLY) table = alloc_bootmem_nopanic(size); else if (hashdist) table = __vmalloc(size, GFP_ATOMIC, PAGE_KERNEL); else { /* * If bucketsize is not a power-of-two, we may free * some pages at the end of hash table which * alloc_pages_exact() automatically does */ if (get_order(size) < MAX_ORDER) { table = alloc_pages_exact(size, GFP_ATOMIC); kmemleak_alloc(table, size, 1, GFP_ATOMIC); } } } while (!table && size > PAGE_SIZE && --log2qty); if (!table) panic("Failed to allocate %s hash table\n", tablename); printk(KERN_INFO "%s hash table entries: %d (order: %d, %lu bytes)\n", tablename, (1U << log2qty), ilog2(size) - PAGE_SHIFT, size); if (_hash_shift) *_hash_shift = log2qty; if (_hash_mask) *_hash_mask = (1 << log2qty) - 1; return table; } /* Return a pointer to the bitmap storing bits affecting a block of pages */ static inline unsigned long *get_pageblock_bitmap(struct zone *zone, unsigned long pfn) { #ifdef CONFIG_SPARSEMEM return __pfn_to_section(pfn)->pageblock_flags; #else return zone->pageblock_flags; #endif /* CONFIG_SPARSEMEM */ } static inline int pfn_to_bitidx(struct zone *zone, unsigned long pfn) { #ifdef CONFIG_SPARSEMEM pfn &= (PAGES_PER_SECTION-1); return (pfn >> pageblock_order) * NR_PAGEBLOCK_BITS; #else pfn = pfn - zone->zone_start_pfn; return (pfn >> pageblock_order) * NR_PAGEBLOCK_BITS; #endif /* CONFIG_SPARSEMEM */ } /** * get_pageblock_flags_group - Return the requested group of flags for the pageblock_nr_pages block of pages * @page: The page within the block of interest * @start_bitidx: The first bit of interest to retrieve * @end_bitidx: The last bit of interest * returns pageblock_bits flags */ unsigned long get_pageblock_flags_group(struct page *page, int start_bitidx, int end_bitidx) { struct zone *zone; unsigned long *bitmap; unsigned long pfn, bitidx; unsigned long flags = 0; unsigned long value = 1; zone = page_zone(page); pfn = page_to_pfn(page); bitmap = get_pageblock_bitmap(zone, pfn); bitidx = pfn_to_bitidx(zone, pfn); for (; start_bitidx <= end_bitidx; start_bitidx++, value <<= 1) if (test_bit(bitidx + start_bitidx, bitmap)) flags |= value; return flags; } /** * set_pageblock_flags_group - Set the requested group of flags for a pageblock_nr_pages block of pages * @page: The page within the block of interest * @start_bitidx: The first bit of interest * @end_bitidx: The last bit of interest * @flags: The flags to set */ void set_pageblock_flags_group(struct page *page, unsigned long flags, int start_bitidx, int end_bitidx) { struct zone *zone; unsigned long *bitmap; unsigned long pfn, bitidx; unsigned long value = 1; zone = page_zone(page); pfn = page_to_pfn(page); bitmap = get_pageblock_bitmap(zone, pfn); bitidx = pfn_to_bitidx(zone, pfn); VM_BUG_ON(pfn < zone->zone_start_pfn); VM_BUG_ON(pfn >= zone->zone_start_pfn + zone->spanned_pages); for (; start_bitidx <= end_bitidx; start_bitidx++, value <<= 1) if (flags & value) __set_bit(bitidx + start_bitidx, bitmap); else __clear_bit(bitidx + start_bitidx, bitmap); } /* * This is designed as sub function...plz see page_isolation.c also. * set/clear page block's type to be ISOLATE. * page allocater never alloc memory from ISOLATE block. */ int set_migratetype_isolate(struct page *page) { struct zone *zone; unsigned long flags; int ret = -EBUSY; int zone_idx; zone = page_zone(page); zone_idx = zone_idx(zone); spin_lock_irqsave(&zone->lock, flags); /* * In future, more migrate types will be able to be isolation target. */ if (get_pageblock_migratetype(page) != MIGRATE_MOVABLE && zone_idx != ZONE_MOVABLE) goto out; set_pageblock_migratetype(page, MIGRATE_ISOLATE); move_freepages_block(zone, page, MIGRATE_ISOLATE); ret = 0; out: spin_unlock_irqrestore(&zone->lock, flags); if (!ret) drain_all_pages(); return ret; } void unset_migratetype_isolate(struct page *page) { struct zone *zone; unsigned long flags; zone = page_zone(page); spin_lock_irqsave(&zone->lock, flags); if (get_pageblock_migratetype(page) != MIGRATE_ISOLATE) goto out; set_pageblock_migratetype(page, MIGRATE_MOVABLE); move_freepages_block(zone, page, MIGRATE_MOVABLE); out: spin_unlock_irqrestore(&zone->lock, flags); } #ifdef CONFIG_MEMORY_HOTREMOVE /* * All pages in the range must be isolated before calling this. */ void __offline_isolated_pages(unsigned long start_pfn, unsigned long end_pfn) { struct page *page; struct zone *zone; int order, i; unsigned long pfn; unsigned long flags; /* find the first valid pfn */ for (pfn = start_pfn; pfn < end_pfn; pfn++) if (pfn_valid(pfn)) break; if (pfn == end_pfn) return; zone = page_zone(pfn_to_page(pfn)); spin_lock_irqsave(&zone->lock, flags); pfn = start_pfn; while (pfn < end_pfn) { if (!pfn_valid(pfn)) { pfn++; continue; } page = pfn_to_page(pfn); BUG_ON(page_count(page)); BUG_ON(!PageBuddy(page)); order = page_order(page); #ifdef CONFIG_DEBUG_VM printk(KERN_INFO "remove from free list %lx %d %lx\n", pfn, 1 << order, end_pfn); #endif list_del(&page->lru); rmv_page_order(page); zone->free_area[order].nr_free--; __mod_zone_page_state(zone, NR_FREE_PAGES, - (1UL << order)); for (i = 0; i < (1 << order); i++) SetPageReserved((page+i)); pfn += (1 << order); } spin_unlock_irqrestore(&zone->lock, flags); } #endif CҹS@P&Py&8,zlc,X(,Q4D[6`mo <[[][[Vj1M~T}TqVyz}ϣ%qhFm7F1h?q6F >oD]z93s~;2h|"TQX]3BIB$O1ܷ_:P $r]LW*u iio"Q  {>qDL ]9+ܽ).ϳS,N9΄Jk39ϲT}~.n~ܱ huYf9t5wVЈ5un8pu-4G¡fxGal WgDS/ac`_1 t`ю9K/نnr0h5uKC_c]>h̰gn_)VHyڊPc"U"?@=^g4zXBꗦXk>-/h_ 6<Y>#rhKOBVFSvC/r@Y==iѻ8nPPriGlI/XϪJw5|9yڄwhnmuuKiC K\ӻsڧ.ktyY"E*.adph3nHV P %+)%a׹^zu噔{XA+X:x.4իQ|G#^6r˕ .u{ z2Mڊe)e _J[E͓VsڦInŊmryHlWY-AϿֶV퇶қ ~ &5~OZWc|F>/Oi:v!gaOLȓa+C9hS3xNKc{)+[Y4^7d"IF|6Z>1\E|(p8ZqD:Vxݽ迕pq8ʦ/(]g^'k?ߕXY:;fdHEOo@ӄԚ2?C'j#D긶WC8qDiTRca,}1tZ#kO)0sH@xQ(М`, j" _݁K9+6^$;'8i2M8l1a;Vq^k03,o dK0W@8}ZtSTu+ɋV~RVҥ0h&ѭ D/r@G~b29[^HA]k<>*wCa兼c/GWb7wXjt:sah$R|Bnpq<V62۔r*^ƥqGR£o/ENuM1%!貉q6["&Q@yAO)яm$T *5f#9fMcքpqi6B@=i~p V'x ?-ϚU٣-F-׸@ˑ7h/:ݖ ;i /rIhaQGH\#|y$p\d]x]cJ_ Os_:ԽV{Hw㍽ M>vo{gҖ+!KBo%Mq jO`,=Ջ(J^{kry\Yy%>fȫqqg7gxhCQ}Qrg FW bmEDؾ='Y̩ Aפ(P7n嫁\Ggy)kGח&,S #R\L3TN},̵ְfԅ[k| =[Ukw~-M4w<+i"臅|z"o`]tÓ)tըɽi:y_$`_h2>~to=QtOůF̱V\d)& *kyݚ/bu7|o $_4=|gĮd5݅={P˧нRvAڜ\^UP>Vhi^fTh}׃8 {'G?y˞yj iZZ 8ER}Y \Nd:b=t!=T_Ҹ))_drJuV!Ff҄ ލv?6A<3k4}jQׇwdSQ{xZ^|eE6u?#{6 DR}1/l!D "??{{Q>M˾~AZ_))ͨYnk?PSx|cVN5)QH6*P7qg0cDO n+1rL&x+d P@^*۟54L(k(+:쓳p=**e3S7NL?g3)"x6zcpfujn;jנJPM%5(TU UڪAmUOAmՠ6~8DF $k_e^ J9u{CK F-??q$cwxڤ=13+sn/ _͝(d H[p<;9@,VL3Cq4HՐ?pM9U.Fxr X]~E]1\I~l:gFlG͓ "Wg"2 X;#˖A _[Oщg7gQ^{ r~J> d^eڧޏ9ONg`* qf~Du;kFp c5˯:ȵ8O8c i,Q\tqseu{7t.i&͸KZkl]!%M|̈ą~Z^ ,׉UCWuq sJeA:^mB_.z:2_p9Cͥr 2rc0ެ?l5gWA$py?bH[Gl'n=IqYKG-XF^ 6~_V<Oӿ9uͶ~hY|輚ZĪ +{d.РF2{Π{yXZ/*;u?ۤ8ep߽ &s @~ }'ًA7!vVV_X6TcR h+B@Py/U]DA}<NP}T@\* SP W6CE0&5d8dMOJEdHl:>р93g}EM:`#eu (pc#B@C{)]Y3пa=h^RJj4'SU?~ A3!3S%T=?J[X+Mb}JViVn2w~(HJPs2-ùȣ)S-b/hw7i@rɔ#R=fFeKD>m*iIm}!_f!HJI^mcoZ{'1>¾a4'MiLlC~ig7=ㇳ^Khx;p@+(s&:: jO:FORCq?g窩^ZwB_+^޷lO`kY^*}%gB6ɃZp(m:GU+!,AgoېoՊ26#N {#-q.iCP!?)݈ 1 p"< UQ䓞jlUDE?9Lv7*.=\--q.GrQWrGIYu%ޮksCa[ѳ #2_W j wau]ڦ$v)mܧSx&wֺujkOҥzR6XץmJʥCMYp=L>ǀG aG^D&Myf*KoN/0{<au9_3a?cꀭdȥo4ao}:<,aMn%b+2oao?,k& jXR4,omD&Cćm?,k& TâIzM"PCQhE&R=:F=ؚWS}-DHd'm$uߑ ܠ3J2?b(^ F@ Cvn[6rJAyQD$J?n^N3hM[e.0Gv`@;lSY른2-,48 T y R274o:ZHkrnE*Xj:3=mh̃%Gg& c0Gwx"}'&̚f[Ox֟?I- ΋2~{OX( ʪpfz jR!Y-\׿^0[:Cs*xgK*>fTV MP[⿵Ԛtk)6tûJtG<){R)[ c12H C]W?TqbЅT3UVB+9–LAi~UqY3&,-:R$"-^y\ȝ5y %u"a[ јwځt=5Xft7b+~[G*a@ǭN8Aqxi\ph/Tx0yigžaiqWdct2㷮[=@k=~T"AjXms<1"1RUb4V=Yc=L \]1#45lLgjK%FɤoG>U+V{:_0wv3ʎS vOBm3@Kl[Y| !v~B]2 Qq5]ܭۥ&m 5)/8r?H2e5]H=ƣviԸjhᑊ74|NMnN 4Xz\7qZ=E$JPRj9$4D ZTM&fTC1RH8K$&zFU@ V2hx$KYthjK UaFW߫:|xʓ>:b{/5^z2<_H˷u,iOň<81{%u3r}w3c @7E~n?gk:}.^Zs˵G#Y{G=3/-nKE zM t לy~ ͱ}dlx(JN(\K0p1tlDOMD pWo8ɋ^bX|D_R5cرr9<1hd5ky'H74?n1r:SΟiEoa`c<2SvШҞNjUgMMagxs1(l9 CJ+ck%`2#r l";:ynl!ⶐ[00b@x>E!BO/%L;ʰ%GiÁ<Η9=${N6Hyn&&l/͙D{|P/0\h J|F `Ҥ1|mNɰ1kȺMY5NJ˄#HNH#y -Qvt&ֹDw0/4Ѕ\,L$Nl̜vPM yKxn6o rFGВe*EU~#u'̼LTEPVoIa,bTiR hy:705KC$7寀imgR_3#H3u.vhy| \gߩ C}j =8qj w+fYWϺF q [J_&4%5ezC\fԍo^Fϥu4ѷdߚ`E'O4˰4޽eF|#ϴv2 wg17z,AQ>70Ϳh66)0r0( x#Z;g咏8ܢ7,cH}>xQʼ0ؗᴘԘQҵ?s>Z:⭓rі'v .on{yԁjw&fDa @L2,T~Qdҁέ\)>I 7{F\t{<=pDe?hyhA.JũQx-8>"PIpoS SQ&*aG1\Ye99FZGFT$٧scpم o?'14@O$JL˖N"G1ksn3')&R7@Lύ hn7^[lJ4cWVyE@:9 hzb®e)߭mLV ;@*r8 >ǂ`xJH|j˒j*]ـw@6ȯѮq%[G-/wI״Y u#^P输nxwS\-hGǰڭbS}l]J9:y)>d yr $nGwh^l\bh^(⠃ 7'Tp׺B+h2#gl#֍5E>R;c26C lVȼF^2w}o)GCh盖kwϚ޵{ZȞUh.zaX||DD O#pC|6]'1>[뇍fk4q+;\ 1v7tJ,\kl [  a& |Y$PLz'q@-#g |~@PTLxʙD{-ʼnkiim 6Qўoĺ~(-T1wG¯Zz(;`*SZ-(Ue0tPlu|{5OXXXiu)t"=L}{v So~ІHeGM; HmoaY0j`c``z^s98>!^ ul cFȘÌ쯁rCHkOrV<1LEif4RZpis}'@V$}-ԯ%OZ3`j'vug]}JCCauskN]j<2YdMYrbz'T@ޛQEJ%_M7!?s$&6$5E(tT4@yPO!~Կ>)Nj;j!gD_|y+)7ZBmM ; X|Q ks"ODUaTkTk cܠ@%4?ָul2JjNc K荫d7xr_Jy;O9Bv{[*dNR1d0ѡ)1ZS6_n\{iրr`9id=TP5ͽ[鈡'8@[ZIglD~460JYޖE=j8fvثN8~.Uo߻PRۿh[!yw>gFb^=c y#G1 ʵk|tZ^6MxRݪB֭ 3= 9WD_[n]hמtHa3)duRnf^ڣ<"Po)4B4 )@A!6oTYcQjX :vuPo␅# 9rrg> f{o;߷[1Xά{%ۭok+Ⱦ\kbD11gh k3sl绵--w=>Trhzg]=>o8"2u}5ڃ~itC)OuVA@cĜT+xQ?7V{Q7s>y(muo1bqlqz[:I#8_c|;(ۉ]B{ccQ=~גVk80^;gI 7gϝMrl/1#om~\1iLVZTԄԾQ02gT9;{ݘ\tjѫ GI&\&4r:j tjN ޕ6>bkL#[Tu}Bngi9y_olb =q\4cAhŖ1哆"UN9ns6/zWn|$M!11O18Km_wۍ95ZfJ\2PKB(;n©Vc1#tl=ߜwb^ʞ1hVͽnɑgLX (;=;I9:%$hu ػמ5ou{kNMº3w~>H5~#g+l3mo/ŻZ ^y4wMt h'X_Y'#E6஖TVt!ְgY=w?\+?Tbp4㼛x|eo.cIh(\l8+ 8Fw(ᴟԄ^;_?3o5zjدm67?5zp{{͊&/ f C*zy'o[klO֓s:h5g=_;$:ux?l#3'-vaToԹG$,C*哘Zʮ|YPXPb^qE(dC(%K2^ko{"9ˋ:"z X^)4a=K[O [?k5=䑞0JH2_X.CT2Qk_ٺ-= R +sL?yi0q>^AeF3ǹg Sjx rMdZF rU {7ges#Bĭ}j{[ %aL7De7wq럈=knywl3tUZ]Vo;jkȱ<'sӽ п0ؑ.h"K$`6<y|}'L1&[H C add'ƠfƲ^Fݿ8}߉ j~k\c:sG x`IO([*ۻ_ .η U#e%F?ky >ձ;%vĩ_~rFJyC/ZzwSYs(3-޽+%BQ9@fEHxދKۏUޣC[?Ĺ|˞I`b@N)ˌ(i׊Xw<šɅcCj%mU+`uw+Ўp>7 (@vwߔ$H#dkiSPw=U O٬굔QْJ4\)(RPҗ-~AclDBP8mM?SOIypJ<]N-o1&H4Zit;ń {kucq%A #[rӑL8휿 ό>P/ ?<k»f{ Vt?{~{Z^6[):%n'n'} j&fHcMشOTc Yx'N j;c(j׶'.ss_VN,B'Ԥ2IBͷ8>r[DY%Cb yG ~6Id>p^"oXB{jqj>P I7fQciAv|-h]\4V4 R9nhκ;F+156~JoMFٵ5\-V a[s;mEU6w'޴8$s(jo|rgОn7C-[*zAdqvn9U7Bl <6z7vcɀfkgs C`j@Wݡ{Z2i'j5d(Mv&8NO2цZydλjw-iʺa"iWk XjoZ@νT#8V%`B]҃B*jOa.Q\=uҐg E45es #2Q]5?ƩC6J,KƻqĻ6l7oRa=Vhູ-v[V]۶̾ v[cDe uJaZj-݅XXP$;Iʹ8|; ,dӜ Y֮}i-Z9[LwG34gjϬݰ 4`h.F^*_US#r=#xlǶa7!|tZ.d.]g|̚{dB M7Tց& l~ys7OB6PkhAUT:tL é8]rNRw*at;”-53`?p ,nXf-$]25]zyiNNSř=rQZ)h^wWY5\!5O{ \GԱV{_Rj_1]sS/Iu5t;!_D5;pK ]a |/Mod>_[bEM}/k(sV70hz',mZFZS§'L-D$cGI}Gin>Ų Fo`;5伶M@$`7w%|8JJ4d5^* @^*Ҝ)dpE|uL/MWt]`*rk:t0<ٞPYTNiÔQ ӌqAћ#C'Id/65f`P*:`%xh q0z̡HD>::E [0T'K-n|*KjG¿]Rhg \C`Җw~/T>j m qߊ;? ax1)døS:{mV=,;ABX EX{߈dS yEKۃYZ= zeOuqSMmgiBJέ`? bW/״ue&b >Lgwb~:cjO 6ͱe)u jLn+'XpwVNxN_e)|3IZc),͢_0y ǧz2qe$: -` ,{p|&26t', wXןr|4**ZY?zЯ|>R] : h,8a`[0e`qʞQ1?Lln3u=2[*j7܃zP{o՝(0{ag1&.`]EUK-+8WXv4y@n[ sq㙝 +UZ\J)r$j˅{3r\6hzyK:J'7@NzSAqS__} p5 SxzǤz4RJD);JPv'ƐTr1R,JVXi 9k](|+B|P93Ji ybHrIC RKSl\@z5QΎcdyAM(:ݐ(8O] WIg%1k褀J_1 *Ւ@JGq`R ~ |0TzJu 6/ a%/w )wIP)繣kY/PO*z|j,F=05]9R$̒,NhO/}1x/zRvyeP)δt] ~6{_=38)=_4rLaDb#4~?Lٺ:&vjjMƧi&+*q6wÓ|`'Gֱ_){)?<9]|(W!g:4痢e?D}.&p^X(._PM!Schxl]`ΌYEQ c<.4.5EKQ=,h8xS=H`}c4^wN]/GE◯쵻IY1 ~D )N}kɈn Hq2ue8]Xû`̩}I͊K\x<]9w'h+?~2FggA<[:=8hC; _9˗ee2DlMpH,s;Z͆Q;(MY: 4ژߝLH6ř=[L푽,˗Ƽ`lp{`F,/YPPH! (\ȧe!U c*`|lo{ D)YĄA;ѥ`qd X}wbg:N%a:ք nAbkET9>8f` 헦yElԼXq,}9_ETZ6TмLCkdb_iLu)W\ʵ,$ k:5`Y!C=Y|Z{ uD[B݈Mlg=h˔g杠` =u 3}$` Y-)xwZVŕy4uf d5Co,fC}buI6O|ឃ@=ĉH"7,667%lnW h`5[%x\.vwY}Ӓ^B~Ss1WitiT`?P o}(2-tҏ^)]at09Ey\,h3vҏ XIjSr1 ga^IxN9RMpaq0U5wmm̥5\|ntT'X#,?74"ʾ@: %|A3)*-Z?MQ$gl噗J9,.t8zJi{o¢Eh+طZWNyBPe[VnUwvͳ(-j7Y@0,E^oVݕ]YtnZ^v+射~گ;t3lQb9P+mYuN7Ph 5! I3_GT1)~nl$3-!t򍌭 ~nq瞟jSԁ24)gST_.4BlLJLW~zֲZgK7j6+9O;g'm<<woGk!S_G?ji?‡ۉBoʼnEמb4\L{$T|Bܚ_Q}[}]⭹BW/Y ǯp/֥=InAWVCu:baKWygBT*wc͝\7z[Q^fhU⥈KjDT^b>_s?U@'vzSczx8vR;XW*c t4@|Zb31;vם@Qo珽UR%̮5uD2 h<`Ÿ}|E2H߇/%OMk'"~|< DNNJoSPQMOr=Ȟ#P8bxcNlN=fyީcX y/EU8RIJZ&`{9&kRrgbLE80ץ GUVȁM\_0>W "ٝvfT(,HOcxp:?hT@ey~vt2DDI"W02P݆]3T_![[ڮBg@h8_wA  v v֕}##r8,ُ6}T jyƸM-/QP!W>**Mnjń> vhxVbѪ~p:A!*^(щ}E0,9Fbct7mg:)ǜNb.Ξ9Q))l%J}'{JW/.0 7e e{䢷\?q5$]s~;yۻm?XKӊTJL՗aq24e^j$Gd<~zi3]dq@:8 n3?bl.\T@"(~/൷HGxwB<"/6R+u:_I-$?}J<6,E^A ) QbB[-~cLRc6-KD ׳>oGl):1˖SMPB@K4Het}oF. 84n4MuPSu5ES 5I4yGMkKUɱ9!`# E[Qs.z<<%2%sʄDXA> b0`Ȕ"2r|Ź8x 7s pT~HQ_#/Lg;! (&16kU);#n$ nUO׶wx//g%JGr3?E`/ cai]eIJ,ϹԞY<_وs AWq7Y㲇_lOk.nn+ou9!sc6[x3Ktař mqEWA.ɂhd9 Uyss^VnF=^ 祅U~K/m@ZfF/ l$XJ[͏xTwHocxNS`^'[ogzì|H{{%Np3!ʹuԨjy:{Ukyރ5Bw?ޒBks8x|1=H5ҳ99]*D_P}<#8|ksSr[Da֊wlX$,ad#6) ۨDOp&K9boM = >óߑuH8u퉃ϖE֜rq5y0?;^KOma%5k+if*EC_m9jw[\D)7Ǧ]AS{>?F[ggG<\aeCX>_HuB!<$bBT xRC*M-i_3sc>Ne0[mQQ)2KCIȻ(=^y'5AZw{*<^d" E~2LW?;Tҋ;di#,ϩD NIe5N%Nz 0JײM%kIJt)1#L 5`s<¿* ?YI%nկihG#(^Y^zi*}3ie((W؊@\;k'e(p;Dt¼Y%;mLr0R`cS25u G9R",J怶`^㚪 L8y5 #˓Xb + Mv;CO|l^='V{oӪl H><ܙΎ^! 摺,kFH.qbtKzN y?fa-E>,'Q74g0'QW^HjA*Jh$Ţ(AE_mGj,Zw=8}8h➯ ˈ\Օ0bB>S?C ""SP'YHc@ )VJU#|<Ďp\,aOf H3 EG=cy6L2T}/BI_tLhw2\M&We2iɾwFQ1q++6*ȰԲtAB3~f$G&FV˩*1m|b Bt*\m^ q_}B/ZdX޳-mYCӣs7I5X3t7ga3w#cRm1' RfG ̩ƒqD+TsG CDS:w m|V94Y8" Ȧ؎EGcVLxk=<1S)TPN+ g*Dyl1&?0`h9F6R ))VV5JAJYLLɢǁ1X bƪ4eRس'Udx{^Nv \y+д*NY֥ #^|T Ё7UT5xf҉[EhQgs o+8YM^IfJ2gTǽFH|/91X7P5!V('PD9pL ˊrH;e$ܺx:̕66ǻpxZ8( ;$L8ي1h$X>ĽŸn3!؈`bQo ˙dlmw`d%j]Ҝ$/!qI$(lo/YX^fJrzU^d{ce{^%ӳ RJ+R-.l(% H!}a:;Q@\)q5ڵ_j.ݏ'gh3T/_>z c|W6ޟ+[a}e6Yvu^VwbZ`'2^aPEuI ͩ3w󻍶3cX5z AɮA3g22.;ɝ-|9@tC)5Nώ? A 0 9ՅIO쑷=|Z ښ%P H/a`&g hP:D2\;=^g6U B%$DiTCi|Z&:iiӣVrFzRiyv$3~=og6)ATNݣ̢f;oBwD]f{))ΐYHq=!(E'a՜2v)&dfvPxG3p>sQ Dr)M{&YG`RE$wemYO''?jJ!DM^(܀lZ}j% L3E8*\:[Wqjφcd[}97L|ߓ?W[$^J2XbE/4*8C:k7uEz -72fۃ6zvyaJJfA^.D?'D/ª`Vzrhag.XWV-Ɨ(Z/,JfbhhMCzHHH-\ >w&6U2H*8l]l*1J0 xU4D@Nj\Զ/Fꚅ+aʆig ;RaNʫBEQ1]M'}xul[pb_K/O VvVݫvg #a 8lg/M@g6b>YB\~m^ IЉ/>h{x2nyn?|lDgRM4|u/+}<}eߡ6#gd/_L:2qi&ՔQ}nT EsRٌcVˇ *Wv݁9>YkIR'#OO?rcJ!#W7fp}ĉ'Ŀө{5e/GzřR8(<b@YK-ƿro#ϹO-!lJ1FzdGU4s " a,ܱa'cgqR?5|'nۦ$׃li~\`BWAG.aOqMne`Yxʜmu͎fm٩$T?Ǔ!3k=^=:Uk$u9s5_%ίZ:͓)) {_z$)m+k5NOz90=MeUvnPlTdYc>򭳋E<^=Vؙq<*u>d5N5|>&qۅnkvQF7F\ |0y.g\$_.rxL < ɗO [k5ONƥ칰[@կ&ehC"ITDHS(6:d(9ijVF$j 1D, V9Mz/ =4^}rϺ_Ykd?mG{w' `&Zh?8ي()6 =t;`bc0OQ[Ywߥw;N ZydzZOr݄?!ubˈ}?싀Ġ,iKcw(,>7o!ᣐ6@AA`MmM5cu*Aw@{~-|?.kռ FChJd R /MݙKJ=c+>JRʉ>~s; o)2O7k6wQ5?;w)1Ͻ؊ESWVy.@m y|O'[Q4S]~k,}xY_ oۨ>{xֺ XmsV;&1Z/]<(#_Ȭe(Bߛ-aTy-tRD# @/1b.!4g9@Ċ]ks`Z,rP dfQ QTS#<<=6?;wy%忻;@Oĥ|TRdh+q/g+77Ϣ6Ot&nnT(կꍆ Q;<wi3NV48jKhJ5VkҰ+M`im}sʺNR?p P6[fMIb0¹=!ݒ4LjZ!MƉs5r櫯 VP-۔z gg`îW]C?6H>OHjx9r'ұWx+OIh_&8`PӏM4ȹ;?=qFY[äѿW#MT56\u XT+Շ`WQQGz"Qd+W@-eI[6"td1T:tXQ# X£ON0+^͡ݹF)Y:EqK3G8,h=RM7:%i̊! ;_4A$H2B0xd3\H) O- 3 <۞2!_zZW`RaO?0yZH4 tT#Ax=sw4њ#!dK?;dux\aK~)IA&XNB'U!D Nj'A(h/14P6E)OZQ$?*U}* B= :9&uD-P?InnI6{uLB&z// Q/m9- R(rjx*N'raxr_:gj9@Y_cqFt"]@ZTQx!p#֘G W}k; "i=1e)3=~B?c/S_PricTA*}^a?Ro <4"])z1 q|YoͭU*vQ6bEJҋ"~9>wΤ,=eG0:\DXİ?tL Kܥ){-U(ccA(?"ٛ"+zls2ZNnaXy5 6ۛρwuCN;Դ…0NF>T6a!{ h%w"'oVa +,mD`rɌN!&"ʴő NPH,&6·e?NFʘoMS9P)`)A/QΡΟ1HAEȻ9L5O!~}i=ҫVɆiHWvQ?P#Ԡ_'kqprN# σJP&S 4B`&v¡ŝ#A 8,/K0JRz >ZӾ-ql f5n=YI&R3Ǹ RݢLaX ~J'>!4M6\Ǽ0 L׵@MpAF>G=̨)P=nf0?9؏BS/BB8^Ağ¼V4Jcs @s H .]T0$9tTC /~f#PX=DCDW=E'q;cF 6`eaf8;hւ|%P"n(]R]g7P_qBX-CTD/\1 d1;3CASwHۀ?>),{BAI[ Id-n$ 8x|AdQgw[*N(D&8OA/A#Պ4R([n~/>Tt{&dK8KFޤ:(+ns=B[ħ$yrcWBâ+jpw\~*Ψ^FU9X-TIY^ɚ*)+YS%ey%1:lz̟_NH1ŝ.}IHMrዄH໋H956RMօ*3<ŵ8-3Prڄ_}Y P2 Tσ+C#;*͊V]ݪ(mFuZ ^(QX(d y\"~zLώ V4gC_n].?dÁާMnm|ܩU]O8ltS"Gd9>.#{nCEB~V~o:{H̖}ػPʪ"(NKAaD0 A`/#z3~"3ywKq-ix({2={=/윰CJ($lw#|^Ttx(LeuyC0t0\!_BPk5 \*Em"G18$q/}7=1x卟wÆ+()Pk$n^4$I ^* ',NU8=8aC]G& ZY~}?-3COb‹ޛ6q#++e6EIjdyBűIr6ɖ1&dco-@7z"r2n,E0 bYODdg:|D0JTZxCr|Y5oSS~ qnN'hy#ZTp)Ph|xR;pb|@']tHqZ`+@ݑ|<99cYeQxN ُY.:زz0q' kКAY]s:6h:c@BR PB4o (b0@ cʺ#h`3]==B%<j}ZMl%'~sQ=p԰Ek\e|Хov.l% Q 5D6^0p}s3 ;RHÖ[[~n8C9=+o” kdb(GE4~d1-;u<\`l_ɴ{~2FGh٠'MÄz)fL&I41CB|HdtKJRva{88dT,i-/Lo#mF#‹D[{=[>gE ̝M9VOQQ FH#~ ,ODyĞO`oy$9{!Ѐ~W'cP_c^*_Ҫ 1e~U^o[9|=Ѳ% Qkj5q?tS |@DQzOJB[b$jQނ[ ً Y٨z>vp&8o)E]'6y2dSt)8`6vrSno˚A3oݵpD#ž5J2;hc^jŔИN65 sI071r&:MQ_c3ԊR98wCب{F*lvuYe䩗Uȟ)Ci͵¼2qJN⁠%ޗߨ~QxXcƫWB)N{&qNkt bc_6tVspp8D TTULIo8ܧj "i/Ud4(gϰ*߃kU4FY{gSNw. ߉W.ֱ|hyކY8p'?<16{5j:CU(L3t5I1Vp0@2+ J$]:A; {^e8y!PL0#1 g :[b_t‹UPOׯ/"_a_ބ_F&&/bi X9h7ԯ式8$ @ B57: #98ج04n,kvl?~jJᨃ'hѤ_T_fZ8"*+g+-ENҘWX $*XHliE JNBUVb]H  ])I.^I T7`k6ȝii$)}>ح 'AMhc$$fzýHp22%*@Э?ݱc{ۘ**?8mNoaރLU'Q׈s7@[~-x5ghd;?;o7kqJn7>B1ϳe?]C\ h7cumug&ʱY?k4fg;tL'S`* j]֪ߒo젮K!;υeC^;`/2rر&>,.k"/2 ,$0V2BңYvwB. PW,n?Y`pCy <_\/j=hz3hI`j8)hV jB?57Y}tgz]"XOF ȒT,;؉FO*?D|]*EKO<|!G⫵IY3ߜOגh7)BEaֹq4h2thRټ8; . vD] opSRSm(|^!\*pzigY 7؀Е:,4+mdl8mZUlDsyNC+lJ>ckymނb eNd>$8O~lijykB:6G" y$Ʋ$wxj0>p,-/̬M=1xׇ}>C'uB ʒzMj͋6,49^vS"/%長> f (r{劵E­A P6[EYJ% eAD7* G/Et\T*'owE QayR6 jҥIL ecKX*^BҺ8  *e* lp_rC t\o ӟ667V <S#R>ZAaZ?/i1"4OxyW>{t[^I5ʢ)0HN|ryRX,ͭte lKΦ4Z(✚Ȉz{ (~BT sWrz<9R{W;1g6gk>1 G߅:C?ѧvᘴ>|[ , &'>j(h^UQ9seK4jAur0sMI7kumWxﮓ[Y!ǎ+I7 Q$$%>9 i^?rA07Yq+ܛAZ$dޮHolV&6%L;P^^QifR>Dy) !Jx`t9#آF5=zAQߨ`cUwqg'?zظU+6˧rq t`:cmlˊLT}h4}y@.Q')9'̵ɤ;7f5֌ƉyxQ?F?aٺhyew fiZƋ5%No,x۔`K:?nnpwKu^dD~ =Pآ]a+v2޹LK\DwO(*}}::|]#Hg %a oC\'Ls\IM;Ch/=P0G ?D?v;Qֳ_|ha+{H)(u}0w6AW&ӱk4Nhკԁ S* ņ`rMq7RL4u} 9mY("O׽]M)TGBT5MlTZa`jb~*/1w).Ny~2~ 5B |>1\S@$n'UlUd6-Rh v1x!_cP }X EB3* r--6:6^Tu 쉾R5i(Y\Kɽh_@fE S,1?Z9<&2:d0%]>Ʒ#MZQ(Ohy+wz\ 2 ,7Y(q >eZT;u$sO$0?c7Z/ZT$4YIF%]5k^?*#dB{,G5ȯTmojRM{h_CSWֵH|'P%tZKz?7E yu/\])-~SktܮF.o !P]&yr^'ModTm6fkgB(9t/u'  z4~p#a".b")"Č6 ˾N鞆 eCP8LXVQƱ.>9 *n0+ HD0,D|$>Dx@s~R5VR`,o5VSol o'&|抏h!m0A,]1Co"[{ "=8%18=K㿛[{ Ḃ(iEAKK\*~& Xq11_/d`%i-,wɟs 7pjy7Z%NjD% _Q՝Gǚk"#2mHQBhE _ZԴѻF(84Y׫|I`3_P<%LP, M,+ |a#0ut): PRy:0EF_ M>Y5O/4jt@V2U, /v+[p5i֔7bhwQG#boFOA=pk.#'7c@DBB4 Xf`@qk;n)u`Ay\*x:BԯGx 'Bu,P@r(C#Re8a` ktQq(M)cKkfQ반Xf9Bklf(3J;*{lx-V"c#@Ȍ*JMIM,]F|!eSL.F? j]*2`Ľ'[Kڗ>z~?eۭՐYQ(mE _.;?fEmXq@.@n ܕblD^L GGRkDc9k0' u^va (Tmxy.z:6{2Hbu3t^LRV!)<ߑ/E2G#h|Z,pѕ[++oHh$d"߃k|cyr7t3^0]2'?'Uw'V{:OC)mUgZ8>~>f(%tA\=;`:lVFLֶ> *ʠ QBpQĿʱIV:%ꊨOWAtE/Yۅoi?rʱ`Ô.m9o|"|`B2F O4gzICn`[d'D#m$m*"& +֦HP>ژ}nxl^žv.M0Rrnú,N˸"ӷ:4` IQ[D WatBX'b~/ ,g(0 / k6¬z ˵H5/qO/^~W'3<8P |iVS<_#b;7BXM1DbgF}J}GݚxuÁݷ]!׿.1K~=L\P6I";pOF{JnX"1Qd$''w4fU~w=2y+U廦 \6@[Kgag ߑT= 8B^[˯ю0m'֣Aio1@ w*XhXt riA+3upL|9V6.r<XDzͣZzX5wi=VZm4kT߫TXzVic&lM9z%TMJpcj)io(n_!FqQsaB{ۋʜ>}L&L34dBDŁb*.%ˋ)^c z-v"+8LI;0QES[PŹ0EupBeH3Qب5RC.,t?u77ͳil^i  %{l-p  g2Pb#K%٩UMQ3RZGhD5$GC#t׮j(벉c'1i0^)RjBsZWxNS`)ZA=MaIi0ERςn 9|f<`=Ђ_q=??ɓ=7 4ɉ:]v FX(x/2m!(aל4 ł\C}oҤݮ_=ɍѴ}"i ]h7fB!5ss^O@HpǗXoZml [˰eY;4S1:GWP^Sܔޣ5d])819jo "!fƭʫoL(X] UFru_ Xn`ʣf ~ѯ >Uee.®a "druϊQRz4L]2""G7tbVnId_ʳT i D^u=t,{,"ݷc(:Tꭤ":Yar2N8#DTa"ߜ8cG8i|':٧@)HkgQ)>|"Z{3ofǿ[DiDLJ3s5B1D|-H#4`BD"_2pf}7Э5wNϜKB>՗^W}Vc?䷷;Oq!Q%p`⤮:y"v^A>Tbt C2F'A0Q8jP~~idӋYSqr0prğ30x^_;Hah;NqbwO뫿%YkUrq'~1B;| ] z;Rh)^*+a#IU%`DlztT=szr:H섛yF?^.Eyx~6wJP^K2YoC%G\q !|' _X:faEYGT!P{IohEvmjn٨9䐕 ~e+A \i Z'w5vǸi+d]~枒 AUh5G֨XY5ZjTd=+0ۊ˽SwQ Z@~RWکU.DP3Mm:kK6wbʬu(/~nPh.Q%x↤&.1Cl{lbiN)W?@X@P@ېc&GM5$UA"uhW$|V[U{r퉾[=97H*zhy՝$wULM1T2tU JԽ4"!nDyĹ?+/^#&?aJɑwQJd,:3f|QM4,߱f\:( |+6NpBLHQs:ޘ=|NOKP mV /w3k>d]16m ZΨG6';E·2|Oz fOxXK#N+# ڦ ] QB^Y[F?w@TQ^xYQ&F\] $4`u‚yVa5Kp}5a&Qvȷt8$Z,XZQ5!eHv-e[ 8D.T|$c]h늀]A&p7_4zS03a u9zrYnR*ױd;Z2 KHw$ev$1v\&'LLuw pMuzC=0.F7p(:"=Pl5.Pk!@a#Q̂H@Eܬ$nn,,:̦{Ii#_FBS퉖̮DYoj|r2/?#.?+T/:$7-qi9ؽl7]vQmw88مCs4"Î P)1\ǶpyXii-) Ijw eA>wiP 2_o$w6ݹrw/?F5`*11HnL9!]/] ƝAИrm-_bA͹YHb459)5QAKx#$Lc"3#biL$/C(Z 8ҷ zԧhL`ŬSKZc3et$"knOԳ +*}퉍6YZL7}KB A_Mj͊>coT.,;$%HbFs["s{P"խm+P0(Σ@\הygy<dE6٤"Q\Iȋ=C #-%b *l*LR*_$Pz] +Ỳ|qy&)2{|nr8? xyoxWz=)_~zg_鿖3rOˬxOll ~CV?ɤ/QS  K?+Vad_ :R̦oh:?uc -+h.N"~ ͍Pū{="vS@V%nčqmws= tcg" )+|m\O9B B2`,-#+\xt{O4[՚x4ԬIcȓ3UG#SČ8` .ϨlԬO^V2#Ύ8wũyT9O`JGt0?6>WTi5oGJQ١>S(0X} 'W d=#—} ȳdrhDY{_rew~.. =no5Fόm&>x-׵h^q\o@|g&[u}?1707IAOL0AnG~$\WX3`P5+f`(ƴ]hZ\^&N,_;f2xp1d޻8oK e豚v -b *+qc#(rIz/f+>.%]kgOQ \]$@Puf? Aqx,#@OȱuU?wy|}E]W"w`JGyV kĽ ku!.)"i({62EftH"NA<(f=VY;L7sd9Q){;*ɵh(HLM!F&N0qg侭A^'†}3"M FMEĚ_>.Js=.łXO("@J E"Ao[X޺ {@{f)abNO+&~d g3n%DfPuI`qBJKISA/ J8Pp؍3`Qͤ'xv t\5Vąż1-M0~ObYVsO8gvG{ XDK jC:)J_6^wBcG͌=؆?/_U?0YA^^EmAb}?+{-}g*<#yU )mx~n?SٻQIݳbwij Yul:V=!5EY^5H zeu y.zhd)PZ*^_C=%'\BD;4`s'np531zLv!FzUs2Y.|0BEbHzeA!KfY0fFqDER؁E;\u gA:(W K[@iʧ oAk|SȄZdaxqB ΊoR;gɡ{g哖~4l:J6qlN̙Qn<SFK/GmYł$خE8ys=+;Oilϊtg)?~?|g? mc|f]Җ1at†]J qzZ#;%:MnaCf0/c"v&)"YMx ^"B |v,RG,X CJ7^UawInI=hʓ/ڪb-[na5 vOn-+JuҚ#›)3l"DjQv+F4zpJ ˫y*8)hο:K)oXU!9uu;葎Ojo-5FV~ ]^>0QF=.K!hsGhDI҉9mA~%ag)/ KD0J0t81 f5_(.jg |A끶Mq*!fpWo@\,E=F7/-UKJ,IETW?D^Ħ~jhGK2Y&+W|:E˥y^ T0].j۟KVcV_\ql=HqgW$bY`\)ڷP"h C=#ӊ_̓>2-2$1G_o<)|F7^ .=z&8Amo>s(7 F}cyFw by/ARW$̽ʃpQ3 0K/,,8r V4;]QNA1r#HQJ4ClVf$R$ S=o[oEVb?6?&ҿ*ہN$ k WZ?O{yV+jDOV!ө4[lݳ^dP TN~jX93 VOm?Gb٣f03LF02| 儽?]^Z0d{_x yKA~1/ETNU(z?ڼy5?,q [}}Z҇{_αs51c#cw3X/fn.nEcY ?7Ɨ= V6mΟX m+TٳvUHNW?N~4XB̜4]J,(|c4GT y1U,!IqRft8ML4*](mکhv,+,LCTCv/ra즴p)u$8Crg mD4ݏ잞prFGad7fY[3lJq`ϲxAw|ZxV8&՜f:!!^=lztl~IS2 m.zCeI/n6kh4+̝W!P(b K==~f0-/ /׆G^y>0Ϥ܂s7kT͋Xy [mƴR d t@>oњϓ;<c2}T;F~I;]߀/090;y:bQ' Z&x%pWAN_|dq!|BeaԝТ}|"<_*ĴX]R>?_R2ݙ48`i<&}}D e< RQ#X$ Hbr:. fKХh}98P^A?< aG!ۉ(On 9UOJT\Ch+5ߎt\vNoPdֱ&8iQ@P̂TcJߋ_cCd {ѳ\.GGz^@ dmJ#a˭qciK@j#Nx2 i#4ϪwXxh$#[ZpD/~Mj}Ii"B?TO%[t0 'VRWx&@O{=ga_yzgעb)/=<^[年t+#B c ]+ d0w20C9piC{NƷraaHUv|РDӱ!՘ӷ.7~-am(fȇZPu/ إP">|ѵ&tPצV8Cds>b2von `Fs J?w)e?SY xMɔ@Ftt(< 4 ۡti\:' ϶ |8!1)l4ZpdwRA| Ukux6ÏP2C凵PPJ>?Ö׃cM#߸/ З\(OXlz3_ "OKQ*?0X&S٣׍>[_Bw?~hO mn6υGWYy 旱I{]&yX>ysP _Z/?~=Ɓ{s6zglf-Q`3u!#ԕ֑5/P{ ~PTIߎaCfd?l;WAPRAPwy󇿤G懫}r /|_69m_!kd¾Oj]b g~t+(?ӏEV fRB=#vVJy]&Y; 1}s\J~cǫaO[Zwyg,w< 6L?q^oܬ%V9`+)G Us| z`륛on_nX%P: EynX }By%gO|3LG'7-S-X0h{uXqk0GJ-`&%*Ę%Z\/-b,c'x:Sܤ?+I=F,?*daއQ\4 K_(p/ұ% ։IyYaz6; ?ibˑjҲhܛnVGcZi88$y81y'i $i?=?ˡB0`Q[rkvRA\r?n\ #OQ^5km={kl>V9]/K*jMu aihFPY/rxmi4 ltZ<65˃N` 1 5DӝGf@er].4|e,pf>hH ['0C- 'gZivZ_0m@F 64m3m\M& ^GE?O>Y5#0kh?# j8C$\N@į]mmG5l*DcǎDuLHC2sddc|%"/*(W |~FF&NNρIO &y% 2-?EaTx y1Xi_]ԩbKe9hbOͮ)xySnײ'l៸xu˞3KddV;p4j^~w'wpRı{N̒/lT.i1kڊ칗\whPz-w²t7O3ATZZvB&SIi}%xm_%vd0Y8`b!e.R㔆1q3džBj2SXI0gqIy-Xڛ_3& )U{,<2ZT#k.^:\li]@]ZDžJ6BIm܏q̔$̣zҭ^ i7y>a?ycɆ0Р0ًG4%fKpbqBh=d-?cF,(122bn ym"(\gFY&v0!.b\rQp3S~02}3;wOdJ/G3@s/5y DWS| {({ n=S4!UN+o5Zh?Fߚ8˸rQۧcôLJ x T*eq"54J8=/1%s-,O2؁(+cmD%yB> n Fzi:?}!3V'!${˗k~Q^Û\˃[# ahٜWgoȂMyxJ7h#;N~@V{DY>P(PymuA\1Q~藒 vͤZo'jhNo3vC}$&XD{ Gt)#kF9_v'ȹ)2rANQ+)BA8 RwrA-2ʉO@h+:w/_J?wjvMO?;]|dEr .hf< Q)ʠWKv}!SxqJic {k44Bk"rHj);fN3K3 ;!ӎg0I,s%IQ+gT,ȼߗ#<ߩXxK97QV6ܔ] pBoQAu]8? H2S/VSNe$v*o[<3;% t/?ߘN[$zb]'w!&ؽw͉3㪇1#*rD}73r܏3(!Z74/*nh| ӴSߙMmL+./~WZ]~/k( h+1;>Th0-=Q'4)k[\#\79AS]D]6rƍ<"R z`I!µh+!Ey8BgeV~W 27Ĭc=A1{= ?.-G9%3) |Q50}]9adpJVO"9Lz` Ћeewן,:K<|::[GWuߕdv(7=PF=EGوr +oN5%<~@g7G/cDPct\7~iHGMMD]o!67e8WnB zt'kw9|AɆjdcOlrːDUF`P.tZL?$e `jS7 0wG=ghLj^Ed7P9ɊLFEG}_9e7b ?g]%hJ;ŹT%kߨۇe'25Ӹy5*HK]z;@WvBMT/ e 7S_ۯr]H-7IvyT3:ס8*TxhW `dq9`燌z3sQWJ]LKCB]Y96O뭊Y?i'k9v-44Dsi~ Q97UiЫnYCY߆.jK{) q>"c&0y@+[TO*KޝWh#~! VaAZPXj8)Yώ3ktaܿ9i[_O+zQ5X_U%p%`DXD n4$ 7xfH#7Llhd _mP=!Bߐ577|==UjZ!-#R/΍cK1A# "AMS##y6*px~ކ|b"oOȐ߻%WؤʽR)4"N;:t&gY>M—~~b7Eb^ & $j$IFOKޢjy eX?6_n+l`"{e)ƫ2B_6rZ5j %vy+Z 黟`mAAAXpܰ`tɘZ &IM]fΖmKP Fqb(\yq\8G dZ4M& :EM̂) mJ ^"?#2u;QZ\rݔzCk#OG@hP } 4ڔU1+톏C>AI[I\/p|Lm3^=wSeO=Z/ZژC!a{[W|ƷyLk0 skizNBwrDGҷ篼zUs3B{b7:lPZ}8}?X_6<g),ׅhwB@ .wC[JxR{'zXLJIqa)9$ ="%ձ P'KC)C&+S5KĔ _(beW}r[l=XrDs}} 0z<F!PyO.du~ߥiv%e0<6MO};37Y~y}c/lEO|O&o%y}_,E(<|kĵy'f}g>0ey jǨ{!zyJtWto=Oz=#@x.ժ5@uh7ۊ ZwmI}{}TG=ڱ<-^+YTbul2e׭#VxcpoOsK|)f 1F.sGorKuQ&;ͺʳcѶ'x=; ,jR"UP1#KڥkgeӮBea%2@T}ZVi{LQd8=FJijoBN9[fTG.J[Mh՟v_s=Tj>ohf3/e6$+x $+zɊ$+yJ$mK5v5]lֆ)NWT8iR֦h‹& Ls(U&ٳ$Usl<(7V5sFS} |# (H邐v,WL`R@:[&Mehm$ZQjtj&Wb_!+.+ѹcFGgeNa5::tљ5@mm\5<;=f;S WH?awrIw"H(yR@!\6t3@&q[נ؄yDCA͌f$r6%oUYdIGPC_wM#JZ1obOxH)v-0҅f삜e5ъRwp4H-/oGj4sAɄ솨9qRa Q<ՅҒ2*421LX$fh4Zyddx`l ɤm5ILeJ/`l[g@ |s>YR␅倘3:#!Ж>=N\j9գ8 A`b\yjv':@kx'6m63ԲJv,d4wMO$t wU:&`"-vo %So.Kc(c~Qj^ FPXqY`%}Z Fe&_Ko,$O6l@IӾy Cd!|V?G=\p_G?[ŝ'xO^4w< L:KԨ -,%F:! j;gaoh2j Rx ZGf <ĥS+'=9BJ;IyĈF֢'R9.Nvь|M zaD':Ef(ڣ-;va{1.58 Z*`am]Pȟ(CrZrl4kڙ2eЋ˥TY`x x|* #30 zMF1>#q\]G?]٪JQ>oFsB ߢE/6 Z&_CG"> %f$+B,G~byb @ũ*6Nj-60,W*'+OŽ7$s4dN((54n7oԚ3[!@ނi|>Zh(Cj p~[M˼A9c<;]^`_(#BaY'AG Xy a7ttc \y _6 (!S3v}-`Jp]%E2ېeK\ ?+1T }rɣ|~od--)J|1mk;=.V~(E,9GBddqEU& niD\^5Ogq>Cu(%C j^(u0 edSzacYl\K^"Jp &0Eȥ8UEG@~@g"Hj&7h+DsGF©SE 5[K &rTZmtS0%zT E1-̆ ]ޓ ,ܦ5 1U_~v|h- y@{J`|Gaf"~ QT ^%@: OrgYR*=?RwWފoֈ%bS}5E\F(CWC$:Տ.гӪ&SqQC2]+mfuҍEp'vv^݄W0Ky2H9=QR;/YF⬘jP/ɫJ "V>AQR%U-Kqӫ++ 3> S 6⇣Nѩ5Bntk=..)F ˝ {@w58FDI*Խ6%N-n9v,#mt6w>Rc{䒿RK{B)P]5VX.dN$\|X }};HXFvZl;4² I"Z\j#Xx?%XCS| NΆ7ʫy^?f x9 ʀ`*#:v y1ztD=>{9V!L ECނ} :unM>=\hNfcfזV[VUN* yݙ}* ^8/Za/3XlB=ŸDq*n|e3o4IWeȬ6 $˞@UQՉ2BB4d+62BL oA rk57VDnˍhXFB!j%sWl]sGMgŎTrR=;DZ6ĻjHF ~oln'&ڡR;DE:5kiڵF<'&u!+29͌\T׬Y aMa_./Y%QʊKY״TlZ>lvI6XR6A1-3–} uϼh2,"Q!2*L*奿N2) U+t_d?L2FVo7M } z1oڋP(<`gN T2WΞp.LGr CGWl;uh;Z@'¬O52HF5Ekb '+Z}tS:mb@6+P~ b ua?;$:AOC$6< GcҜQjj4JN=%G7Ҩ!{ыv휿懥.7TVvԬ' &9B2PQ%c;X񎤍Kf M=7gdll#pf`S>yGx̳1-sꗤ BRr=]!"Kb !*?ayNXjeF+qz0vʮ^}~Hҝ3z[t<l1͟ZxmrdzAOu׼8:oVjy-1G|@P5#l#?JbuxN^M>a#*k6i!;l,VLr> ~FD!Dh=DɁF#W ̮%(#޽M&'ʂy@!n++<(4ơ2sOs ]q`r^=qI_dEoWn\Tܮ5f_J*Wf^M5PWI9L0՝@W5Тծq2’cGQ<Bo,ȎwNhl-~x.hTDt˵2XsR SI`Pp)L0=Vd ~ <Π~kFwG5&5)eLH$yU+<ÛʢB1DAe8d8WWxE8Θ[q:FbRcQB<sr 7s!>ߝÕ9NNXPM]C)Fz˿\{6sc5\ǬAewz#V?֡~T%bj 1uGyi2l0jC'4>1k"ɧt\f*n+ݠ^ǽÒ9`@;yԭR;ElKRτ1#lq(q:K]lb:;MSsIxF P0@J<9M/D_<>GA=&v:غ jlc|SP [h2n ~}UOi)a2Ol"A_-[}+$~p*7f+Tbz#O}T$ASʣqK?{ׁ{ŭ|>f1M]Q'Ƚa]:hҕb挃cqd ֋:A #;+MVU#l;hXf8,G*+1j_hk^4(Y9m2iciTEI/A>A`@Ç72Hp^|dr.i:nN̻;A^ 0Hѡw){ BZDNtckJ 1uv.&e130!3xI ɞ!^dybd3h\{+9@ʹkQpt\+W&[R)rMȦ&?^+;@rIFbOc8%XYIyH qtwZRٺzܳ?z&I~z:xǷ$+n֘5 obr3;c= :3!{,I|c*+&*6UeQ<<1w=2#l ykdR ^zg0}đdDe󝵃qnh,i`9C$yqjZڏތx(c3\,5K_Ѡdwp;+:eS*y}p2v@XUzg) a`YvtQvEM v;RS FroAi0V9;Rp[p]֮U" aƣ(@:= x55C+{\E79|E;g"y7,Sq~^UU׶G|^X*bny[(5̱کa*Y8ҧ84'S/qh'l59$,.n [?+8 .ͽ~һW<35ܱōLTpޒϢt̵TTbb`2} k\'y8$\̜ LL_Q OX졋>ErN+#=IlY;'5=E&GKM$KӜ;}0åC݆$׉2LKy6~?O!YSjO* bWL K^> }2~PAu>toNk6RΕ2F -`"dz-dzy}q1YYΕJ.1,*-37 6vc+EXx}ׅ]Ԟȩ(l4YsKc0 ':zJ ׸Tcr' QUJu$##Eĝ 8(Dbp^a@CTOW(a%ÅpٟгŊe1ffMS@-+cQ+bdxL}Z| M>{Y*=[x$=ؼ?dDYZŨ*%(D0n!R5oi{ev(<=Y":Wb Fw/XZ.4o$3dkYR;?1wlYHYR^T'ŷ [?&Fs*ՔٴN#[m3M'?P2D!>5-K(#vj'b- b-CDd*xV{g*dVJOXȼ ϢCQi!N:iZ ` |[rHü?r"f4u nW: {>~o,ͳ9}c^-+d2[j78A1)ƌϣʕѲBkD Ar<#pMʎ]}-^*e2]"d$F}uybI(oFt7pʂṼ$=o~a-:Yu[:g2luRp,dHi]>Zdmg Q@wE`g2Jm8Cޤ4J rq::*R ~װckޮH yu#Ʋõ~ cgM(\oӝ.H}Lмd-8yPv aJ-S6,w,k8xv>;DkZ ֺW.\aڏFĦVgn# qc[g B E 8`JsM#91JIc⌢U8IЈ`ᱸdOyȃ Zf#DȑE2Q5 zZ/յ5#>b.}չȿ{ܐ TieU>=fm|j ([8? ?6V”\ZA$q(ɬc"qMpfN|1!Z\~/b3BH&Y$$Bg ODag F `"ɕ{j%Qyvis#E0rj+wRc7 Pܥ*>GJb jHQZɆfʰbΑ$mJ_(h(^$bA=Ay^iySI Pcc#'h3QiTGM jt ckW":"ȝB@(VHǠs=KWf,< {t0qN6'X_0)< hGo s'z}|I7vOj ֚{ fd&xx@FdK:::Φ sfTٳyNY91kW@/U|*9bw-M–i~<b#7V*%:PKeVV|dMVf3 F7PdBƞjOK -![V2eD;y_*82Y7Pepɮ EZ|{+Fψ/}[ `Fh:IQ TELd֖Z}TjÏX}pYGc ;l0.5<}Q՜PTߛ1gG *1A݈qTb)}^^aBՓR#ٵv=vflGt\N+|XrȘ{ᎿS:Wr?>vfg= iH uC¸u9Zs+( 'rPrρ6^r$f6^4f~KPMW [Y\:y+UۗT:%ͣ\R퀔‹IѢb+Ǣ Eg(`\AE`37ɮolHq6.)MX]+4`uqU|4zS,۠&U 5ܪg''8/n||؞'$3'r2t3i"(D,0{/{0"[5 }ޱ0#]/t wZ2*/Ն/0"Ke6$+6^渚|IsŻPO܉eH q$3kOWܱYPtyi&yXX*fE*畗3F%(ȳ2Fz1j<8VNk <rvE`OqP{5 K }q |)5n-U2ZCPڨUc_|l~o92OJ^&)tӠ^4+9V46ߪ[+q 3,3`m3/"T iCE hr4(VlD]lZ*rbt<|=h8,#v\Q.J V+[n%Ft@]0RcZ]$SolK[[#ꍼqmh+4}X.sj`N~*ā_2]z U!{Քb%5FɁUYA bה*K _-)؋^ȍclHh|;{W6V%z{l&vhK5^&vVjΙ<7t yk𵲺>[$V&Q'ѕ5:6uߐK^NHBu5C"=lNuWJ0%_INMPU1ԁndzAO\H$@0v܅9܈ݨ2p!qWӏ~}Snזbou-4h7A -5E`јQ 4JBM d?gK}f)x|BaPA}ZX l:F\xL/dF4ϩEt%An?HZQy| jEQ12uhm3+|5"JV '㦸TV= L;xֵCHv(<Ɋa?uRqTx$My9leDc }94#\J(4I#\ؼ/iO t> >v4M\ Ɣo\|'U&e|@jeaFh&2 nsEҀqJvr$G{fO7 yc;gNi9kgٝm&tMٹ֊y7'wS/VV ~c{{ơgu,`üxÕ<4 hf]-%+<P[ U6P^NerψB>_mdXἄKXl#=k $|~ZnF~󼅣춦DS\u{^s=u|B]S&<"K]@njbleluB>;+(2$l 4|J*vJԲ|鞚3sSutNK 6c?`?t&ŏP&hd[ٴ(}lDL4gPD£O=wL*5v9kO]ymjfHiϧ;s֗ r& u]M'Z9NBX.ssxў+sIX!vKKiRI1JvZ;kCJofb6rW ( As]lt4#Hymζ1f;S/-[.d5»!M3w] pƮ# ĔƖwM&l(=8$A0y\\pl@sdmx6N r33@MLѧsm>ҝkx,S)#)C(q.AI+v' 0-S- fdʄp@]ZZmon~hO2z9\&oiRrx&^=/F=:l47h*\אbtdIF/ v+46Em^сY98k;yMLl4Co)TmvQW8hc5*M:%Xp/'yVDh܍-2*#ˁ%饝9Ş1@;?k\?ZW19D~E"/͖'t{S}ˠTa6veR"r$Vor =y{}3<}mu: Oy?pceX0 R>2lϗдz&q 6M7v/Ag&*FyP/\lz 7GE<:ou{pY,l |(2f8 _2kak6={v{LxJ|?ǰIYA}7MpS"cw u~ǩ4%18cҰ/ҭ&G"rV>eLFR8W+!k rmn;3 "|Z1P7Épu%Pi E7";D_&01XV# *t@?2~E4X#), 7/fa F 9`Ot&;ɠL}cy;}+~_CkG8mL{62|=j ?X2QHOl⌯\:-\9LzAdwfS[t{WPt%i;CW!9oXјu ʹIH/ ,#`{k)^?! Ϧf ~r?&z!M% lsÏwܦ2wM˽ D&$&[CN%aG/0`FzAU&p J!:nh%dXQԺ}Rcۈ 11l7@G;F>uU,d&hDb }B`OEc/KL%4~|L0&UHCUb RK$;Sʊ2}*JMŢ|&.7=Xں QG)b(7b()v)XXkʈFSiBۆhOm2m壑,K1(&rX0 0J1Oqky[;k]9:B1HYbLG:=ڂHN^RKŘW.:-`0"Pal ԑꍻ3ֱ)Sԧ {8gYay[ m6Es[ G/F]O3B~ qi hi"kC\O m| ,Q3*ViK MZzrCi]|Z; AZb:a QoHEBMWo2o94{6NNLTE_Z:" ;q B QyԬd;u㹞)+ vrXr0!Ym8L0*Ǝv'V >s(&pmFD 뻁vP@/ļP d[v]iϫQ R F BK$3DНnf#?ISz>i?巤Sd=qMה~"ൿOi6ҸM<޲A@ŤZ4aB&.6PʮLv`Y5WAJ}_NKX9j .zd8M~z6i#c*Zb7}$Ӯ%8 zC39>W Fk%MEC|d_]΋p#RtEBuJN7шuD<#y $k< 7;^ ],B thXQ??!0#\x_rJBz&s2vu!Iybo[s CSFFوtQ0 JP0wg6\|1(eu@r]+ f N9:¤B:_NQE}=2妏87x #$r7? by3WIK/úf'^h\tu$ 0C|Mؤ{#0RVRbt7/gR#)o9t0pl ǡO0o>>#;-\)?/Š'$mM`8B;3谏I|gWb`Hqf X$B#r?Y  6ך|=ˑѭ PJn&& c2es/,ưߠ,  y4ݷÝprC^hWQᵤk.f5 _dSK6of܌3XL|҉aߊ_h ڂ*l6BT*kT0@9mVT͐.vR,t/\ hY=s9PְT~pٽb3.^hq}A.,"">%Ӟ`m=V7<P Rm'|OQʣ`~X.QPؓ?Զף`|u8c-g QS6YoWSkt5??F > uҽǏ~KlBրTI łORg|_ @=@ MԬe(1}KL_Q5#!DҺcز zU#hȘVE9VCX'LQVٽ"=\q4lA?|Ȅv 8FP;;L-ser^ b8٪5DBf;OT ʼnp @oHr67,B-{" 1ƞCJΨ4` 0{]ъ7Zhq=a*J 2^d>QP5N!oUw}?`޻t@[M_Ǝ4Rߢ`vTpWXQj,3&\.dzy5U*Dyk Pgmg"J;6K.${YB=QoLt,\̂Du:wyܾ jEz}ӣzglsgLәa])TFy>6sTd;ma3WHUu%`o[FDP2=œ0 \QNx(u a$ |$ ~r r*4$LgKTi%m徵m`-cCs8 {ZZ>Q|~ѱi>vK3fY["-k=+&H m؎zn~7y )hk\(`|q 8?8Y+^8[dӆYT.v-HC?OCM$O?[ 5=n^Gob^8_y-'VO J񦘍 B-a\fi\\|CAlȗFjVΎL:/#.r6㥡qrRHo~.`X?Er6 0!$҅U y> ~'pasPj#'M?-& dP^l3yuh7۵gF>I$uMs GL`^L<WoA,OK؎SN?Rf棃4ߟ9a- л5;AѽwD֍rv>AfxsdCBb*^N'sx>j70U ++wҟSQce4&f wB>?翃G3ŭRS<= c^:0Gտ݅њڗH46\'lG(A$h^-kaioӅiاfH 'H Cq*"3HUidAGSl1Cv @S%K.b0qQaNkx{A>9spIPME'$)J0t'%Xbi77"w3 Nj7cy3RlJl!p5vv}ž/(<} r[HRo ) V.E!BY{"7 Y/Ql2S'Wwm" !i!BxG#7=_v~?{cHQCw5`@̉cS(g.T\DE H"c^ZKI}.&$&Q'zdKFO3ޤ f !_I7qP}[`az#tY,0/ƌJkW8RmH۟BiA KL?5BakD.7 l^BL/ߊޜ+GY_aEєt3#D;r];siW<-b\ދ|0>aBJꞿ`]4Cyp RtшV*-lc.~ w= _޻GXH:(=UHur^]ӏTt&ٮ"o1&M/v=0}Ȟo=XI'bx8-#h,3v%@ IUDA9t͎zm+hm!ވc!mm_ְciѼxgrNj \"(U^9=qՁ"U.HW)yMH>|;if2w/{t M!mtcΎXL,ϰJfݤK(ZgqURN-wdT(W/mhg^4jUP#)AygVEQ‰b;H"c~BlB^7Bˁ^gm†tS^Z&v)r*!^Ac m"mqi+ U L.Ie{*풑"g*s|~RErmLgxj&NZR>);a%:/4&{0t˪B%ZQx}IጯA$6}i~"+5 ^qi՝Bgl9=^JSl8'd.;Zjd( /3z2XC$0Ep!䂄MWzn_x' 4z Ҹ.0v?,ͿQד2dW^;~ ///TKIe */_E U -UrfT԰=:F^v.Ѷ. :ۖ . _hfS/bgyg2ZҎ绻2 0bnݘlC+%_H|)~wr^n99,zYۯ|kY[RDc~{ϴ~+E|dFhYS e cEt.cYxKw s/^؂)",_ȗe1 h[[K?a8RRJ12F][|ih2 C+ eϰ&Y_z{~G¨ê?g)? 1 Ϳ&O,;)"# K?]͒l?lcJ -cB$tE ?(j!ݼQ32niy hm Ϋ˥46 H"Z}:,grXFz=9piQ鏝f1ӧ=+RNgO'I~CgA"Crz@o-@=i)&]4E멊( ir6cgݖDS\vīu{^YyLB<7ٿqnjT=~<9Kٸ o#xoؠpڔ$\S?֣ 4C6_Ռrk#4[AwAHUbjhˁS0hHõZp.BӊQhB]ߝE| 9_5a~9R kgO*˂kP+l_e D\ڷ\}lpf}ܗ|Cn~+Ȱ&zQu[(nIvIJ}rC]@;v "tD BǎC"f #w0 "]ψF%AHoƲNTG.̷]=8}S4~Uwbj`2VI]g0 teßa_Ucc+F x\MxZifu~rSAt㿛"=hU2tj3)e| RtdzY)cVGZl^d<[diR)K/8X}@T i $02vFZܬoN'f.vs+NPD\X{v^r=h2Ml_Z5@ APEyk4eZk݂nKy =bp ,[63c^fE?3Ssb #*ÿ?+}gq^y67xַۛ]6LҢN mkMm !/0OU`Rpڍt$2c™FYc-Bt8iDfrGjC)Ǝl.H y3Pc 0@o) )I e:ɔ L):"E60'ƌؠt9iJBۿ1 ̵<^u:΋2GH;xISOzKb"L%(e_! Z6?)? lS<̀]g i+}0aCAe,$/eS0X&o0K23τ>muǰ+>PSg к"Dpomح۹=}.K2I]k=#3e M&W=?kc|j)kOںgO4*|DÜm)#jCӞJ D=hxW,֪ݏn+6hϙ=އKz4vKm$X ˅'L‡Yu'#.ǂ^*RyOB(d89xg ~K_~Zw WǾ8$bʊ7αoh'1EkktgADƧ%fM~ m8~Xa|Z;=o(%rc A49otl> #3,'7`U{Mzq~n\>=,6lY̧"SnV%V;k7L,j[8ݔ7{k)LS y9{mMqQ7WTplw9'@|Rs>}sθgM-`ٿċt ,ѤPԴ Dd>%Fd!`ĤZ#z0bG!U2к.tGi}OH'ɡԐ#o~.~g7,:-šo'x|F*(;5A=7a`Ȟ>mrKמ}͂XU/mkx~MwSy E`/erGޱF>]3x:5uaJ'w ]xڝZ qݰ^N 'oM,E[k{yfV}%9Ҕc[o I]Ĭ1z ޹džFxTB(iԼk1@w5*)H办U4@I )_`0 qgdk k [uxS#4T}QUe+q?TRk|f<9(9Xw$0yV)J065dYt9#ʃ(_恚)4sT'rz,88t 0vnl=9\ I\c2H ƷfxhLuʁ~EvT'+)u3M^9r[4+4?KKg_iv7?!;;[I?;Bsj}%f`? |7O|u6.,#۞i.]~fMk>u ڸ}^4w?6Ȫ`/4ŭO'݀XL4mkц--l4t9'^lƮw4ȍm>_3/鶩ξh7#I5O{:v@ڎK&&otMr )ti$OÊ $X EomʼnAfkwmE9ϋrH4@.~`-%f&4jPTϞh9B/`*RX^ۃ 0S-^(m e3D񚊐 Ն܁j|qV"@D+ Y9cYּt(`!KR ['yڗG#" \Cӵ&'&\N㎁,@ r?OaI| ^XWse bȮo l},֡uJÍG=:#* qӇ]D/DH9=i{hnxp> |+Fc0X1jLǵ^Ď)=ҙgMւ[S? 5g V{}QRKԆ1}sWg ѩ}gH(#.TCǵr/$FAZLLHV{ߍ`TʱA45f-]L+ȉ8z܉M'gwy} F5].&Sq &烾ۥؠ F&(|>A'%5b$̍ F$>EsP|5.n+ZlGBvdNL)XVG(D#<=?(;fНR~ )oH]?6!KNr\cV?+ 'xVj.OclJ,z*)XzwX v,]nI`ޝjK`ٺ3!$g:z4[f|yӨ{Y/TrjVkZos)yEdRPQiНqK@Q4'F)n`\DF9uԳq=iVEʘƃ OH7꣫R,7 WXL?*3F&;H-Ԅ9,[ -Աӱb#SSkgW%q%>){ݕ:c{8l*af߱n0E/t'k̞ގuTr,Cq(bǬa#Ia3g(8;Ya[:FjW맧ӹ0#`)Ԅ2$ d6hafDΈWWARn^%KqiS/-pz(Zf4+Jo^NO+4,euȂX J(t#;ǗwP[ G$@hd?doswzTma+f(ݡ9ϟ֑&='RyY=}*F֌|*eؒɵMh+"blCm<[jNoQ@$ؖ)v+ V*~ 5lzIff&d=ct~-u?zC\,3Da]|I=+gk)<#=P$b)-j=KB|xw.焙L>;$M1d5ȱ|CjUDє\)BH{Z6#M; :kӿduΤ 066ߕ#>š brDΓJK:X1ۑE jO1W;`% ĉz@uHY-B+ެ3w)L2L=2=r{9?ڬbJPIV5 kx}@5ޢ'%0B=: .7G† R;Ax+˱ݼ!h {"} /^s1P v75~gw{c[PaBxxD飢:vw`A/gƀ$@{RgD]+x `)Dߞ(k6*{(|?U",y !ΫX$7?o=zϰҼHuڂV!,q3 hr}&7Mj<~!$ɩهCI ~? \Kv᢭#XʏKoa/q [{&[^wj[_^o^.EK>ߊ`m^VSSpLgqEN59SyfUT^`pB\jDY]RzaFaMZ r%C! |pZU焪F_y+OU7^իT ּ|Ào6W eCjjTrA r(y]_/K7r[4e`6&at0$ΓJޜw_>,KZ'SNoɊ3wz: ٦`M&Sp1&sE4yxgΓ((9D8M_]`0Ÿ("MR $Y a្Uߌ#L3-nTСsdFrG<ޫv:<'nzJiDJj6$kRI%ͦ`UE=;/C,✾?yĆ̖#oKRu~ѩUO$ y u鴏4V1M:@/u$n*1P5 Fj<|qJӭ?^YV93́[1SWS[Z°?L ?=߉m YyX'<`KzU-6Am3]lCÑ;8zq֮)tQɥIfy>aܺWZUH7*%ޡ,رb!Sl豤`tG:Q 1V<"&:wq$d\˰B[Ϛ.mAo2sbէ@ 1@2nbn.1Zy:C'S7a`/d 恙 ?3~2>F&J'(Vfr^-JBf mսNbWl.X7Add0UKK 9QUpSFEl,1 RH& ,w:M).gGPxvht#٘! -$B {NmxGQ9a R"RIc?~o0_44sۨ6U(7 NeM+Ap`thQ괸6tXjcjUuqЇ>>dT~;ON3o+A?ouRwHH^ J !왨vEtCڝvwWۍomezbq=L[?ɴQSFԜyC)iD4xɢCܷ#`_x~0G&+4=7}_)d0w7{]B)&|Qp|'SE ILZq%7 ~HKx( v G/χ;BHrSI!S[𰮰c"Qm1JDyv(Fom͊pntOPEf;2b @{9ZlXd[HxFpCoӺ^Q?O)ЎkYT2Nn4i^,vE{eCM<EҬXuҘ(?3McJ龟-l63?_- 1R &QC/׮͹jq^6_E1G )RKTJDCI}1|V*V