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

Commit 0edcf8d6 authored by Ingo Molnar's avatar Ingo Molnar
Browse files

Merge branch 'tj-percpu' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/percpu

Conflicts:
	arch/x86/include/asm/pgtable.h
parents 87b20307 40150d37
Loading
Loading
Loading
Loading
+13 −7
Original line number Diff line number Diff line
@@ -189,9 +189,21 @@ callback_init(void * kernel_end)

	if (alpha_using_srm) {
		static struct vm_struct console_remap_vm;
		unsigned long vaddr = VMALLOC_START;
		unsigned long nr_pages = 0;
		unsigned long vaddr;
		unsigned long i, j;

		/* calculate needed size */
		for (i = 0; i < crb->map_entries; ++i)
			nr_pages += crb->map[i].count;

		/* register the vm area */
		console_remap_vm.flags = VM_ALLOC;
		console_remap_vm.size = nr_pages << PAGE_SHIFT;
		vm_area_register_early(&console_remap_vm, PAGE_SIZE);

		vaddr = (unsigned long)consle_remap_vm.addr;

		/* Set up the third level PTEs and update the virtual
		   addresses of the CRB entries.  */
		for (i = 0; i < crb->map_entries; ++i) {
@@ -213,12 +225,6 @@ callback_init(void * kernel_end)
				vaddr += PAGE_SIZE;
			}
		}

		/* Let vmalloc know that we've allocated some space.  */
		console_remap_vm.flags = VM_ALLOC;
		console_remap_vm.addr = (void *) VMALLOC_START;
		console_remap_vm.size = vaddr - VMALLOC_START;
		vmlist = &console_remap_vm;
	}

	callback_init_done = 1;
+1 −1
Original line number Diff line number Diff line
@@ -181,7 +181,7 @@ source "kernel/Kconfig.preempt"
config QUICKLIST
	def_bool y

config HAVE_ARCH_BOOTMEM_NODE
config HAVE_ARCH_BOOTMEM
	def_bool n

config ARCH_HAVE_MEMORY_PRESENT
+4 −1
Original line number Diff line number Diff line
@@ -135,6 +135,9 @@ config ARCH_HAS_CACHE_LINE_SIZE
config HAVE_SETUP_PER_CPU_AREA
	def_bool y

config HAVE_DYNAMIC_PER_CPU_AREA
	def_bool y

config HAVE_CPUMASK_OF_CPU_MAP
	def_bool X86_64_SMP

@@ -1122,7 +1125,7 @@ config NODES_SHIFT
	  Specify the maximum number of NUMA Nodes available on the target
	  system.  Increases memory reserved to accomodate various tables.

config HAVE_ARCH_BOOTMEM_NODE
config HAVE_ARCH_BOOTMEM
	def_bool y
	depends on X86_32 && NUMA

+5 −38
Original line number Diff line number Diff line
@@ -91,45 +91,12 @@ static inline int pfn_valid(int pfn)
#endif /* CONFIG_DISCONTIGMEM */

#ifdef CONFIG_NEED_MULTIPLE_NODES

/*
 * Following are macros that are specific to this numa platform.
 */
#define reserve_bootmem(addr, size, flags) \
	reserve_bootmem_node(NODE_DATA(0), (addr), (size), (flags))
#define alloc_bootmem(x) \
	__alloc_bootmem_node(NODE_DATA(0), (x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
#define alloc_bootmem_nopanic(x) \
	__alloc_bootmem_node_nopanic(NODE_DATA(0), (x), SMP_CACHE_BYTES, \
				__pa(MAX_DMA_ADDRESS))
#define alloc_bootmem_low(x) \
	__alloc_bootmem_node(NODE_DATA(0), (x), SMP_CACHE_BYTES, 0)
#define alloc_bootmem_pages(x) \
	__alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
#define alloc_bootmem_pages_nopanic(x) \
	__alloc_bootmem_node_nopanic(NODE_DATA(0), (x), PAGE_SIZE, \
				__pa(MAX_DMA_ADDRESS))
#define alloc_bootmem_low_pages(x) \
	__alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE, 0)
#define alloc_bootmem_node(pgdat, x)					\
({									\
	struct pglist_data  __maybe_unused			\
				*__alloc_bootmem_node__pgdat = (pgdat);	\
	__alloc_bootmem_node(NODE_DATA(0), (x), SMP_CACHE_BYTES,	\
						__pa(MAX_DMA_ADDRESS));	\
})
#define alloc_bootmem_pages_node(pgdat, x)				\
({									\
	struct pglist_data  __maybe_unused			\
				*__alloc_bootmem_node__pgdat = (pgdat);	\
	__alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE,		\
						__pa(MAX_DMA_ADDRESS));	\
})
#define alloc_bootmem_low_pages_node(pgdat, x)				\
/* always use node 0 for bootmem on this numa platform */
#define alloc_bootmem_core(__bdata, size, align, goal, limit)		\
({									\
	struct pglist_data  __maybe_unused			\
				*__alloc_bootmem_node__pgdat = (pgdat);	\
	__alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE, 0);		\
	bootmem_data_t __maybe_unused *	__abm_bdata_dummy = (__bdata);	\
	__alloc_bootmem_core(NODE_DATA(0)->bdata,			\
			     (size), (align), (goal), (limit));		\
})
#endif /* CONFIG_NEED_MULTIPLE_NODES */

+8 −0
Original line number Diff line number Diff line
@@ -43,6 +43,14 @@
#else /* ...!ASSEMBLY */

#include <linux/stringify.h>
#include <asm/sections.h>

#define __addr_to_pcpu_ptr(addr)					\
	(void *)((unsigned long)(addr) - (unsigned long)pcpu_base_addr	\
		 + (unsigned long)__per_cpu_start)
#define __pcpu_ptr_to_addr(ptr)						\
	(void *)((unsigned long)(ptr) + (unsigned long)pcpu_base_addr	\
		 - (unsigned long)__per_cpu_start)

#ifdef CONFIG_SMP
#define __percpu_arg(x)		"%%"__stringify(__percpu_seg)":%P" #x
Loading