summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>2001-10-05 10:33:42 +0000
committerdfr <dfr@FreeBSD.org>2001-10-05 10:33:42 +0000
commit81e5993d60eb0bf98668873b8b2427f3f6533a12 (patch)
tree2d88600a829b29849806308a4c99238bd97b5c51 /sys/dev
parent8d0fc6ad6955dfd69396e60898c60b37b3ebd01e (diff)
downloadFreeBSD-src-81e5993d60eb0bf98668873b8b2427f3f6533a12.zip
FreeBSD-src-81e5993d60eb0bf98668873b8b2427f3f6533a12.tar.gz
Re-route interrupts on ia64 so that we can get the I/O SAPIC interrupt
numbers (the BIOS leaves legacy PIC interrupt numbers in the intline registers).
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/pci/pci.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c
index b24b391..35ad744 100644
--- a/sys/dev/pci/pci.c
+++ b/sys/dev/pci/pci.c
@@ -747,9 +747,20 @@ pci_add_resources(device_t pcib, int b, int s, int f, device_t dev)
pci_add_map(pcib, b, s, f, q->arg1, rl);
}
- if (cfg->intpin > 0 && cfg->intline != 255)
+ if (cfg->intpin > 0 && cfg->intline != 255) {
+#ifdef __ia64__
+ /*
+ * Re-route interrupts on ia64 so that we can get the
+ * I/O SAPIC interrupt numbers (the BIOS leaves legacy
+ * PIC interrupt numbers in the intline registers).
+ */
+ cfg->intline = PCIB_ROUTE_INTERRUPT(pcib,
+ dev,
+ cfg->intpin);
+#endif
resource_list_add(rl, SYS_RES_IRQ, 0,
cfg->intline, cfg->intline, 1);
+ }
}
static void
OpenPOWER on IntegriCloud