Lines Matching full:vec

130 	struct imsic_vector *vec, *tvec, *mvec;  in __imsic_local_sync()  local
139 vec = &lpriv->vectors[i]; in __imsic_local_sync()
141 if (READ_ONCE(vec->enable)) in __imsic_local_sync()
150 mvec = READ_ONCE(vec->move_prev); in __imsic_local_sync()
161 WRITE_ONCE(vec->move_prev, NULL); in __imsic_local_sync()
170 mvec = READ_ONCE(vec->move_next); in __imsic_local_sync()
179 tvec = vec->local_id == mvec->local_id ? in __imsic_local_sync()
182 if (tvec && !irq_can_move_in_process_context(irq_get_irq_data(vec->irq)) && in __imsic_local_sync()
194 if (__imsic_id_read_clear_pending(vec->local_id)) { in __imsic_local_sync()
199 WRITE_ONCE(vec->move_next, NULL); in __imsic_local_sync()
200 imsic_vector_free(vec); in __imsic_local_sync()
292 void imsic_vector_mask(struct imsic_vector *vec) in imsic_vector_mask() argument
296 lpriv = per_cpu_ptr(imsic->lpriv, vec->cpu); in imsic_vector_mask()
297 if (WARN_ON_ONCE(&lpriv->vectors[vec->local_id] != vec)) in imsic_vector_mask()
307 WRITE_ONCE(vec->enable, false); in imsic_vector_mask()
308 bitmap_set(lpriv->dirty_bitmap, vec->local_id, 1); in imsic_vector_mask()
309 __imsic_remote_sync(lpriv, vec->cpu); in imsic_vector_mask()
314 void imsic_vector_unmask(struct imsic_vector *vec) in imsic_vector_unmask() argument
318 lpriv = per_cpu_ptr(imsic->lpriv, vec->cpu); in imsic_vector_unmask()
319 if (WARN_ON_ONCE(&lpriv->vectors[vec->local_id] != vec)) in imsic_vector_unmask()
329 WRITE_ONCE(vec->enable, true); in imsic_vector_unmask()
330 bitmap_set(lpriv->dirty_bitmap, vec->local_id, 1); in imsic_vector_unmask()
331 __imsic_remote_sync(lpriv, vec->cpu); in imsic_vector_unmask()
336 void imsic_vector_force_move_cleanup(struct imsic_vector *vec) in imsic_vector_force_move_cleanup() argument
342 lpriv = per_cpu_ptr(imsic->lpriv, vec->cpu); in imsic_vector_force_move_cleanup()
345 mvec = READ_ONCE(vec->move_prev); in imsic_vector_force_move_cleanup()
346 WRITE_ONCE(vec->move_prev, NULL); in imsic_vector_force_move_cleanup()
354 struct imsic_vector *vec, bool is_old_vec, in imsic_vector_move_update() argument
363 enabled = READ_ONCE(vec->enable); in imsic_vector_move_update()
364 WRITE_ONCE(vec->enable, new_enable); in imsic_vector_move_update()
366 WRITE_ONCE(vec->move_next, move_vec); in imsic_vector_move_update()
368 WRITE_ONCE(vec->move_prev, move_vec); in imsic_vector_move_update()
371 bitmap_set(lpriv->dirty_bitmap, vec->local_id, 1); in imsic_vector_move_update()
372 __imsic_remote_sync(lpriv, vec->cpu); in imsic_vector_move_update()
406 void imsic_vector_debug_show(struct seq_file *m, struct imsic_vector *vec, int ind) in imsic_vector_debug_show() argument
412 lpriv = per_cpu_ptr(imsic->lpriv, vec->cpu); in imsic_vector_debug_show()
413 if (WARN_ON_ONCE(&lpriv->vectors[vec->local_id] != vec)) in imsic_vector_debug_show()
416 is_enabled = imsic_vector_isenabled(vec); in imsic_vector_debug_show()
417 mvec = imsic_vector_get_move(vec); in imsic_vector_debug_show()
419 seq_printf(m, "%*starget_cpu : %5u\n", ind, "", vec->cpu); in imsic_vector_debug_show()
420 seq_printf(m, "%*starget_local_id : %5u\n", ind, "", vec->local_id); in imsic_vector_debug_show()
422 (!imsic_noipi && vec->local_id <= IMSIC_IPI_ID) ? 1 : 0); in imsic_vector_debug_show()
449 struct imsic_vector *vec = NULL; in imsic_vector_alloc() local
462 vec = &lpriv->vectors[local_id]; in imsic_vector_alloc()
463 vec->irq = irq; in imsic_vector_alloc()
464 vec->enable = false; in imsic_vector_alloc()
465 vec->move_next = NULL; in imsic_vector_alloc()
466 vec->move_prev = NULL; in imsic_vector_alloc()
468 return vec; in imsic_vector_alloc()
471 void imsic_vector_free(struct imsic_vector *vec) in imsic_vector_free() argument
476 vec->irq = 0; in imsic_vector_free()
477 irq_matrix_free(imsic->matrix, vec->cpu, vec->local_id, false); in imsic_vector_free()
500 struct imsic_vector *vec; in imsic_local_init() local
532 vec = &lpriv->vectors[i]; in imsic_local_init()
533 vec->cpu = cpu; in imsic_local_init()
534 vec->local_id = i; in imsic_local_init()
535 vec->irq = 0; in imsic_local_init()