1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef _LINUX_NUMA_H 3*4882a593Smuzhiyun #define _LINUX_NUMA_H 4*4882a593Smuzhiyun #include <linux/types.h> 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #ifdef CONFIG_NODES_SHIFT 7*4882a593Smuzhiyun #define NODES_SHIFT CONFIG_NODES_SHIFT 8*4882a593Smuzhiyun #else 9*4882a593Smuzhiyun #define NODES_SHIFT 0 10*4882a593Smuzhiyun #endif 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #define MAX_NUMNODES (1 << NODES_SHIFT) 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #define NUMA_NO_NODE (-1) 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun /* optionally keep NUMA memory info available post init */ 17*4882a593Smuzhiyun #ifdef CONFIG_NUMA_KEEP_MEMINFO 18*4882a593Smuzhiyun #define __initdata_or_meminfo 19*4882a593Smuzhiyun #else 20*4882a593Smuzhiyun #define __initdata_or_meminfo __initdata 21*4882a593Smuzhiyun #endif 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #ifdef CONFIG_NUMA 24*4882a593Smuzhiyun #include <linux/printk.h> 25*4882a593Smuzhiyun #include <asm/sparsemem.h> 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun /* Generic implementation available */ 28*4882a593Smuzhiyun int numa_map_to_online_node(int node); 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun #ifndef memory_add_physaddr_to_nid memory_add_physaddr_to_nid(u64 start)31*4882a593Smuzhiyunstatic inline int memory_add_physaddr_to_nid(u64 start) 32*4882a593Smuzhiyun { 33*4882a593Smuzhiyun pr_info_once("Unknown online node for memory at 0x%llx, assuming node 0\n", 34*4882a593Smuzhiyun start); 35*4882a593Smuzhiyun return 0; 36*4882a593Smuzhiyun } 37*4882a593Smuzhiyun #endif 38*4882a593Smuzhiyun #ifndef phys_to_target_node phys_to_target_node(u64 start)39*4882a593Smuzhiyunstatic inline int phys_to_target_node(u64 start) 40*4882a593Smuzhiyun { 41*4882a593Smuzhiyun pr_info_once("Unknown target node for memory at 0x%llx, assuming node 0\n", 42*4882a593Smuzhiyun start); 43*4882a593Smuzhiyun return 0; 44*4882a593Smuzhiyun } 45*4882a593Smuzhiyun #endif 46*4882a593Smuzhiyun #else /* !CONFIG_NUMA */ numa_map_to_online_node(int node)47*4882a593Smuzhiyunstatic inline int numa_map_to_online_node(int node) 48*4882a593Smuzhiyun { 49*4882a593Smuzhiyun return NUMA_NO_NODE; 50*4882a593Smuzhiyun } memory_add_physaddr_to_nid(u64 start)51*4882a593Smuzhiyunstatic inline int memory_add_physaddr_to_nid(u64 start) 52*4882a593Smuzhiyun { 53*4882a593Smuzhiyun return 0; 54*4882a593Smuzhiyun } phys_to_target_node(u64 start)55*4882a593Smuzhiyunstatic inline int phys_to_target_node(u64 start) 56*4882a593Smuzhiyun { 57*4882a593Smuzhiyun return 0; 58*4882a593Smuzhiyun } 59*4882a593Smuzhiyun #endif 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun #endif /* _LINUX_NUMA_H */ 62