--- zzzz-none-000/linux-4.1.52/mm/page_alloc.c 2018-05-28 02:26:45.000000000 +0000 +++ bcm63-7530ax-731/linux-4.1.52/mm/page_alloc.c 2022-03-02 11:37:13.000000000 +0000 @@ -185,6 +185,9 @@ #ifdef CONFIG_ZONE_DMA32 256, #endif +#if defined(CONFIG_BCM_KF_ARM_BCM963XX) && defined(CONFIG_BCM_ZONE_ACP) + 1, +#endif #ifdef CONFIG_HIGHMEM 32, #endif @@ -200,6 +203,9 @@ #ifdef CONFIG_ZONE_DMA32 "DMA32", #endif +#if defined(CONFIG_BCM_KF_ARM_BCM963XX) && defined(CONFIG_BCM_ZONE_ACP) + "ACP", +#endif "Normal", #ifdef CONFIG_HIGHMEM "HighMem", @@ -1628,7 +1634,11 @@ * Note: this is probably too low level an operation for use in drivers. * Please consult with lkml before using this in your driver. */ -void split_page(struct page *page, unsigned int order) +void split_page(struct page *page, unsigned int order +#if defined(CONFIG_AVM_PAGE_TRACE) + , unsigned long pc +#endif +) { int i; @@ -1647,6 +1657,9 @@ set_page_owner(page, 0, 0); for (i = 1; i < (1 << order); i++) { set_page_refcounted(page + i); +#if defined(CONFIG_AVM_PAGE_TRACE) + avm_set_page_current_pc(page + i, pc); +#endif set_page_owner(page + i, 0, 0); } } @@ -1715,7 +1728,11 @@ /* Split into individual pages */ set_page_refcounted(page); - split_page(page, order); + split_page(page, order +#if defined(CONFIG_AVM_PAGE_TRACE) + , _RET_IP_ +#endif + ); return nr_pages; } @@ -2867,7 +2884,11 @@ */ struct page * __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, - struct zonelist *zonelist, nodemask_t *nodemask) + struct zonelist *zonelist, nodemask_t *nodemask +#if defined(CONFIG_AVM_PAGE_TRACE) + , unsigned long pc +#endif + ) { struct zoneref *preferred_zoneref; struct page *page = NULL; @@ -2942,6 +2963,10 @@ if (unlikely(!page && read_mems_allowed_retry(cpuset_mems_cookie))) goto retry_cpuset; +#if defined(CONFIG_AVM_PAGE_TRACE) + if (likely(page)) + avm_set_page_current_pc(page, pc); +#endif return page; } EXPORT_SYMBOL(__alloc_pages_nodemask); @@ -3044,13 +3069,21 @@ } static void *make_alloc_exact(unsigned long addr, unsigned int order, - size_t size) + size_t size +#if defined(CONFIG_AVM_PAGE_TRACE) + , unsigned long pc +#endif + ) { 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); + split_page(virt_to_page((void *)addr), order +#if defined(CONFIG_AVM_PAGE_TRACE) + , pc +#endif + ); while (used < alloc_end) { free_page(used); used += PAGE_SIZE; @@ -3078,7 +3111,11 @@ unsigned long addr; addr = __get_free_pages(gfp_mask, order); - return make_alloc_exact(addr, order, size); + return make_alloc_exact(addr, order, size +#if defined(CONFIG_AVM_PAGE_TRACE) + , _RET_IP_ +#endif + ); } EXPORT_SYMBOL(alloc_pages_exact); @@ -3100,7 +3137,11 @@ struct page *p = alloc_pages_node(nid, gfp_mask, order); if (!p) return NULL; - return make_alloc_exact((unsigned long)page_address(p), order, size); + return make_alloc_exact((unsigned long)page_address(p), order, size +#if defined(CONFIG_AVM_PAGE_TRACE) + , 0L +#endif + ); } /** @@ -3288,6 +3329,29 @@ for_each_online_cpu(cpu) free_pcp += per_cpu_ptr(zone->pageset, cpu)->pcp.count; } +#if defined(CONFIG_AVM_ENHANCED) + { + unsigned int sum_pages; + sum_pages = 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)+ + 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); + printk("global_page_sum %ukB(%u pages)\n", sum_pages * 4, sum_pages); + } +#endif/*--- #if defined(CONFIG_AVM_ENHANCED) ---*/ printk("active_anon:%lu inactive_anon:%lu isolated_anon:%lu\n" " active_file:%lu inactive_file:%lu isolated_file:%lu\n"