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