diff options
Diffstat (limited to 'arch/sparc64')
-rw-r--r-- | arch/sparc64/kernel/irq.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index 0fb1738a4f3f..ad134bbc151c 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c | |||
@@ -633,23 +633,22 @@ static void process_bucket(struct ino_bucket *bp, struct pt_regs *regs) | |||
633 | if (!action_mask) | 633 | if (!action_mask) |
634 | break; | 634 | break; |
635 | } | 635 | } |
636 | if (bp->pil != 0) { | ||
637 | if (tlb_type == hypervisor) { | ||
638 | unsigned int ino = __irq_ino(bp); | ||
639 | int err; | ||
640 | 636 | ||
641 | err = sun4v_intr_setstate(ino, HV_INTR_STATE_IDLE); | 637 | if (tlb_type == hypervisor) { |
642 | if (err != HV_EOK) | 638 | unsigned int ino = __irq_ino(bp); |
643 | printk("sun4v_intr_setstate(%x): " | 639 | int err; |
644 | "err(%d)\n", ino, err); | ||
645 | } else { | ||
646 | upa_writel(ICLR_IDLE, bp->iclr); | ||
647 | } | ||
648 | 640 | ||
649 | /* Test and add entropy */ | 641 | err = sun4v_intr_setstate(ino, HV_INTR_STATE_IDLE); |
650 | if (random & SA_SAMPLE_RANDOM) | 642 | if (err != HV_EOK) |
651 | add_interrupt_randomness(bp->pil); | 643 | printk("sun4v_intr_setstate(%x): " |
644 | "err(%d)\n", ino, err); | ||
645 | } else { | ||
646 | upa_writel(ICLR_IDLE, bp->iclr); | ||
652 | } | 647 | } |
648 | |||
649 | /* Test and add entropy */ | ||
650 | if (random & SA_SAMPLE_RANDOM) | ||
651 | add_interrupt_randomness(bp->pil); | ||
653 | out: | 652 | out: |
654 | bp->flags &= ~IBF_INPROGRESS; | 653 | bp->flags &= ~IBF_INPROGRESS; |
655 | } | 654 | } |