Commit | Line | Data |
---|---|---|
dd56fdf2 | 1 | #ifndef _ASM_POWERPC_TOPOLOGY_H |
2 | #define _ASM_POWERPC_TOPOLOGY_H | |
88ced031 | 3 | #ifdef __KERNEL__ |
1da177e4 | 4 | |
1da177e4 | 5 | |
8a25a2fd | 6 | struct device; |
953039c8 JK |
7 | struct device_node; |
8 | ||
1da177e4 LT |
9 | #ifdef CONFIG_NUMA |
10 | ||
56608209 AB |
11 | /* |
12 | * Before going off node we want the VM to try and reclaim from the local | |
13 | * node. It does this if the remote distance is larger than RECLAIM_DISTANCE. | |
14 | * With the default REMOTE_DISTANCE of 20 and the default RECLAIM_DISTANCE of | |
15 | * 20, we never reclaim and go off node straight away. | |
16 | * | |
17 | * To fix this we choose a smaller value of RECLAIM_DISTANCE. | |
18 | */ | |
19 | #define RECLAIM_DISTANCE 10 | |
20 | ||
dd56fdf2 | 21 | #include <asm/mmzone.h> |
22 | ||
1da177e4 LT |
23 | static inline int cpu_to_node(int cpu) |
24 | { | |
45fb6cea | 25 | return numa_cpu_lookup_table[cpu]; |
1da177e4 LT |
26 | } |
27 | ||
28 | #define parent_node(node) (node) | |
29 | ||
c81b812a AB |
30 | #define cpumask_of_node(node) ((node) == -1 ? \ |
31 | cpu_all_mask : \ | |
25863de0 | 32 | node_to_cpumask_map[node]) |
86c6f274 | 33 | |
357518fa | 34 | struct pci_bus; |
11faa658 | 35 | #ifdef CONFIG_PCI |
357518fa | 36 | extern int pcibus_to_node(struct pci_bus *bus); |
11faa658 AB |
37 | #else |
38 | static inline int pcibus_to_node(struct pci_bus *bus) | |
39 | { | |
40 | return -1; | |
41 | } | |
42 | #endif | |
357518fa | 43 | |
86c6f274 RR |
44 | #define cpumask_of_pcibus(bus) (pcibus_to_node(bus) == -1 ? \ |
45 | cpu_all_mask : \ | |
46 | cpumask_of_node(pcibus_to_node(bus))) | |
47 | ||
41eab6f8 AB |
48 | extern int __node_distance(int, int); |
49 | #define node_distance(a, b) __node_distance(a, b) | |
50 | ||
4b703a23 AB |
51 | extern void __init dump_numa_cpu_topology(void); |
52 | ||
8a25a2fd KS |
53 | extern int sysfs_add_device_to_node(struct device *dev, int nid); |
54 | extern void sysfs_remove_device_from_node(struct device *dev, int nid); | |
953039c8 | 55 | |
39bf990e | 56 | #else |
1da177e4 | 57 | |
4b703a23 AB |
58 | static inline void dump_numa_cpu_topology(void) {} |
59 | ||
8a25a2fd | 60 | static inline int sysfs_add_device_to_node(struct device *dev, int nid) |
953039c8 JK |
61 | { |
62 | return 0; | |
63 | } | |
64 | ||
8a25a2fd | 65 | static inline void sysfs_remove_device_from_node(struct device *dev, |
953039c8 JK |
66 | int nid) |
67 | { | |
68 | } | |
aa6b5446 | 69 | #endif /* CONFIG_NUMA */ |
953039c8 | 70 | |
5d7d8072 BH |
71 | #if defined(CONFIG_NUMA) && defined(CONFIG_PPC_SPLPAR) |
72 | extern int start_topology_update(void); | |
73 | extern int stop_topology_update(void); | |
74 | #else | |
75 | static inline int start_topology_update(void) | |
76 | { | |
77 | return 0; | |
78 | } | |
79 | static inline int stop_topology_update(void) | |
80 | { | |
81 | return 0; | |
82 | } | |
83 | #endif /* CONFIG_NUMA && CONFIG_PPC_SPLPAR */ | |
84 | ||
1da177e4 LT |
85 | #include <asm-generic/topology.h> |
86 | ||
5c45bf27 SS |
87 | #ifdef CONFIG_SMP |
88 | #include <asm/cputable.h> | |
056f4faa SR |
89 | #define smt_capable() (cpu_has_feature(CPU_FTR_SMT)) |
90 | ||
91 | #ifdef CONFIG_PPC64 | |
92 | #include <asm/smp.h> | |
93 | ||
cc1ba8ea AB |
94 | #define topology_thread_cpumask(cpu) (per_cpu(cpu_sibling_map, cpu)) |
95 | #define topology_core_cpumask(cpu) (per_cpu(cpu_core_map, cpu)) | |
e9efed3b | 96 | #define topology_core_id(cpu) (cpu_to_core_id(cpu)) |
056f4faa | 97 | #endif |
5c45bf27 SS |
98 | #endif |
99 | ||
88ced031 | 100 | #endif /* __KERNEL__ */ |
dd56fdf2 | 101 | #endif /* _ASM_POWERPC_TOPOLOGY_H */ |