On Mon, 14 Mar 2016, Sean Nyekjær wrote: > On 2016-03-13 11:25, Thomas Gleixner wrote: > > On Fri, 11 Mar 2016, Sean Nyekjaer wrote: > > > > > static irqreturn_t sc16is7xx_irq(int irq, void *dev_id) > > > { > > > struct sc16is7xx_port *s = (struct sc16is7xx_port *)dev_id; > > > + int i; > > > + > > > + for (i = 0; i < s->devtype->nr_uart; ++i) > > > + disable_irq_nosync(s->p[i].port.irq); > > Aside of the lack of a changelog. This is completely bogus. You disable the > > same interrupt a gazillion of times. > I can't see why the interrupt is disabled a gazillion times. > When the irq is disabled the function will not be called before it's enabled > again... Or have i missed something? > > > + for (i = 0; i < s->devtype->nr_uart; ++i) > > > + disable_irq_nosync(s->p[i].port.irq); port.irq is the same for all ports at least according to the init function. It is actually @irq, the handler function argument. Thanks, tglx