Lines Matching refs:desc

44 	struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0);  in irq_set_chip()  local
46 if (!desc) in irq_set_chip()
49 desc->irq_data.chip = (struct irq_chip *)(chip ?: &no_irq_chip); in irq_set_chip()
50 irq_put_desc_unlock(desc, flags); in irq_set_chip()
68 struct irq_desc *desc = irq_get_desc_buslock(irq, &flags, IRQ_GET_DESC_CHECK_GLOBAL); in irq_set_irq_type() local
71 if (!desc) in irq_set_irq_type()
74 ret = __irq_set_trigger(desc, type); in irq_set_irq_type()
75 irq_put_desc_busunlock(desc, flags); in irq_set_irq_type()
90 struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0); in irq_set_handler_data() local
92 if (!desc) in irq_set_handler_data()
94 desc->irq_common_data.handler_data = data; in irq_set_handler_data()
95 irq_put_desc_unlock(desc, flags); in irq_set_handler_data()
112 …struct irq_desc *desc = irq_get_desc_lock(irq_base + irq_offset, &flags, IRQ_GET_DESC_CHECK_GLOBAL… in irq_set_msi_desc_off() local
114 if (!desc) in irq_set_msi_desc_off()
116 desc->irq_common_data.msi_desc = entry; in irq_set_msi_desc_off()
119 irq_put_desc_unlock(desc, flags); in irq_set_msi_desc_off()
145 struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0); in irq_set_chip_data() local
147 if (!desc) in irq_set_chip_data()
149 desc->irq_data.chip_data = data; in irq_set_chip_data()
150 irq_put_desc_unlock(desc, flags); in irq_set_chip_data()
157 struct irq_desc *desc = irq_to_desc(irq); in irq_get_irq_data() local
159 return desc ? &desc->irq_data : NULL; in irq_get_irq_data()
163 static void irq_state_clr_disabled(struct irq_desc *desc) in irq_state_clr_disabled() argument
165 irqd_clear(&desc->irq_data, IRQD_IRQ_DISABLED); in irq_state_clr_disabled()
168 static void irq_state_clr_masked(struct irq_desc *desc) in irq_state_clr_masked() argument
170 irqd_clear(&desc->irq_data, IRQD_IRQ_MASKED); in irq_state_clr_masked()
173 static void irq_state_clr_started(struct irq_desc *desc) in irq_state_clr_started() argument
175 irqd_clear(&desc->irq_data, IRQD_IRQ_STARTED); in irq_state_clr_started()
178 static void irq_state_set_started(struct irq_desc *desc) in irq_state_set_started() argument
180 irqd_set(&desc->irq_data, IRQD_IRQ_STARTED); in irq_state_set_started()
191 __irq_startup_managed(struct irq_desc *desc, const struct cpumask *aff, in __irq_startup_managed() argument
194 struct irq_data *d = irq_desc_get_irq_data(desc); in __irq_startup_managed()
228 __irq_startup_managed(struct irq_desc *desc, const struct cpumask *aff, in __irq_startup_managed() argument
235 static int __irq_startup(struct irq_desc *desc) in __irq_startup() argument
237 struct irq_data *d = irq_desc_get_irq_data(desc); in __irq_startup()
245 irq_state_clr_disabled(desc); in __irq_startup()
246 irq_state_clr_masked(desc); in __irq_startup()
248 irq_enable(desc); in __irq_startup()
250 irq_state_set_started(desc); in __irq_startup()
254 int irq_startup(struct irq_desc *desc, bool resend, bool force) in irq_startup() argument
256 struct irq_data *d = irq_desc_get_irq_data(desc); in irq_startup()
260 desc->depth = 0; in irq_startup()
263 irq_enable(desc); in irq_startup()
265 switch (__irq_startup_managed(desc, aff, force)) { in irq_startup()
268 irq_setup_affinity(desc); in irq_startup()
269 ret = __irq_startup(desc); in irq_startup()
271 irq_setup_affinity(desc); in irq_startup()
275 ret = __irq_startup(desc); in irq_startup()
283 check_irq_resend(desc, false); in irq_startup()
288 int irq_activate(struct irq_desc *desc) in irq_activate() argument
290 struct irq_data *d = irq_desc_get_irq_data(desc); in irq_activate()
297 int irq_activate_and_startup(struct irq_desc *desc, bool resend) in irq_activate_and_startup() argument
299 if (WARN_ON(irq_activate(desc))) in irq_activate_and_startup()
301 return irq_startup(desc, resend, IRQ_START_FORCE); in irq_activate_and_startup()
304 static void __irq_disable(struct irq_desc *desc, bool mask);
306 void irq_shutdown(struct irq_desc *desc) in irq_shutdown() argument
308 if (irqd_is_started(&desc->irq_data)) { in irq_shutdown()
309 desc->depth = 1; in irq_shutdown()
310 if (desc->irq_data.chip->irq_shutdown) { in irq_shutdown()
311 desc->irq_data.chip->irq_shutdown(&desc->irq_data); in irq_shutdown()
312 irq_state_set_disabled(desc); in irq_shutdown()
313 irq_state_set_masked(desc); in irq_shutdown()
315 __irq_disable(desc, true); in irq_shutdown()
317 irq_state_clr_started(desc); in irq_shutdown()
322 void irq_shutdown_and_deactivate(struct irq_desc *desc) in irq_shutdown_and_deactivate() argument
324 irq_shutdown(desc); in irq_shutdown_and_deactivate()
331 irq_domain_deactivate_irq(&desc->irq_data); in irq_shutdown_and_deactivate()
334 void irq_enable(struct irq_desc *desc) in irq_enable() argument
336 if (!irqd_irq_disabled(&desc->irq_data)) { in irq_enable()
337 unmask_irq(desc); in irq_enable()
339 irq_state_clr_disabled(desc); in irq_enable()
340 if (desc->irq_data.chip->irq_enable) { in irq_enable()
341 desc->irq_data.chip->irq_enable(&desc->irq_data); in irq_enable()
342 irq_state_clr_masked(desc); in irq_enable()
344 unmask_irq(desc); in irq_enable()
349 static void __irq_disable(struct irq_desc *desc, bool mask) in __irq_disable() argument
351 if (irqd_irq_disabled(&desc->irq_data)) { in __irq_disable()
353 mask_irq(desc); in __irq_disable()
355 irq_state_set_disabled(desc); in __irq_disable()
356 if (desc->irq_data.chip->irq_disable) { in __irq_disable()
357 desc->irq_data.chip->irq_disable(&desc->irq_data); in __irq_disable()
358 irq_state_set_masked(desc); in __irq_disable()
360 mask_irq(desc); in __irq_disable()
385 void irq_disable(struct irq_desc *desc) in irq_disable() argument
387 __irq_disable(desc, irq_settings_disable_unlazy(desc)); in irq_disable()
390 void irq_percpu_enable(struct irq_desc *desc, unsigned int cpu) in irq_percpu_enable() argument
392 if (desc->irq_data.chip->irq_enable) in irq_percpu_enable()
393 desc->irq_data.chip->irq_enable(&desc->irq_data); in irq_percpu_enable()
395 desc->irq_data.chip->irq_unmask(&desc->irq_data); in irq_percpu_enable()
396 cpumask_set_cpu(cpu, desc->percpu_enabled); in irq_percpu_enable()
399 void irq_percpu_disable(struct irq_desc *desc, unsigned int cpu) in irq_percpu_disable() argument
401 if (desc->irq_data.chip->irq_disable) in irq_percpu_disable()
402 desc->irq_data.chip->irq_disable(&desc->irq_data); in irq_percpu_disable()
404 desc->irq_data.chip->irq_mask(&desc->irq_data); in irq_percpu_disable()
405 cpumask_clear_cpu(cpu, desc->percpu_enabled); in irq_percpu_disable()
408 static inline void mask_ack_irq(struct irq_desc *desc) in mask_ack_irq() argument
410 if (desc->irq_data.chip->irq_mask_ack) { in mask_ack_irq()
411 desc->irq_data.chip->irq_mask_ack(&desc->irq_data); in mask_ack_irq()
412 irq_state_set_masked(desc); in mask_ack_irq()
414 mask_irq(desc); in mask_ack_irq()
415 if (desc->irq_data.chip->irq_ack) in mask_ack_irq()
416 desc->irq_data.chip->irq_ack(&desc->irq_data); in mask_ack_irq()
420 void mask_irq(struct irq_desc *desc) in mask_irq() argument
422 if (irqd_irq_masked(&desc->irq_data)) in mask_irq()
425 if (desc->irq_data.chip->irq_mask) { in mask_irq()
426 desc->irq_data.chip->irq_mask(&desc->irq_data); in mask_irq()
427 irq_state_set_masked(desc); in mask_irq()
431 void unmask_irq(struct irq_desc *desc) in unmask_irq() argument
433 if (!irqd_irq_masked(&desc->irq_data)) in unmask_irq()
436 if (desc->irq_data.chip->irq_unmask) { in unmask_irq()
437 desc->irq_data.chip->irq_unmask(&desc->irq_data); in unmask_irq()
438 irq_state_clr_masked(desc); in unmask_irq()
442 void unmask_threaded_irq(struct irq_desc *desc) in unmask_threaded_irq() argument
444 struct irq_chip *chip = desc->irq_data.chip; in unmask_threaded_irq()
447 chip->irq_eoi(&desc->irq_data); in unmask_threaded_irq()
449 unmask_irq(desc); in unmask_threaded_irq()
462 struct irq_desc *desc = irq_to_desc(irq); in handle_nested_irq() local
468 raw_spin_lock_irq(&desc->lock); in handle_nested_irq()
470 desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING); in handle_nested_irq()
472 action = desc->action; in handle_nested_irq()
473 if (unlikely(!action || irqd_irq_disabled(&desc->irq_data))) { in handle_nested_irq()
474 desc->istate |= IRQS_PENDING; in handle_nested_irq()
478 kstat_incr_irqs_this_cpu(desc); in handle_nested_irq()
479 irqd_set(&desc->irq_data, IRQD_IRQ_INPROGRESS); in handle_nested_irq()
480 raw_spin_unlock_irq(&desc->lock); in handle_nested_irq()
483 for_each_action_of_desc(desc, action) in handle_nested_irq()
486 if (!irq_settings_no_debug(desc)) in handle_nested_irq()
487 note_interrupt(desc, action_ret); in handle_nested_irq()
489 raw_spin_lock_irq(&desc->lock); in handle_nested_irq()
490 irqd_clear(&desc->irq_data, IRQD_IRQ_INPROGRESS); in handle_nested_irq()
493 raw_spin_unlock_irq(&desc->lock); in handle_nested_irq()
497 static bool irq_check_poll(struct irq_desc *desc) in irq_check_poll() argument
499 if (!(desc->istate & IRQS_POLL_INPROGRESS)) in irq_check_poll()
501 return irq_wait_for_poll(desc); in irq_check_poll()
504 static bool irq_may_run(struct irq_desc *desc) in irq_may_run() argument
512 if (!irqd_has_set(&desc->irq_data, mask)) in irq_may_run()
520 if (irq_pm_check_wakeup(desc)) in irq_may_run()
526 return irq_check_poll(desc); in irq_may_run()
540 void handle_simple_irq(struct irq_desc *desc) in handle_simple_irq() argument
542 raw_spin_lock(&desc->lock); in handle_simple_irq()
544 if (!irq_may_run(desc)) in handle_simple_irq()
547 desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING); in handle_simple_irq()
549 if (unlikely(!desc->action || irqd_irq_disabled(&desc->irq_data))) { in handle_simple_irq()
550 desc->istate |= IRQS_PENDING; in handle_simple_irq()
554 kstat_incr_irqs_this_cpu(desc); in handle_simple_irq()
555 handle_irq_event(desc); in handle_simple_irq()
558 raw_spin_unlock(&desc->lock); in handle_simple_irq()
575 void handle_untracked_irq(struct irq_desc *desc) in handle_untracked_irq() argument
577 raw_spin_lock(&desc->lock); in handle_untracked_irq()
579 if (!irq_may_run(desc)) in handle_untracked_irq()
582 desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING); in handle_untracked_irq()
584 if (unlikely(!desc->action || irqd_irq_disabled(&desc->irq_data))) { in handle_untracked_irq()
585 desc->istate |= IRQS_PENDING; in handle_untracked_irq()
589 desc->istate &= ~IRQS_PENDING; in handle_untracked_irq()
590 irqd_set(&desc->irq_data, IRQD_IRQ_INPROGRESS); in handle_untracked_irq()
591 raw_spin_unlock(&desc->lock); in handle_untracked_irq()
593 __handle_irq_event_percpu(desc); in handle_untracked_irq()
595 raw_spin_lock(&desc->lock); in handle_untracked_irq()
596 irqd_clear(&desc->irq_data, IRQD_IRQ_INPROGRESS); in handle_untracked_irq()
599 raw_spin_unlock(&desc->lock); in handle_untracked_irq()
607 static void cond_unmask_irq(struct irq_desc *desc) in cond_unmask_irq() argument
616 if (!irqd_irq_disabled(&desc->irq_data) && in cond_unmask_irq()
617 irqd_irq_masked(&desc->irq_data) && !desc->threads_oneshot) in cond_unmask_irq()
618 unmask_irq(desc); in cond_unmask_irq()
630 void handle_level_irq(struct irq_desc *desc) in handle_level_irq() argument
632 raw_spin_lock(&desc->lock); in handle_level_irq()
633 mask_ack_irq(desc); in handle_level_irq()
635 if (!irq_may_run(desc)) in handle_level_irq()
638 desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING); in handle_level_irq()
644 if (unlikely(!desc->action || irqd_irq_disabled(&desc->irq_data))) { in handle_level_irq()
645 desc->istate |= IRQS_PENDING; in handle_level_irq()
649 kstat_incr_irqs_this_cpu(desc); in handle_level_irq()
650 handle_irq_event(desc); in handle_level_irq()
652 cond_unmask_irq(desc); in handle_level_irq()
655 raw_spin_unlock(&desc->lock); in handle_level_irq()
659 static void cond_unmask_eoi_irq(struct irq_desc *desc, struct irq_chip *chip) in cond_unmask_eoi_irq() argument
661 if (!(desc->istate & IRQS_ONESHOT)) { in cond_unmask_eoi_irq()
662 chip->irq_eoi(&desc->irq_data); in cond_unmask_eoi_irq()
671 if (!irqd_irq_disabled(&desc->irq_data) && in cond_unmask_eoi_irq()
672 irqd_irq_masked(&desc->irq_data) && !desc->threads_oneshot) { in cond_unmask_eoi_irq()
673 chip->irq_eoi(&desc->irq_data); in cond_unmask_eoi_irq()
674 unmask_irq(desc); in cond_unmask_eoi_irq()
676 chip->irq_eoi(&desc->irq_data); in cond_unmask_eoi_irq()
689 void handle_fasteoi_irq(struct irq_desc *desc) in handle_fasteoi_irq() argument
691 struct irq_chip *chip = desc->irq_data.chip; in handle_fasteoi_irq()
693 raw_spin_lock(&desc->lock); in handle_fasteoi_irq()
695 if (!irq_may_run(desc)) in handle_fasteoi_irq()
698 desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING); in handle_fasteoi_irq()
704 if (unlikely(!desc->action || irqd_irq_disabled(&desc->irq_data))) { in handle_fasteoi_irq()
705 desc->istate |= IRQS_PENDING; in handle_fasteoi_irq()
706 mask_irq(desc); in handle_fasteoi_irq()
710 kstat_incr_irqs_this_cpu(desc); in handle_fasteoi_irq()
711 if (desc->istate & IRQS_ONESHOT) in handle_fasteoi_irq()
712 mask_irq(desc); in handle_fasteoi_irq()
714 handle_irq_event(desc); in handle_fasteoi_irq()
716 cond_unmask_eoi_irq(desc, chip); in handle_fasteoi_irq()
718 raw_spin_unlock(&desc->lock); in handle_fasteoi_irq()
722 chip->irq_eoi(&desc->irq_data); in handle_fasteoi_irq()
723 raw_spin_unlock(&desc->lock); in handle_fasteoi_irq()
739 void handle_fasteoi_nmi(struct irq_desc *desc) in handle_fasteoi_nmi() argument
741 struct irq_chip *chip = irq_desc_get_chip(desc); in handle_fasteoi_nmi()
742 struct irqaction *action = desc->action; in handle_fasteoi_nmi()
743 unsigned int irq = irq_desc_get_irq(desc); in handle_fasteoi_nmi()
746 __kstat_incr_irqs_this_cpu(desc); in handle_fasteoi_nmi()
756 chip->irq_eoi(&desc->irq_data); in handle_fasteoi_nmi()
775 void handle_edge_irq(struct irq_desc *desc) in handle_edge_irq() argument
777 raw_spin_lock(&desc->lock); in handle_edge_irq()
779 desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING); in handle_edge_irq()
781 if (!irq_may_run(desc)) { in handle_edge_irq()
782 desc->istate |= IRQS_PENDING; in handle_edge_irq()
783 mask_ack_irq(desc); in handle_edge_irq()
791 if (irqd_irq_disabled(&desc->irq_data) || !desc->action) { in handle_edge_irq()
792 desc->istate |= IRQS_PENDING; in handle_edge_irq()
793 mask_ack_irq(desc); in handle_edge_irq()
797 kstat_incr_irqs_this_cpu(desc); in handle_edge_irq()
800 desc->irq_data.chip->irq_ack(&desc->irq_data); in handle_edge_irq()
803 if (unlikely(!desc->action)) { in handle_edge_irq()
804 mask_irq(desc); in handle_edge_irq()
813 if (unlikely(desc->istate & IRQS_PENDING)) { in handle_edge_irq()
814 if (!irqd_irq_disabled(&desc->irq_data) && in handle_edge_irq()
815 irqd_irq_masked(&desc->irq_data)) in handle_edge_irq()
816 unmask_irq(desc); in handle_edge_irq()
819 handle_irq_event(desc); in handle_edge_irq()
821 } while ((desc->istate & IRQS_PENDING) && in handle_edge_irq()
822 !irqd_irq_disabled(&desc->irq_data)); in handle_edge_irq()
825 raw_spin_unlock(&desc->lock); in handle_edge_irq()
837 void handle_edge_eoi_irq(struct irq_desc *desc) in handle_edge_eoi_irq() argument
839 struct irq_chip *chip = irq_desc_get_chip(desc); in handle_edge_eoi_irq()
841 raw_spin_lock(&desc->lock); in handle_edge_eoi_irq()
843 desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING); in handle_edge_eoi_irq()
845 if (!irq_may_run(desc)) { in handle_edge_eoi_irq()
846 desc->istate |= IRQS_PENDING; in handle_edge_eoi_irq()
854 if (irqd_irq_disabled(&desc->irq_data) || !desc->action) { in handle_edge_eoi_irq()
855 desc->istate |= IRQS_PENDING; in handle_edge_eoi_irq()
859 kstat_incr_irqs_this_cpu(desc); in handle_edge_eoi_irq()
862 if (unlikely(!desc->action)) in handle_edge_eoi_irq()
865 handle_irq_event(desc); in handle_edge_eoi_irq()
867 } while ((desc->istate & IRQS_PENDING) && in handle_edge_eoi_irq()
868 !irqd_irq_disabled(&desc->irq_data)); in handle_edge_eoi_irq()
871 chip->irq_eoi(&desc->irq_data); in handle_edge_eoi_irq()
872 raw_spin_unlock(&desc->lock); in handle_edge_eoi_irq()
882 void handle_percpu_irq(struct irq_desc *desc) in handle_percpu_irq() argument
884 struct irq_chip *chip = irq_desc_get_chip(desc); in handle_percpu_irq()
890 __kstat_incr_irqs_this_cpu(desc); in handle_percpu_irq()
893 chip->irq_ack(&desc->irq_data); in handle_percpu_irq()
895 handle_irq_event_percpu(desc); in handle_percpu_irq()
898 chip->irq_eoi(&desc->irq_data); in handle_percpu_irq()
912 void handle_percpu_devid_irq(struct irq_desc *desc) in handle_percpu_devid_irq() argument
914 struct irq_chip *chip = irq_desc_get_chip(desc); in handle_percpu_devid_irq()
915 struct irqaction *action = desc->action; in handle_percpu_devid_irq()
916 unsigned int irq = irq_desc_get_irq(desc); in handle_percpu_devid_irq()
923 __kstat_incr_irqs_this_cpu(desc); in handle_percpu_devid_irq()
926 chip->irq_ack(&desc->irq_data); in handle_percpu_devid_irq()
934 bool enabled = cpumask_test_cpu(cpu, desc->percpu_enabled); in handle_percpu_devid_irq()
937 irq_percpu_disable(desc, cpu); in handle_percpu_devid_irq()
944 chip->irq_eoi(&desc->irq_data); in handle_percpu_devid_irq()
955 void handle_percpu_devid_fasteoi_nmi(struct irq_desc *desc) in handle_percpu_devid_fasteoi_nmi() argument
957 struct irq_chip *chip = irq_desc_get_chip(desc); in handle_percpu_devid_fasteoi_nmi()
958 struct irqaction *action = desc->action; in handle_percpu_devid_fasteoi_nmi()
959 unsigned int irq = irq_desc_get_irq(desc); in handle_percpu_devid_fasteoi_nmi()
962 __kstat_incr_irqs_this_cpu(desc); in handle_percpu_devid_fasteoi_nmi()
969 chip->irq_eoi(&desc->irq_data); in handle_percpu_devid_fasteoi_nmi()
973 __irq_do_set_handler(struct irq_desc *desc, irq_flow_handler_t handle, in __irq_do_set_handler() argument
979 struct irq_data *irq_data = &desc->irq_data; in __irq_do_set_handler()
1008 if (desc->irq_data.chip != &no_irq_chip) in __irq_do_set_handler()
1009 mask_ack_irq(desc); in __irq_do_set_handler()
1010 irq_state_set_disabled(desc); in __irq_do_set_handler()
1012 desc->action = NULL; in __irq_do_set_handler()
1013 WARN_ON(irq_chip_pm_put(irq_desc_get_irq_data(desc))); in __irq_do_set_handler()
1015 desc->depth = 1; in __irq_do_set_handler()
1017 desc->handle_irq = handle; in __irq_do_set_handler()
1018 desc->name = name; in __irq_do_set_handler()
1021 unsigned int type = irqd_get_trigger_type(&desc->irq_data); in __irq_do_set_handler()
1032 __irq_set_trigger(desc, type); in __irq_do_set_handler()
1033 desc->handle_irq = handle; in __irq_do_set_handler()
1036 irq_settings_set_noprobe(desc); in __irq_do_set_handler()
1037 irq_settings_set_norequest(desc); in __irq_do_set_handler()
1038 irq_settings_set_nothread(desc); in __irq_do_set_handler()
1039 desc->action = &chained_action; in __irq_do_set_handler()
1040 WARN_ON(irq_chip_pm_get(irq_desc_get_irq_data(desc))); in __irq_do_set_handler()
1041 irq_activate_and_startup(desc, IRQ_RESEND); in __irq_do_set_handler()
1050 struct irq_desc *desc = irq_get_desc_buslock(irq, &flags, 0); in __irq_set_handler() local
1052 if (!desc) in __irq_set_handler()
1055 __irq_do_set_handler(desc, handle, is_chained, name); in __irq_set_handler()
1056 irq_put_desc_busunlock(desc, flags); in __irq_set_handler()
1065 struct irq_desc *desc = irq_get_desc_buslock(irq, &flags, 0); in irq_set_chained_handler_and_data() local
1067 if (!desc) in irq_set_chained_handler_and_data()
1070 desc->irq_common_data.handler_data = data; in irq_set_chained_handler_and_data()
1071 __irq_do_set_handler(desc, handle, 1, NULL); in irq_set_chained_handler_and_data()
1073 irq_put_desc_busunlock(desc, flags); in irq_set_chained_handler_and_data()
1089 struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0); in irq_modify_status() local
1091 if (!desc) in irq_modify_status()
1098 WARN_ON_ONCE(!desc->depth && (set & _IRQ_NOAUTOEN)); in irq_modify_status()
1100 irq_settings_clr_and_set(desc, clr, set); in irq_modify_status()
1102 trigger = irqd_get_trigger_type(&desc->irq_data); in irq_modify_status()
1104 irqd_clear(&desc->irq_data, IRQD_NO_BALANCING | IRQD_PER_CPU | in irq_modify_status()
1106 if (irq_settings_has_no_balance_set(desc)) in irq_modify_status()
1107 irqd_set(&desc->irq_data, IRQD_NO_BALANCING); in irq_modify_status()
1108 if (irq_settings_is_per_cpu(desc)) in irq_modify_status()
1109 irqd_set(&desc->irq_data, IRQD_PER_CPU); in irq_modify_status()
1110 if (irq_settings_can_move_pcntxt(desc)) in irq_modify_status()
1111 irqd_set(&desc->irq_data, IRQD_MOVE_PCNTXT); in irq_modify_status()
1112 if (irq_settings_is_level(desc)) in irq_modify_status()
1113 irqd_set(&desc->irq_data, IRQD_LEVEL); in irq_modify_status()
1115 tmp = irq_settings_get_trigger_mask(desc); in irq_modify_status()
1119 irqd_set(&desc->irq_data, trigger); in irq_modify_status()
1121 irq_put_desc_unlock(desc, flags); in irq_modify_status()
1134 struct irq_desc *desc; in irq_cpu_online() local
1140 desc = irq_to_desc(irq); in irq_cpu_online()
1141 if (!desc) in irq_cpu_online()
1144 raw_spin_lock_irqsave(&desc->lock, flags); in irq_cpu_online()
1146 chip = irq_data_get_irq_chip(&desc->irq_data); in irq_cpu_online()
1149 !irqd_irq_disabled(&desc->irq_data))) in irq_cpu_online()
1150 chip->irq_cpu_online(&desc->irq_data); in irq_cpu_online()
1152 raw_spin_unlock_irqrestore(&desc->lock, flags); in irq_cpu_online()
1164 struct irq_desc *desc; in irq_cpu_offline() local
1170 desc = irq_to_desc(irq); in irq_cpu_offline()
1171 if (!desc) in irq_cpu_offline()
1174 raw_spin_lock_irqsave(&desc->lock, flags); in irq_cpu_offline()
1176 chip = irq_data_get_irq_chip(&desc->irq_data); in irq_cpu_offline()
1179 !irqd_irq_disabled(&desc->irq_data))) in irq_cpu_offline()
1180 chip->irq_cpu_offline(&desc->irq_data); in irq_cpu_offline()
1182 raw_spin_unlock_irqrestore(&desc->lock, flags); in irq_cpu_offline()
1200 void handle_fasteoi_ack_irq(struct irq_desc *desc) in handle_fasteoi_ack_irq() argument
1202 struct irq_chip *chip = desc->irq_data.chip; in handle_fasteoi_ack_irq()
1204 raw_spin_lock(&desc->lock); in handle_fasteoi_ack_irq()
1206 if (!irq_may_run(desc)) in handle_fasteoi_ack_irq()
1209 desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING); in handle_fasteoi_ack_irq()
1215 if (unlikely(!desc->action || irqd_irq_disabled(&desc->irq_data))) { in handle_fasteoi_ack_irq()
1216 desc->istate |= IRQS_PENDING; in handle_fasteoi_ack_irq()
1217 mask_irq(desc); in handle_fasteoi_ack_irq()
1221 kstat_incr_irqs_this_cpu(desc); in handle_fasteoi_ack_irq()
1222 if (desc->istate & IRQS_ONESHOT) in handle_fasteoi_ack_irq()
1223 mask_irq(desc); in handle_fasteoi_ack_irq()
1226 desc->irq_data.chip->irq_ack(&desc->irq_data); in handle_fasteoi_ack_irq()
1228 handle_irq_event(desc); in handle_fasteoi_ack_irq()
1230 cond_unmask_eoi_irq(desc, chip); in handle_fasteoi_ack_irq()
1232 raw_spin_unlock(&desc->lock); in handle_fasteoi_ack_irq()
1236 chip->irq_eoi(&desc->irq_data); in handle_fasteoi_ack_irq()
1237 raw_spin_unlock(&desc->lock); in handle_fasteoi_ack_irq()
1251 void handle_fasteoi_mask_irq(struct irq_desc *desc) in handle_fasteoi_mask_irq() argument
1253 struct irq_chip *chip = desc->irq_data.chip; in handle_fasteoi_mask_irq()
1255 raw_spin_lock(&desc->lock); in handle_fasteoi_mask_irq()
1256 mask_ack_irq(desc); in handle_fasteoi_mask_irq()
1258 if (!irq_may_run(desc)) in handle_fasteoi_mask_irq()
1261 desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING); in handle_fasteoi_mask_irq()
1267 if (unlikely(!desc->action || irqd_irq_disabled(&desc->irq_data))) { in handle_fasteoi_mask_irq()
1268 desc->istate |= IRQS_PENDING; in handle_fasteoi_mask_irq()
1269 mask_irq(desc); in handle_fasteoi_mask_irq()
1273 kstat_incr_irqs_this_cpu(desc); in handle_fasteoi_mask_irq()
1274 if (desc->istate & IRQS_ONESHOT) in handle_fasteoi_mask_irq()
1275 mask_irq(desc); in handle_fasteoi_mask_irq()
1277 handle_irq_event(desc); in handle_fasteoi_mask_irq()
1279 cond_unmask_eoi_irq(desc, chip); in handle_fasteoi_mask_irq()
1281 raw_spin_unlock(&desc->lock); in handle_fasteoi_mask_irq()
1285 chip->irq_eoi(&desc->irq_data); in handle_fasteoi_mask_irq()
1286 raw_spin_unlock(&desc->lock); in handle_fasteoi_mask_irq()