Lines Matching refs:desc

29  * @desc:      description of the interrupt
33 void handle_bad_irq(struct irq_desc *desc)
35 unsigned int irq = irq_desc_get_irq(desc);
37 print_irq_desc(irq, desc);
38 kstat_incr_irqs_this_cpu(desc);
61 void __irq_wake_thread(struct irq_desc *desc, struct irqaction *action)
88 * in threads_oneshot are serialized via desc->lock against
94 * spin_lock(desc->lock);
95 * desc->state |= IRQS_INPROGRESS;
96 * spin_unlock(desc->lock);
98 * desc->threads_oneshot |= mask;
99 * spin_lock(desc->lock);
100 * desc->state &= ~IRQS_INPROGRESS;
101 * spin_unlock(desc->lock);
106 * spin_lock(desc->lock);
107 * if (desc->state & IRQS_INPROGRESS) {
108 * spin_unlock(desc->lock);
109 * while(desc->state & IRQS_INPROGRESS)
114 * desc->threads_oneshot &= ~mask;
115 * spin_unlock(desc->lock);
118 * or we are waiting in the flow handler for desc->lock to be
120 * IRQTF_RUNTHREAD under desc->lock. If set it leaves
123 desc->threads_oneshot |= action->thread_mask;
134 atomic_inc(&desc->threads_active);
139 irqreturn_t __handle_irq_event_percpu(struct irq_desc *desc)
142 unsigned int irq = desc->irq_data.irq;
145 record_irq_time(desc);
147 for_each_action_of_desc(desc, action) {
153 if (irq_settings_can_thread(desc) &&
176 __irq_wake_thread(desc, action);
189 irqreturn_t handle_irq_event_percpu(struct irq_desc *desc)
193 retval = __handle_irq_event_percpu(desc);
195 add_interrupt_randomness(desc->irq_data.irq);
197 if (!irq_settings_no_debug(desc))
198 note_interrupt(desc, retval);
202 irqreturn_t handle_irq_event(struct irq_desc *desc)
206 desc->istate &= ~IRQS_PENDING;
207 irqd_set(&desc->irq_data, IRQD_IRQ_INPROGRESS);
208 raw_spin_unlock(&desc->lock);
210 ret = handle_irq_event_percpu(desc);
212 raw_spin_lock(&desc->lock);
213 irqd_clear(&desc->irq_data, IRQD_IRQ_INPROGRESS);