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

Commit 8757ae23 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'microblaze-4.16-rc6' of git://git.monstr.eu/linux-2.6-microblaze

Pull microblaze fixes from Michal Simek:

 - Use NO_BOOTMEM to fix boot issue

 - Fix opt lib endian dependencies

* tag 'microblaze-4.16-rc6' of git://git.monstr.eu/linux-2.6-microblaze:
  microblaze: switch to NO_BOOTMEM
  microblaze: remove unused alloc_maybe_bootmem
  microblaze: Setup dependencies for ASM optimized lib functions
parents 1660a76a 101646a2
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ config MICROBLAZE
	select HAVE_FTRACE_MCOUNT_RECORD
	select HAVE_FUNCTION_GRAPH_TRACER
	select HAVE_FUNCTION_TRACER
	select NO_BOOTMEM
	select HAVE_MEMBLOCK
	select HAVE_MEMBLOCK_NODE_MAP
	select HAVE_OPROFILE
+1 −1
Original line number Diff line number Diff line
@@ -8,7 +8,6 @@ menu "Platform options"

config OPT_LIB_FUNCTION
	bool "Optimalized lib function"
	depends on CPU_LITTLE_ENDIAN
	default y
	help
	  Allows turn on optimalized library function (memcpy and memmove).
@@ -21,6 +20,7 @@ config OPT_LIB_FUNCTION
config OPT_LIB_ASM
	bool "Optimalized lib function ASM"
	depends on OPT_LIB_FUNCTION && (XILINX_MICROBLAZE0_USE_BARREL = 1)
	depends on CPU_BIG_ENDIAN
	default n
	help
	  Allows turn on optimalized library function (memcpy and memmove).
+0 −1
Original line number Diff line number Diff line
@@ -44,7 +44,6 @@ void machine_shutdown(void);
void machine_halt(void);
void machine_power_off(void);

extern void *alloc_maybe_bootmem(size_t size, gfp_t mask);
extern void *zalloc_maybe_bootmem(size_t size, gfp_t mask);

# endif /* __ASSEMBLY__ */
+0 −4
Original line number Diff line number Diff line
@@ -29,10 +29,6 @@
 *	between mem locations with size of xfer spec'd in bytes
 */

#ifdef __MICROBLAZEEL__
#error Microblaze LE not support ASM optimized lib func. Disable OPT_LIB_ASM.
#endif

#include <linux/linkage.h>
	.text
	.globl	memcpy
+6 −58
Original line number Diff line number Diff line
@@ -32,9 +32,6 @@ int mem_init_done;
#ifndef CONFIG_MMU
unsigned int __page_offset;
EXPORT_SYMBOL(__page_offset);

#else
static int init_bootmem_done;
#endif /* CONFIG_MMU */

char *klimit = _end;
@@ -117,7 +114,6 @@ static void __init paging_init(void)

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

#ifndef CONFIG_MMU
@@ -174,17 +170,6 @@ void __init setup_memory(void)
	pr_info("%s: max_low_pfn: %#lx\n", __func__, max_low_pfn);
	pr_info("%s: max_pfn: %#lx\n", __func__, max_pfn);

	/*
	 * Find an area to use for the bootmem bitmap.
	 * We look for the first area which is at least
	 * 128kB in length (128kB is enough for a bitmap
	 * for 4GB of memory, using 4kB pages), plus 1 page
	 * (in case the address isn't page-aligned).
	 */
	map_size = init_bootmem_node(NODE_DATA(0),
		PFN_UP(TOPHYS((u32)klimit)), min_low_pfn, max_low_pfn);
	memblock_reserve(PFN_UP(TOPHYS((u32)klimit)) << PAGE_SHIFT, map_size);

	/* Add active regions with valid PFNs */
	for_each_memblock(memory, reg) {
		unsigned long start_pfn, end_pfn;
@@ -196,32 +181,9 @@ void __init setup_memory(void)
				  &memblock.memory, 0);
	}

	/* free bootmem is whole main memory */
	free_bootmem_with_active_regions(0, max_low_pfn);

	/* reserve allocate blocks */
	for_each_memblock(reserved, reg) {
		unsigned long top = reg->base + reg->size - 1;

		pr_debug("reserved - 0x%08x-0x%08x, %lx, %lx\n",
			 (u32) reg->base, (u32) reg->size, top,
						memory_start + lowmem_size - 1);

		if (top <= (memory_start + lowmem_size - 1)) {
			reserve_bootmem(reg->base, reg->size, BOOTMEM_DEFAULT);
		} else if (reg->base < (memory_start + lowmem_size - 1)) {
			unsigned long trunc_size = memory_start + lowmem_size -
								reg->base;
			reserve_bootmem(reg->base, trunc_size, BOOTMEM_DEFAULT);
		}
	}

	/* XXX need to clip this if using highmem? */
	sparse_memory_present_with_active_regions(0);

#ifdef CONFIG_MMU
	init_bootmem_done = 1;
#endif
	paging_init();
}

@@ -398,30 +360,16 @@ asmlinkage void __init mmu_init(void)
/* This is only called until mem_init is done. */
void __init *early_get_page(void)
{
	void *p;
	if (init_bootmem_done) {
		p = alloc_bootmem_pages(PAGE_SIZE);
	} else {
	/*
	 * Mem start + kernel_tlb -> here is limit
	 * because of mem mapping from head.S
	 */
		p = __va(memblock_alloc_base(PAGE_SIZE, PAGE_SIZE,
	return __va(memblock_alloc_base(PAGE_SIZE, PAGE_SIZE,
				memory_start + kernel_tlb));
}
	return p;
}

#endif /* CONFIG_MMU */

void * __ref alloc_maybe_bootmem(size_t size, gfp_t mask)
{
	if (mem_init_done)
		return kmalloc(size, mask);
	else
		return alloc_bootmem(size);
}

void * __ref zalloc_maybe_bootmem(size_t size, gfp_t mask)
{
	void *p;