Lines Matching refs:adata
79 static void avecintc_sync(struct avecintc_data *adata) in avecintc_sync() argument
83 if (cpu_online(adata->prev_cpu)) { in avecintc_sync()
84 plist = per_cpu_ptr(&pending_list, adata->prev_cpu); in avecintc_sync()
85 list_add_tail(&adata->entry, &plist->head); in avecintc_sync()
86 adata->moving = 1; in avecintc_sync()
87 mp_ops.send_ipi_single(adata->prev_cpu, ACTION_CLEAR_VECTOR); in avecintc_sync()
94 struct avecintc_data *adata; in avecintc_set_affinity() local
97 adata = irq_data_get_irq_chip_data(data); in avecintc_set_affinity()
99 if (adata->moving) in avecintc_set_affinity()
102 if (cpu_online(adata->cpu) && cpumask_test_cpu(adata->cpu, dest)) in avecintc_set_affinity()
112 adata->cpu = cpu; in avecintc_set_affinity()
113 adata->vec = vector; in avecintc_set_affinity()
114 per_cpu_ptr(irq_map, adata->cpu)[adata->vec] = irq_data_to_desc(data); in avecintc_set_affinity()
115 avecintc_sync(adata); in avecintc_set_affinity()
157 struct avecintc_data *adata, *tdata; in complete_irq_moving() local
163 list_for_each_entry_safe(adata, tdata, &plist->head, entry) { in complete_irq_moving()
164 cpu = adata->prev_cpu; in complete_irq_moving()
165 vector = adata->prev_vec; in complete_irq_moving()
186 list_del(&adata->entry); in complete_irq_moving()
189 adata->moving = 0; in complete_irq_moving()
190 adata->prev_cpu = adata->cpu; in complete_irq_moving()
191 adata->prev_vec = adata->vec; in complete_irq_moving()
198 struct avecintc_data *adata = irq_data_get_irq_chip_data(d); in avecintc_compose_msi_msg() local
201 msg->address_lo = (loongarch_avec.msi_base_addr | (adata->vec & 0xff) << 4) in avecintc_compose_msi_msg()
202 | ((cpu_logical_map(adata->cpu & 0xffff)) << 12); in avecintc_compose_msi_msg()
243 static int avecintc_alloc_vector(struct irq_data *irqd, struct avecintc_data *adata) in avecintc_alloc_vector() argument
253 adata->prev_cpu = adata->cpu = cpu; in avecintc_alloc_vector()
254 adata->prev_vec = adata->vec = ret; in avecintc_alloc_vector()
255 per_cpu_ptr(irq_map, adata->cpu)[adata->vec] = irq_data_to_desc(irqd); in avecintc_alloc_vector()
265 struct avecintc_data *adata = kzalloc(sizeof(*adata), GFP_KERNEL); in avecintc_domain_alloc() local
268 if (!adata) in avecintc_domain_alloc()
271 ret = avecintc_alloc_vector(irqd, adata); in avecintc_domain_alloc()
273 kfree(adata); in avecintc_domain_alloc()
278 adata, handle_edge_irq, NULL, NULL); in avecintc_domain_alloc()
286 static void avecintc_free_vector(struct irq_data *irqd, struct avecintc_data *adata) in avecintc_free_vector() argument
290 per_cpu(irq_map, adata->cpu)[adata->vec] = NULL; in avecintc_free_vector()
291 irq_matrix_free(loongarch_avec.vector_matrix, adata->cpu, adata->vec, false); in avecintc_free_vector()
294 if (!adata->moving) in avecintc_free_vector()
297 per_cpu(irq_map, adata->prev_cpu)[adata->prev_vec] = NULL; in avecintc_free_vector()
298 irq_matrix_free(loongarch_avec.vector_matrix, adata->prev_cpu, adata->prev_vec, false); in avecintc_free_vector()
299 list_del_init(&adata->entry); in avecintc_free_vector()
310 struct avecintc_data *adata = irq_data_get_irq_chip_data(d); in avecintc_domain_free() local
312 avecintc_free_vector(d, adata); in avecintc_domain_free()
314 kfree(adata); in avecintc_domain_free()