Lines Matching refs:apicd

93 	struct apic_chip_data *apicd = apic_chip_data(irqd);  in irqd_cfg()  local
95 return apicd ? &apicd->hw_irq_cfg : NULL; in irqd_cfg()
106 struct apic_chip_data *apicd; in alloc_apic_chip_data() local
108 apicd = kzalloc_node(sizeof(*apicd), GFP_KERNEL, node); in alloc_apic_chip_data()
109 if (apicd) in alloc_apic_chip_data()
110 INIT_HLIST_NODE(&apicd->clist); in alloc_apic_chip_data()
111 return apicd; in alloc_apic_chip_data()
114 static void free_apic_chip_data(struct apic_chip_data *apicd) in free_apic_chip_data() argument
116 kfree(apicd); in free_apic_chip_data()
122 struct apic_chip_data *apicd = apic_chip_data(irqd); in apic_update_irq_cfg() local
126 apicd->hw_irq_cfg.vector = vector; in apic_update_irq_cfg()
127 apicd->hw_irq_cfg.dest_apicid = apic->calc_dest_apicid(cpu); in apic_update_irq_cfg()
130 apicd->hw_irq_cfg.dest_apicid); in apic_update_irq_cfg()
136 struct apic_chip_data *apicd = apic_chip_data(irqd); in apic_update_vector() local
142 trace_vector_update(irqd->irq, newvec, newcpu, apicd->vector, in apic_update_vector()
143 apicd->cpu); in apic_update_vector()
151 apicd->prev_vector = 0; in apic_update_vector()
152 if (!apicd->vector || apicd->vector == MANAGED_IRQ_SHUTDOWN_VECTOR) in apic_update_vector()
162 if (cpu_online(apicd->cpu)) { in apic_update_vector()
163 apicd->move_in_progress = true; in apic_update_vector()
164 apicd->prev_vector = apicd->vector; in apic_update_vector()
165 apicd->prev_cpu = apicd->cpu; in apic_update_vector()
167 irq_matrix_free(vector_matrix, apicd->cpu, apicd->vector, in apic_update_vector()
172 apicd->vector = newvec; in apic_update_vector()
173 apicd->cpu = newcpu; in apic_update_vector()
188 struct apic_chip_data *apicd = apic_chip_data(irqd); in reserve_managed_vector() local
193 apicd->is_managed = true; in reserve_managed_vector()
202 struct apic_chip_data *apicd = apic_chip_data(irqd); in reserve_irq_vector_locked() local
205 apicd->can_reserve = true; in reserve_irq_vector_locked()
206 apicd->has_reserved = true; in reserve_irq_vector_locked()
225 struct apic_chip_data *apicd = apic_chip_data(irqd); in assign_vector_locked() local
226 bool resvd = apicd->has_reserved; in assign_vector_locked()
227 unsigned int cpu = apicd->cpu; in assign_vector_locked()
228 int vector = apicd->vector; in assign_vector_locked()
246 if (apicd->move_in_progress || !hlist_unhashed(&apicd->clist)) in assign_vector_locked()
313 struct apic_chip_data *apicd = apic_chip_data(irqd); in assign_managed_vector() local
321 if (apicd->vector && cpumask_test_cpu(apicd->cpu, vector_searchmask)) in assign_managed_vector()
334 struct apic_chip_data *apicd = apic_chip_data(irqd); in clear_irq_vector() local
336 unsigned int vector = apicd->vector; in clear_irq_vector()
343 trace_vector_clear(irqd->irq, vector, apicd->cpu, apicd->prev_vector, in clear_irq_vector()
344 apicd->prev_cpu); in clear_irq_vector()
346 per_cpu(vector_irq, apicd->cpu)[vector] = VECTOR_UNUSED; in clear_irq_vector()
347 irq_matrix_free(vector_matrix, apicd->cpu, vector, managed); in clear_irq_vector()
348 apicd->vector = 0; in clear_irq_vector()
351 vector = apicd->prev_vector; in clear_irq_vector()
355 per_cpu(vector_irq, apicd->prev_cpu)[vector] = VECTOR_UNUSED; in clear_irq_vector()
356 irq_matrix_free(vector_matrix, apicd->prev_cpu, vector, managed); in clear_irq_vector()
357 apicd->prev_vector = 0; in clear_irq_vector()
358 apicd->move_in_progress = 0; in clear_irq_vector()
359 hlist_del_init(&apicd->clist); in clear_irq_vector()
364 struct apic_chip_data *apicd = apic_chip_data(irqd); in x86_vector_deactivate() local
367 trace_vector_deactivate(irqd->irq, apicd->is_managed, in x86_vector_deactivate()
368 apicd->can_reserve, false); in x86_vector_deactivate()
371 if (!apicd->is_managed && !apicd->can_reserve) in x86_vector_deactivate()
374 if (apicd->has_reserved) in x86_vector_deactivate()
379 if (apicd->can_reserve) in x86_vector_deactivate()
388 struct apic_chip_data *apicd = apic_chip_data(irqd); in activate_reserved() local
393 apicd->has_reserved = false; in activate_reserved()
402 apicd->can_reserve = false; in activate_reserved()
434 struct apic_chip_data *apicd = apic_chip_data(irqd); in x86_vector_activate() local
438 trace_vector_activate(irqd->irq, apicd->is_managed, in x86_vector_activate()
439 apicd->can_reserve, reserve); in x86_vector_activate()
442 if (!apicd->can_reserve && !apicd->is_managed) in x86_vector_activate()
448 else if (apicd->is_managed) in x86_vector_activate()
450 else if (apicd->has_reserved) in x86_vector_activate()
459 struct apic_chip_data *apicd = apic_chip_data(irqd); in vector_free_reserved_and_managed() local
461 trace_vector_teardown(irqd->irq, apicd->is_managed, in vector_free_reserved_and_managed()
462 apicd->has_reserved); in vector_free_reserved_and_managed()
464 if (apicd->has_reserved) in vector_free_reserved_and_managed()
466 if (apicd->is_managed) in vector_free_reserved_and_managed()
473 struct apic_chip_data *apicd; in x86_vector_free_irqs() local
484 apicd = irqd->chip_data; in x86_vector_free_irqs()
487 free_apic_chip_data(apicd); in x86_vector_free_irqs()
493 struct apic_chip_data *apicd) in vector_configure_legacy() argument
498 apicd->vector = ISA_IRQ_VECTOR(virq); in vector_configure_legacy()
499 apicd->cpu = 0; in vector_configure_legacy()
508 apic_update_irq_cfg(irqd, apicd->vector, apicd->cpu); in vector_configure_legacy()
511 apicd->can_reserve = true; in vector_configure_legacy()
524 struct apic_chip_data *apicd; in x86_vector_alloc_irqs() local
540 apicd = alloc_apic_chip_data(node); in x86_vector_alloc_irqs()
541 if (!apicd) { in x86_vector_alloc_irqs()
546 apicd->irq = virq + i; in x86_vector_alloc_irqs()
548 irqd->chip_data = apicd; in x86_vector_alloc_irqs()
559 if (!vector_configure_legacy(virq + i, irqd, apicd)) in x86_vector_alloc_irqs()
567 free_apic_chip_data(apicd); in x86_vector_alloc_irqs()
583 struct apic_chip_data apicd; in x86_vector_debug_show() local
605 memcpy(&apicd, irqd->chip_data, sizeof(apicd)); in x86_vector_debug_show()
608 seq_printf(m, "%*sVector: %5u\n", ind, "", apicd.vector); in x86_vector_debug_show()
609 seq_printf(m, "%*sTarget: %5u\n", ind, "", apicd.cpu); in x86_vector_debug_show()
610 if (apicd.prev_vector) { in x86_vector_debug_show()
611 seq_printf(m, "%*sPrevious vector: %5u\n", ind, "", apicd.prev_vector); in x86_vector_debug_show()
612 seq_printf(m, "%*sPrevious target: %5u\n", ind, "", apicd.prev_cpu); in x86_vector_debug_show()
614 seq_printf(m, "%*smove_in_progress: %u\n", ind, "", apicd.move_in_progress ? 1 : 0); in x86_vector_debug_show()
615 seq_printf(m, "%*sis_managed: %u\n", ind, "", apicd.is_managed ? 1 : 0); in x86_vector_debug_show()
616 seq_printf(m, "%*scan_reserve: %u\n", ind, "", apicd.can_reserve ? 1 : 0); in x86_vector_debug_show()
617 seq_printf(m, "%*shas_reserved: %u\n", ind, "", apicd.has_reserved ? 1 : 0); in x86_vector_debug_show()
618 seq_printf(m, "%*scleanup_pending: %u\n", ind, "", !hlist_unhashed(&apicd.clist)); in x86_vector_debug_show()
764 struct apic_chip_data *apicd = apic_chip_data(irqd); in apic_set_affinity() local
776 (apicd->is_managed || apicd->can_reserve)) in apic_set_affinity()
795 struct apic_chip_data *apicd = apic_chip_data(irqd); in apic_retrigger_irq() local
799 apic->send_IPI(apicd->cpu, apicd->vector); in apic_retrigger_irq()
826 static void free_moved_vector(struct apic_chip_data *apicd) in free_moved_vector() argument
828 unsigned int vector = apicd->prev_vector; in free_moved_vector()
829 unsigned int cpu = apicd->prev_cpu; in free_moved_vector()
830 bool managed = apicd->is_managed; in free_moved_vector()
840 trace_vector_free_moved(apicd->irq, cpu, vector, managed); in free_moved_vector()
843 hlist_del_init(&apicd->clist); in free_moved_vector()
844 apicd->prev_vector = 0; in free_moved_vector()
845 apicd->move_in_progress = 0; in free_moved_vector()
851 struct apic_chip_data *apicd; in smp_irq_move_cleanup_interrupt() local
858 hlist_for_each_entry_safe(apicd, tmp, clhead, clist) { in smp_irq_move_cleanup_interrupt()
859 unsigned int irr, vector = apicd->prev_vector; in smp_irq_move_cleanup_interrupt()
875 free_moved_vector(apicd); in smp_irq_move_cleanup_interrupt()
882 static void __send_cleanup_vector(struct apic_chip_data *apicd) in __send_cleanup_vector() argument
887 apicd->move_in_progress = 0; in __send_cleanup_vector()
888 cpu = apicd->prev_cpu; in __send_cleanup_vector()
890 hlist_add_head(&apicd->clist, per_cpu_ptr(&cleanup_list, cpu)); in __send_cleanup_vector()
893 apicd->prev_vector = 0; in __send_cleanup_vector()
900 struct apic_chip_data *apicd; in send_cleanup_vector() local
902 apicd = container_of(cfg, struct apic_chip_data, hw_irq_cfg); in send_cleanup_vector()
903 if (apicd->move_in_progress) in send_cleanup_vector()
904 __send_cleanup_vector(apicd); in send_cleanup_vector()
909 struct apic_chip_data *apicd; in __irq_complete_move() local
911 apicd = container_of(cfg, struct apic_chip_data, hw_irq_cfg); in __irq_complete_move()
912 if (likely(!apicd->move_in_progress)) in __irq_complete_move()
915 if (vector == apicd->vector && apicd->cpu == smp_processor_id()) in __irq_complete_move()
916 __send_cleanup_vector(apicd); in __irq_complete_move()
929 struct apic_chip_data *apicd; in irq_force_complete_move() local
948 apicd = apic_chip_data(irqd); in irq_force_complete_move()
949 if (!apicd) in irq_force_complete_move()
955 vector = apicd->prev_vector; in irq_force_complete_move()
974 if (apicd->move_in_progress) { in irq_force_complete_move()
1010 free_moved_vector(apicd); in irq_force_complete_move()