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

[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
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -164,6 +164,10 @@ void enable_irq(unsigned int irq)
		if (err != HV_EOK)
			printk("sun4v_intr_setenabled(%x): err(%d)\n",
			       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 {
		if (tlb_type == cheetah || tlb_type == cheetah_plus) {
			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);
		} else {
			upa_writel(ICLR_IDLE, bp->iclr);
		}

		/* Test and add entropy */
		if (random & SA_SAMPLE_RANDOM)
			add_interrupt_randomness(irq);
	}
	}
out:
	bp->flags &= ~IBF_INPROGRESS;
}