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()
939 if (!desc->action || in can_request_irq()
940 irqflags & desc->action->flags & IRQF_SHARED) in can_request_irq()
1045 static int irq_wait_for_interrupt(struct irqaction *action) in irq_wait_for_interrupt() argument
1053 &action->thread_flags)) { in irq_wait_for_interrupt()
1062 &action->thread_flags)) { in irq_wait_for_interrupt()
1076 struct irqaction *action) in irq_finalize_oneshot() argument
1079 action->handler == irq_forced_secondary_handler) in irq_finalize_oneshot()
1111 if (test_bit(IRQTF_RUNTHREAD, &action->thread_flags)) in irq_finalize_oneshot()
1114 desc->threads_oneshot &= ~action->thread_mask; in irq_finalize_oneshot()
1130 irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action) in irq_thread_check_affinity() argument
1135 if (!test_and_clear_bit(IRQTF_AFFINITY, &action->thread_flags)) in irq_thread_check_affinity()
1143 set_bit(IRQTF_AFFINITY, &action->thread_flags); in irq_thread_check_affinity()
1168 irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action) { } in irq_thread_check_affinity() argument
1178 irq_forced_thread_fn(struct irq_desc *desc, struct irqaction *action) in irq_forced_thread_fn() argument
1185 ret = action->thread_fn(action->irq, action->dev_id); in irq_forced_thread_fn()
1189 irq_finalize_oneshot(desc, action); in irq_forced_thread_fn()
1202 struct irqaction *action) in irq_thread_fn() argument
1206 ret = action->thread_fn(action->irq, action->dev_id); in irq_thread_fn()
1210 irq_finalize_oneshot(desc, action); in irq_thread_fn()
1224 struct irqaction *action; in irq_thread_dtor() local
1229 action = kthread_data(tsk); in irq_thread_dtor()
1232 tsk->comm, tsk->pid, action->irq); in irq_thread_dtor()
1235 desc = irq_to_desc(action->irq); in irq_thread_dtor()
1240 if (test_and_clear_bit(IRQTF_RUNTHREAD, &action->thread_flags)) in irq_thread_dtor()
1244 irq_finalize_oneshot(desc, action); in irq_thread_dtor()
1247 static void irq_wake_secondary(struct irq_desc *desc, struct irqaction *action) in irq_wake_secondary() argument
1249 struct irqaction *secondary = action->secondary; in irq_wake_secondary()
1263 struct irqaction *action) in irq_thread_set_ready() argument
1265 set_bit(IRQTF_READY, &action->thread_flags); in irq_thread_set_ready()
1274 struct irqaction *action) in wake_up_and_wait_for_irq_thread_ready() argument
1276 if (!action || !action->thread) in wake_up_and_wait_for_irq_thread_ready()
1279 wake_up_process(action->thread); in wake_up_and_wait_for_irq_thread_ready()
1281 test_bit(IRQTF_READY, &action->thread_flags)); in wake_up_and_wait_for_irq_thread_ready()
1290 struct irqaction *action = data; in irq_thread() local
1291 struct irq_desc *desc = irq_to_desc(action->irq); in irq_thread()
1293 struct irqaction *action); in irq_thread()
1295 irq_thread_set_ready(desc, action); in irq_thread()
1300 &action->thread_flags)) in irq_thread()
1308 irq_thread_check_affinity(desc, action); in irq_thread()
1310 while (!irq_wait_for_interrupt(action)) { in irq_thread()
1313 irq_thread_check_affinity(desc, action); in irq_thread()
1315 action_ret = handler_fn(desc, action); in irq_thread()
1317 irq_wake_secondary(desc, action); in irq_thread()
1341 struct irqaction *action; in irq_wake_thread() local
1348 for_each_action_of_desc(desc, action) { in irq_wake_thread()
1349 if (action->dev_id == dev_id) { in irq_wake_thread()
1350 if (action->thread) in irq_wake_thread()
1351 __irq_wake_thread(desc, action); in irq_wake_thread()
1590 if (!desc->action) { in __setup_irq()
1606 old_ptr = &desc->action; in __setup_irq()
1837 if (!desc->action) in __setup_irq()
1870 struct irqaction *action, **action_ptr; in __free_irq() local
1883 action_ptr = &desc->action; in __free_irq()
1885 action = *action_ptr; in __free_irq()
1887 if (!action) { in __free_irq()
1895 if (action->dev_id == dev_id) in __free_irq()
1897 action_ptr = &action->next; in __free_irq()
1901 *action_ptr = action->next; in __free_irq()
1903 irq_pm_remove_action(desc, action); in __free_irq()
1906 if (!desc->action) { in __free_irq()
1935 unregister_handler_proc(irq, action); in __free_irq()
1953 if (action->flags & IRQF_SHARED) { in __free_irq()
1955 action->handler(irq, dev_id); in __free_irq()
1966 if (action->thread) { in __free_irq()
1967 kthread_stop(action->thread); in __free_irq()
1968 put_task_struct(action->thread); in __free_irq()
1969 if (action->secondary && action->secondary->thread) { in __free_irq()
1970 kthread_stop(action->secondary->thread); in __free_irq()
1971 put_task_struct(action->secondary->thread); in __free_irq()
1976 if (!desc->action) { in __free_irq()
1999 kfree(action->secondary); in __free_irq()
2000 return action; in __free_irq()
2022 struct irqaction *action; in free_irq() local
2033 action = __free_irq(desc, dev_id); in free_irq()
2035 if (!action) in free_irq()
2038 devname = action->name; in free_irq()
2039 kfree(action); in free_irq()
2051 if (!WARN_ON(desc->action == NULL)) { in __cleanup_nmi()
2052 irq_pm_remove_action(desc, desc->action); in __cleanup_nmi()
2053 devname = desc->action->name; in __cleanup_nmi()
2054 unregister_handler_proc(irq, desc->action); in __cleanup_nmi()
2056 kfree(desc->action); in __cleanup_nmi()
2057 desc->action = NULL; in __cleanup_nmi()
2143 struct irqaction *action; in request_threaded_irq() local
2183 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_threaded_irq()
2184 if (!action) in request_threaded_irq()
2187 action->handler = handler; in request_threaded_irq()
2188 action->thread_fn = thread_fn; in request_threaded_irq()
2189 action->flags = irqflags; in request_threaded_irq()
2190 action->name = devname; in request_threaded_irq()
2191 action->dev_id = dev_id; in request_threaded_irq()
2195 kfree(action); in request_threaded_irq()
2199 retval = __setup_irq(irq, desc, action); in request_threaded_irq()
2203 kfree(action->secondary); in request_threaded_irq()
2204 kfree(action); in request_threaded_irq()
2300 struct irqaction *action; in request_nmi() local
2327 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_nmi()
2328 if (!action) in request_nmi()
2331 action->handler = handler; in request_nmi()
2332 action->flags = irqflags | IRQF_NO_THREAD | IRQF_NOBALANCING; in request_nmi()
2333 action->name = name; in request_nmi()
2334 action->dev_id = dev_id; in request_nmi()
2340 retval = __setup_irq(irq, desc, action); in request_nmi()
2362 kfree(action); in request_nmi()
2456 struct irqaction *action; in __free_percpu_irq() local
2466 action = desc->action; in __free_percpu_irq()
2467 if (!action || action->percpu_dev_id != dev_id) { in __free_percpu_irq()
2479 desc->action = NULL; in __free_percpu_irq()
2485 unregister_handler_proc(irq, action); in __free_percpu_irq()
2489 return action; in __free_percpu_irq()
2597 struct irqaction *action; in __request_percpu_irq() local
2612 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in __request_percpu_irq()
2613 if (!action) in __request_percpu_irq()
2616 action->handler = handler; in __request_percpu_irq()
2617 action->flags = flags | IRQF_PERCPU | IRQF_NO_SUSPEND; in __request_percpu_irq()
2618 action->name = devname; in __request_percpu_irq()
2619 action->percpu_dev_id = dev_id; in __request_percpu_irq()
2623 kfree(action); in __request_percpu_irq()
2627 retval = __setup_irq(irq, desc, action); in __request_percpu_irq()
2631 kfree(action); in __request_percpu_irq()
2662 struct irqaction *action; in request_percpu_nmi() local
2682 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_percpu_nmi()
2683 if (!action) in request_percpu_nmi()
2686 action->handler = handler; in request_percpu_nmi()
2687 action->flags = IRQF_PERCPU | IRQF_NO_SUSPEND | IRQF_NO_THREAD in request_percpu_nmi()
2689 action->name = name; in request_percpu_nmi()
2690 action->percpu_dev_id = dev_id; in request_percpu_nmi()
2696 retval = __setup_irq(irq, desc, action); in request_percpu_nmi()
2709 kfree(action); in request_percpu_nmi()