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 Gordeevvoid __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