diff options
Diffstat (limited to 'sys/alpha')
-rw-r--r-- | sys/alpha/pci/pcibus.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/alpha/pci/pcibus.c b/sys/alpha/pci/pcibus.c index 71a3eb1..58363fa 100644 --- a/sys/alpha/pci/pcibus.c +++ b/sys/alpha/pci/pcibus.c @@ -40,6 +40,7 @@ #include <sys/sysctl.h> #include <sys/rman.h> +#include <pci/pcireg.h> #include <pci/pcivar.h> #include <machine/chipset.h> #include <machine/cpuconf.h> @@ -80,6 +81,8 @@ SYSCTL_LONG(_hw_chipset, OID_AUTO, hae_mask, CTLFLAG_RD, &chipset_hae_mask, 0, int alpha_pci_route_interrupt(device_t bus, device_t dev, int pin) { + int intline = 255; + /* * Validate requested pin number. */ @@ -87,8 +90,10 @@ alpha_pci_route_interrupt(device_t bus, device_t dev, int pin) return(255); if (platform.pci_intr_route) - return(platform.pci_intr_route(bus, dev, pin)); - return(255); + intline = platform.pci_intr_route(bus, dev, pin); + if (intline == 255) + intline = pci_read_config(dev, PCIR_INTLINE, 1); + return intline; } #ifdef DEV_ISA |