numa.h (1514B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Author: Jianmin Lv <lvjianmin@loongson.cn> 4 * Huacai Chen <chenhuacai@loongson.cn> 5 * 6 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited 7 */ 8 9#ifndef _ASM_LOONGARCH_NUMA_H 10#define _ASM_LOONGARCH_NUMA_H 11 12#include <linux/nodemask.h> 13 14#define NODE_ADDRSPACE_SHIFT 44 15 16#define pa_to_nid(addr) (((addr) & 0xf00000000000) >> NODE_ADDRSPACE_SHIFT) 17#define nid_to_addrbase(nid) (_ULCAST_(nid) << NODE_ADDRSPACE_SHIFT) 18 19#ifdef CONFIG_NUMA 20 21extern int numa_off; 22extern s16 __cpuid_to_node[CONFIG_NR_CPUS]; 23extern nodemask_t numa_nodes_parsed __initdata; 24 25struct numa_memblk { 26 u64 start; 27 u64 end; 28 int nid; 29}; 30 31#define NR_NODE_MEMBLKS (MAX_NUMNODES*2) 32struct numa_meminfo { 33 int nr_blks; 34 struct numa_memblk blk[NR_NODE_MEMBLKS]; 35}; 36 37extern int __init numa_add_memblk(int nodeid, u64 start, u64 end); 38 39extern void __init early_numa_add_cpu(int cpuid, s16 node); 40extern void numa_add_cpu(unsigned int cpu); 41extern void numa_remove_cpu(unsigned int cpu); 42 43static inline void numa_clear_node(int cpu) 44{ 45} 46 47static inline void set_cpuid_to_node(int cpuid, s16 node) 48{ 49 __cpuid_to_node[cpuid] = node; 50} 51 52extern int early_cpu_to_node(int cpu); 53 54#else 55 56static inline void early_numa_add_cpu(int cpuid, s16 node) { } 57static inline void numa_add_cpu(unsigned int cpu) { } 58static inline void numa_remove_cpu(unsigned int cpu) { } 59 60static inline int early_cpu_to_node(int cpu) 61{ 62 return 0; 63} 64 65#endif /* CONFIG_NUMA */ 66 67#endif /* _ASM_LOONGARCH_NUMA_H */