static int __init fmem_init(void) { #ifdef CONFIG_MEMORY_HOTPLUG hotplug_memory_notifier(fmem_memory_callback, 0); #endif return platform_driver_register(&fmem_driver); }
static int __init lowmem_init(void) { int rc; task_free_register(&task_nb); register_shrinker(&lowmem_shrinker); #ifdef CONFIG_MEMORY_HOTPLUG hotplug_memory_notifier(lmk_hotplug_callback, 0); #endif lowmem_kobj = kzalloc(sizeof(*lowmem_kobj), GFP_KERNEL); if (!lowmem_kobj) { rc = -ENOMEM; goto err; } rc = kobject_init_and_add(lowmem_kobj, &lowmem_kobj_type, mm_kobj, "lowmemkiller"); if (rc) goto err_kobj; return 0; err_kobj: kfree(lowmem_kobj); err: unregister_shrinker(&lowmem_shrinker); task_free_unregister(&task_nb); return rc; }
static int __init lowmem_init(void) { register_shrinker(&lowmem_shrinker); #ifdef CONFIG_MEMORY_HOTPLUG hotplug_memory_notifier(lmk_hotplug_callback, 0); #endif return 0; }
static int __init ipc_init(void) { sem_init(); msg_init(); shm_init(); hotplug_memory_notifier(ipc_memory_callback, IPC_CALLBACK_PRI); register_ipcns_notifier(&init_ipc_ns); return 0; }
static int __init kasan_memhotplug_init(void) { pr_info("WARNING: KASAN doesn't support memory hot-add\n"); pr_info("Memory hot-add will be disabled\n"); hotplug_memory_notifier(kasan_mem_notifier, 0); return 0; }
static int __init lowmem_init(void) { //task_free_register(&task_nb); #if CONFIG_MSM_KGSL_VM_THRESHOLD > 0 extern void kgsl_register_shrinker(void (*shrink)(int largest, int threshold)); kgsl_register_shrinker(lowmem_vm_shrinker); #endif register_shrinker(&lowmem_shrinker); #ifdef CONFIG_MEMORY_HOTPLUG hotplug_memory_notifier(lmk_hotplug_callback, 0); #endif return 0; }
void __init efi_pagetable_init(void) { efi_memory_desc_t *md; unsigned long size; u64 start_pfn, end_pfn, pfn, vaddr; void *p; pgd_t *pgd; pud_t *pud; pmd_t *pmd; pte_t *pte; memset(efi_pgd, 0, sizeof(efi_pgd)); dmi_check_system(efi_quirk_table); for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) { md = p; if (!(md->attribute & EFI_MEMORY_RUNTIME)) continue; start_pfn = md->phys_addr >> PAGE_SHIFT; size = md->num_pages << EFI_PAGE_SHIFT; end_pfn = PFN_UP(md->phys_addr + size); for (pfn = start_pfn; pfn <= end_pfn; pfn++) { unsigned long val; vaddr = pfn << PAGE_SHIFT; pgd = efi_pgd + pgd_index(vaddr); pud = fill_pud(pgd, vaddr); pmd = fill_pmd(pud, vaddr); pte = fill_pte(pmd, vaddr); if (md->type == EFI_RUNTIME_SERVICES_CODE) val = __PAGE_KERNEL_EXEC; else val = __PAGE_KERNEL; if (!(md->attribute & EFI_MEMORY_WB)) val |= _PAGE_CACHE_UC_MINUS; set_pte(pte, pfn_pte(pfn, __pgprot(val))); } } clone_pgd_range(efi_pgd + KERNEL_PGD_BOUNDARY, swapper_pg_dir + KERNEL_PGD_BOUNDARY, KERNEL_PGD_PTRS); hotplug_memory_notifier(efi_memory_callback, EFI_CALLBACK_PRI); }
static int __init lowmem_init(void) { #ifdef CONFIG_ZRAM_FOR_ANDROID struct zone *zone; unsigned int high_wmark = 0; #endif task_free_register(&task_nb); register_shrinker(&lowmem_shrinker); #ifdef CONFIG_ZRAM_FOR_ANDROID for_each_zone(zone) { if (high_wmark < zone->watermark[WMARK_HIGH]) high_wmark = zone->watermark[WMARK_HIGH]; } check_free_memory = (high_wmark != 0) ? high_wmark : CHECK_FREE_MEMORY; lmk_class = class_create(THIS_MODULE, "lmk"); if (IS_ERR(lmk_class)) { printk(KERN_ERR "Failed to create class(lmk)\n"); return 0; } lmk_dev = device_create(lmk_class, NULL, 0, NULL, "lowmemorykiller"); if (IS_ERR(lmk_dev)) { printk(KERN_ERR "Failed to create device(lowmemorykiller)!= %ld\n", IS_ERR(lmk_dev)); return 0; } if (device_create_file(lmk_dev, &dev_attr_lmk_state) < 0) printk(KERN_ERR "Failed to create device file(%s)!\n", dev_attr_lmk_state.attr.name); #endif /* CONFIG_ZRAM_FOR_ANDROID */ #ifdef CONFIG_MEMORY_HOTPLUG hotplug_memory_notifier(lmk_hotplug_callback, 0); #endif return 0; }
void __init page_cgroup_init(void) { unsigned long pfn; int fail = 0; if (mem_cgroup_disabled()) return; for (pfn = 0; !fail && pfn < max_pfn; pfn += PAGES_PER_SECTION) { if (!pfn_present(pfn)) continue; fail = init_section_page_cgroup(pfn); } if (fail) { printk(KERN_CRIT "try 'cgroup_disable=memory' boot option\n"); panic("Out of memory"); } else { hotplug_memory_notifier(page_cgroup_callback, 0); } printk(KERN_INFO "allocated %ld bytes of page_cgroup\n", total_usage); printk(KERN_INFO "please try 'cgroup_disable=memory' option if you don't" " want memory cgroups\n"); }
static int __init kasan_memhotplug_init(void) { hotplug_memory_notifier(kasan_mem_notifier, 0); return 0; }