Commit ab66a50e authored by David S. Miller's avatar David S. Miller

[SPARC64]: Two IRQ handling fixes.

On SUN4V, force IRQ state to idle in enable_irq().  However,
I'm still not sure this is %100 correct.

Call add_interrupt_randomness() on SUN4V too.
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7c3514e4
...@@ -164,6 +164,10 @@ void enable_irq(unsigned int irq) ...@@ -164,6 +164,10 @@ void enable_irq(unsigned int irq)
if (err != HV_EOK) if (err != HV_EOK)
printk("sun4v_intr_setenabled(%x): err(%d)\n", printk("sun4v_intr_setenabled(%x): err(%d)\n",
ino, err); ino, err);
err = sun4v_intr_setstate(ino, HV_INTR_STATE_IDLE);
if (err != HV_EOK)
printk("sun4v_intr_setstate(%x): "
"err(%d)\n", ino, err);
} else { } else {
if (tlb_type == cheetah || tlb_type == cheetah_plus) { if (tlb_type == cheetah || tlb_type == cheetah_plus) {
unsigned long ver; unsigned long ver;
...@@ -663,11 +667,12 @@ static void process_bucket(int irq, struct ino_bucket *bp, struct pt_regs *regs) ...@@ -663,11 +667,12 @@ static void process_bucket(int irq, struct ino_bucket *bp, struct pt_regs *regs)
"err(%d)\n", ino, err); "err(%d)\n", ino, err);
} else { } else {
upa_writel(ICLR_IDLE, bp->iclr); upa_writel(ICLR_IDLE, bp->iclr);
}
/* Test and add entropy */ /* Test and add entropy */
if (random & SA_SAMPLE_RANDOM) if (random & SA_SAMPLE_RANDOM)
add_interrupt_randomness(irq); add_interrupt_randomness(irq);
} }
}
out: out:
bp->flags &= ~IBF_INPROGRESS; bp->flags &= ~IBF_INPROGRESS;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment