You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'memblock-kill-early_node_map' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/memblock
This commit is contained in:
@@ -52,6 +52,7 @@
|
||||
#include <asm/mach/time.h>
|
||||
#include <asm/traps.h>
|
||||
#include <asm/unwind.h>
|
||||
#include <asm/memblock.h>
|
||||
|
||||
#if defined(CONFIG_DEPRECATED_PARAM_STRUCT)
|
||||
#include "compat.h"
|
||||
|
||||
+2
-2
@@ -32,6 +32,7 @@
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
#include <asm/memblock.h>
|
||||
|
||||
#include "mm.h"
|
||||
|
||||
@@ -332,7 +333,6 @@ void __init arm_memblock_init(struct meminfo *mi, struct machine_desc *mdesc)
|
||||
|
||||
sort(&meminfo.bank, meminfo.nr_banks, sizeof(meminfo.bank[0]), meminfo_cmp, NULL);
|
||||
|
||||
memblock_init();
|
||||
for (i = 0; i < mi->nr_banks; i++)
|
||||
memblock_add(mi->bank[i].start, mi->bank[i].size);
|
||||
|
||||
@@ -371,7 +371,7 @@ void __init arm_memblock_init(struct meminfo *mi, struct machine_desc *mdesc)
|
||||
if (mdesc->reserve)
|
||||
mdesc->reserve();
|
||||
|
||||
memblock_analyze();
|
||||
memblock_allow_resize();
|
||||
memblock_dump_all();
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -23,6 +23,9 @@ config IA64
|
||||
select HAVE_ARCH_TRACEHOOK
|
||||
select HAVE_DMA_API_DEBUG
|
||||
select HAVE_GENERIC_HARDIRQS
|
||||
select HAVE_MEMBLOCK
|
||||
select HAVE_MEMBLOCK_NODE_MAP
|
||||
select ARCH_DISCARD_MEMBLOCK
|
||||
select GENERIC_IRQ_PROBE
|
||||
select GENERIC_PENDING_IRQ if SMP
|
||||
select IRQ_PER_CPU
|
||||
@@ -474,9 +477,6 @@ config NODES_SHIFT
|
||||
MAX_NUMNODES will be 2^(This value).
|
||||
If in doubt, use the default.
|
||||
|
||||
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
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
#include <linux/bootmem.h>
|
||||
#include <linux/efi.h>
|
||||
#include <linux/memblock.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/nmi.h>
|
||||
#include <linux/swap.h>
|
||||
@@ -348,7 +349,7 @@ paging_init (void)
|
||||
printk("Virtual mem_map starts at 0x%p\n", mem_map);
|
||||
}
|
||||
#else /* !CONFIG_VIRTUAL_MEM_MAP */
|
||||
add_active_range(0, 0, max_low_pfn);
|
||||
memblock_add_node(0, PFN_PHYS(max_low_pfn), 0);
|
||||
free_area_init_nodes(max_zone_pfns);
|
||||
#endif /* !CONFIG_VIRTUAL_MEM_MAP */
|
||||
zero_page_memmap_ptr = virt_to_page(ia64_imva(empty_zero_page));
|
||||
|
||||
+2
-2
@@ -10,6 +10,7 @@
|
||||
#include <linux/bootmem.h>
|
||||
#include <linux/efi.h>
|
||||
#include <linux/elf.h>
|
||||
#include <linux/memblock.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/mmzone.h>
|
||||
#include <linux/module.h>
|
||||
@@ -557,8 +558,7 @@ int __init register_active_ranges(u64 start, u64 len, int nid)
|
||||
#endif
|
||||
|
||||
if (start < end)
|
||||
add_active_range(nid, __pa(start) >> PAGE_SHIFT,
|
||||
__pa(end) >> PAGE_SHIFT);
|
||||
memblock_add_node(__pa(start), end - start, nid);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
#ifndef _ASM_MICROBLAZE_MEMBLOCK_H
|
||||
#define _ASM_MICROBLAZE_MEMBLOCK_H
|
||||
|
||||
#endif /* _ASM_MICROBLAZE_MEMBLOCK_H */
|
||||
|
||||
|
||||
@@ -122,7 +122,6 @@ void __init early_init_devtree(void *params)
|
||||
of_scan_flat_dt(early_init_dt_scan_chosen, cmd_line);
|
||||
|
||||
/* Scan memory nodes and rebuild MEMBLOCKs */
|
||||
memblock_init();
|
||||
of_scan_flat_dt(early_init_dt_scan_root, NULL);
|
||||
of_scan_flat_dt(early_init_dt_scan_memory, NULL);
|
||||
|
||||
@@ -130,7 +129,7 @@ void __init early_init_devtree(void *params)
|
||||
strlcpy(boot_command_line, cmd_line, COMMAND_LINE_SIZE);
|
||||
parse_early_param();
|
||||
|
||||
memblock_analyze();
|
||||
memblock_allow_resize();
|
||||
|
||||
pr_debug("Phys. mem: %lx\n", (unsigned long) memblock_phys_mem_size());
|
||||
|
||||
|
||||
+3
-3
@@ -25,6 +25,9 @@ config MIPS
|
||||
select GENERIC_IRQ_SHOW
|
||||
select HAVE_ARCH_JUMP_LABEL
|
||||
select IRQ_FORCED_THREADING
|
||||
select HAVE_MEMBLOCK
|
||||
select HAVE_MEMBLOCK_NODE_MAP
|
||||
select ARCH_DISCARD_MEMBLOCK
|
||||
|
||||
menu "Machine selection"
|
||||
|
||||
@@ -2064,9 +2067,6 @@ config ARCH_DISCONTIGMEM_ENABLE
|
||||
or have huge holes in the physical address space for other reasons.
|
||||
See <file:Documentation/vm/numa> for more.
|
||||
|
||||
config ARCH_POPULATES_NODE_MAP
|
||||
def_bool y
|
||||
|
||||
config ARCH_SPARSEMEM_ENABLE
|
||||
bool
|
||||
select SPARSEMEM_STATIC
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/screen_info.h>
|
||||
#include <linux/memblock.h>
|
||||
#include <linux/bootmem.h>
|
||||
#include <linux/initrd.h>
|
||||
#include <linux/root_dev.h>
|
||||
@@ -352,7 +353,7 @@ static void __init bootmem_init(void)
|
||||
continue;
|
||||
#endif
|
||||
|
||||
add_active_range(0, start, end);
|
||||
memblock_add_node(PFN_PHYS(start), PFN_PHYS(end - start), 0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/memblock.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/mmzone.h>
|
||||
#include <linux/module.h>
|
||||
@@ -381,8 +382,8 @@ static void __init szmem(void)
|
||||
continue;
|
||||
}
|
||||
num_physpages += slot_psize;
|
||||
add_active_range(node, slot_getbasepfn(node, slot),
|
||||
slot_getbasepfn(node, slot) + slot_psize);
|
||||
memblock_add_node(PFN_PHYS(slot_getbasepfn(node, slot)),
|
||||
PFN_PHYS(slot_psize), node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
/*
|
||||
* OpenRISC Linux
|
||||
*
|
||||
* Linux architectural port borrowing liberally from similar works of
|
||||
* others. All original copyrights apply as per the original source
|
||||
* declaration.
|
||||
*
|
||||
* OpenRISC implementation:
|
||||
* Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com>
|
||||
* Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
|
||||
* et al.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_OPENRISC_MEMBLOCK_H
|
||||
#define __ASM_OPENRISC_MEMBLOCK_H
|
||||
|
||||
/* empty */
|
||||
|
||||
#endif /* __ASM_OPENRISC_MEMBLOCK_H */
|
||||
@@ -76,14 +76,13 @@ void __init early_init_devtree(void *params)
|
||||
of_scan_flat_dt(early_init_dt_scan_chosen, cmd_line);
|
||||
|
||||
/* Scan memory nodes and rebuild MEMBLOCKs */
|
||||
memblock_init();
|
||||
of_scan_flat_dt(early_init_dt_scan_root, NULL);
|
||||
of_scan_flat_dt(early_init_dt_scan_memory, NULL);
|
||||
|
||||
/* Save command line for /proc/cmdline and then parse parameters */
|
||||
strlcpy(boot_command_line, cmd_line, COMMAND_LINE_SIZE);
|
||||
|
||||
memblock_analyze();
|
||||
memblock_allow_resize();
|
||||
|
||||
/* We must copy the flattend device tree from init memory to regular
|
||||
* memory because the device tree references the strings in it
|
||||
|
||||
@@ -117,6 +117,7 @@ config PPC
|
||||
select HAVE_KRETPROBES
|
||||
select HAVE_ARCH_TRACEHOOK
|
||||
select HAVE_MEMBLOCK
|
||||
select HAVE_MEMBLOCK_NODE_MAP
|
||||
select HAVE_DMA_ATTRS
|
||||
select HAVE_DMA_API_DEBUG
|
||||
select USE_GENERIC_SMP_HELPERS if SMP
|
||||
@@ -421,9 +422,6 @@ config ARCH_SPARSEMEM_DEFAULT
|
||||
def_bool y
|
||||
depends on (SMP && PPC_PSERIES) || PPC_PS3
|
||||
|
||||
config ARCH_POPULATES_NODE_MAP
|
||||
def_bool y
|
||||
|
||||
config SYS_SUPPORTS_HUGETLBFS
|
||||
bool
|
||||
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
#ifndef _ASM_POWERPC_MEMBLOCK_H
|
||||
#define _ASM_POWERPC_MEMBLOCK_H
|
||||
|
||||
#include <asm/udbg.h>
|
||||
|
||||
#define MEMBLOCK_DBG(fmt...) udbg_printf(fmt)
|
||||
|
||||
#endif /* _ASM_POWERPC_MEMBLOCK_H */
|
||||
@@ -107,9 +107,6 @@ void __init reserve_crashkernel(void)
|
||||
unsigned long long crash_size, crash_base;
|
||||
int ret;
|
||||
|
||||
/* this is necessary because of memblock_phys_mem_size() */
|
||||
memblock_analyze();
|
||||
|
||||
/* use common parsing */
|
||||
ret = parse_crashkernel(boot_command_line, memblock_phys_mem_size(),
|
||||
&crash_size, &crash_base);
|
||||
|
||||
@@ -733,8 +733,6 @@ void __init early_init_devtree(void *params)
|
||||
of_scan_flat_dt(early_init_dt_scan_chosen_ppc, cmd_line);
|
||||
|
||||
/* Scan memory nodes and rebuild MEMBLOCKs */
|
||||
memblock_init();
|
||||
|
||||
of_scan_flat_dt(early_init_dt_scan_root, NULL);
|
||||
of_scan_flat_dt(early_init_dt_scan_memory_ppc, NULL);
|
||||
|
||||
@@ -756,20 +754,14 @@ void __init early_init_devtree(void *params)
|
||||
early_reserve_mem();
|
||||
phyp_dump_reserve_mem();
|
||||
|
||||
limit = memory_limit;
|
||||
if (! limit) {
|
||||
phys_addr_t memsize;
|
||||
|
||||
/* Ensure that total memory size is page-aligned, because
|
||||
* otherwise mark_bootmem() gets upset. */
|
||||
memblock_analyze();
|
||||
memsize = memblock_phys_mem_size();
|
||||
if ((memsize & PAGE_MASK) != memsize)
|
||||
limit = memsize & PAGE_MASK;
|
||||
}
|
||||
/*
|
||||
* Ensure that total memory size is page-aligned, because otherwise
|
||||
* mark_bootmem() gets upset.
|
||||
*/
|
||||
limit = ALIGN(memory_limit ?: memblock_phys_mem_size(), PAGE_SIZE);
|
||||
memblock_enforce_memory_limit(limit);
|
||||
|
||||
memblock_analyze();
|
||||
memblock_allow_resize();
|
||||
memblock_dump_all();
|
||||
|
||||
DBG("Phys. mem: %llx\n", memblock_phys_mem_size());
|
||||
|
||||
@@ -134,8 +134,7 @@ void __init MMU_init(void)
|
||||
|
||||
if (memblock.memory.cnt > 1) {
|
||||
#ifndef CONFIG_WII
|
||||
memblock.memory.cnt = 1;
|
||||
memblock_analyze();
|
||||
memblock_enforce_memory_limit(memblock.memory.regions[0].size);
|
||||
printk(KERN_WARNING "Only using first contiguous memory region");
|
||||
#else
|
||||
wii_memory_fixups();
|
||||
@@ -158,7 +157,6 @@ void __init MMU_init(void)
|
||||
#ifndef CONFIG_HIGHMEM
|
||||
total_memory = total_lowmem;
|
||||
memblock_enforce_memory_limit(total_lowmem);
|
||||
memblock_analyze();
|
||||
#endif /* CONFIG_HIGHMEM */
|
||||
}
|
||||
|
||||
|
||||
@@ -199,7 +199,7 @@ void __init do_init_bootmem(void)
|
||||
unsigned long start_pfn, end_pfn;
|
||||
start_pfn = memblock_region_memory_base_pfn(reg);
|
||||
end_pfn = memblock_region_memory_end_pfn(reg);
|
||||
add_active_range(0, start_pfn, end_pfn);
|
||||
memblock_set_node(0, (phys_addr_t)ULLONG_MAX, 0);
|
||||
}
|
||||
|
||||
/* Add all physical memory to the bootmem map, mark each area
|
||||
|
||||
+19
-41
@@ -127,45 +127,25 @@ static int __cpuinit fake_numa_create_new_node(unsigned long end_pfn,
|
||||
}
|
||||
|
||||
/*
|
||||
* get_active_region_work_fn - A helper function for get_node_active_region
|
||||
* Returns datax set to the start_pfn and end_pfn if they contain
|
||||
* the initial value of datax->start_pfn between them
|
||||
* @start_pfn: start page(inclusive) of region to check
|
||||
* @end_pfn: end page(exclusive) of region to check
|
||||
* @datax: comes in with ->start_pfn set to value to search for and
|
||||
* goes out with active range if it contains it
|
||||
* Returns 1 if search value is in range else 0
|
||||
*/
|
||||
static int __init get_active_region_work_fn(unsigned long start_pfn,
|
||||
unsigned long end_pfn, void *datax)
|
||||
{
|
||||
struct node_active_region *data;
|
||||
data = (struct node_active_region *)datax;
|
||||
|
||||
if (start_pfn <= data->start_pfn && end_pfn > data->start_pfn) {
|
||||
data->start_pfn = start_pfn;
|
||||
data->end_pfn = end_pfn;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* get_node_active_region - Return active region containing start_pfn
|
||||
* get_node_active_region - Return active region containing pfn
|
||||
* Active range returned is empty if none found.
|
||||
* @start_pfn: The page to return the region for.
|
||||
* @node_ar: Returned set to the active region containing start_pfn
|
||||
* @pfn: The page to return the region for
|
||||
* @node_ar: Returned set to the active region containing @pfn
|
||||
*/
|
||||
static void __init get_node_active_region(unsigned long start_pfn,
|
||||
struct node_active_region *node_ar)
|
||||
static void __init get_node_active_region(unsigned long pfn,
|
||||
struct node_active_region *node_ar)
|
||||
{
|
||||
int nid = early_pfn_to_nid(start_pfn);
|
||||
unsigned long start_pfn, end_pfn;
|
||||
int i, nid;
|
||||
|
||||
node_ar->nid = nid;
|
||||
node_ar->start_pfn = start_pfn;
|
||||
node_ar->end_pfn = start_pfn;
|
||||
work_with_active_regions(nid, get_active_region_work_fn, node_ar);
|
||||
for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, &nid) {
|
||||
if (pfn >= start_pfn && pfn < end_pfn) {
|
||||
node_ar->nid = nid;
|
||||
node_ar->start_pfn = start_pfn;
|
||||
node_ar->end_pfn = end_pfn;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void map_cpu_to_node(int cpu, int node)
|
||||
@@ -710,9 +690,7 @@ static void __init parse_drconf_memory(struct device_node *memory)
|
||||
node_set_online(nid);
|
||||
sz = numa_enforce_memory_limit(base, size);
|
||||
if (sz)
|
||||
add_active_range(nid, base >> PAGE_SHIFT,
|
||||
(base >> PAGE_SHIFT)
|
||||
+ (sz >> PAGE_SHIFT));
|
||||
memblock_set_node(base, sz, nid);
|
||||
} while (--ranges);
|
||||
}
|
||||
}
|
||||
@@ -802,8 +780,7 @@ new_range:
|
||||
continue;
|
||||
}
|
||||
|
||||
add_active_range(nid, start >> PAGE_SHIFT,
|
||||
(start >> PAGE_SHIFT) + (size >> PAGE_SHIFT));
|
||||
memblock_set_node(start, size, nid);
|
||||
|
||||
if (--ranges)
|
||||
goto new_range;
|
||||
@@ -839,7 +816,8 @@ static void __init setup_nonnuma(void)
|
||||
end_pfn = memblock_region_memory_end_pfn(reg);
|
||||
|
||||
fake_numa_create_new_node(end_pfn, &nid);
|
||||
add_active_range(nid, start_pfn, end_pfn);
|
||||
memblock_set_node(PFN_PHYS(start_pfn),
|
||||
PFN_PHYS(end_pfn - start_pfn), nid);
|
||||
node_set_online(nid);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -615,7 +615,6 @@ static void __early_init_mmu(int boot_cpu)
|
||||
|
||||
/* limit memory so we dont have linear faults */
|
||||
memblock_enforce_memory_limit(linear_map_top);
|
||||
memblock_analyze();
|
||||
|
||||
patch_exception(0x1c0, exc_data_tlb_miss_bolted_book3e);
|
||||
patch_exception(0x1e0, exc_instruction_tlb_miss_bolted_book3e);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user