xref: /openbmc/linux/arch/s390/kernel/numa.c (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1*b450eeb0SAlexander Gordeev // SPDX-License-Identifier: GPL-2.0
2*b450eeb0SAlexander Gordeev /*
3*b450eeb0SAlexander Gordeev  * NUMA support for s390
4*b450eeb0SAlexander Gordeev  *
5*b450eeb0SAlexander Gordeev  * Implement NUMA core code.
6*b450eeb0SAlexander Gordeev  *
7*b450eeb0SAlexander Gordeev  * Copyright IBM Corp. 2015
8*b450eeb0SAlexander Gordeev  */
9*b450eeb0SAlexander Gordeev 
10*b450eeb0SAlexander Gordeev #include <linux/kernel.h>
11*b450eeb0SAlexander Gordeev #include <linux/mmzone.h>
12*b450eeb0SAlexander Gordeev #include <linux/cpumask.h>
13*b450eeb0SAlexander Gordeev #include <linux/memblock.h>
14*b450eeb0SAlexander Gordeev #include <linux/node.h>
15*b450eeb0SAlexander Gordeev #include <asm/numa.h>
16*b450eeb0SAlexander Gordeev 
17*b450eeb0SAlexander Gordeev struct pglist_data *node_data[MAX_NUMNODES];
18*b450eeb0SAlexander Gordeev EXPORT_SYMBOL(node_data);
19*b450eeb0SAlexander Gordeev 
numa_setup(void)20*b450eeb0SAlexander Gordeev void __init numa_setup(void)
21*b450eeb0SAlexander Gordeev {
22*b450eeb0SAlexander Gordeev 	int nid;
23*b450eeb0SAlexander Gordeev 
24*b450eeb0SAlexander Gordeev 	nodes_clear(node_possible_map);
25*b450eeb0SAlexander Gordeev 	node_set(0, node_possible_map);
26*b450eeb0SAlexander Gordeev 	node_set_online(0);
27*b450eeb0SAlexander Gordeev 	for (nid = 0; nid < MAX_NUMNODES; nid++) {
28*b450eeb0SAlexander Gordeev 		NODE_DATA(nid) = memblock_alloc(sizeof(pg_data_t), 8);
29*b450eeb0SAlexander Gordeev 		if (!NODE_DATA(nid))
30*b450eeb0SAlexander Gordeev 			panic("%s: Failed to allocate %zu bytes align=0x%x\n",
31*b450eeb0SAlexander Gordeev 			      __func__, sizeof(pg_data_t), 8);
32*b450eeb0SAlexander Gordeev 	}
33*b450eeb0SAlexander Gordeev 	NODE_DATA(0)->node_spanned_pages = memblock_end_of_DRAM() >> PAGE_SHIFT;
34*b450eeb0SAlexander Gordeev 	NODE_DATA(0)->node_id = 0;
35*b450eeb0SAlexander Gordeev }
36