| .. | .. |
|---|
| 56 | 56 | BIT_MASK_DESCR(IRQCHIP_ONESHOT_SAFE), |
|---|
| 57 | 57 | BIT_MASK_DESCR(IRQCHIP_EOI_THREADED), |
|---|
| 58 | 58 | BIT_MASK_DESCR(IRQCHIP_SUPPORTS_LEVEL_MSI), |
|---|
| 59 | + BIT_MASK_DESCR(IRQCHIP_SUPPORTS_NMI), |
|---|
| 60 | + BIT_MASK_DESCR(IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND), |
|---|
| 59 | 61 | }; |
|---|
| 60 | 62 | |
|---|
| 61 | 63 | static void |
|---|
| .. | .. |
|---|
| 111 | 113 | BIT_MASK_DESCR(IRQD_AFFINITY_SET), |
|---|
| 112 | 114 | BIT_MASK_DESCR(IRQD_SETAFFINITY_PENDING), |
|---|
| 113 | 115 | BIT_MASK_DESCR(IRQD_AFFINITY_MANAGED), |
|---|
| 116 | + BIT_MASK_DESCR(IRQD_AFFINITY_ON_ACTIVATE), |
|---|
| 114 | 117 | BIT_MASK_DESCR(IRQD_MANAGED_SHUTDOWN), |
|---|
| 115 | 118 | BIT_MASK_DESCR(IRQD_CAN_RESERVE), |
|---|
| 116 | 119 | BIT_MASK_DESCR(IRQD_MSI_NOMASK_QUIRK), |
|---|
| .. | .. |
|---|
| 119 | 122 | |
|---|
| 120 | 123 | BIT_MASK_DESCR(IRQD_WAKEUP_STATE), |
|---|
| 121 | 124 | BIT_MASK_DESCR(IRQD_WAKEUP_ARMED), |
|---|
| 125 | + |
|---|
| 126 | + BIT_MASK_DESCR(IRQD_DEFAULT_TRIGGER_SET), |
|---|
| 127 | + |
|---|
| 128 | + BIT_MASK_DESCR(IRQD_HANDLE_ENFORCE_IRQCTX), |
|---|
| 129 | + |
|---|
| 130 | + BIT_MASK_DESCR(IRQD_IRQ_ENABLED_ON_SUSPEND), |
|---|
| 122 | 131 | }; |
|---|
| 123 | 132 | |
|---|
| 124 | 133 | static const struct irq_bit_descr irqdesc_states[] = { |
|---|
| .. | .. |
|---|
| 130 | 139 | BIT_MASK_DESCR(_IRQ_PER_CPU_DEVID), |
|---|
| 131 | 140 | BIT_MASK_DESCR(_IRQ_IS_POLLED), |
|---|
| 132 | 141 | BIT_MASK_DESCR(_IRQ_DISABLE_UNLAZY), |
|---|
| 142 | + BIT_MASK_DESCR(_IRQ_HIDDEN), |
|---|
| 143 | + BIT_MASK_DESCR(_IRQ_RAW), |
|---|
| 133 | 144 | }; |
|---|
| 134 | 145 | |
|---|
| 135 | 146 | static const struct irq_bit_descr irqdesc_istates[] = { |
|---|
| .. | .. |
|---|
| 141 | 152 | BIT_MASK_DESCR(IRQS_WAITING), |
|---|
| 142 | 153 | BIT_MASK_DESCR(IRQS_PENDING), |
|---|
| 143 | 154 | BIT_MASK_DESCR(IRQS_SUSPENDED), |
|---|
| 155 | + BIT_MASK_DESCR(IRQS_NMI), |
|---|
| 144 | 156 | }; |
|---|
| 145 | 157 | |
|---|
| 146 | 158 | |
|---|
| .. | .. |
|---|
| 151 | 163 | |
|---|
| 152 | 164 | raw_spin_lock_irq(&desc->lock); |
|---|
| 153 | 165 | data = irq_desc_get_irq_data(desc); |
|---|
| 154 | | - seq_printf(m, "handler: %pf\n", desc->handle_irq); |
|---|
| 166 | + seq_printf(m, "handler: %ps\n", desc->handle_irq); |
|---|
| 155 | 167 | seq_printf(m, "device: %s\n", desc->dev_name); |
|---|
| 156 | 168 | seq_printf(m, "status: 0x%08x\n", desc->status_use_accessors); |
|---|
| 157 | 169 | irq_debug_show_bits(m, 0, desc->status_use_accessors, irqdesc_states, |
|---|
| .. | .. |
|---|
| 188 | 200 | return -EFAULT; |
|---|
| 189 | 201 | |
|---|
| 190 | 202 | if (!strncmp(buf, "trigger", size)) { |
|---|
| 191 | | - unsigned long flags; |
|---|
| 192 | | - int err; |
|---|
| 193 | | - |
|---|
| 194 | | - /* Try the HW interface first */ |
|---|
| 195 | | - err = irq_set_irqchip_state(irq_desc_get_irq(desc), |
|---|
| 196 | | - IRQCHIP_STATE_PENDING, true); |
|---|
| 197 | | - if (!err) |
|---|
| 198 | | - return count; |
|---|
| 199 | | - |
|---|
| 200 | | - /* |
|---|
| 201 | | - * Otherwise, try to inject via the resend interface, |
|---|
| 202 | | - * which may or may not succeed. |
|---|
| 203 | | - */ |
|---|
| 204 | | - chip_bus_lock(desc); |
|---|
| 205 | | - raw_spin_lock_irqsave(&desc->lock, flags); |
|---|
| 206 | | - |
|---|
| 207 | | - if (irq_settings_is_level(desc)) { |
|---|
| 208 | | - /* Can't do level, sorry */ |
|---|
| 209 | | - err = -EINVAL; |
|---|
| 210 | | - } else { |
|---|
| 211 | | - desc->istate |= IRQS_PENDING; |
|---|
| 212 | | - check_irq_resend(desc); |
|---|
| 213 | | - err = 0; |
|---|
| 214 | | - } |
|---|
| 215 | | - |
|---|
| 216 | | - raw_spin_unlock_irqrestore(&desc->lock, flags); |
|---|
| 217 | | - chip_bus_sync_unlock(desc); |
|---|
| 203 | + int err = irq_inject_interrupt(irq_desc_get_irq(desc)); |
|---|
| 218 | 204 | |
|---|
| 219 | 205 | return err ? err : count; |
|---|
| 220 | 206 | } |
|---|
| .. | .. |
|---|
| 257 | 243 | int irq; |
|---|
| 258 | 244 | |
|---|
| 259 | 245 | root_dir = debugfs_create_dir("irq", NULL); |
|---|
| 260 | | - if (!root_dir) |
|---|
| 261 | | - return -ENOMEM; |
|---|
| 262 | 246 | |
|---|
| 263 | 247 | irq_domain_debugfs_init(root_dir); |
|---|
| 264 | 248 | |
|---|