diff options
-rw-r--r-- | arch/sparc64/kernel/pci_common.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/arch/sparc64/kernel/pci_common.c b/arch/sparc64/kernel/pci_common.c index 58310aacea..1b1f89b35f 100644 --- a/arch/sparc64/kernel/pci_common.c +++ b/arch/sparc64/kernel/pci_common.c | |||
@@ -703,16 +703,18 @@ static void __init pdev_fixup_irq(struct pci_dev *pdev) | |||
703 | return; | 703 | return; |
704 | } | 704 | } |
705 | 705 | ||
706 | /* Fully specified already? */ | 706 | if (tlb_type != hypervisor) { |
707 | if (((prom_irq & PCI_IRQ_IGN) >> 6) == portid) { | 707 | /* Fully specified already? */ |
708 | pdev->irq = p->irq_build(pbm, pdev, prom_irq); | 708 | if (((prom_irq & PCI_IRQ_IGN) >> 6) == portid) { |
709 | goto have_irq; | 709 | pdev->irq = p->irq_build(pbm, pdev, prom_irq); |
710 | } | 710 | goto have_irq; |
711 | } | ||
711 | 712 | ||
712 | /* An onboard device? (bit 5 set) */ | 713 | /* An onboard device? (bit 5 set) */ |
713 | if ((prom_irq & PCI_IRQ_INO) & 0x20) { | 714 | if ((prom_irq & PCI_IRQ_INO) & 0x20) { |
714 | pdev->irq = p->irq_build(pbm, pdev, (portid << 6 | prom_irq)); | 715 | pdev->irq = p->irq_build(pbm, pdev, (portid << 6 | prom_irq)); |
715 | goto have_irq; | 716 | goto have_irq; |
717 | } | ||
716 | } | 718 | } |
717 | 719 | ||
718 | /* Can we find a matching entry in the interrupt-map? */ | 720 | /* Can we find a matching entry in the interrupt-map? */ |