Lines Matching refs:cm

72 		struct cpumap *cm = per_cpu_ptr(m->maps, cpu);  in irq_alloc_matrix()  local
74 cm->managed_map = &cm->alloc_map[matrix_size]; in irq_alloc_matrix()
86 struct cpumap *cm = this_cpu_ptr(m->maps); in irq_matrix_online() local
88 BUG_ON(cm->online); in irq_matrix_online()
90 if (!cm->initialized) { in irq_matrix_online()
91 cm->available = m->alloc_size; in irq_matrix_online()
92 cm->available -= cm->managed + m->systembits_inalloc; in irq_matrix_online()
93 cm->initialized = true; in irq_matrix_online()
95 m->global_available += cm->available; in irq_matrix_online()
96 cm->online = true; in irq_matrix_online()
107 struct cpumap *cm = this_cpu_ptr(m->maps); in irq_matrix_offline() local
110 m->global_available -= cm->available; in irq_matrix_offline()
111 cm->online = false; in irq_matrix_offline()
116 static unsigned int matrix_alloc_area(struct irq_matrix *m, struct cpumap *cm, in matrix_alloc_area() argument
122 bitmap_or(m->scratch_map, cm->managed_map, m->system_map, end); in matrix_alloc_area()
123 bitmap_or(m->scratch_map, m->scratch_map, cm->alloc_map, end); in matrix_alloc_area()
128 bitmap_set(cm->managed_map, area, num); in matrix_alloc_area()
130 bitmap_set(cm->alloc_map, area, num); in matrix_alloc_area()
139 struct cpumap *cm; in matrix_find_best_cpu() local
144 cm = per_cpu_ptr(m->maps, cpu); in matrix_find_best_cpu()
146 if (!cm->online || cm->available <= maxavl) in matrix_find_best_cpu()
150 maxavl = cm->available; in matrix_find_best_cpu()
160 struct cpumap *cm; in matrix_find_best_cpu_managed() local
165 cm = per_cpu_ptr(m->maps, cpu); in matrix_find_best_cpu_managed()
167 if (!cm->online || cm->managed_allocated > allocated) in matrix_find_best_cpu_managed()
171 allocated = cm->managed_allocated; in matrix_find_best_cpu_managed()
190 struct cpumap *cm = this_cpu_ptr(m->maps); in irq_matrix_assign_system() local
197 BUG_ON(!test_and_clear_bit(bit, cm->alloc_map)); in irq_matrix_assign_system()
198 cm->allocated--; in irq_matrix_assign_system()
221 struct cpumap *cm = per_cpu_ptr(m->maps, cpu); in irq_matrix_reserve_managed() local
224 bit = matrix_alloc_area(m, cm, 1, true); in irq_matrix_reserve_managed()
227 cm->managed++; in irq_matrix_reserve_managed()
228 if (cm->online) { in irq_matrix_reserve_managed()
229 cm->available--; in irq_matrix_reserve_managed()
232 trace_irq_matrix_reserve_managed(bit, cpu, m, cm); in irq_matrix_reserve_managed()
262 struct cpumap *cm = per_cpu_ptr(m->maps, cpu); in irq_matrix_remove_managed() local
265 if (WARN_ON_ONCE(!cm->managed)) in irq_matrix_remove_managed()
269 bitmap_andnot(m->scratch_map, cm->managed_map, cm->alloc_map, end); in irq_matrix_remove_managed()
275 clear_bit(bit, cm->managed_map); in irq_matrix_remove_managed()
277 cm->managed--; in irq_matrix_remove_managed()
278 if (cm->online) { in irq_matrix_remove_managed()
279 cm->available++; in irq_matrix_remove_managed()
282 trace_irq_matrix_remove_managed(bit, cpu, m, cm); in irq_matrix_remove_managed()
296 struct cpumap *cm; in irq_matrix_alloc_managed() local
305 cm = per_cpu_ptr(m->maps, cpu); in irq_matrix_alloc_managed()
308 bitmap_andnot(m->scratch_map, cm->managed_map, cm->alloc_map, end); in irq_matrix_alloc_managed()
312 set_bit(bit, cm->alloc_map); in irq_matrix_alloc_managed()
313 cm->allocated++; in irq_matrix_alloc_managed()
314 cm->managed_allocated++; in irq_matrix_alloc_managed()
317 trace_irq_matrix_alloc_managed(bit, cpu, m, cm); in irq_matrix_alloc_managed()
330 struct cpumap *cm = this_cpu_ptr(m->maps); in irq_matrix_assign() local
334 if (WARN_ON_ONCE(test_and_set_bit(bit, cm->alloc_map))) in irq_matrix_assign()
336 cm->allocated++; in irq_matrix_assign()
338 cm->available--; in irq_matrix_assign()
340 trace_irq_matrix_assign(bit, smp_processor_id(), m, cm); in irq_matrix_assign()
387 struct cpumap *cm; in irq_matrix_alloc() local
400 cm = per_cpu_ptr(m->maps, cpu); in irq_matrix_alloc()
401 bit = matrix_alloc_area(m, cm, 1, false); in irq_matrix_alloc()
404 cm->allocated++; in irq_matrix_alloc()
405 cm->available--; in irq_matrix_alloc()
411 trace_irq_matrix_alloc(bit, cpu, m, cm); in irq_matrix_alloc()
427 struct cpumap *cm = per_cpu_ptr(m->maps, cpu); in irq_matrix_free() local
432 if (WARN_ON_ONCE(!test_and_clear_bit(bit, cm->alloc_map))) in irq_matrix_free()
435 cm->allocated--; in irq_matrix_free()
437 cm->managed_allocated--; in irq_matrix_free()
439 if (cm->online) in irq_matrix_free()
443 cm->available++; in irq_matrix_free()
444 if (cm->online) in irq_matrix_free()
447 trace_irq_matrix_free(bit, cpu, m, cm); in irq_matrix_free()
458 struct cpumap *cm = this_cpu_ptr(m->maps); in irq_matrix_available() local
462 return m->global_available - cm->available; in irq_matrix_available()
482 struct cpumap *cm = this_cpu_ptr(m->maps); in irq_matrix_allocated() local
484 return cm->allocated - cm->managed_allocated; in irq_matrix_allocated()
510 struct cpumap *cm = per_cpu_ptr(m->maps, cpu); in irq_matrix_debug_show() local
513 cpu, cm->available, cm->managed, in irq_matrix_debug_show()
514 cm->managed_allocated, cm->allocated, in irq_matrix_debug_show()
515 m->matrix_bits, cm->alloc_map); in irq_matrix_debug_show()