| .. | .. |
|---|
| 145 | 145 | for_each_action_of_desc(desc, action) { |
|---|
| 146 | 146 | irqreturn_t res; |
|---|
| 147 | 147 | |
|---|
| 148 | + /* |
|---|
| 149 | + * If this IRQ would be threaded under force_irqthreads, mark it so. |
|---|
| 150 | + */ |
|---|
| 151 | + if (irq_settings_can_thread(desc) && |
|---|
| 152 | + !(action->flags & (IRQF_NO_THREAD | IRQF_PERCPU | IRQF_ONESHOT))) |
|---|
| 153 | + lockdep_hardirq_threaded(); |
|---|
| 154 | + |
|---|
| 148 | 155 | trace_irq_handler_entry(irq, action); |
|---|
| 149 | 156 | res = action->handler(irq, action->dev_id); |
|---|
| 150 | 157 | trace_irq_handler_exit(irq, action, res); |
|---|
| 151 | 158 | |
|---|
| 152 | | - if (WARN_ONCE(!irqs_disabled(),"irq %u handler %pF enabled interrupts\n", |
|---|
| 159 | + if (WARN_ONCE(!irqs_disabled(),"irq %u handler %pS enabled interrupts\n", |
|---|
| 153 | 160 | irq, action->handler)) |
|---|
| 154 | 161 | local_irq_disable(); |
|---|
| 155 | 162 | |
|---|
| .. | .. |
|---|
| 166 | 173 | |
|---|
| 167 | 174 | __irq_wake_thread(desc, action); |
|---|
| 168 | 175 | |
|---|
| 169 | | - /* Fall through to add to randomness */ |
|---|
| 176 | + fallthrough; /* to add to randomness */ |
|---|
| 170 | 177 | case IRQ_HANDLED: |
|---|
| 171 | 178 | *flags |= action->flags; |
|---|
| 172 | 179 | break; |
|---|
| .. | .. |
|---|
| 185 | 192 | { |
|---|
| 186 | 193 | irqreturn_t retval; |
|---|
| 187 | 194 | unsigned int flags = 0; |
|---|
| 188 | | - struct pt_regs *regs = get_irq_regs(); |
|---|
| 189 | | - u64 ip = regs ? instruction_pointer(regs) : 0; |
|---|
| 190 | 195 | |
|---|
| 191 | 196 | retval = __handle_irq_event_percpu(desc, &flags); |
|---|
| 192 | 197 | |
|---|
| 193 | | -#ifdef CONFIG_PREEMPT_RT_FULL |
|---|
| 194 | | - desc->random_ip = ip; |
|---|
| 195 | | -#else |
|---|
| 196 | | - add_interrupt_randomness(desc->irq_data.irq, flags, ip); |
|---|
| 197 | | -#endif |
|---|
| 198 | + add_interrupt_randomness(desc->irq_data.irq); |
|---|
| 198 | 199 | |
|---|
| 199 | 200 | if (!noirqdebug) |
|---|
| 200 | 201 | note_interrupt(desc, retval); |
|---|