Patchwork [3/3] sparc64: use direct interrupt mapping for PCI devices

login
register
mail settings
Submitter Artyom Tarasenko
Date April 27, 2013, 5:55 a.m.
Message ID <34aa76c8608984ca537823062c0192a4f30218a2.1366987353.git.atar4qemu@gmail.com>
Download mbox | patch
Permalink /patch/240079/
State New
Headers show

Comments

Artyom Tarasenko - April 27, 2013, 5:55 a.m.
Every PCI Slot in PBM has 4 directly mapped IRQ lines.
Use the IRQ routing schema 0bssnn (Bus, Slot, interrupt Number)
described in Section 19.3.3 of UltraSPARCâ„¢-IIi User's Manual.

Please note that this patch requires the OpenBIOS counterpart patch.

Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
---
 hw/pci-host/apb.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Patch

diff --git a/hw/pci-host/apb.c b/hw/pci-host/apb.c
index 356853a..93ce46d 100644
--- a/hw/pci-host/apb.c
+++ b/hw/pci-host/apb.c
@@ -365,7 +365,7 @@  static int pci_pbm_map_irq(PCIDevice *pci_dev, int irq_num)
         bus_offset = 16;
     else
         bus_offset = 0;
-    return bus_offset + irq_num;
+    return (bus_offset + (PCI_SLOT(pci_dev->devfn) << 2) + irq_num) & 0x1f;
 }
 
 static void pci_apb_set_irq(void *opaque, int irq_num, int level)