Lines Matching refs:action

191 	struct irqaction *action;  in irq_set_thread_affinity()  local
193 for_each_action_of_desc(desc, action) in irq_set_thread_affinity()
194 if (action->thread) in irq_set_thread_affinity()
195 set_bit(IRQTF_AFFINITY, &action->thread_flags); in irq_set_thread_affinity()
831 if (!desc->action || in can_request_irq()
832 irqflags & desc->action->flags & IRQF_SHARED) in can_request_irq()
937 static int irq_wait_for_interrupt(struct irqaction *action) in irq_wait_for_interrupt() argument
945 &action->thread_flags)) { in irq_wait_for_interrupt()
954 &action->thread_flags)) { in irq_wait_for_interrupt()
968 struct irqaction *action) in irq_finalize_oneshot() argument
971 action->handler == irq_forced_secondary_handler) in irq_finalize_oneshot()
1003 if (test_bit(IRQTF_RUNTHREAD, &action->thread_flags)) in irq_finalize_oneshot()
1006 desc->threads_oneshot &= ~action->thread_mask; in irq_finalize_oneshot()
1022 irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action) in irq_thread_check_affinity() argument
1027 if (!test_and_clear_bit(IRQTF_AFFINITY, &action->thread_flags)) in irq_thread_check_affinity()
1035 set_bit(IRQTF_AFFINITY, &action->thread_flags); in irq_thread_check_affinity()
1060 irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action) { } in irq_thread_check_affinity() argument
1070 irq_forced_thread_fn(struct irq_desc *desc, struct irqaction *action) in irq_forced_thread_fn() argument
1075 ret = action->thread_fn(action->irq, action->dev_id); in irq_forced_thread_fn()
1079 irq_finalize_oneshot(desc, action); in irq_forced_thread_fn()
1090 struct irqaction *action) in irq_thread_fn() argument
1094 ret = action->thread_fn(action->irq, action->dev_id); in irq_thread_fn()
1098 irq_finalize_oneshot(desc, action); in irq_thread_fn()
1112 struct irqaction *action; in irq_thread_dtor() local
1117 action = kthread_data(tsk); in irq_thread_dtor()
1120 tsk->comm, tsk->pid, action->irq); in irq_thread_dtor()
1123 desc = irq_to_desc(action->irq); in irq_thread_dtor()
1128 if (test_and_clear_bit(IRQTF_RUNTHREAD, &action->thread_flags)) in irq_thread_dtor()
1132 irq_finalize_oneshot(desc, action); in irq_thread_dtor()
1135 static void irq_wake_secondary(struct irq_desc *desc, struct irqaction *action) in irq_wake_secondary() argument
1137 struct irqaction *secondary = action->secondary; in irq_wake_secondary()
1153 struct irqaction *action = data; in irq_thread() local
1154 struct irq_desc *desc = irq_to_desc(action->irq); in irq_thread()
1156 struct irqaction *action); in irq_thread()
1159 &action->thread_flags)) in irq_thread()
1167 irq_thread_check_affinity(desc, action); in irq_thread()
1169 while (!irq_wait_for_interrupt(action)) { in irq_thread()
1172 irq_thread_check_affinity(desc, action); in irq_thread()
1174 action_ret = handler_fn(desc, action); in irq_thread()
1176 irq_wake_secondary(desc, action); in irq_thread()
1200 struct irqaction *action; in irq_wake_thread() local
1207 for_each_action_of_desc(desc, action) { in irq_wake_thread()
1208 if (action->dev_id == dev_id) { in irq_wake_thread()
1209 if (action->thread) in irq_wake_thread()
1210 __irq_wake_thread(desc, action); in irq_wake_thread()
1451 if (!desc->action) { in __setup_irq()
1467 old_ptr = &desc->action; in __setup_irq()
1700 if (!desc->action) in __setup_irq()
1733 struct irqaction *action, **action_ptr; in __free_irq() local
1746 action_ptr = &desc->action; in __free_irq()
1748 action = *action_ptr; in __free_irq()
1750 if (!action) { in __free_irq()
1758 if (action->dev_id == dev_id) in __free_irq()
1760 action_ptr = &action->next; in __free_irq()
1764 *action_ptr = action->next; in __free_irq()
1766 irq_pm_remove_action(desc, action); in __free_irq()
1769 if (!desc->action) { in __free_irq()
1798 unregister_handler_proc(irq, action); in __free_irq()
1816 if (action->flags & IRQF_SHARED) { in __free_irq()
1818 action->handler(irq, dev_id); in __free_irq()
1829 if (action->thread) { in __free_irq()
1830 kthread_stop(action->thread); in __free_irq()
1831 put_task_struct(action->thread); in __free_irq()
1832 if (action->secondary && action->secondary->thread) { in __free_irq()
1833 kthread_stop(action->secondary->thread); in __free_irq()
1834 put_task_struct(action->secondary->thread); in __free_irq()
1839 if (!desc->action) { in __free_irq()
1862 kfree(action->secondary); in __free_irq()
1863 return action; in __free_irq()
1885 struct irqaction *action; in free_irq() local
1896 action = __free_irq(desc, dev_id); in free_irq()
1898 if (!action) in free_irq()
1901 devname = action->name; in free_irq()
1902 kfree(action); in free_irq()
1914 if (!WARN_ON(desc->action == NULL)) { in __cleanup_nmi()
1915 irq_pm_remove_action(desc, desc->action); in __cleanup_nmi()
1916 devname = desc->action->name; in __cleanup_nmi()
1917 unregister_handler_proc(irq, desc->action); in __cleanup_nmi()
1919 kfree(desc->action); in __cleanup_nmi()
1920 desc->action = NULL; in __cleanup_nmi()
2006 struct irqaction *action; in request_threaded_irq() local
2041 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_threaded_irq()
2042 if (!action) in request_threaded_irq()
2045 action->handler = handler; in request_threaded_irq()
2046 action->thread_fn = thread_fn; in request_threaded_irq()
2047 action->flags = irqflags; in request_threaded_irq()
2048 action->name = devname; in request_threaded_irq()
2049 action->dev_id = dev_id; in request_threaded_irq()
2053 kfree(action); in request_threaded_irq()
2057 retval = __setup_irq(irq, desc, action); in request_threaded_irq()
2061 kfree(action->secondary); in request_threaded_irq()
2062 kfree(action); in request_threaded_irq()
2158 struct irqaction *action; in request_nmi() local
2184 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_nmi()
2185 if (!action) in request_nmi()
2188 action->handler = handler; in request_nmi()
2189 action->flags = irqflags | IRQF_NO_THREAD | IRQF_NOBALANCING; in request_nmi()
2190 action->name = name; in request_nmi()
2191 action->dev_id = dev_id; in request_nmi()
2197 retval = __setup_irq(irq, desc, action); in request_nmi()
2219 kfree(action); in request_nmi()
2313 struct irqaction *action; in __free_percpu_irq() local
2323 action = desc->action; in __free_percpu_irq()
2324 if (!action || action->percpu_dev_id != dev_id) { in __free_percpu_irq()
2336 desc->action = NULL; in __free_percpu_irq()
2342 unregister_handler_proc(irq, action); in __free_percpu_irq()
2346 return action; in __free_percpu_irq()
2454 struct irqaction *action; in __request_percpu_irq() local
2469 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in __request_percpu_irq()
2470 if (!action) in __request_percpu_irq()
2473 action->handler = handler; in __request_percpu_irq()
2474 action->flags = flags | IRQF_PERCPU | IRQF_NO_SUSPEND; in __request_percpu_irq()
2475 action->name = devname; in __request_percpu_irq()
2476 action->percpu_dev_id = dev_id; in __request_percpu_irq()
2480 kfree(action); in __request_percpu_irq()
2484 retval = __setup_irq(irq, desc, action); in __request_percpu_irq()
2488 kfree(action); in __request_percpu_irq()
2519 struct irqaction *action; in request_percpu_nmi() local
2539 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_percpu_nmi()
2540 if (!action) in request_percpu_nmi()
2543 action->handler = handler; in request_percpu_nmi()
2544 action->flags = IRQF_PERCPU | IRQF_NO_SUSPEND | IRQF_NO_THREAD in request_percpu_nmi()
2546 action->name = name; in request_percpu_nmi()
2547 action->percpu_dev_id = dev_id; in request_percpu_nmi()
2553 retval = __setup_irq(irq, desc, action); in request_percpu_nmi()
2566 kfree(action); in request_percpu_nmi()