OSDN Git Service

[SPARC64]: INO is never fully specified already on SUN4V.
authorDavid S. Miller <davem@sunset.davemloft.net>
Tue, 14 Feb 2006 22:12:44 +0000 (14:12 -0800)
committerDavid S. Miller <davem@sunset.davemloft.net>
Mon, 20 Mar 2006 09:12:54 +0000 (01:12 -0800)
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc64/kernel/pci_common.c

index 58310aa..1b1f89b 100644 (file)
@@ -703,16 +703,18 @@ static void __init pdev_fixup_irq(struct pci_dev *pdev)
                return;
        }
 
-       /* Fully specified already? */
-       if (((prom_irq & PCI_IRQ_IGN) >> 6) == portid) {
-               pdev->irq = p->irq_build(pbm, pdev, prom_irq);
-               goto have_irq;
-       }
+       if (tlb_type != hypervisor) {
+               /* Fully specified already? */
+               if (((prom_irq & PCI_IRQ_IGN) >> 6) == portid) {
+                       pdev->irq = p->irq_build(pbm, pdev, prom_irq);
+                       goto have_irq;
+               }
 
-       /* An onboard device? (bit 5 set) */
-       if ((prom_irq & PCI_IRQ_INO) & 0x20) {
-               pdev->irq = p->irq_build(pbm, pdev, (portid << 6 | prom_irq));
-               goto have_irq;
+               /* An onboard device? (bit 5 set) */
+               if ((prom_irq & PCI_IRQ_INO) & 0x20) {
+                       pdev->irq = p->irq_build(pbm, pdev, (portid << 6 | prom_irq));
+                       goto have_irq;
+               }
        }
 
        /* Can we find a matching entry in the interrupt-map? */