|
13 | 13 | #include "coresight-trace-id.h"
|
14 | 14 |
|
15 | 15 | /* Default trace ID map. Used in sysfs mode and for system sources */
|
16 |
| -static struct coresight_trace_id_map id_map_default; |
| 16 | +static DEFINE_PER_CPU(atomic_t, id_map_default_cpu_ids) = ATOMIC_INIT(0); |
| 17 | +static struct coresight_trace_id_map id_map_default = { |
| 18 | + .cpu_map = &id_map_default_cpu_ids |
| 19 | +}; |
17 | 20 |
|
18 |
| -/* maintain a record of the mapping of IDs and pending releases per cpu */ |
19 |
| -static DEFINE_PER_CPU(atomic_t, cpu_id) = ATOMIC_INIT(0); |
| 21 | +/* maintain a record of the pending releases per cpu */ |
20 | 22 | static cpumask_t cpu_id_release_pending;
|
21 | 23 |
|
22 | 24 | /* perf session active counter */
|
@@ -49,7 +51,7 @@ static void coresight_trace_id_dump_table(struct coresight_trace_id_map *id_map,
|
49 | 51 | /* unlocked read of current trace ID value for given CPU */
|
50 | 52 | static int _coresight_trace_id_read_cpu_id(int cpu, struct coresight_trace_id_map *id_map)
|
51 | 53 | {
|
52 |
| - return atomic_read(&per_cpu(cpu_id, cpu)); |
| 54 | + return atomic_read(per_cpu_ptr(id_map->cpu_map, cpu)); |
53 | 55 | }
|
54 | 56 |
|
55 | 57 | /* look for next available odd ID, return 0 if none found */
|
@@ -145,7 +147,7 @@ static void coresight_trace_id_release_all_pending(void)
|
145 | 147 | clear_bit(bit, id_map->pend_rel_ids);
|
146 | 148 | }
|
147 | 149 | for_each_cpu(cpu, &cpu_id_release_pending) {
|
148 |
| - atomic_set(&per_cpu(cpu_id, cpu), 0); |
| 150 | + atomic_set(per_cpu_ptr(id_map_default.cpu_map, cpu), 0); |
149 | 151 | cpumask_clear_cpu(cpu, &cpu_id_release_pending);
|
150 | 152 | }
|
151 | 153 | spin_unlock_irqrestore(&id_map_lock, flags);
|
@@ -181,7 +183,7 @@ static int _coresight_trace_id_get_cpu_id(int cpu, struct coresight_trace_id_map
|
181 | 183 | goto get_cpu_id_out_unlock;
|
182 | 184 |
|
183 | 185 | /* allocate the new id to the cpu */
|
184 |
| - atomic_set(&per_cpu(cpu_id, cpu), id); |
| 186 | + atomic_set(per_cpu_ptr(id_map->cpu_map, cpu), id); |
185 | 187 |
|
186 | 188 | get_cpu_id_clr_pend:
|
187 | 189 | /* we are (re)using this ID - so ensure it is not marked for release */
|
@@ -215,7 +217,7 @@ static void _coresight_trace_id_put_cpu_id(int cpu, struct coresight_trace_id_ma
|
215 | 217 | } else {
|
216 | 218 | /* otherwise clear id */
|
217 | 219 | coresight_trace_id_free(id, id_map);
|
218 |
| - atomic_set(&per_cpu(cpu_id, cpu), 0); |
| 220 | + atomic_set(per_cpu_ptr(id_map->cpu_map, cpu), 0); |
219 | 221 | }
|
220 | 222 |
|
221 | 223 | spin_unlock_irqrestore(&id_map_lock, flags);
|
|
0 commit comments