Lines Matching full:desc
136 struct irq_desc *desc = irq_to_desc(irq); in irq_get_irq_data() local
138 return desc ? &desc->irq_data : NULL; in irq_get_irq_data()
142 static void irq_state_clr_disabled(struct irq_desc *desc) in irq_state_clr_disabled() argument
144 irqd_clear(&desc->irq_data, IRQD_IRQ_DISABLED); in irq_state_clr_disabled()
147 static void irq_state_clr_masked(struct irq_desc *desc) in irq_state_clr_masked() argument
149 irqd_clear(&desc->irq_data, IRQD_IRQ_MASKED); in irq_state_clr_masked()
152 static void irq_state_clr_started(struct irq_desc *desc) in irq_state_clr_started() argument
154 irqd_clear(&desc->irq_data, IRQD_IRQ_STARTED); in irq_state_clr_started()
157 static void irq_state_set_started(struct irq_desc *desc) in irq_state_set_started() argument
159 irqd_set(&desc->irq_data, IRQD_IRQ_STARTED); in irq_state_set_started()
170 __irq_startup_managed(struct irq_desc *desc, const struct cpumask *aff, in __irq_startup_managed() argument
173 struct irq_data *d = irq_desc_get_irq_data(desc); in __irq_startup_managed()
206 void irq_startup_managed(struct irq_desc *desc) in irq_startup_managed() argument
208 struct irq_data *d = irq_desc_get_irq_data(desc); in irq_startup_managed()
221 desc->depth--; in irq_startup_managed()
222 if (!desc->depth) in irq_startup_managed()
223 irq_startup(desc, IRQ_RESEND, IRQ_START_COND); in irq_startup_managed()
228 __irq_startup_managed(struct irq_desc *desc, const struct cpumask *aff, in __irq_startup_managed() argument
235 static void irq_enable(struct irq_desc *desc) in irq_enable() argument
237 if (!irqd_irq_disabled(&desc->irq_data)) { in irq_enable()
238 unmask_irq(desc); in irq_enable()
240 irq_state_clr_disabled(desc); in irq_enable()
241 if (desc->irq_data.chip->irq_enable) { in irq_enable()
242 desc->irq_data.chip->irq_enable(&desc->irq_data); in irq_enable()
243 irq_state_clr_masked(desc); in irq_enable()
245 unmask_irq(desc); in irq_enable()
250 static int __irq_startup(struct irq_desc *desc) in __irq_startup() argument
252 struct irq_data *d = irq_desc_get_irq_data(desc); in __irq_startup()
260 irq_state_clr_disabled(desc); in __irq_startup()
261 irq_state_clr_masked(desc); in __irq_startup()
263 irq_enable(desc); in __irq_startup()
265 irq_state_set_started(desc); in __irq_startup()
269 int irq_startup(struct irq_desc *desc, bool resend, bool force) in irq_startup() argument
271 struct irq_data *d = irq_desc_get_irq_data(desc); in irq_startup()
275 desc->depth = 0; in irq_startup()
278 irq_enable(desc); in irq_startup()
280 switch (__irq_startup_managed(desc, aff, force)) { in irq_startup()
283 irq_setup_affinity(desc); in irq_startup()
284 ret = __irq_startup(desc); in irq_startup()
286 irq_setup_affinity(desc); in irq_startup()
290 ret = __irq_startup(desc); in irq_startup()
293 desc->depth = 1; in irq_startup()
299 check_irq_resend(desc, false); in irq_startup()
304 int irq_activate(struct irq_desc *desc) in irq_activate() argument
306 struct irq_data *d = irq_desc_get_irq_data(desc); in irq_activate()
313 int irq_activate_and_startup(struct irq_desc *desc, bool resend) in irq_activate_and_startup() argument
315 if (WARN_ON(irq_activate(desc))) in irq_activate_and_startup()
317 return irq_startup(desc, resend, IRQ_START_FORCE); in irq_activate_and_startup()
320 static void __irq_disable(struct irq_desc *desc, bool mask);
322 void irq_shutdown(struct irq_desc *desc) in irq_shutdown() argument
324 if (irqd_is_started(&desc->irq_data)) { in irq_shutdown()
325 clear_irq_resend(desc); in irq_shutdown()
331 desc->depth++; in irq_shutdown()
333 if (desc->irq_data.chip->irq_shutdown) { in irq_shutdown()
334 desc->irq_data.chip->irq_shutdown(&desc->irq_data); in irq_shutdown()
335 irq_state_set_disabled(desc); in irq_shutdown()
336 irq_state_set_masked(desc); in irq_shutdown()
338 __irq_disable(desc, true); in irq_shutdown()
340 irq_state_clr_started(desc); in irq_shutdown()
345 void irq_shutdown_and_deactivate(struct irq_desc *desc) in irq_shutdown_and_deactivate() argument
347 irq_shutdown(desc); in irq_shutdown_and_deactivate()
354 irq_domain_deactivate_irq(&desc->irq_data); in irq_shutdown_and_deactivate()
357 static void __irq_disable(struct irq_desc *desc, bool mask) in __irq_disable() argument
359 if (irqd_irq_disabled(&desc->irq_data)) { in __irq_disable()
361 mask_irq(desc); in __irq_disable()
363 irq_state_set_disabled(desc); in __irq_disable()
364 if (desc->irq_data.chip->irq_disable) { in __irq_disable()
365 desc->irq_data.chip->irq_disable(&desc->irq_data); in __irq_disable()
366 irq_state_set_masked(desc); in __irq_disable()
368 mask_irq(desc); in __irq_disable()
375 * @desc: irq descriptor which should be disabled
393 void irq_disable(struct irq_desc *desc) in irq_disable() argument
395 __irq_disable(desc, irq_settings_disable_unlazy(desc)); in irq_disable()
398 void irq_percpu_enable(struct irq_desc *desc, unsigned int cpu) in irq_percpu_enable() argument
400 if (desc->irq_data.chip->irq_enable) in irq_percpu_enable()
401 desc->irq_data.chip->irq_enable(&desc->irq_data); in irq_percpu_enable()
403 desc->irq_data.chip->irq_unmask(&desc->irq_data); in irq_percpu_enable()
404 cpumask_set_cpu(cpu, desc->percpu_enabled); in irq_percpu_enable()
407 void irq_percpu_disable(struct irq_desc *desc, unsigned int cpu) in irq_percpu_disable() argument
409 if (desc->irq_data.chip->irq_disable) in irq_percpu_disable()
410 desc->irq_data.chip->irq_disable(&desc->irq_data); in irq_percpu_disable()
412 desc->irq_data.chip->irq_mask(&desc->irq_data); in irq_percpu_disable()
413 cpumask_clear_cpu(cpu, desc->percpu_enabled); in irq_percpu_disable()
416 static inline void mask_ack_irq(struct irq_desc *desc) in mask_ack_irq() argument
418 if (desc->irq_data.chip->irq_mask_ack) { in mask_ack_irq()
419 desc->irq_data.chip->irq_mask_ack(&desc->irq_data); in mask_ack_irq()
420 irq_state_set_masked(desc); in mask_ack_irq()
422 mask_irq(desc); in mask_ack_irq()
423 if (desc->irq_data.chip->irq_ack) in mask_ack_irq()
424 desc->irq_data.chip->irq_ack(&desc->irq_data); in mask_ack_irq()
428 void mask_irq(struct irq_desc *desc) in mask_irq() argument
430 if (irqd_irq_masked(&desc->irq_data)) in mask_irq()
433 if (desc->irq_data.chip->irq_mask) { in mask_irq()
434 desc->irq_data.chip->irq_mask(&desc->irq_data); in mask_irq()
435 irq_state_set_masked(desc); in mask_irq()
439 void unmask_irq(struct irq_desc *desc) in unmask_irq() argument
441 if (!irqd_irq_masked(&desc->irq_data)) in unmask_irq()
444 if (desc->irq_data.chip->irq_unmask) { in unmask_irq()
445 desc->irq_data.chip->irq_unmask(&desc->irq_data); in unmask_irq()
446 irq_state_clr_masked(desc); in unmask_irq()
450 void unmask_threaded_irq(struct irq_desc *desc) in unmask_threaded_irq() argument
452 struct irq_chip *chip = desc->irq_data.chip; in unmask_threaded_irq()
455 chip->irq_eoi(&desc->irq_data); in unmask_threaded_irq()
457 unmask_irq(desc); in unmask_threaded_irq()
461 static bool irq_wait_on_inprogress(struct irq_desc *desc) in irq_wait_on_inprogress() argument
465 raw_spin_unlock(&desc->lock); in irq_wait_on_inprogress()
466 while (irqd_irq_inprogress(&desc->irq_data)) in irq_wait_on_inprogress()
468 raw_spin_lock(&desc->lock); in irq_wait_on_inprogress()
469 } while (irqd_irq_inprogress(&desc->irq_data)); in irq_wait_on_inprogress()
472 return !irqd_irq_disabled(&desc->irq_data) && desc->action; in irq_wait_on_inprogress()
477 static bool irq_can_handle_pm(struct irq_desc *desc) in irq_can_handle_pm() argument
479 struct irq_data *irqd = &desc->irq_data; in irq_can_handle_pm()
495 irq_pm_handle_wakeup(desc); in irq_can_handle_pm()
500 if (unlikely(desc->istate & IRQS_POLL_INPROGRESS)) { in irq_can_handle_pm()
503 smp_processor_id(), desc->irq_data.irq)) in irq_can_handle_pm()
505 return irq_wait_on_inprogress(desc); in irq_can_handle_pm()
510 !irqd_is_single_target(irqd) || desc->handle_irq != handle_edge_irq) in irq_can_handle_pm()
541 return irq_wait_on_inprogress(desc); in irq_can_handle_pm()
544 static inline bool irq_can_handle_actions(struct irq_desc *desc) in irq_can_handle_actions() argument
546 desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING); in irq_can_handle_actions()
548 if (unlikely(!desc->action || irqd_irq_disabled(&desc->irq_data))) { in irq_can_handle_actions()
549 desc->istate |= IRQS_PENDING; in irq_can_handle_actions()
555 static inline bool irq_can_handle(struct irq_desc *desc) in irq_can_handle() argument
557 if (!irq_can_handle_pm(desc)) in irq_can_handle()
560 return irq_can_handle_actions(desc); in irq_can_handle()
573 struct irq_desc *desc = irq_to_desc(irq); in handle_nested_irq() local
579 scoped_guard(raw_spinlock_irq, &desc->lock) { in handle_nested_irq()
580 if (!irq_can_handle_actions(desc)) in handle_nested_irq()
583 action = desc->action; in handle_nested_irq()
584 kstat_incr_irqs_this_cpu(desc); in handle_nested_irq()
585 atomic_inc(&desc->threads_active); in handle_nested_irq()
589 for_each_action_of_desc(desc, action) in handle_nested_irq()
592 if (!irq_settings_no_debug(desc)) in handle_nested_irq()
593 note_interrupt(desc, action_ret); in handle_nested_irq()
595 wake_threads_waitq(desc); in handle_nested_irq()
601 * @desc: the interrupt description structure for this irq
610 void handle_simple_irq(struct irq_desc *desc) in handle_simple_irq() argument
612 guard(raw_spinlock)(&desc->lock); in handle_simple_irq()
614 if (!irq_can_handle_pm(desc)) { in handle_simple_irq()
615 if (irqd_needs_resend_when_in_progress(&desc->irq_data)) in handle_simple_irq()
616 desc->istate |= IRQS_PENDING; in handle_simple_irq()
620 if (!irq_can_handle_actions(desc)) in handle_simple_irq()
623 kstat_incr_irqs_this_cpu(desc); in handle_simple_irq()
624 handle_irq_event(desc); in handle_simple_irq()
630 * @desc: the interrupt description structure for this irq
641 void handle_untracked_irq(struct irq_desc *desc) in handle_untracked_irq() argument
643 scoped_guard(raw_spinlock, &desc->lock) { in handle_untracked_irq()
644 if (!irq_can_handle(desc)) in handle_untracked_irq()
647 desc->istate &= ~IRQS_PENDING; in handle_untracked_irq()
648 irqd_set(&desc->irq_data, IRQD_IRQ_INPROGRESS); in handle_untracked_irq()
651 __handle_irq_event_percpu(desc); in handle_untracked_irq()
653 scoped_guard(raw_spinlock, &desc->lock) in handle_untracked_irq()
654 irqd_clear(&desc->irq_data, IRQD_IRQ_INPROGRESS); in handle_untracked_irq()
662 static void cond_unmask_irq(struct irq_desc *desc) in cond_unmask_irq() argument
671 if (!irqd_irq_disabled(&desc->irq_data) && in cond_unmask_irq()
672 irqd_irq_masked(&desc->irq_data) && !desc->threads_oneshot) in cond_unmask_irq()
673 unmask_irq(desc); in cond_unmask_irq()
678 * @desc: the interrupt description structure for this irq
685 void handle_level_irq(struct irq_desc *desc) in handle_level_irq() argument
687 guard(raw_spinlock)(&desc->lock); in handle_level_irq()
688 mask_ack_irq(desc); in handle_level_irq()
690 if (!irq_can_handle(desc)) in handle_level_irq()
693 kstat_incr_irqs_this_cpu(desc); in handle_level_irq()
694 handle_irq_event(desc); in handle_level_irq()
696 cond_unmask_irq(desc); in handle_level_irq()
700 static void cond_unmask_eoi_irq(struct irq_desc *desc, struct irq_chip *chip) in cond_unmask_eoi_irq() argument
702 if (!(desc->istate & IRQS_ONESHOT)) { in cond_unmask_eoi_irq()
703 chip->irq_eoi(&desc->irq_data); in cond_unmask_eoi_irq()
712 if (!irqd_irq_disabled(&desc->irq_data) && in cond_unmask_eoi_irq()
713 irqd_irq_masked(&desc->irq_data) && !desc->threads_oneshot) { in cond_unmask_eoi_irq()
714 chip->irq_eoi(&desc->irq_data); in cond_unmask_eoi_irq()
715 unmask_irq(desc); in cond_unmask_eoi_irq()
717 chip->irq_eoi(&desc->irq_data); in cond_unmask_eoi_irq()
729 * @desc: the interrupt description structure for this irq
736 void handle_fasteoi_irq(struct irq_desc *desc) in handle_fasteoi_irq() argument
738 struct irq_chip *chip = desc->irq_data.chip; in handle_fasteoi_irq()
740 guard(raw_spinlock)(&desc->lock); in handle_fasteoi_irq()
747 if (!irq_can_handle_pm(desc)) { in handle_fasteoi_irq()
748 if (irqd_needs_resend_when_in_progress(&desc->irq_data)) in handle_fasteoi_irq()
749 desc->istate |= IRQS_PENDING; in handle_fasteoi_irq()
750 cond_eoi_irq(chip, &desc->irq_data); in handle_fasteoi_irq()
754 if (!irq_can_handle_actions(desc)) { in handle_fasteoi_irq()
755 mask_irq(desc); in handle_fasteoi_irq()
756 cond_eoi_irq(chip, &desc->irq_data); in handle_fasteoi_irq()
760 kstat_incr_irqs_this_cpu(desc); in handle_fasteoi_irq()
761 if (desc->istate & IRQS_ONESHOT) in handle_fasteoi_irq()
762 mask_irq(desc); in handle_fasteoi_irq()
764 handle_irq_event(desc); in handle_fasteoi_irq()
766 cond_unmask_eoi_irq(desc, chip); in handle_fasteoi_irq()
771 if (unlikely(desc->istate & IRQS_PENDING)) in handle_fasteoi_irq()
772 check_irq_resend(desc, false); in handle_fasteoi_irq()
778 * @desc: the interrupt description structure for this irq
788 void handle_fasteoi_nmi(struct irq_desc *desc) in handle_fasteoi_nmi() argument
790 struct irq_chip *chip = irq_desc_get_chip(desc); in handle_fasteoi_nmi()
791 struct irqaction *action = desc->action; in handle_fasteoi_nmi()
792 unsigned int irq = irq_desc_get_irq(desc); in handle_fasteoi_nmi()
795 __kstat_incr_irqs_this_cpu(desc); in handle_fasteoi_nmi()
805 chip->irq_eoi(&desc->irq_data); in handle_fasteoi_nmi()
811 * @desc: the interrupt description structure for this irq
823 void handle_edge_irq(struct irq_desc *desc) in handle_edge_irq() argument
825 guard(raw_spinlock)(&desc->lock); in handle_edge_irq()
827 if (!irq_can_handle(desc)) { in handle_edge_irq()
828 desc->istate |= IRQS_PENDING; in handle_edge_irq()
829 mask_ack_irq(desc); in handle_edge_irq()
833 kstat_incr_irqs_this_cpu(desc); in handle_edge_irq()
836 desc->irq_data.chip->irq_ack(&desc->irq_data); in handle_edge_irq()
839 if (unlikely(!desc->action)) { in handle_edge_irq()
840 mask_irq(desc); in handle_edge_irq()
849 if (unlikely(desc->istate & IRQS_PENDING)) { in handle_edge_irq()
850 if (!irqd_irq_disabled(&desc->irq_data) && in handle_edge_irq()
851 irqd_irq_masked(&desc->irq_data)) in handle_edge_irq()
852 unmask_irq(desc); in handle_edge_irq()
855 handle_irq_event(desc); in handle_edge_irq()
857 } while ((desc->istate & IRQS_PENDING) && !irqd_irq_disabled(&desc->irq_data)); in handle_edge_irq()
863 * @desc: the interrupt description structure for this irq
867 void handle_percpu_irq(struct irq_desc *desc) in handle_percpu_irq() argument
869 struct irq_chip *chip = irq_desc_get_chip(desc); in handle_percpu_irq()
873 * desc->tot_count. in handle_percpu_irq()
875 __kstat_incr_irqs_this_cpu(desc); in handle_percpu_irq()
878 chip->irq_ack(&desc->irq_data); in handle_percpu_irq()
880 handle_irq_event_percpu(desc); in handle_percpu_irq()
883 chip->irq_eoi(&desc->irq_data); in handle_percpu_irq()
888 * @desc: the interrupt description structure for this irq
897 void handle_percpu_devid_irq(struct irq_desc *desc) in handle_percpu_devid_irq() argument
899 struct irq_chip *chip = irq_desc_get_chip(desc); in handle_percpu_devid_irq()
900 struct irqaction *action = desc->action; in handle_percpu_devid_irq()
901 unsigned int irq = irq_desc_get_irq(desc); in handle_percpu_devid_irq()
906 * desc->tot_count. in handle_percpu_devid_irq()
908 __kstat_incr_irqs_this_cpu(desc); in handle_percpu_devid_irq()
911 chip->irq_ack(&desc->irq_data); in handle_percpu_devid_irq()
919 bool enabled = cpumask_test_cpu(cpu, desc->percpu_enabled); in handle_percpu_devid_irq()
922 irq_percpu_disable(desc, cpu); in handle_percpu_devid_irq()
929 chip->irq_eoi(&desc->irq_data); in handle_percpu_devid_irq()
935 * @desc: the interrupt description structure for this irq
940 void handle_percpu_devid_fasteoi_nmi(struct irq_desc *desc) in handle_percpu_devid_fasteoi_nmi() argument
942 struct irq_chip *chip = irq_desc_get_chip(desc); in handle_percpu_devid_fasteoi_nmi()
943 struct irqaction *action = desc->action; in handle_percpu_devid_fasteoi_nmi()
944 unsigned int irq = irq_desc_get_irq(desc); in handle_percpu_devid_fasteoi_nmi()
947 __kstat_incr_irqs_this_cpu(desc); in handle_percpu_devid_fasteoi_nmi()
954 chip->irq_eoi(&desc->irq_data); in handle_percpu_devid_fasteoi_nmi()
958 __irq_do_set_handler(struct irq_desc *desc, irq_flow_handler_t handle, in __irq_do_set_handler() argument
964 struct irq_data *irq_data = &desc->irq_data; in __irq_do_set_handler()
993 if (desc->irq_data.chip != &no_irq_chip) in __irq_do_set_handler()
994 mask_ack_irq(desc); in __irq_do_set_handler()
995 irq_state_set_disabled(desc); in __irq_do_set_handler()
997 desc->action = NULL; in __irq_do_set_handler()
998 WARN_ON(irq_chip_pm_put(irq_desc_get_irq_data(desc))); in __irq_do_set_handler()
1000 desc->depth = 1; in __irq_do_set_handler()
1002 desc->handle_irq = handle; in __irq_do_set_handler()
1003 desc->name = name; in __irq_do_set_handler()
1006 unsigned int type = irqd_get_trigger_type(&desc->irq_data); in __irq_do_set_handler()
1017 __irq_set_trigger(desc, type); in __irq_do_set_handler()
1018 desc->handle_irq = handle; in __irq_do_set_handler()
1021 irq_settings_set_noprobe(desc); in __irq_do_set_handler()
1022 irq_settings_set_norequest(desc); in __irq_do_set_handler()
1023 irq_settings_set_nothread(desc); in __irq_do_set_handler()
1024 desc->action = &chained_action; in __irq_do_set_handler()
1025 WARN_ON(irq_chip_pm_get(irq_desc_get_irq_data(desc))); in __irq_do_set_handler()
1026 irq_activate_and_startup(desc, IRQ_RESEND); in __irq_do_set_handler()
1042 struct irq_desc *desc = scoped_irqdesc; in irq_set_chained_handler_and_data() local
1044 desc->irq_common_data.handler_data = data; in irq_set_chained_handler_and_data()
1045 __irq_do_set_handler(desc, handle, 1, NULL); in irq_set_chained_handler_and_data()
1062 struct irq_desc *desc = scoped_irqdesc; in irq_modify_status() local
1068 WARN_ON_ONCE(!desc->depth && (set & _IRQ_NOAUTOEN)); in irq_modify_status()
1070 irq_settings_clr_and_set(desc, clr, set); in irq_modify_status()
1072 trigger = irqd_get_trigger_type(&desc->irq_data); in irq_modify_status()
1074 irqd_clear(&desc->irq_data, IRQD_NO_BALANCING | IRQD_PER_CPU | in irq_modify_status()
1076 if (irq_settings_has_no_balance_set(desc)) in irq_modify_status()
1077 irqd_set(&desc->irq_data, IRQD_NO_BALANCING); in irq_modify_status()
1078 if (irq_settings_is_per_cpu(desc)) in irq_modify_status()
1079 irqd_set(&desc->irq_data, IRQD_PER_CPU); in irq_modify_status()
1080 if (irq_settings_is_level(desc)) in irq_modify_status()
1081 irqd_set(&desc->irq_data, IRQD_LEVEL); in irq_modify_status()
1083 tmp = irq_settings_get_trigger_mask(desc); in irq_modify_status()
1087 irqd_set(&desc->irq_data, trigger); in irq_modify_status()
1104 struct irq_desc *desc = irq_to_desc(irq); in irq_cpu_online() local
1107 if (!desc) in irq_cpu_online()
1110 guard(raw_spinlock_irqsave)(&desc->lock); in irq_cpu_online()
1111 chip = irq_data_get_irq_chip(&desc->irq_data); in irq_cpu_online()
1114 !irqd_irq_disabled(&desc->irq_data))) in irq_cpu_online()
1115 chip->irq_cpu_online(&desc->irq_data); in irq_cpu_online()
1130 struct irq_desc *desc = irq_to_desc(irq); in irq_cpu_offline() local
1133 if (!desc) in irq_cpu_offline()
1136 guard(raw_spinlock_irqsave)(&desc->lock); in irq_cpu_offline()
1137 chip = irq_data_get_irq_chip(&desc->irq_data); in irq_cpu_offline()
1140 !irqd_irq_disabled(&desc->irq_data))) in irq_cpu_offline()
1141 chip->irq_cpu_offline(&desc->irq_data); in irq_cpu_offline()
1153 * @desc: the interrupt description structure for this irq
1158 void handle_fasteoi_ack_irq(struct irq_desc *desc) in handle_fasteoi_ack_irq() argument
1160 struct irq_chip *chip = desc->irq_data.chip; in handle_fasteoi_ack_irq()
1162 guard(raw_spinlock)(&desc->lock); in handle_fasteoi_ack_irq()
1164 if (!irq_can_handle_pm(desc)) { in handle_fasteoi_ack_irq()
1165 cond_eoi_irq(chip, &desc->irq_data); in handle_fasteoi_ack_irq()
1169 if (unlikely(!irq_can_handle_actions(desc))) { in handle_fasteoi_ack_irq()
1170 mask_irq(desc); in handle_fasteoi_ack_irq()
1171 cond_eoi_irq(chip, &desc->irq_data); in handle_fasteoi_ack_irq()
1175 kstat_incr_irqs_this_cpu(desc); in handle_fasteoi_ack_irq()
1176 if (desc->istate & IRQS_ONESHOT) in handle_fasteoi_ack_irq()
1177 mask_irq(desc); in handle_fasteoi_ack_irq()
1179 desc->irq_data.chip->irq_ack(&desc->irq_data); in handle_fasteoi_ack_irq()
1181 handle_irq_event(desc); in handle_fasteoi_ack_irq()
1183 cond_unmask_eoi_irq(desc, chip); in handle_fasteoi_ack_irq()
1191 * @desc: the interrupt description structure for this irq
1196 void handle_fasteoi_mask_irq(struct irq_desc *desc) in handle_fasteoi_mask_irq() argument
1198 struct irq_chip *chip = desc->irq_data.chip; in handle_fasteoi_mask_irq()
1200 guard(raw_spinlock)(&desc->lock); in handle_fasteoi_mask_irq()
1201 mask_ack_irq(desc); in handle_fasteoi_mask_irq()
1203 if (!irq_can_handle(desc)) { in handle_fasteoi_mask_irq()
1204 cond_eoi_irq(chip, &desc->irq_data); in handle_fasteoi_mask_irq()
1208 kstat_incr_irqs_this_cpu(desc); in handle_fasteoi_mask_irq()
1210 handle_irq_event(desc); in handle_fasteoi_mask_irq()
1212 cond_unmask_eoi_irq(desc, chip); in handle_fasteoi_mask_irq()