• Home
  • Raw
  • Download

Lines Matching refs:apicd

91 	struct apic_chip_data *apicd = apic_chip_data(irqd);  in irqd_cfg()  local
93 return apicd ? &apicd->hw_irq_cfg : NULL; in irqd_cfg()
104 struct apic_chip_data *apicd; in alloc_apic_chip_data() local
106 apicd = kzalloc_node(sizeof(*apicd), GFP_KERNEL, node); in alloc_apic_chip_data()
107 if (apicd) in alloc_apic_chip_data()
108 INIT_HLIST_NODE(&apicd->clist); in alloc_apic_chip_data()
109 return apicd; in alloc_apic_chip_data()
112 static void free_apic_chip_data(struct apic_chip_data *apicd) in free_apic_chip_data() argument
114 kfree(apicd); in free_apic_chip_data()
120 struct apic_chip_data *apicd = apic_chip_data(irqd); in apic_update_irq_cfg() local
124 apicd->hw_irq_cfg.vector = vector; in apic_update_irq_cfg()
125 apicd->hw_irq_cfg.dest_apicid = apic->calc_dest_apicid(cpu); in apic_update_irq_cfg()
128 apicd->hw_irq_cfg.dest_apicid); in apic_update_irq_cfg()
134 struct apic_chip_data *apicd = apic_chip_data(irqd); in apic_update_vector() local
140 trace_vector_update(irqd->irq, newvec, newcpu, apicd->vector, in apic_update_vector()
141 apicd->cpu); in apic_update_vector()
149 apicd->prev_vector = 0; in apic_update_vector()
150 if (!apicd->vector || apicd->vector == MANAGED_IRQ_SHUTDOWN_VECTOR) in apic_update_vector()
160 if (cpu_online(apicd->cpu)) { in apic_update_vector()
161 apicd->move_in_progress = true; in apic_update_vector()
162 apicd->prev_vector = apicd->vector; in apic_update_vector()
163 apicd->prev_cpu = apicd->cpu; in apic_update_vector()
164 WARN_ON_ONCE(apicd->cpu == newcpu); in apic_update_vector()
166 irq_matrix_free(vector_matrix, apicd->cpu, apicd->vector, in apic_update_vector()
171 apicd->vector = newvec; in apic_update_vector()
172 apicd->cpu = newcpu; in apic_update_vector()
187 struct apic_chip_data *apicd = apic_chip_data(irqd); in reserve_managed_vector() local
192 apicd->is_managed = true; in reserve_managed_vector()
201 struct apic_chip_data *apicd = apic_chip_data(irqd); in reserve_irq_vector_locked() local
204 apicd->can_reserve = true; in reserve_irq_vector_locked()
205 apicd->has_reserved = true; in reserve_irq_vector_locked()
224 struct apic_chip_data *apicd = apic_chip_data(irqd); in assign_vector_locked() local
225 bool resvd = apicd->has_reserved; in assign_vector_locked()
226 unsigned int cpu = apicd->cpu; in assign_vector_locked()
227 int vector = apicd->vector; in assign_vector_locked()
245 if (apicd->move_in_progress || !hlist_unhashed(&apicd->clist)) in assign_vector_locked()
316 struct apic_chip_data *apicd = apic_chip_data(irqd); in assign_managed_vector() local
322 if (apicd->vector && cpumask_test_cpu(apicd->cpu, vector_searchmask)) in assign_managed_vector()
336 struct apic_chip_data *apicd = apic_chip_data(irqd); in clear_irq_vector() local
338 unsigned int vector = apicd->vector; in clear_irq_vector()
345 trace_vector_clear(irqd->irq, vector, apicd->cpu, apicd->prev_vector, in clear_irq_vector()
346 apicd->prev_cpu); in clear_irq_vector()
348 per_cpu(vector_irq, apicd->cpu)[vector] = VECTOR_SHUTDOWN; in clear_irq_vector()
349 irq_matrix_free(vector_matrix, apicd->cpu, vector, managed); in clear_irq_vector()
350 apicd->vector = 0; in clear_irq_vector()
353 vector = apicd->prev_vector; in clear_irq_vector()
357 per_cpu(vector_irq, apicd->prev_cpu)[vector] = VECTOR_SHUTDOWN; in clear_irq_vector()
358 irq_matrix_free(vector_matrix, apicd->prev_cpu, vector, managed); in clear_irq_vector()
359 apicd->prev_vector = 0; in clear_irq_vector()
360 apicd->move_in_progress = 0; in clear_irq_vector()
361 hlist_del_init(&apicd->clist); in clear_irq_vector()
366 struct apic_chip_data *apicd = apic_chip_data(irqd); in x86_vector_deactivate() local
369 trace_vector_deactivate(irqd->irq, apicd->is_managed, in x86_vector_deactivate()
370 apicd->can_reserve, false); in x86_vector_deactivate()
373 if (!apicd->is_managed && !apicd->can_reserve) in x86_vector_deactivate()
376 if (apicd->has_reserved) in x86_vector_deactivate()
381 if (apicd->can_reserve) in x86_vector_deactivate()
390 struct apic_chip_data *apicd = apic_chip_data(irqd); in activate_reserved() local
395 apicd->has_reserved = false; in activate_reserved()
404 apicd->can_reserve = false; in activate_reserved()
447 struct apic_chip_data *apicd = apic_chip_data(irqd); in x86_vector_activate() local
451 trace_vector_activate(irqd->irq, apicd->is_managed, in x86_vector_activate()
452 apicd->can_reserve, reserve); in x86_vector_activate()
455 if (!apicd->can_reserve && !apicd->is_managed) in x86_vector_activate()
459 else if (apicd->is_managed) in x86_vector_activate()
461 else if (apicd->has_reserved) in x86_vector_activate()
470 struct apic_chip_data *apicd = apic_chip_data(irqd); in vector_free_reserved_and_managed() local
472 trace_vector_teardown(irqd->irq, apicd->is_managed, in vector_free_reserved_and_managed()
473 apicd->has_reserved); in vector_free_reserved_and_managed()
475 if (apicd->has_reserved) in vector_free_reserved_and_managed()
477 if (apicd->is_managed) in vector_free_reserved_and_managed()
484 struct apic_chip_data *apicd; in x86_vector_free_irqs() local
495 apicd = irqd->chip_data; in x86_vector_free_irqs()
498 free_apic_chip_data(apicd); in x86_vector_free_irqs()
504 struct apic_chip_data *apicd) in vector_configure_legacy() argument
509 apicd->vector = ISA_IRQ_VECTOR(virq); in vector_configure_legacy()
510 apicd->cpu = 0; in vector_configure_legacy()
519 apic_update_irq_cfg(irqd, apicd->vector, apicd->cpu); in vector_configure_legacy()
522 apicd->can_reserve = true; in vector_configure_legacy()
535 struct apic_chip_data *apicd; in x86_vector_alloc_irqs() local
559 apicd = alloc_apic_chip_data(node); in x86_vector_alloc_irqs()
560 if (!apicd) { in x86_vector_alloc_irqs()
565 apicd->irq = virq + i; in x86_vector_alloc_irqs()
567 irqd->chip_data = apicd; in x86_vector_alloc_irqs()
588 if (!vector_configure_legacy(virq + i, irqd, apicd)) in x86_vector_alloc_irqs()
596 free_apic_chip_data(apicd); in x86_vector_alloc_irqs()
612 struct apic_chip_data apicd; in x86_vector_debug_show() local
634 memcpy(&apicd, irqd->chip_data, sizeof(apicd)); in x86_vector_debug_show()
637 seq_printf(m, "%*sVector: %5u\n", ind, "", apicd.vector); in x86_vector_debug_show()
638 seq_printf(m, "%*sTarget: %5u\n", ind, "", apicd.cpu); in x86_vector_debug_show()
639 if (apicd.prev_vector) { in x86_vector_debug_show()
640 seq_printf(m, "%*sPrevious vector: %5u\n", ind, "", apicd.prev_vector); in x86_vector_debug_show()
641 seq_printf(m, "%*sPrevious target: %5u\n", ind, "", apicd.prev_cpu); in x86_vector_debug_show()
643 seq_printf(m, "%*smove_in_progress: %u\n", ind, "", apicd.move_in_progress ? 1 : 0); in x86_vector_debug_show()
644 seq_printf(m, "%*sis_managed: %u\n", ind, "", apicd.is_managed ? 1 : 0); in x86_vector_debug_show()
645 seq_printf(m, "%*scan_reserve: %u\n", ind, "", apicd.can_reserve ? 1 : 0); in x86_vector_debug_show()
646 seq_printf(m, "%*shas_reserved: %u\n", ind, "", apicd.has_reserved ? 1 : 0); in x86_vector_debug_show()
647 seq_printf(m, "%*scleanup_pending: %u\n", ind, "", !hlist_unhashed(&apicd.clist)); in x86_vector_debug_show()
879 struct apic_chip_data *apicd = apic_chip_data(irqd); in apic_retrigger_irq() local
883 apic->send_IPI(apicd->cpu, apicd->vector); in apic_retrigger_irq()
917 static void free_moved_vector(struct apic_chip_data *apicd) in free_moved_vector() argument
919 unsigned int vector = apicd->prev_vector; in free_moved_vector()
920 unsigned int cpu = apicd->prev_cpu; in free_moved_vector()
921 bool managed = apicd->is_managed; in free_moved_vector()
933 trace_vector_free_moved(apicd->irq, cpu, vector, managed); in free_moved_vector()
936 hlist_del_init(&apicd->clist); in free_moved_vector()
937 apicd->prev_vector = 0; in free_moved_vector()
938 apicd->move_in_progress = 0; in free_moved_vector()
944 struct apic_chip_data *apicd; in DEFINE_IDTENTRY_SYSVEC() local
951 hlist_for_each_entry_safe(apicd, tmp, clhead, clist) { in DEFINE_IDTENTRY_SYSVEC()
952 unsigned int irr, vector = apicd->prev_vector; in DEFINE_IDTENTRY_SYSVEC()
968 free_moved_vector(apicd); in DEFINE_IDTENTRY_SYSVEC()
974 static void __send_cleanup_vector(struct apic_chip_data *apicd) in __send_cleanup_vector() argument
979 apicd->move_in_progress = 0; in __send_cleanup_vector()
980 cpu = apicd->prev_cpu; in __send_cleanup_vector()
982 hlist_add_head(&apicd->clist, per_cpu_ptr(&cleanup_list, cpu)); in __send_cleanup_vector()
985 apicd->prev_vector = 0; in __send_cleanup_vector()
992 struct apic_chip_data *apicd; in send_cleanup_vector() local
994 apicd = container_of(cfg, struct apic_chip_data, hw_irq_cfg); in send_cleanup_vector()
995 if (apicd->move_in_progress) in send_cleanup_vector()
996 __send_cleanup_vector(apicd); in send_cleanup_vector()
1001 struct apic_chip_data *apicd; in irq_complete_move() local
1003 apicd = container_of(cfg, struct apic_chip_data, hw_irq_cfg); in irq_complete_move()
1004 if (likely(!apicd->move_in_progress)) in irq_complete_move()
1013 if (apicd->cpu == smp_processor_id()) in irq_complete_move()
1014 __send_cleanup_vector(apicd); in irq_complete_move()
1022 struct apic_chip_data *apicd; in irq_force_complete_move() local
1041 apicd = apic_chip_data(irqd); in irq_force_complete_move()
1042 if (!apicd) in irq_force_complete_move()
1048 vector = apicd->prev_vector; in irq_force_complete_move()
1067 if (apicd->move_in_progress) { in irq_force_complete_move()
1103 free_moved_vector(apicd); in irq_force_complete_move()