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()
938 if (!desc->action || in can_request_irq()
939 irqflags & desc->action->flags & IRQF_SHARED) in can_request_irq()
1044 static int irq_wait_for_interrupt(struct irqaction *action) in irq_wait_for_interrupt() argument
1052 &action->thread_flags)) { in irq_wait_for_interrupt()
1061 &action->thread_flags)) { in irq_wait_for_interrupt()
1075 struct irqaction *action) in irq_finalize_oneshot() argument
1078 action->handler == irq_forced_secondary_handler) in irq_finalize_oneshot()
1110 if (test_bit(IRQTF_RUNTHREAD, &action->thread_flags)) in irq_finalize_oneshot()
1113 desc->threads_oneshot &= ~action->thread_mask; in irq_finalize_oneshot()
1129 irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action) in irq_thread_check_affinity() argument
1134 if (!test_and_clear_bit(IRQTF_AFFINITY, &action->thread_flags)) in irq_thread_check_affinity()
1142 set_bit(IRQTF_AFFINITY, &action->thread_flags); in irq_thread_check_affinity()
1167 irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action) { } in irq_thread_check_affinity() argument
1177 irq_forced_thread_fn(struct irq_desc *desc, struct irqaction *action) in irq_forced_thread_fn() argument
1184 ret = action->thread_fn(action->irq, action->dev_id); in irq_forced_thread_fn()
1188 irq_finalize_oneshot(desc, action); in irq_forced_thread_fn()
1201 struct irqaction *action) in irq_thread_fn() argument
1205 ret = action->thread_fn(action->irq, action->dev_id); in irq_thread_fn()
1209 irq_finalize_oneshot(desc, action); in irq_thread_fn()
1223 struct irqaction *action; in irq_thread_dtor() local
1228 action = kthread_data(tsk); in irq_thread_dtor()
1231 tsk->comm, tsk->pid, action->irq); in irq_thread_dtor()
1234 desc = irq_to_desc(action->irq); in irq_thread_dtor()
1239 if (test_and_clear_bit(IRQTF_RUNTHREAD, &action->thread_flags)) in irq_thread_dtor()
1243 irq_finalize_oneshot(desc, action); in irq_thread_dtor()
1246 static void irq_wake_secondary(struct irq_desc *desc, struct irqaction *action) in irq_wake_secondary() argument
1248 struct irqaction *secondary = action->secondary; in irq_wake_secondary()
1262 struct irqaction *action) in irq_thread_set_ready() argument
1264 set_bit(IRQTF_READY, &action->thread_flags); in irq_thread_set_ready()
1273 struct irqaction *action) in wake_up_and_wait_for_irq_thread_ready() argument
1275 if (!action || !action->thread) in wake_up_and_wait_for_irq_thread_ready()
1278 wake_up_process(action->thread); in wake_up_and_wait_for_irq_thread_ready()
1280 test_bit(IRQTF_READY, &action->thread_flags)); in wake_up_and_wait_for_irq_thread_ready()
1289 struct irqaction *action = data; in irq_thread() local
1290 struct irq_desc *desc = irq_to_desc(action->irq); in irq_thread()
1292 struct irqaction *action); in irq_thread()
1294 irq_thread_set_ready(desc, action); in irq_thread()
1299 &action->thread_flags)) in irq_thread()
1307 irq_thread_check_affinity(desc, action); in irq_thread()
1309 while (!irq_wait_for_interrupt(action)) { in irq_thread()
1312 irq_thread_check_affinity(desc, action); in irq_thread()
1314 action_ret = handler_fn(desc, action); in irq_thread()
1316 irq_wake_secondary(desc, action); in irq_thread()
1340 struct irqaction *action; in irq_wake_thread() local
1347 for_each_action_of_desc(desc, action) { in irq_wake_thread()
1348 if (action->dev_id == dev_id) { in irq_wake_thread()
1349 if (action->thread) in irq_wake_thread()
1350 __irq_wake_thread(desc, action); in irq_wake_thread()
1589 if (!desc->action) { in __setup_irq()
1605 old_ptr = &desc->action; in __setup_irq()
1836 if (!desc->action) in __setup_irq()
1869 struct irqaction *action, **action_ptr; in __free_irq() local
1882 action_ptr = &desc->action; in __free_irq()
1884 action = *action_ptr; in __free_irq()
1886 if (!action) { in __free_irq()
1894 if (action->dev_id == dev_id) in __free_irq()
1896 action_ptr = &action->next; in __free_irq()
1900 *action_ptr = action->next; in __free_irq()
1902 irq_pm_remove_action(desc, action); in __free_irq()
1905 if (!desc->action) { in __free_irq()
1934 unregister_handler_proc(irq, action); in __free_irq()
1952 if (action->flags & IRQF_SHARED) { in __free_irq()
1954 action->handler(irq, dev_id); in __free_irq()
1965 if (action->thread) { in __free_irq()
1966 kthread_stop(action->thread); in __free_irq()
1967 put_task_struct(action->thread); in __free_irq()
1968 if (action->secondary && action->secondary->thread) { in __free_irq()
1969 kthread_stop(action->secondary->thread); in __free_irq()
1970 put_task_struct(action->secondary->thread); in __free_irq()
1975 if (!desc->action) { in __free_irq()
1998 kfree(action->secondary); in __free_irq()
1999 return action; in __free_irq()
2021 struct irqaction *action; in free_irq() local
2032 action = __free_irq(desc, dev_id); in free_irq()
2034 if (!action) in free_irq()
2037 devname = action->name; in free_irq()
2038 kfree(action); in free_irq()
2050 if (!WARN_ON(desc->action == NULL)) { in __cleanup_nmi()
2051 irq_pm_remove_action(desc, desc->action); in __cleanup_nmi()
2052 devname = desc->action->name; in __cleanup_nmi()
2053 unregister_handler_proc(irq, desc->action); in __cleanup_nmi()
2055 kfree(desc->action); in __cleanup_nmi()
2056 desc->action = NULL; in __cleanup_nmi()
2142 struct irqaction *action; in request_threaded_irq() local
2182 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_threaded_irq()
2183 if (!action) in request_threaded_irq()
2186 action->handler = handler; in request_threaded_irq()
2187 action->thread_fn = thread_fn; in request_threaded_irq()
2188 action->flags = irqflags; in request_threaded_irq()
2189 action->name = devname; in request_threaded_irq()
2190 action->dev_id = dev_id; in request_threaded_irq()
2194 kfree(action); in request_threaded_irq()
2198 retval = __setup_irq(irq, desc, action); in request_threaded_irq()
2202 kfree(action->secondary); in request_threaded_irq()
2203 kfree(action); in request_threaded_irq()
2299 struct irqaction *action; in request_nmi() local
2326 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_nmi()
2327 if (!action) in request_nmi()
2330 action->handler = handler; in request_nmi()
2331 action->flags = irqflags | IRQF_NO_THREAD | IRQF_NOBALANCING; in request_nmi()
2332 action->name = name; in request_nmi()
2333 action->dev_id = dev_id; in request_nmi()
2339 retval = __setup_irq(irq, desc, action); in request_nmi()
2361 kfree(action); in request_nmi()
2455 struct irqaction *action; in __free_percpu_irq() local
2465 action = desc->action; in __free_percpu_irq()
2466 if (!action || action->percpu_dev_id != dev_id) { in __free_percpu_irq()
2478 desc->action = NULL; in __free_percpu_irq()
2484 unregister_handler_proc(irq, action); in __free_percpu_irq()
2488 return action; in __free_percpu_irq()
2596 struct irqaction *action; in __request_percpu_irq() local
2611 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in __request_percpu_irq()
2612 if (!action) in __request_percpu_irq()
2615 action->handler = handler; in __request_percpu_irq()
2616 action->flags = flags | IRQF_PERCPU | IRQF_NO_SUSPEND; in __request_percpu_irq()
2617 action->name = devname; in __request_percpu_irq()
2618 action->percpu_dev_id = dev_id; in __request_percpu_irq()
2622 kfree(action); in __request_percpu_irq()
2626 retval = __setup_irq(irq, desc, action); in __request_percpu_irq()
2630 kfree(action); in __request_percpu_irq()
2661 struct irqaction *action; in request_percpu_nmi() local
2681 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_percpu_nmi()
2682 if (!action) in request_percpu_nmi()
2685 action->handler = handler; in request_percpu_nmi()
2686 action->flags = IRQF_PERCPU | IRQF_NO_SUSPEND | IRQF_NO_THREAD in request_percpu_nmi()
2688 action->name = name; in request_percpu_nmi()
2689 action->percpu_dev_id = dev_id; in request_percpu_nmi()
2695 retval = __setup_irq(irq, desc, action); in request_percpu_nmi()
2708 kfree(action); in request_percpu_nmi()