Skip to content

Commit

Permalink
ipack/devices/ipoctal: ack IRQ before processing it
Browse files Browse the repository at this point in the history
Due to the IRQ processing, we can generate another IRQ that can come before we
end the previous one, so we lost it. E.g. when transmitting a character.

To allow the processing in SMP machines, we ack the IRQ at the beginning of the
IRQ handler.

Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Samuel Iglesias Gonsalvez authored and Greg Kroah-Hartman committed Jan 16, 2013
1 parent a3882b7 commit 21d27ed
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions drivers/ipack/devices/ipoctal.c
Original file line number Diff line number Diff line change
Expand Up @@ -223,14 +223,14 @@ static irqreturn_t ipoctal_irq_handler(void *arg)
unsigned int i;
struct ipoctal *ipoctal = (struct ipoctal *) arg;

/* Check all channels */
for (i = 0; i < NR_CHANNELS; i++)
ipoctal_irq_channel(&ipoctal->channel[i]);

/* Clear the IPack device interrupt */
readw(ipoctal->int_space + ACK_INT_REQ0);
readw(ipoctal->int_space + ACK_INT_REQ1);

/* Check all channels */
for (i = 0; i < NR_CHANNELS; i++)
ipoctal_irq_channel(&ipoctal->channel[i]);

return IRQ_HANDLED;
}

Expand Down

0 comments on commit 21d27ed

Please sign in to comment.