Loading...
Note: File does not exist in v3.5.6.
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 */