u = get_port_user(port);
- if (WARN(!get_port_enabled(port),
- "Interrupt for port %d, but apparently not enabled; per-user %p\n",
- port, u))
- goto out;
+ WARN(!get_port_enabled(port),
+ "Interrupt for port %d, but apparently not enabled; per-user %p\n",
+ port, u);
disable_irq_nosync(irq);
set_port_enabled(port, false);
} else
u->ring_overflow = 1;
-out:
spin_unlock(&port_user_lock);
return IRQ_HANDLED;
*/
BUG_ON(get_port_user(port) != NULL);
set_port_user(port, u);
+ set_port_enabled(port, true); /* start enabled */
rc = bind_evtchn_to_irqhandler(port, evtchn_interrupt, IRQF_DISABLED,
u->name, (void *)(unsigned long)port);