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()
941 if (!desc->action || in can_request_irq()
942 irqflags & desc->action->flags & IRQF_SHARED) in can_request_irq()
1047 static int irq_wait_for_interrupt(struct irqaction *action) in irq_wait_for_interrupt() argument
1055 &action->thread_flags)) { in irq_wait_for_interrupt()
1064 &action->thread_flags)) { in irq_wait_for_interrupt()
1078 struct irqaction *action) in irq_finalize_oneshot() argument
1081 action->handler == irq_forced_secondary_handler) in irq_finalize_oneshot()
1113 if (test_bit(IRQTF_RUNTHREAD, &action->thread_flags)) in irq_finalize_oneshot()
1116 desc->threads_oneshot &= ~action->thread_mask; in irq_finalize_oneshot()
1132 irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action) in irq_thread_check_affinity() argument
1137 if (!test_and_clear_bit(IRQTF_AFFINITY, &action->thread_flags)) in irq_thread_check_affinity()
1145 set_bit(IRQTF_AFFINITY, &action->thread_flags); in irq_thread_check_affinity()
1170 irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action) { } in irq_thread_check_affinity() argument
1180 irq_forced_thread_fn(struct irq_desc *desc, struct irqaction *action) in irq_forced_thread_fn() argument
1187 ret = action->thread_fn(action->irq, action->dev_id); in irq_forced_thread_fn()
1191 irq_finalize_oneshot(desc, action); in irq_forced_thread_fn()
1204 struct irqaction *action) in irq_thread_fn() argument
1208 ret = action->thread_fn(action->irq, action->dev_id); in irq_thread_fn()
1212 irq_finalize_oneshot(desc, action); in irq_thread_fn()
1226 struct irqaction *action; in irq_thread_dtor() local
1231 action = kthread_data(tsk); in irq_thread_dtor()
1234 tsk->comm, tsk->pid, action->irq); in irq_thread_dtor()
1237 desc = irq_to_desc(action->irq); in irq_thread_dtor()
1242 if (test_and_clear_bit(IRQTF_RUNTHREAD, &action->thread_flags)) in irq_thread_dtor()
1246 irq_finalize_oneshot(desc, action); in irq_thread_dtor()
1249 static void irq_wake_secondary(struct irq_desc *desc, struct irqaction *action) in irq_wake_secondary() argument
1251 struct irqaction *secondary = action->secondary; in irq_wake_secondary()
1265 struct irqaction *action) in irq_thread_set_ready() argument
1267 set_bit(IRQTF_READY, &action->thread_flags); in irq_thread_set_ready()
1276 struct irqaction *action) in wake_up_and_wait_for_irq_thread_ready() argument
1278 if (!action || !action->thread) in wake_up_and_wait_for_irq_thread_ready()
1281 wake_up_process(action->thread); in wake_up_and_wait_for_irq_thread_ready()
1283 test_bit(IRQTF_READY, &action->thread_flags)); in wake_up_and_wait_for_irq_thread_ready()
1292 struct irqaction *action = data; in irq_thread() local
1293 struct irq_desc *desc = irq_to_desc(action->irq); in irq_thread()
1295 struct irqaction *action); in irq_thread()
1297 irq_thread_set_ready(desc, action); in irq_thread()
1302 &action->thread_flags)) in irq_thread()
1310 irq_thread_check_affinity(desc, action); in irq_thread()
1312 while (!irq_wait_for_interrupt(action)) { in irq_thread()
1315 irq_thread_check_affinity(desc, action); in irq_thread()
1317 action_ret = handler_fn(desc, action); in irq_thread()
1319 irq_wake_secondary(desc, action); in irq_thread()
1343 struct irqaction *action; in irq_wake_thread() local
1350 for_each_action_of_desc(desc, action) { in irq_wake_thread()
1351 if (action->dev_id == dev_id) { in irq_wake_thread()
1352 if (action->thread) in irq_wake_thread()
1353 __irq_wake_thread(desc, action); in irq_wake_thread()
1592 if (!desc->action) { in __setup_irq()
1608 old_ptr = &desc->action; in __setup_irq()
1839 if (!desc->action) in __setup_irq()
1872 struct irqaction *action, **action_ptr; in __free_irq() local
1885 action_ptr = &desc->action; in __free_irq()
1887 action = *action_ptr; in __free_irq()
1889 if (!action) { in __free_irq()
1897 if (action->dev_id == dev_id) in __free_irq()
1899 action_ptr = &action->next; in __free_irq()
1903 *action_ptr = action->next; in __free_irq()
1905 irq_pm_remove_action(desc, action); in __free_irq()
1908 if (!desc->action) { in __free_irq()
1937 unregister_handler_proc(irq, action); in __free_irq()
1955 if (action->flags & IRQF_SHARED) { in __free_irq()
1957 action->handler(irq, dev_id); in __free_irq()
1968 if (action->thread) { in __free_irq()
1969 kthread_stop(action->thread); in __free_irq()
1970 put_task_struct(action->thread); in __free_irq()
1971 if (action->secondary && action->secondary->thread) { in __free_irq()
1972 kthread_stop(action->secondary->thread); in __free_irq()
1973 put_task_struct(action->secondary->thread); in __free_irq()
1978 if (!desc->action) { in __free_irq()
2001 kfree(action->secondary); in __free_irq()
2002 return action; in __free_irq()
2024 struct irqaction *action; in free_irq() local
2035 action = __free_irq(desc, dev_id); in free_irq()
2037 if (!action) in free_irq()
2040 devname = action->name; in free_irq()
2041 kfree(action); in free_irq()
2053 if (!WARN_ON(desc->action == NULL)) { in __cleanup_nmi()
2054 irq_pm_remove_action(desc, desc->action); in __cleanup_nmi()
2055 devname = desc->action->name; in __cleanup_nmi()
2056 unregister_handler_proc(irq, desc->action); in __cleanup_nmi()
2058 kfree(desc->action); in __cleanup_nmi()
2059 desc->action = NULL; in __cleanup_nmi()
2145 struct irqaction *action; in request_threaded_irq() local
2185 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_threaded_irq()
2186 if (!action) in request_threaded_irq()
2189 action->handler = handler; in request_threaded_irq()
2190 action->thread_fn = thread_fn; in request_threaded_irq()
2191 action->flags = irqflags; in request_threaded_irq()
2192 action->name = devname; in request_threaded_irq()
2193 action->dev_id = dev_id; in request_threaded_irq()
2197 kfree(action); in request_threaded_irq()
2201 retval = __setup_irq(irq, desc, action); in request_threaded_irq()
2205 kfree(action->secondary); in request_threaded_irq()
2206 kfree(action); in request_threaded_irq()
2302 struct irqaction *action; in request_nmi() local
2329 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_nmi()
2330 if (!action) in request_nmi()
2333 action->handler = handler; in request_nmi()
2334 action->flags = irqflags | IRQF_NO_THREAD | IRQF_NOBALANCING; in request_nmi()
2335 action->name = name; in request_nmi()
2336 action->dev_id = dev_id; in request_nmi()
2342 retval = __setup_irq(irq, desc, action); in request_nmi()
2364 kfree(action); in request_nmi()
2458 struct irqaction *action; in __free_percpu_irq() local
2468 action = desc->action; in __free_percpu_irq()
2469 if (!action || action->percpu_dev_id != dev_id) { in __free_percpu_irq()
2481 desc->action = NULL; in __free_percpu_irq()
2487 unregister_handler_proc(irq, action); in __free_percpu_irq()
2491 return action; in __free_percpu_irq()
2599 struct irqaction *action; in __request_percpu_irq() local
2614 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in __request_percpu_irq()
2615 if (!action) in __request_percpu_irq()
2618 action->handler = handler; in __request_percpu_irq()
2619 action->flags = flags | IRQF_PERCPU | IRQF_NO_SUSPEND; in __request_percpu_irq()
2620 action->name = devname; in __request_percpu_irq()
2621 action->percpu_dev_id = dev_id; in __request_percpu_irq()
2625 kfree(action); in __request_percpu_irq()
2629 retval = __setup_irq(irq, desc, action); in __request_percpu_irq()
2633 kfree(action); in __request_percpu_irq()
2664 struct irqaction *action; in request_percpu_nmi() local
2684 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_percpu_nmi()
2685 if (!action) in request_percpu_nmi()
2688 action->handler = handler; in request_percpu_nmi()
2689 action->flags = IRQF_PERCPU | IRQF_NO_SUSPEND | IRQF_NO_THREAD in request_percpu_nmi()
2691 action->name = name; in request_percpu_nmi()
2692 action->percpu_dev_id = dev_id; in request_percpu_nmi()
2698 retval = __setup_irq(irq, desc, action); in request_percpu_nmi()
2711 kfree(action); in request_percpu_nmi()