--- arch/ia64/Kconfig | 29 ----- arch/ia64/configs/sn2_defconfig | 4 arch/ia64/configs/tiger_defconfig | 4 arch/ia64/configs/zx1_defconfig | 4 arch/ia64/defconfig | 8 - arch/ia64/kernel/ia64_ksyms.c | 6 - arch/ia64/mm/Makefile | 5 - arch/ia64/mm/contig.c | 40 -------- arch/ia64/mm/discontig.c | 15 --- arch/ia64/mm/fault.c | 4 arch/ia64/mm/init.c | 190 -------------------------------------- include/asm-ia64/meminit.h | 13 -- include/asm-ia64/page.h | 26 ----- include/asm-ia64/pgtable.h | 16 --- 14 files changed, 5 insertions(+), 359 deletions(-) Index: vmemmap/arch/ia64/Kconfig =================================================================== --- vmemmap.orig/arch/ia64/Kconfig 2007-06-07 17:04:54.000000000 -0700 +++ vmemmap/arch/ia64/Kconfig 2007-06-07 17:06:09.000000000 -0700 @@ -342,27 +342,13 @@ config PREEMPT source "mm/Kconfig" -config ARCH_SELECT_MEMORY_MODEL - def_bool y - -config ARCH_DISCONTIGMEM_ENABLE - def_bool y - help - Say Y to support efficient handling of discontiguous physical memory, - for architectures which are either NUMA (Non-Uniform Memory Access) - or have huge holes in the physical address space for other reasons. - See for more. - config ARCH_FLATMEM_ENABLE def_bool y config ARCH_SPARSEMEM_ENABLE def_bool y - depends on ARCH_DISCONTIGMEM_ENABLE -config ARCH_DISCONTIGMEM_DEFAULT - def_bool y if (IA64_SGI_SN2 || IA64_GENERIC || IA64_HP_ZX1 || IA64_HP_ZX1_SWIOTLB) - depends on ARCH_DISCONTIGMEM_ENABLE +config ARCH_SPARSEMEM_DEFAULT config NUMA bool "NUMA support" @@ -387,19 +373,6 @@ config NODES_SHIFT config ARCH_POPULATES_NODE_MAP def_bool y -# VIRTUAL_MEM_MAP and FLAT_NODE_MEM_MAP are functionally equivalent. -# VIRTUAL_MEM_MAP has been retained for historical reasons. -config VIRTUAL_MEM_MAP - bool "Virtual mem map" - depends on !SPARSEMEM - default y if !IA64_HP_SIM - help - Say Y to compile the kernel with support for a virtual mem map. - This code also only takes effect if a memory hole of greater than - 1 Gb is found during boot. You must turn this option on if you - require the DISCONTIGMEM option for your machine. If you are - unsure, say Y. - config HOLES_IN_ZONE bool default y if VIRTUAL_MEM_MAP Index: vmemmap/arch/ia64/configs/sn2_defconfig =================================================================== --- vmemmap.orig/arch/ia64/configs/sn2_defconfig 2007-06-07 17:14:41.000000000 -0700 +++ vmemmap/arch/ia64/configs/sn2_defconfig 2007-06-07 17:14:55.000000000 -0700 @@ -140,15 +140,11 @@ CONFIG_NEED_MULTIPLE_NODES=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_MIGRATION=y CONFIG_RESOURCES_64BIT=y -CONFIG_ARCH_SELECT_MEMORY_MODEL=y -CONFIG_ARCH_DISCONTIGMEM_ENABLE=y CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_ENABLE=y -CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y CONFIG_NUMA=y CONFIG_NODES_SHIFT=10 CONFIG_ARCH_POPULATES_NODE_MAP=y -CONFIG_VIRTUAL_MEM_MAP=y CONFIG_HOLES_IN_ZONE=y CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y CONFIG_HAVE_ARCH_NODEDATA_EXTENSION=y Index: vmemmap/arch/ia64/configs/tiger_defconfig =================================================================== --- vmemmap.orig/arch/ia64/configs/tiger_defconfig 2007-06-07 17:15:01.000000000 -0700 +++ vmemmap/arch/ia64/configs/tiger_defconfig 2007-06-07 17:15:10.000000000 -0700 @@ -145,12 +145,8 @@ CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_RESOURCES_64BIT=y CONFIG_ZONE_DMA_FLAG=1 -CONFIG_ARCH_SELECT_MEMORY_MODEL=y -CONFIG_ARCH_DISCONTIGMEM_ENABLE=y CONFIG_ARCH_FLATMEM_ENABLE=y -CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_POPULATES_NODE_MAP=y -CONFIG_VIRTUAL_MEM_MAP=y CONFIG_HOLES_IN_ZONE=y CONFIG_IA32_SUPPORT=y CONFIG_COMPAT=y Index: vmemmap/arch/ia64/configs/zx1_defconfig =================================================================== --- vmemmap.orig/arch/ia64/configs/zx1_defconfig 2007-06-07 17:15:20.000000000 -0700 +++ vmemmap/arch/ia64/configs/zx1_defconfig 2007-06-07 17:15:28.000000000 -0700 @@ -142,13 +142,9 @@ CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_RESOURCES_64BIT=y CONFIG_ZONE_DMA_FLAG=1 -CONFIG_ARCH_SELECT_MEMORY_MODEL=y -CONFIG_ARCH_DISCONTIGMEM_ENABLE=y CONFIG_ARCH_FLATMEM_ENABLE=y -CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y CONFIG_ARCH_POPULATES_NODE_MAP=y -CONFIG_VIRTUAL_MEM_MAP=y CONFIG_HOLES_IN_ZONE=y CONFIG_IA32_SUPPORT=y CONFIG_COMPAT=y Index: vmemmap/arch/ia64/kernel/ia64_ksyms.c =================================================================== --- vmemmap.orig/arch/ia64/kernel/ia64_ksyms.c 2007-06-07 17:15:37.000000000 -0700 +++ vmemmap/arch/ia64/kernel/ia64_ksyms.c 2007-06-07 17:15:43.000000000 -0700 @@ -25,12 +25,6 @@ EXPORT_SYMBOL(__up); #include EXPORT_SYMBOL(clear_page); -#ifdef CONFIG_VIRTUAL_MEM_MAP -#include -EXPORT_SYMBOL(min_low_pfn); /* defined by bootmem.c, but not exported by generic code */ -EXPORT_SYMBOL(max_low_pfn); /* defined by bootmem.c, but not exported by generic code */ -#endif - #include EXPORT_SYMBOL(per_cpu__cpu_info); #ifdef CONFIG_SMP Index: vmemmap/arch/ia64/mm/Makefile =================================================================== --- vmemmap.orig/arch/ia64/mm/Makefile 2007-06-07 17:06:27.000000000 -0700 +++ vmemmap/arch/ia64/mm/Makefile 2007-06-07 17:07:55.000000000 -0700 @@ -2,10 +2,7 @@ # Makefile for the ia64-specific parts of the memory manager. # -obj-y := init.o fault.o tlb.o extable.o ioremap.o +obj-y := init.o fault.o tlb.o extable.o ioremap.o discontig.o obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o obj-$(CONFIG_NUMA) += numa.o -obj-$(CONFIG_DISCONTIGMEM) += discontig.o -obj-$(CONFIG_SPARSEMEM) += discontig.o -obj-$(CONFIG_FLATMEM) += contig.o Index: vmemmap/arch/ia64/mm/contig.c =================================================================== --- vmemmap.orig/arch/ia64/mm/contig.c 2007-06-07 17:12:08.000000000 -0700 +++ vmemmap/arch/ia64/mm/contig.c 2007-06-07 17:12:36.000000000 -0700 @@ -25,10 +25,6 @@ #include #include -#ifdef CONFIG_VIRTUAL_MEM_MAP -static unsigned long max_gap; -#endif - /** * show_mem - give short summary of memory stats * @@ -59,10 +55,6 @@ void show_mem(void) if (pfn_valid(pgdat->node_start_pfn + i)) page = pfn_to_page(pgdat->node_start_pfn + i); else { -#ifdef CONFIG_VIRTUAL_MEM_MAP - if (max_gap < LARGE_GAP) - continue; -#endif i = vmemmap_find_next_valid_pfn(pgdat->node_id, i) - 1; continue; @@ -243,39 +235,7 @@ paging_init (void) #endif max_zone_pfns[ZONE_NORMAL] = max_low_pfn; -#ifdef CONFIG_VIRTUAL_MEM_MAP - efi_memmap_walk(register_active_ranges, NULL); - efi_memmap_walk(find_largest_hole, (u64 *)&max_gap); - if (max_gap < LARGE_GAP) { - vmem_map = (struct page *) 0; - free_area_init_nodes(max_zone_pfns); - } else { - unsigned long map_size; - - /* allocate virtual_mem_map */ - - map_size = PAGE_ALIGN(ALIGN(max_low_pfn, MAX_ORDER_NR_PAGES) * - sizeof(struct page)); - vmalloc_end -= map_size; - vmem_map = (struct page *) vmalloc_end; - efi_memmap_walk(create_mem_map_page_table, NULL); - - /* - * alloc_node_mem_map makes an adjustment for mem_map - * which isn't compatible with vmem_map. - */ - NODE_DATA(0)->node_mem_map = vmem_map + - find_min_pfn_with_active_regions(); - printk(KERN_DEBUG - "Node %d memmap at 0x%p size %lu first pfn 0x%p\n", - 0, vmem_map, map_size, NODE_DATA(0)->node_mem_map); - free_area_init_nodes(max_zone_pfns); - - printk("Virtual mem_map starts at 0x%p\n", mem_map); - } -#else /* !CONFIG_VIRTUAL_MEM_MAP */ add_active_range(0, 0, max_low_pfn); free_area_init_nodes(max_zone_pfns); -#endif /* !CONFIG_VIRTUAL_MEM_MAP */ zero_page_memmap_ptr = virt_to_page(ia64_imva(empty_zero_page)); } Index: vmemmap/arch/ia64/mm/discontig.c =================================================================== --- vmemmap.orig/arch/ia64/mm/discontig.c 2007-06-07 17:12:43.000000000 -0700 +++ vmemmap/arch/ia64/mm/discontig.c 2007-06-07 17:12:59.000000000 -0700 @@ -664,24 +664,9 @@ void __init paging_init(void) sparse_memory_present_with_active_regions(MAX_NUMNODES); sparse_init(); -#ifdef CONFIG_VIRTUAL_MEM_MAP - vmalloc_end -= PAGE_ALIGN(ALIGN(max_low_pfn, MAX_ORDER_NR_PAGES) * - sizeof(struct page)); - vmem_map = (struct page *) vmalloc_end; - efi_memmap_walk(create_mem_map_page_table, NULL); - printk("Virtual mem_map starts at 0x%p\n", vmem_map); -#endif - for_each_online_node(node) { num_physpages += mem_data[node].num_physpages; pfn_offset = mem_data[node].min_pfn; - -#ifdef CONFIG_VIRTUAL_MEM_MAP - NODE_DATA(node)->node_mem_map = vmem_map + pfn_offset; - printk(KERN_DEBUG - "Node %d memmap at 0x%p size %lu first pfn 0x%p\n", - node, vmem_map, 0, NODE_DATA(node)->node_mem_map); -#endif if (mem_data[node].max_pfn > max_pfn) max_pfn = mem_data[node].max_pfn; } Index: vmemmap/arch/ia64/mm/fault.c =================================================================== --- vmemmap.orig/arch/ia64/mm/fault.c 2007-06-07 17:13:07.000000000 -0700 +++ vmemmap/arch/ia64/mm/fault.c 2007-06-07 17:13:48.000000000 -0700 @@ -90,7 +90,6 @@ ia64_do_page_fault (unsigned long addres if (in_atomic() || !mm) goto no_context; -#ifdef CONFIG_VIRTUAL_MEM_MAP /* * If fault is in region 5 and we are in the kernel, we may already * have the mmap_sem (pfn_valid macro is called during mmap). There @@ -100,7 +99,6 @@ ia64_do_page_fault (unsigned long addres if ((REGION_NUMBER(address) == 5) && !user_mode(regs)) goto bad_area_no_up; -#endif /* * This is to handle the kprobes on user space access instructions @@ -197,9 +195,7 @@ ia64_do_page_fault (unsigned long addres bad_area: up_read(&mm->mmap_sem); -#ifdef CONFIG_VIRTUAL_MEM_MAP bad_area_no_up: -#endif if ((isr & IA64_ISR_SP) || ((isr & IA64_ISR_NA) && (isr & IA64_ISR_CODE_MASK) == IA64_ISR_CODE_LFETCH)) { Index: vmemmap/arch/ia64/mm/init.c =================================================================== --- vmemmap.orig/arch/ia64/mm/init.c 2007-06-07 17:13:54.000000000 -0700 +++ vmemmap/arch/ia64/mm/init.c 2007-06-07 17:14:15.000000000 -0700 @@ -43,13 +43,6 @@ extern void ia64_tlb_init (void); unsigned long MAX_DMA_ADDRESS = PAGE_OFFSET + 0x100000000UL; -#ifdef CONFIG_VIRTUAL_MEM_MAP -unsigned long vmalloc_end = VMALLOC_END_INIT; -EXPORT_SYMBOL(vmalloc_end); -struct page *vmem_map; -EXPORT_SYMBOL(vmem_map); -#endif - struct page *zero_page_memmap_ptr; /* map entry for zero page */ EXPORT_SYMBOL(zero_page_memmap_ptr); @@ -372,189 +365,6 @@ ia64_mmu_init (void *my_cpu_data) #endif } -#ifdef CONFIG_VIRTUAL_MEM_MAP -int vmemmap_find_next_valid_pfn(int node, int i) -{ - unsigned long end_address, hole_next_pfn; - unsigned long stop_address; - pg_data_t *pgdat = NODE_DATA(node); - - end_address = (unsigned long) &vmem_map[pgdat->node_start_pfn + i]; - end_address = PAGE_ALIGN(end_address); - - stop_address = (unsigned long) &vmem_map[ - pgdat->node_start_pfn + pgdat->node_spanned_pages]; - - do { - pgd_t *pgd; - pud_t *pud; - pmd_t *pmd; - pte_t *pte; - - pgd = pgd_offset_k(end_address); - if (pgd_none(*pgd)) { - end_address += PGDIR_SIZE; - continue; - } - - pud = pud_offset(pgd, end_address); - if (pud_none(*pud)) { - end_address += PUD_SIZE; - continue; - } - - pmd = pmd_offset(pud, end_address); - if (pmd_none(*pmd)) { - end_address += PMD_SIZE; - continue; - } - - pte = pte_offset_kernel(pmd, end_address); -retry_pte: - if (pte_none(*pte)) { - end_address += PAGE_SIZE; - pte++; - if ((end_address < stop_address) && - (end_address != ALIGN(end_address, 1UL << PMD_SHIFT))) - goto retry_pte; - continue; - } - /* Found next valid vmem_map page */ - break; - } while (end_address < stop_address); - - end_address = min(end_address, stop_address); - end_address = end_address - (unsigned long) vmem_map + sizeof(struct page) - 1; - hole_next_pfn = end_address / sizeof(struct page); - return hole_next_pfn - pgdat->node_start_pfn; -} - -int __init -create_mem_map_page_table (u64 start, u64 end, void *arg) -{ - unsigned long address, start_page, end_page; - struct page *map_start, *map_end; - int node; - pgd_t *pgd; - pud_t *pud; - pmd_t *pmd; - pte_t *pte; - - map_start = vmem_map + (__pa(start) >> PAGE_SHIFT); - map_end = vmem_map + (__pa(end) >> PAGE_SHIFT); - - start_page = (unsigned long) map_start & PAGE_MASK; - end_page = PAGE_ALIGN((unsigned long) map_end); - node = paddr_to_nid(__pa(start)); - - for (address = start_page; address < end_page; address += PAGE_SIZE) { - pgd = pgd_offset_k(address); - if (pgd_none(*pgd)) - pgd_populate(&init_mm, pgd, alloc_bootmem_pages_node(NODE_DATA(node), PAGE_SIZE)); - pud = pud_offset(pgd, address); - - if (pud_none(*pud)) - pud_populate(&init_mm, pud, alloc_bootmem_pages_node(NODE_DATA(node), PAGE_SIZE)); - pmd = pmd_offset(pud, address); - - if (pmd_none(*pmd)) - pmd_populate_kernel(&init_mm, pmd, alloc_bootmem_pages_node(NODE_DATA(node), PAGE_SIZE)); - pte = pte_offset_kernel(pmd, address); - - if (pte_none(*pte)) - set_pte(pte, pfn_pte(__pa(alloc_bootmem_pages_node(NODE_DATA(node), PAGE_SIZE)) >> PAGE_SHIFT, - PAGE_KERNEL)); - } - return 0; -} - -struct memmap_init_callback_data { - struct page *start; - struct page *end; - int nid; - unsigned long zone; -}; - -static int -virtual_memmap_init (u64 start, u64 end, void *arg) -{ - struct memmap_init_callback_data *args; - struct page *map_start, *map_end; - - args = (struct memmap_init_callback_data *) arg; - map_start = vmem_map + (__pa(start) >> PAGE_SHIFT); - map_end = vmem_map + (__pa(end) >> PAGE_SHIFT); - - if (map_start < args->start) - map_start = args->start; - if (map_end > args->end) - map_end = args->end; - - /* - * We have to initialize "out of bounds" struct page elements that fit completely - * on the same pages that were allocated for the "in bounds" elements because they - * may be referenced later (and found to be "reserved"). - */ - map_start -= ((unsigned long) map_start & (PAGE_SIZE - 1)) / sizeof(struct page); - map_end += ((PAGE_ALIGN((unsigned long) map_end) - (unsigned long) map_end) - / sizeof(struct page)); - - if (map_start < map_end) - memmap_init_zone((unsigned long)(map_end - map_start), - args->nid, args->zone, page_to_pfn(map_start), - MEMMAP_EARLY); - return 0; -} - -void -memmap_init (unsigned long size, int nid, unsigned long zone, - unsigned long start_pfn) -{ - if (!vmem_map) - memmap_init_zone(size, nid, zone, start_pfn, MEMMAP_EARLY); - else { - struct page *start; - struct memmap_init_callback_data args; - - start = pfn_to_page(start_pfn); - args.start = start; - args.end = start + size; - args.nid = nid; - args.zone = zone; - - efi_memmap_walk(virtual_memmap_init, &args); - } -} - -int -ia64_pfn_valid (unsigned long pfn) -{ - char byte; - struct page *pg = pfn_to_page(pfn); - - return (__get_user(byte, (char __user *) pg) == 0) - && ((((u64)pg & PAGE_MASK) == (((u64)(pg + 1) - 1) & PAGE_MASK)) - || (__get_user(byte, (char __user *) (pg + 1) - 1) == 0)); -} -EXPORT_SYMBOL(ia64_pfn_valid); - -int __init -find_largest_hole (u64 start, u64 end, void *arg) -{ - u64 *max_gap = arg; - - static u64 last_end = PAGE_OFFSET; - - /* NOTE: this algorithm assumes efi memmap table is ordered */ - - if (*max_gap < (start - last_end)) - *max_gap = start - last_end; - last_end = end; - return 0; -} - -#endif /* CONFIG_VIRTUAL_MEM_MAP */ - int __init register_active_ranges(u64 start, u64 end, void *arg) { Index: vmemmap/include/asm-ia64/meminit.h =================================================================== --- vmemmap.orig/include/asm-ia64/meminit.h 2007-06-07 17:08:49.000000000 -0700 +++ vmemmap/include/asm-ia64/meminit.h 2007-06-07 17:09:19.000000000 -0700 @@ -58,17 +58,4 @@ extern int reserve_elfcorehdr(unsigned l extern int register_active_ranges(u64 start, u64 end, void *arg); -#ifdef CONFIG_VIRTUAL_MEM_MAP -# define LARGE_GAP 0x40000000 /* Use virtual mem map if hole is > than this */ - extern unsigned long vmalloc_end; - extern struct page *vmem_map; - extern int find_largest_hole (u64 start, u64 end, void *arg); - extern int create_mem_map_page_table (u64 start, u64 end, void *arg); - extern int vmemmap_find_next_valid_pfn(int, int); -#else -static inline int vmemmap_find_next_valid_pfn(int node, int i) -{ - return i + 1; -} -#endif #endif /* meminit_h */ Index: vmemmap/include/asm-ia64/page.h =================================================================== --- vmemmap.orig/include/asm-ia64/page.h 2007-06-07 17:09:46.000000000 -0700 +++ vmemmap/include/asm-ia64/page.h 2007-06-07 17:10:22.000000000 -0700 @@ -100,31 +100,7 @@ do { \ #define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) -#ifdef CONFIG_VIRTUAL_MEM_MAP -extern int ia64_pfn_valid (unsigned long pfn); -#else -# define ia64_pfn_valid(pfn) 1 -#endif - -#ifdef CONFIG_VIRTUAL_MEM_MAP -extern struct page *vmem_map; -#ifdef CONFIG_DISCONTIGMEM -# define page_to_pfn(page) ((unsigned long) (page - vmem_map)) -# define pfn_to_page(pfn) (vmem_map + (pfn)) -#else -# include -#endif -#else -# include -#endif - -#ifdef CONFIG_FLATMEM -# define pfn_valid(pfn) (((pfn) < max_mapnr) && ia64_pfn_valid(pfn)) -#elif defined(CONFIG_DISCONTIGMEM) -extern unsigned long min_low_pfn; -extern unsigned long max_low_pfn; -# define pfn_valid(pfn) (((pfn) >= min_low_pfn) && ((pfn) < max_low_pfn) && ia64_pfn_valid(pfn)) -#endif +#include #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) #define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) Index: vmemmap/include/asm-ia64/pgtable.h =================================================================== --- vmemmap.orig/include/asm-ia64/pgtable.h 2007-06-07 17:10:26.000000000 -0700 +++ vmemmap/include/asm-ia64/pgtable.h 2007-06-07 17:11:15.000000000 -0700 @@ -231,13 +231,7 @@ ia64_phys_addr_valid (unsigned long addr #define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval) #define VMALLOC_START (RGN_BASE(RGN_GATE) + 0x200000000UL) -#ifdef CONFIG_VIRTUAL_MEM_MAP -# define VMALLOC_END_INIT (RGN_BASE(RGN_GATE) + (1UL << (4*PAGE_SHIFT - 9))) -# define VMALLOC_END vmalloc_end - extern unsigned long vmalloc_end; -#else -# define VMALLOC_END (RGN_BASE(RGN_GATE) + (1UL << (4*PAGE_SHIFT - 9))) -#endif +#define VMALLOC_END (RGN_BASE(RGN_GATE) + (1UL << (4*PAGE_SHIFT - 9))) /* fs/proc/kcore.c */ #define kc_vaddr_to_offset(v) ((v) - RGN_BASE(RGN_GATE)) @@ -552,13 +546,7 @@ extern void lazy_mmu_prot_update (pte_t }) #endif -# ifdef CONFIG_VIRTUAL_MEM_MAP - /* arch mem_map init routine is needed due to holes in a virtual mem_map */ -# define __HAVE_ARCH_MEMMAP_INIT - extern void memmap_init (unsigned long size, int nid, unsigned long zone, - unsigned long start_pfn); -# endif /* CONFIG_VIRTUAL_MEM_MAP */ -# endif /* !__ASSEMBLY__ */ +#endif /* !__ASSEMBLY__ */ /* * Identity-mapped regions use a large page size. We'll call such large pages Index: vmemmap/arch/ia64/defconfig =================================================================== --- vmemmap.orig/arch/ia64/defconfig 2007-06-07 17:20:08.000000000 -0700 +++ vmemmap/arch/ia64/defconfig 2007-06-07 17:20:40.000000000 -0700 @@ -135,11 +135,6 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # CONFIG_SCHED_SMT is not set # CONFIG_PERMIT_BSP_REMOVE is not set # CONFIG_PREEMPT is not set -CONFIG_SELECT_MEMORY_MODEL=y -# CONFIG_FLATMEM_MANUAL is not set -CONFIG_DISCONTIGMEM_MANUAL=y -# CONFIG_SPARSEMEM_MANUAL is not set -CONFIG_DISCONTIGMEM=y CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_NEED_MULTIPLE_NODES=y # CONFIG_SPARSEMEM_STATIC is not set @@ -147,11 +142,8 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_MIGRATION=y CONFIG_RESOURCES_64BIT=y CONFIG_ZONE_DMA_FLAG=1 -CONFIG_ARCH_SELECT_MEMORY_MODEL=y -CONFIG_ARCH_DISCONTIGMEM_ENABLE=y CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_ENABLE=y -CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y CONFIG_NUMA=y CONFIG_NODES_SHIFT=10 CONFIG_ARCH_POPULATES_NODE_MAP=y