1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27#ifndef _LINUX_TOPOLOGY_H
28#define _LINUX_TOPOLOGY_H
29
30#include <linux/cpumask.h>
31#include <linux/bitops.h>
32#include <linux/mmzone.h>
33#include <linux/smp.h>
34
35#include <asm/topology.h>
36
37#ifndef nr_cpus_node
38#define nr_cpus_node(node) \
39 ({ \
40 cpumask_t __tmp__; \
41 __tmp__ = node_to_cpumask(node); \
42 cpus_weight(__tmp__); \
43 })
44#endif
45
46#define for_each_node_with_cpus(node) \
47 for_each_online_node(node) \
48 if (nr_cpus_node(node))
49
50#ifndef node_distance
51
52#define LOCAL_DISTANCE 10
53#define REMOTE_DISTANCE 20
54#define node_distance(from,to) ((from) == (to) ? LOCAL_DISTANCE : REMOTE_DISTANCE)
55#endif
56#ifndef PENALTY_FOR_NODE_WITH_CPUS
57#define PENALTY_FOR_NODE_WITH_CPUS (1)
58#endif
59
60
61
62
63
64
65
66
67
68
69
70
71#ifdef CONFIG_SCHED_SMT
72
73
74
75#define ARCH_HAS_SCHED_WAKE_IDLE
76
77#ifndef SD_SIBLING_INIT
78#define SD_SIBLING_INIT (struct sched_domain) { \
79 .span = CPU_MASK_NONE, \
80 .parent = NULL, \
81 .groups = NULL, \
82 .min_interval = 1, \
83 .max_interval = 2, \
84 .busy_factor = 8, \
85 .imbalance_pct = 110, \
86 .cache_hot_time = 0, \
87 .cache_nice_tries = 0, \
88 .per_cpu_gain = 25, \
89 .flags = SD_LOAD_BALANCE \
90 | SD_BALANCE_NEWIDLE \
91 | SD_BALANCE_EXEC \
92 | SD_WAKE_AFFINE \
93 | SD_WAKE_IDLE \
94 | SD_SHARE_CPUPOWER, \
95 .last_balance = jiffies, \
96 .balance_interval = 1, \
97 .nr_balance_failed = 0, \
98}
99#endif
100#endif
101
102
103#ifndef SD_CPU_INIT
104#define SD_CPU_INIT (struct sched_domain) { \
105 .span = CPU_MASK_NONE, \
106 .parent = NULL, \
107 .groups = NULL, \
108 .min_interval = 1, \
109 .max_interval = 4, \
110 .busy_factor = 64, \
111 .imbalance_pct = 125, \
112 .cache_hot_time = (5*1000000/2), \
113 .cache_nice_tries = 1, \
114 .per_cpu_gain = 100, \
115 .flags = SD_LOAD_BALANCE \
116 | SD_BALANCE_NEWIDLE \
117 | SD_BALANCE_EXEC \
118 | SD_WAKE_AFFINE \
119 | SD_WAKE_IDLE \
120 | SD_WAKE_BALANCE, \
121 .last_balance = jiffies, \
122 .balance_interval = 1, \
123 .nr_balance_failed = 0, \
124}
125#endif
126
127#ifdef CONFIG_NUMA
128#ifndef SD_NODE_INIT
129#error Please define an appropriate SD_NODE_INIT in include/asm/topology.h!!!
130#endif
131#endif
132
133#endif
134