summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMichael Shalayeff <mickey@cvs.openbsd.org>2002-05-30 15:52:10 +0000
committerMichael Shalayeff <mickey@cvs.openbsd.org>2002-05-30 15:52:10 +0000
commit09c64776c23fe157e3df8582c8dbb279f8bb72e2 (patch)
tree4b4706af3d6bec2e968f0a4aff3286d88d7d4545 /sys
parent3cdc47b3f6927f8b2a7af91b372963403e1dbdac (diff)
iff pcibios is enabled, record _every_ established pci interrupt
for it will not get reprogrammed for isa later. should help lost and hanging pci interrupts. testing by fries@, krw@, mordin@, philipp@ and others
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/i386/pci/pci_intr_fixup.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/arch/i386/pci/pci_intr_fixup.c b/sys/arch/i386/pci/pci_intr_fixup.c
index da519ee0cf8..465d1bec5c8 100644
--- a/sys/arch/i386/pci/pci_intr_fixup.c
+++ b/sys/arch/i386/pci/pci_intr_fixup.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pci_intr_fixup.c,v 1.23 2002/05/06 18:44:39 mickey Exp $ */
+/* $OpenBSD: pci_intr_fixup.c,v 1.24 2002/05/30 15:52:09 mickey Exp $ */
/* $NetBSD: pci_intr_fixup.c,v 1.10 2000/08/10 21:18:27 soda Exp $ */
/*
@@ -501,6 +501,10 @@ pci_intr_route_link(pc, ihp)
if (pcibios_flags & PCIBIOS_INTR_FIXUP)
return 1;
+ if (ihp->line != 0 &&
+ ihp->line != I386_PCI_INTERRUPT_LINE_NO_CONNECTION)
+ pcibios_pir_header.exclusive_irq |= (1 << ihp->line);
+
l = ihp->link;
if (!l || pciintr_icu_tag == NULL)
return (1);
@@ -570,7 +574,7 @@ pci_intr_post_fixup()
printf("pci_intr_post_fixup: PCI IRQs:");
for (l = SIMPLEQ_FIRST(&pciintr_link_map_list);
l != NULL; l = SIMPLEQ_NEXT(l, list))
- if (l->fixup_stage == 0 &&
+ if (l->fixup_stage == 0 && l->irq != 0 &&
l->irq != I386_PCI_INTERRUPT_LINE_NO_CONNECTION) {
if (pcibios_flags & PCIBIOS_INTRDEBUG)
printf(" %d", l->irq);