| .. | .. | 
|---|
| 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 |   | 
|---|