[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: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7c3514e450
commit
ab66a50e31
@ -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)
|
|||||||
"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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user