diff options
Diffstat (limited to 'kernel/irq/debugfs.c')
| -rw-r--r-- | kernel/irq/debugfs.c | 28 | 
1 files changed, 1 insertions, 27 deletions
diff --git a/kernel/irq/debugfs.c b/kernel/irq/debugfs.c index a949bd39e343..4f9f844074db 100644 --- a/kernel/irq/debugfs.c +++ b/kernel/irq/debugfs.c @@ -190,33 +190,7 @@ static ssize_t irq_debug_write(struct file *file, const char __user *user_buf,  		return -EFAULT;  	if (!strncmp(buf, "trigger", size)) { -		unsigned long flags; -		int err; - -		/* Try the HW interface first */ -		err = irq_set_irqchip_state(irq_desc_get_irq(desc), -					    IRQCHIP_STATE_PENDING, true); -		if (!err) -			return count; - -		/* -		 * Otherwise, try to inject via the resend interface, -		 * which may or may not succeed. -		 */ -		chip_bus_lock(desc); -		raw_spin_lock_irqsave(&desc->lock, flags); - -		if (irq_settings_is_level(desc) || desc->istate & IRQS_NMI) { -			/* Can't do level nor NMIs, sorry */ -			err = -EINVAL; -		} else { -			desc->istate |= IRQS_PENDING; -			check_irq_resend(desc); -			err = 0; -		} - -		raw_spin_unlock_irqrestore(&desc->lock, flags); -		chip_bus_sync_unlock(desc); +		int err = irq_inject_interrupt(irq_desc_get_irq(desc));  		return err ? err : count;  	}  |