Lines Matching refs:action
190 struct irqaction *action; in irq_set_thread_affinity() local
192 for_each_action_of_desc(desc, action) in irq_set_thread_affinity()
193 if (action->thread) in irq_set_thread_affinity()
194 set_bit(IRQTF_AFFINITY, &action->thread_flags); in irq_set_thread_affinity()
755 if (!desc->action || in can_request_irq()
756 irqflags & desc->action->flags & IRQF_SHARED) in can_request_irq()
861 static int irq_wait_for_interrupt(struct irqaction *action) in irq_wait_for_interrupt() argument
869 &action->thread_flags)) { in irq_wait_for_interrupt()
878 &action->thread_flags)) { in irq_wait_for_interrupt()
892 struct irqaction *action) in irq_finalize_oneshot() argument
895 action->handler == irq_forced_secondary_handler) in irq_finalize_oneshot()
927 if (test_bit(IRQTF_RUNTHREAD, &action->thread_flags)) in irq_finalize_oneshot()
930 desc->threads_oneshot &= ~action->thread_mask; in irq_finalize_oneshot()
946 irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action) in irq_thread_check_affinity() argument
951 if (!test_and_clear_bit(IRQTF_AFFINITY, &action->thread_flags)) in irq_thread_check_affinity()
959 set_bit(IRQTF_AFFINITY, &action->thread_flags); in irq_thread_check_affinity()
984 irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action) { } in irq_thread_check_affinity() argument
994 irq_forced_thread_fn(struct irq_desc *desc, struct irqaction *action) in irq_forced_thread_fn() argument
999 ret = action->thread_fn(action->irq, action->dev_id); in irq_forced_thread_fn()
1003 irq_finalize_oneshot(desc, action); in irq_forced_thread_fn()
1014 struct irqaction *action) in irq_thread_fn() argument
1018 ret = action->thread_fn(action->irq, action->dev_id); in irq_thread_fn()
1022 irq_finalize_oneshot(desc, action); in irq_thread_fn()
1036 struct irqaction *action; in irq_thread_dtor() local
1041 action = kthread_data(tsk); in irq_thread_dtor()
1044 tsk->comm, tsk->pid, action->irq); in irq_thread_dtor()
1047 desc = irq_to_desc(action->irq); in irq_thread_dtor()
1052 if (test_and_clear_bit(IRQTF_RUNTHREAD, &action->thread_flags)) in irq_thread_dtor()
1056 irq_finalize_oneshot(desc, action); in irq_thread_dtor()
1059 static void irq_wake_secondary(struct irq_desc *desc, struct irqaction *action) in irq_wake_secondary() argument
1061 struct irqaction *secondary = action->secondary; in irq_wake_secondary()
1077 struct irqaction *action = data; in irq_thread() local
1078 struct irq_desc *desc = irq_to_desc(action->irq); in irq_thread()
1080 struct irqaction *action); in irq_thread()
1083 &action->thread_flags)) in irq_thread()
1091 irq_thread_check_affinity(desc, action); in irq_thread()
1093 while (!irq_wait_for_interrupt(action)) { in irq_thread()
1096 irq_thread_check_affinity(desc, action); in irq_thread()
1098 action_ret = handler_fn(desc, action); in irq_thread()
1100 irq_wake_secondary(desc, action); in irq_thread()
1124 struct irqaction *action; in irq_wake_thread() local
1131 for_each_action_of_desc(desc, action) { in irq_wake_thread()
1132 if (action->dev_id == dev_id) { in irq_wake_thread()
1133 if (action->thread) in irq_wake_thread()
1134 __irq_wake_thread(desc, action); in irq_wake_thread()
1379 if (!desc->action) { in __setup_irq()
1395 old_ptr = &desc->action; in __setup_irq()
1628 if (!desc->action) in __setup_irq()
1689 struct irqaction *action, **action_ptr; in __free_irq() local
1702 action_ptr = &desc->action; in __free_irq()
1704 action = *action_ptr; in __free_irq()
1706 if (!action) { in __free_irq()
1714 if (action->dev_id == dev_id) in __free_irq()
1716 action_ptr = &action->next; in __free_irq()
1720 *action_ptr = action->next; in __free_irq()
1722 irq_pm_remove_action(desc, action); in __free_irq()
1725 if (!desc->action) { in __free_irq()
1754 unregister_handler_proc(irq, action); in __free_irq()
1772 if (action->flags & IRQF_SHARED) { in __free_irq()
1774 action->handler(irq, dev_id); in __free_irq()
1785 if (action->thread) { in __free_irq()
1786 kthread_stop(action->thread); in __free_irq()
1787 put_task_struct(action->thread); in __free_irq()
1788 if (action->secondary && action->secondary->thread) { in __free_irq()
1789 kthread_stop(action->secondary->thread); in __free_irq()
1790 put_task_struct(action->secondary->thread); in __free_irq()
1795 if (!desc->action) { in __free_irq()
1818 kfree(action->secondary); in __free_irq()
1819 return action; in __free_irq()
1857 struct irqaction *action; in free_irq() local
1868 action = __free_irq(desc, dev_id); in free_irq()
1870 if (!action) in free_irq()
1873 devname = action->name; in free_irq()
1874 kfree(action); in free_irq()
1886 if (!WARN_ON(desc->action == NULL)) { in __cleanup_nmi()
1887 irq_pm_remove_action(desc, desc->action); in __cleanup_nmi()
1888 devname = desc->action->name; in __cleanup_nmi()
1889 unregister_handler_proc(irq, desc->action); in __cleanup_nmi()
1891 kfree(desc->action); in __cleanup_nmi()
1892 desc->action = NULL; in __cleanup_nmi()
1978 struct irqaction *action; in request_threaded_irq() local
2013 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_threaded_irq()
2014 if (!action) in request_threaded_irq()
2017 action->handler = handler; in request_threaded_irq()
2018 action->thread_fn = thread_fn; in request_threaded_irq()
2019 action->flags = irqflags; in request_threaded_irq()
2020 action->name = devname; in request_threaded_irq()
2021 action->dev_id = dev_id; in request_threaded_irq()
2025 kfree(action); in request_threaded_irq()
2029 retval = __setup_irq(irq, desc, action); in request_threaded_irq()
2033 kfree(action->secondary); in request_threaded_irq()
2034 kfree(action); in request_threaded_irq()
2130 struct irqaction *action; in request_nmi() local
2156 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_nmi()
2157 if (!action) in request_nmi()
2160 action->handler = handler; in request_nmi()
2161 action->flags = irqflags | IRQF_NO_THREAD | IRQF_NOBALANCING; in request_nmi()
2162 action->name = name; in request_nmi()
2163 action->dev_id = dev_id; in request_nmi()
2169 retval = __setup_irq(irq, desc, action); in request_nmi()
2191 kfree(action); in request_nmi()
2285 struct irqaction *action; in __free_percpu_irq() local
2295 action = desc->action; in __free_percpu_irq()
2296 if (!action || action->percpu_dev_id != dev_id) { in __free_percpu_irq()
2308 desc->action = NULL; in __free_percpu_irq()
2314 unregister_handler_proc(irq, action); in __free_percpu_irq()
2318 return action; in __free_percpu_irq()
2426 struct irqaction *action; in __request_percpu_irq() local
2441 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in __request_percpu_irq()
2442 if (!action) in __request_percpu_irq()
2445 action->handler = handler; in __request_percpu_irq()
2446 action->flags = flags | IRQF_PERCPU | IRQF_NO_SUSPEND; in __request_percpu_irq()
2447 action->name = devname; in __request_percpu_irq()
2448 action->percpu_dev_id = dev_id; in __request_percpu_irq()
2452 kfree(action); in __request_percpu_irq()
2456 retval = __setup_irq(irq, desc, action); in __request_percpu_irq()
2460 kfree(action); in __request_percpu_irq()
2491 struct irqaction *action; in request_percpu_nmi() local
2511 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_percpu_nmi()
2512 if (!action) in request_percpu_nmi()
2515 action->handler = handler; in request_percpu_nmi()
2516 action->flags = IRQF_PERCPU | IRQF_NO_SUSPEND | IRQF_NO_THREAD in request_percpu_nmi()
2518 action->name = name; in request_percpu_nmi()
2519 action->percpu_dev_id = dev_id; in request_percpu_nmi()
2525 retval = __setup_irq(irq, desc, action); in request_percpu_nmi()
2538 kfree(action); in request_percpu_nmi()