Lines Matching refs:cm

79 	struct cpumap *cm = this_cpu_ptr(m->maps);  in irq_matrix_online()  local
81 BUG_ON(cm->online); in irq_matrix_online()
83 if (!cm->initialized) { in irq_matrix_online()
84 cm->available = m->alloc_size; in irq_matrix_online()
85 cm->available -= cm->managed + m->systembits_inalloc; in irq_matrix_online()
86 cm->initialized = true; in irq_matrix_online()
88 m->global_available += cm->available; in irq_matrix_online()
89 cm->online = true; in irq_matrix_online()
100 struct cpumap *cm = this_cpu_ptr(m->maps); in irq_matrix_offline() local
103 m->global_available -= cm->available; in irq_matrix_offline()
104 cm->online = false; in irq_matrix_offline()
109 static unsigned int matrix_alloc_area(struct irq_matrix *m, struct cpumap *cm, in matrix_alloc_area() argument
115 bitmap_or(m->scratch_map, cm->managed_map, m->system_map, end); in matrix_alloc_area()
116 bitmap_or(m->scratch_map, m->scratch_map, cm->alloc_map, end); in matrix_alloc_area()
121 bitmap_set(cm->managed_map, area, num); in matrix_alloc_area()
123 bitmap_set(cm->alloc_map, area, num); in matrix_alloc_area()
141 struct cpumap *cm = this_cpu_ptr(m->maps); in irq_matrix_assign_system() local
148 BUG_ON(!test_and_clear_bit(bit, cm->alloc_map)); in irq_matrix_assign_system()
149 cm->allocated--; in irq_matrix_assign_system()
172 struct cpumap *cm = per_cpu_ptr(m->maps, cpu); in irq_matrix_reserve_managed() local
175 bit = matrix_alloc_area(m, cm, 1, true); in irq_matrix_reserve_managed()
178 cm->managed++; in irq_matrix_reserve_managed()
179 if (cm->online) { in irq_matrix_reserve_managed()
180 cm->available--; in irq_matrix_reserve_managed()
183 trace_irq_matrix_reserve_managed(bit, cpu, m, cm); in irq_matrix_reserve_managed()
213 struct cpumap *cm = per_cpu_ptr(m->maps, cpu); in irq_matrix_remove_managed() local
216 if (WARN_ON_ONCE(!cm->managed)) in irq_matrix_remove_managed()
220 bitmap_andnot(m->scratch_map, cm->managed_map, cm->alloc_map, end); in irq_matrix_remove_managed()
226 clear_bit(bit, cm->managed_map); in irq_matrix_remove_managed()
228 cm->managed--; in irq_matrix_remove_managed()
229 if (cm->online) { in irq_matrix_remove_managed()
230 cm->available++; in irq_matrix_remove_managed()
233 trace_irq_matrix_remove_managed(bit, cpu, m, cm); in irq_matrix_remove_managed()
244 struct cpumap *cm = per_cpu_ptr(m->maps, cpu); in irq_matrix_alloc_managed() local
248 bitmap_andnot(m->scratch_map, cm->managed_map, cm->alloc_map, end); in irq_matrix_alloc_managed()
252 set_bit(bit, cm->alloc_map); in irq_matrix_alloc_managed()
253 cm->allocated++; in irq_matrix_alloc_managed()
255 trace_irq_matrix_alloc_managed(bit, cpu, m, cm); in irq_matrix_alloc_managed()
268 struct cpumap *cm = this_cpu_ptr(m->maps); in irq_matrix_assign() local
272 if (WARN_ON_ONCE(test_and_set_bit(bit, cm->alloc_map))) in irq_matrix_assign()
274 cm->allocated++; in irq_matrix_assign()
276 cm->available--; in irq_matrix_assign()
278 trace_irq_matrix_assign(bit, smp_processor_id(), m, cm); in irq_matrix_assign()
326 struct cpumap *cm; in irq_matrix_alloc() local
331 cm = per_cpu_ptr(m->maps, cpu); in irq_matrix_alloc()
333 if (!cm->online || cm->available <= maxavl) in irq_matrix_alloc()
337 maxavl = cm->available; in irq_matrix_alloc()
341 cm = per_cpu_ptr(m->maps, best_cpu); in irq_matrix_alloc()
342 bit = matrix_alloc_area(m, cm, 1, false); in irq_matrix_alloc()
344 cm->allocated++; in irq_matrix_alloc()
345 cm->available--; in irq_matrix_alloc()
351 trace_irq_matrix_alloc(bit, best_cpu, m, cm); in irq_matrix_alloc()
369 struct cpumap *cm = per_cpu_ptr(m->maps, cpu); in irq_matrix_free() local
374 clear_bit(bit, cm->alloc_map); in irq_matrix_free()
375 cm->allocated--; in irq_matrix_free()
377 if (cm->online) in irq_matrix_free()
381 cm->available++; in irq_matrix_free()
382 if (cm->online) in irq_matrix_free()
385 trace_irq_matrix_free(bit, cpu, m, cm); in irq_matrix_free()
396 struct cpumap *cm = this_cpu_ptr(m->maps); in irq_matrix_available() local
400 return m->global_available - cm->available; in irq_matrix_available()
420 struct cpumap *cm = this_cpu_ptr(m->maps); in irq_matrix_allocated() local
422 return cm->allocated; in irq_matrix_allocated()
448 struct cpumap *cm = per_cpu_ptr(m->maps, cpu); in irq_matrix_debug_show() local
451 cpu, cm->available, cm->managed, cm->allocated, in irq_matrix_debug_show()
452 m->matrix_bits, cm->alloc_map); in irq_matrix_debug_show()