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

Commit b9709456 authored by David S. Miller's avatar David S. Miller
Browse files

[SPARC64]: Call real_setup_per_cpu_areas() earlier and use lmb_alloc().



We have to do it like this before we can move the PROM and MDESC device
tree code over to using lmb_alloc().

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9422273b
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@
#include <linux/cache.h>
#include <linux/jiffies.h>
#include <linux/profile.h>
#include <linux/bootmem.h>
#include <linux/lmb.h>

#include <asm/head.h>
#include <asm/ptrace.h>
@@ -1431,7 +1431,7 @@ EXPORT_SYMBOL(__per_cpu_shift);

void __init real_setup_per_cpu_areas(void)
{
	unsigned long goal, size, i;
	unsigned long paddr, goal, size, i;
	char *ptr;

	/* Copy section for each CPU (we discard the original) */
@@ -1441,8 +1441,13 @@ void __init real_setup_per_cpu_areas(void)
	for (size = PAGE_SIZE; size < goal; size <<= 1UL)
		__per_cpu_shift++;

	ptr = alloc_bootmem_pages(size * NR_CPUS);
	paddr = lmb_alloc(size * NR_CPUS, PAGE_SIZE);
	if (!paddr) {
		prom_printf("Cannot allocate per-cpu memory.\n");
		prom_halt();
	}

	ptr = __va(paddr);
	__per_cpu_base = ptr - __per_cpu_start;

	for (i = 0; i < NR_CPUS; i++, ptr += size)
+6 −2
Original line number Diff line number Diff line
@@ -1208,6 +1208,12 @@ void __init paging_init(void)
	if (tlb_type == hypervisor)
		sun4v_ktsb_register();

	/* We must setup the per-cpu areas before we pull in the
	 * PROM and the MDESC.  The code there fills in cpu and
	 * other information into per-cpu data structures.
	 */
	real_setup_per_cpu_areas();

	/* Setup bootmem... */
	pages_avail = 0;
	last_valid_pfn = end_pfn = bootmem_init(&pages_avail, phys_base);
@@ -1216,8 +1222,6 @@ void __init paging_init(void)

	kernel_physical_mapping_init();

	real_setup_per_cpu_areas();

	prom_build_devicetree();

	if (tlb_type == hypervisor)