Commit b63a07d6 authored by Mike Rapoport's avatar Mike Rapoport Committed by Linus Torvalds
Browse files

arch: simplify several early memory allocations

There are several early memory allocations in arch/ code that use
memblock_phys_alloc() to allocate memory, convert the returned physical
address to the virtual address and then set the allocated memory to
zero.

Exactly the same behaviour can be achieved simply by calling
memblock_alloc(): it allocates the memory in the same way as
memblock_phys_alloc(), then it performs the phys_to_virt() conversion
and clears the allocated memory.

Replace the longer sequence with a simpler call to memblock_alloc().

Link: http://lkml.kernel.org/r/1546248566-14910-6-git-send-email-rppt@linux.ibm.com


Signed-off-by: default avatarMike Rapoport <rppt@linux.ibm.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Greentime Hu <green.hu@gmail.com>
Cc: Guan Xuetao <gxt@pku.edu.cn>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Jonas Bonn <jonas@southpole.se>
Cc: Mark Salter <msalter@redhat.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Michal Simek <monstr@monstr.eu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Rich Felker <dalias@libc.org>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Stafford Horne <shorne@gmail.com>
Cc: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
Cc: Vincent Chen <deanbo422@gmail.com>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 1e8ffd50
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -721,9 +721,7 @@ EXPORT_SYMBOL(phys_mem_access_prot);

static void __init *early_alloc_aligned(unsigned long sz, unsigned long align)
{
	void *ptr = __va(memblock_phys_alloc(sz, align));
	memset(ptr, 0, sz);
	return ptr;
	return memblock_alloc(sz, align);
}

static void __init *early_alloc(unsigned long sz)
+2 −7
Original line number Diff line number Diff line
@@ -121,8 +121,6 @@ void arch_dma_free(struct device *dev, size_t size, void *vaddr,
 */
void __init coherent_mem_init(phys_addr_t start, u32 size)
{
	phys_addr_t bitmap_phys;

	if (!size)
		return;

@@ -138,11 +136,8 @@ void __init coherent_mem_init(phys_addr_t start, u32 size)
	if (dma_size & (PAGE_SIZE - 1))
		++dma_pages;

	bitmap_phys = memblock_phys_alloc(BITS_TO_LONGS(dma_pages) * sizeof(long),
	dma_bitmap = memblock_alloc(BITS_TO_LONGS(dma_pages) * sizeof(long),
				    sizeof(long));

	dma_bitmap = phys_to_virt(bitmap_phys);
	memset(dma_bitmap, 0, dma_pages * PAGE_SIZE);
}

static void c6x_dma_sync(struct device *dev, phys_addr_t paddr, size_t size,
+4 −8
Original line number Diff line number Diff line
@@ -78,8 +78,7 @@ static void __init map_ram(void)
		}

		/* Alloc one page for holding PTE's... */
		pte = (pte_t *) __va(memblock_phys_alloc(PAGE_SIZE, PAGE_SIZE));
		memset(pte, 0, PAGE_SIZE);
		pte = memblock_alloc(PAGE_SIZE, PAGE_SIZE);
		set_pmd(pme, __pmd(__pa(pte) + _PAGE_KERNEL_TABLE));

		/* Fill the newly allocated page with PTE'S */
@@ -111,8 +110,7 @@ static void __init fixedrange_init(void)
	pgd = swapper_pg_dir + pgd_index(vaddr);
	pud = pud_offset(pgd, vaddr);
	pmd = pmd_offset(pud, vaddr);
	fixmap_pmd_p = (pmd_t *) __va(memblock_phys_alloc(PAGE_SIZE, PAGE_SIZE));
	memset(fixmap_pmd_p, 0, PAGE_SIZE);
	fixmap_pmd_p = memblock_alloc(PAGE_SIZE, PAGE_SIZE);
	set_pmd(pmd, __pmd(__pa(fixmap_pmd_p) + _PAGE_KERNEL_TABLE));

#ifdef CONFIG_HIGHMEM
@@ -124,8 +122,7 @@ static void __init fixedrange_init(void)
	pgd = swapper_pg_dir + pgd_index(vaddr);
	pud = pud_offset(pgd, vaddr);
	pmd = pmd_offset(pud, vaddr);
	pte = (pte_t *) __va(memblock_phys_alloc(PAGE_SIZE, PAGE_SIZE));
	memset(pte, 0, PAGE_SIZE);
	pte = memblock_alloc(PAGE_SIZE, PAGE_SIZE);
	set_pmd(pmd, __pmd(__pa(pte) + _PAGE_KERNEL_TABLE));
	pkmap_page_table = pte;
#endif /* CONFIG_HIGHMEM */
@@ -150,8 +147,7 @@ void __init paging_init(void)
	fixedrange_init();

	/* allocate space for empty_zero_page */
	zero_page = __va(memblock_phys_alloc(PAGE_SIZE, PAGE_SIZE));
	memset(zero_page, 0, PAGE_SIZE);
	zero_page = memblock_alloc(PAGE_SIZE, PAGE_SIZE);
	zone_sizes_init();

	empty_zero_page = virt_to_page(zero_page);
+2 −2
Original line number Diff line number Diff line
@@ -459,8 +459,8 @@ void __init smp_setup_cpu_maps(void)

	DBG("smp_setup_cpu_maps()\n");

	cpu_to_phys_id = __va(memblock_phys_alloc(nr_cpu_ids * sizeof(u32), __alignof__(u32)));
	memset(cpu_to_phys_id, 0, nr_cpu_ids * sizeof(u32));
	cpu_to_phys_id = memblock_alloc(nr_cpu_ids * sizeof(u32),
					__alignof__(u32));

	for_each_node_by_type(dn, "cpu") {
		const __be32 *intserv;
+1 −2
Original line number Diff line number Diff line
@@ -211,8 +211,7 @@ void __init MMU_init_hw(void)
	 * Find some memory for the hash table.
	 */
	if ( ppc_md.progress ) ppc_md.progress("hash:find piece", 0x322);
	Hash = __va(memblock_phys_alloc(Hash_size, Hash_size));
	memset(Hash, 0, Hash_size);
	Hash = memblock_alloc(Hash_size, Hash_size);
	_SDR1 = __pa(Hash) | SDR1_LOW_BITS;

	Hash_end = (struct hash_pte *) ((unsigned long)Hash + Hash_size);
Loading