forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
arm64, numa: Add NUMA support for arm64 platforms.
Attempt to get the memory and CPU NUMA node via of_numa. If that fails, default the dummy NUMA node and map all memory and CPUs to node 0. Tested-by: Shannon Zhao <[email protected]> Reviewed-by: Robert Richter <[email protected]> Signed-off-by: Ganapatrao Kulkarni <[email protected]> Signed-off-by: David Daney <[email protected]> Signed-off-by: Will Deacon <[email protected]>
- Loading branch information
Showing
10 changed files
with
538 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
#ifndef __ASM_MMZONE_H | ||
#define __ASM_MMZONE_H | ||
|
||
#ifdef CONFIG_NUMA | ||
|
||
#include <asm/numa.h> | ||
|
||
extern struct pglist_data *node_data[]; | ||
#define NODE_DATA(nid) (node_data[(nid)]) | ||
|
||
#endif /* CONFIG_NUMA */ | ||
#endif /* __ASM_MMZONE_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
#ifndef __ASM_NUMA_H | ||
#define __ASM_NUMA_H | ||
|
||
#include <asm/topology.h> | ||
|
||
#ifdef CONFIG_NUMA | ||
|
||
/* currently, arm64 implements flat NUMA topology */ | ||
#define parent_node(node) (node) | ||
|
||
int __node_distance(int from, int to); | ||
#define node_distance(a, b) __node_distance(a, b) | ||
|
||
extern nodemask_t numa_nodes_parsed __initdata; | ||
|
||
/* Mappings between node number and cpus on that node. */ | ||
extern cpumask_var_t node_to_cpumask_map[MAX_NUMNODES]; | ||
void numa_clear_node(unsigned int cpu); | ||
|
||
#ifdef CONFIG_DEBUG_PER_CPU_MAPS | ||
const struct cpumask *cpumask_of_node(int node); | ||
#else | ||
/* Returns a pointer to the cpumask of CPUs on Node 'node'. */ | ||
static inline const struct cpumask *cpumask_of_node(int node) | ||
{ | ||
return node_to_cpumask_map[node]; | ||
} | ||
#endif | ||
|
||
void __init arm64_numa_init(void); | ||
int __init numa_add_memblk(int nodeid, u64 start, u64 end); | ||
void __init numa_set_distance(int from, int to, int distance); | ||
void __init numa_free_distance(void); | ||
void __init early_map_cpu_to_node(unsigned int cpu, int nid); | ||
void numa_store_cpu_info(unsigned int cpu); | ||
|
||
#else /* CONFIG_NUMA */ | ||
|
||
static inline void numa_store_cpu_info(unsigned int cpu) { } | ||
static inline void arm64_numa_init(void) { } | ||
static inline void early_map_cpu_to_node(unsigned int cpu, int nid) { } | ||
|
||
#endif /* CONFIG_NUMA */ | ||
|
||
#endif /* __ASM_NUMA_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.