Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3044100e authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'core-memblock-for-linus' of...

Merge branch 'core-memblock-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'core-memblock-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (74 commits)
  x86-64: Only set max_pfn_mapped to 512 MiB if we enter via head_64.S
  xen: Cope with unmapped pages when initializing kernel pagetable
  memblock, bootmem: Round pfn properly for memory and reserved regions
  memblock: Annotate memblock functions with __init_memblock
  memblock: Allow memblock_init to be called early
  memblock/arm: Fix memblock_region_is_memory() typo
  x86, memblock: Remove __memblock_x86_find_in_range_size()
  memblock: Fix wraparound in find_region()
  x86-32, memblock: Make add_highpages honor early reserved ranges
  x86, memblock: Fix crashkernel allocation
  arm, memblock: Fix the sparsemem build
  memblock: Fix section mismatch warnings
  powerpc, memblock: Fix memblock API change fallout
  memblock, microblaze: Fix memblock API change fallout
  x86: Remove old bootmem code
  x86, memblock: Use memblock_memory_size()/memblock_free_memory_size() to get correct dma_reserve
  x86: Remove not used early_res code
  x86, memblock: Replace e820_/_early string with memblock_
  x86: Use memblock to replace early_res
  x86, memblock: Use memblock_debug to control debug message print out
  ...

Fix up trivial conflicts in arch/x86/kernel/setup.c and kernel/Makefile
parents b5153163 67e87f0a
Loading
Loading
Loading
Loading
+13 −24
Original line number Diff line number Diff line
@@ -150,6 +150,7 @@ static void __init find_limits(struct meminfo *mi,
static void __init arm_bootmem_init(struct meminfo *mi,
	unsigned long start_pfn, unsigned long end_pfn)
{
	struct memblock_region *reg;
	unsigned int boot_pages;
	phys_addr_t bitmap;
	pg_data_t *pgdat;
@@ -180,12 +181,12 @@ static void __init arm_bootmem_init(struct meminfo *mi,
	/*
	 * Reserve the memblock reserved regions in bootmem.
	 */
	for (i = 0; i < memblock.reserved.cnt; i++) {
		phys_addr_t start = memblock_start_pfn(&memblock.reserved, i);
		if (start >= start_pfn &&
		    memblock_end_pfn(&memblock.reserved, i) <= end_pfn)
	for_each_memblock(reserved, reg) {
		phys_addr_t start = memblock_region_reserved_base_pfn(reg);
		phys_addr_t end = memblock_region_reserved_end_pfn(reg);
		if (start >= start_pfn && end <= end_pfn)
			reserve_bootmem_node(pgdat, __pfn_to_phys(start),
				memblock_size_bytes(&memblock.reserved, i),
					     (end - start) << PAGE_SHIFT,
					     BOOTMEM_DEFAULT);
	}
}
@@ -237,20 +238,7 @@ static void __init arm_bootmem_free(struct meminfo *mi, unsigned long min,
#ifndef CONFIG_SPARSEMEM
int pfn_valid(unsigned long pfn)
{
	struct memblock_region *mem = &memblock.memory;
	unsigned int left = 0, right = mem->cnt;

	do {
		unsigned int mid = (right + left) / 2;

		if (pfn < memblock_start_pfn(mem, mid))
			right = mid;
		else if (pfn >= memblock_end_pfn(mem, mid))
			left = mid + 1;
		else
			return 1;
	} while (left < right);
	return 0;
	return memblock_is_memory(pfn << PAGE_SHIFT);
}
EXPORT_SYMBOL(pfn_valid);

@@ -260,10 +248,11 @@ static void arm_memory_present(void)
#else
static void arm_memory_present(void)
{
	int i;
	for (i = 0; i < memblock.memory.cnt; i++)
		memory_present(0, memblock_start_pfn(&memblock.memory, i),
				  memblock_end_pfn(&memblock.memory, i));
	struct memblock_region *reg;

	for_each_memblock(memory, reg)
		memory_present(0, memblock_region_memory_base_pfn(reg),
			       memblock_region_memory_end_pfn(reg));
}
#endif

+1 −5
Original line number Diff line number Diff line
@@ -173,11 +173,7 @@ static int check_fbmem_region(int region_idx, struct omapfb_mem_region *rg,

static int valid_sdram(unsigned long addr, unsigned long size)
{
	struct memblock_property res;

	res.base = addr;
	res.size = size;
	return !memblock_find(&res) && res.base == addr && res.size == size;
	return memblock_is_region_memory(addr, size);
}

static int reserve_sdram(unsigned long addr, unsigned long size)
+0 −3
Original line number Diff line number Diff line
@@ -9,9 +9,6 @@
#ifndef _ASM_MICROBLAZE_MEMBLOCK_H
#define _ASM_MICROBLAZE_MEMBLOCK_H

/* MEMBLOCK limit is OFF */
#define MEMBLOCK_REAL_LIMIT	0xFFFFFFFF

#endif /* _ASM_MICROBLAZE_MEMBLOCK_H */

+14 −16
Original line number Diff line number Diff line
@@ -70,16 +70,16 @@ static void __init paging_init(void)

void __init setup_memory(void)
{
	int i;
	unsigned long map_size;
	struct memblock_region *reg;

#ifndef CONFIG_MMU
	u32 kernel_align_start, kernel_align_size;

	/* Find main memory where is the kernel */
	for (i = 0; i < memblock.memory.cnt; i++) {
		memory_start = (u32) memblock.memory.region[i].base;
		memory_end = (u32) memblock.memory.region[i].base
				+ (u32) memblock.memory.region[i].size;
	for_each_memblock(memory, reg) {
		memory_start = (u32)reg->base;
		memory_end = (u32) reg->base + reg->size;
		if ((memory_start <= (u32)_text) &&
					((u32)_text <= memory_end)) {
			memory_size = memory_end - memory_start;
@@ -142,12 +142,10 @@ void __init setup_memory(void)
	free_bootmem(memory_start, memory_size);

	/* reserve allocate blocks */
	for (i = 0; i < memblock.reserved.cnt; i++) {
		pr_debug("reserved %d - 0x%08x-0x%08x\n", i,
			(u32) memblock.reserved.region[i].base,
			(u32) memblock_size_bytes(&memblock.reserved, i));
		reserve_bootmem(memblock.reserved.region[i].base,
			memblock_size_bytes(&memblock.reserved, i) - 1, BOOTMEM_DEFAULT);
	for_each_memblock(reserved, reg) {
		pr_debug("reserved - 0x%08x-0x%08x\n",
			 (u32) reg->base, (u32) reg->size);
		reserve_bootmem(reg->base, reg->size, BOOTMEM_DEFAULT);
	}
#ifdef CONFIG_MMU
	init_bootmem_done = 1;
@@ -230,7 +228,7 @@ static void mm_cmdline_setup(void)
		if (maxmem && memory_size > maxmem) {
			memory_size = maxmem;
			memory_end = memory_start + memory_size;
			memblock.memory.region[0].size = memory_size;
			memblock.memory.regions[0].size = memory_size;
		}
	}
}
@@ -273,14 +271,14 @@ asmlinkage void __init mmu_init(void)
		machine_restart(NULL);
	}

	if ((u32) memblock.memory.region[0].size < 0x1000000) {
	if ((u32) memblock.memory.regions[0].size < 0x1000000) {
		printk(KERN_EMERG "Memory must be greater than 16MB\n");
		machine_restart(NULL);
	}
	/* Find main memory where the kernel is */
	memory_start = (u32) memblock.memory.region[0].base;
	memory_end = (u32) memblock.memory.region[0].base +
				(u32) memblock.memory.region[0].size;
	memory_start = (u32) memblock.memory.regions[0].base;
	memory_end = (u32) memblock.memory.regions[0].base +
				(u32) memblock.memory.regions[0].size;
	memory_size = memory_end - memory_start;

	mm_cmdline_setup(); /* FIXME parse args from command line - not used */
+0 −7
Original line number Diff line number Diff line
@@ -5,11 +5,4 @@

#define MEMBLOCK_DBG(fmt...) udbg_printf(fmt)

#ifdef CONFIG_PPC32
extern phys_addr_t lowmem_end_addr;
#define MEMBLOCK_REAL_LIMIT	lowmem_end_addr
#else
#define MEMBLOCK_REAL_LIMIT	0
#endif

#endif /* _ASM_POWERPC_MEMBLOCK_H */
Loading