diff options
author | n_hibma <n_hibma@FreeBSD.org> | 1999-10-03 20:23:25 +0000 |
---|---|---|
committer | n_hibma <n_hibma@FreeBSD.org> | 1999-10-03 20:23:25 +0000 |
commit | 25dbf33c268e183cf9df85f6e601623b9993925d (patch) | |
tree | da9e27f9f4423429604c5144a4b86a1f0413bcdf /sys/pci/ohci_pci.c | |
parent | 0a7a70c712482a86348df77f1740b58a92c42ea4 (diff) | |
download | FreeBSD-src-25dbf33c268e183cf9df85f6e601623b9993925d.zip FreeBSD-src-25dbf33c268e183cf9df85f6e601623b9993925d.tar.gz |
Check for a valid irq number before calling BUS_SETUP_INTR.
Requested-By: msmith
Diffstat (limited to 'sys/pci/ohci_pci.c')
-rw-r--r-- | sys/pci/ohci_pci.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/pci/ohci_pci.c b/sys/pci/ohci_pci.c index 28dff3e..6c90da4 100644 --- a/sys/pci/ohci_pci.c +++ b/sys/pci/ohci_pci.c @@ -56,7 +56,6 @@ #include <sys/kernel.h> #include <sys/module.h> #include <sys/bus.h> -#include <sys/device.h> #include <sys/proc.h> #include <sys/queue.h> #include <machine/bus.h> @@ -145,6 +144,7 @@ ohci_pci_attach(device_t self) int rid; struct resource *res; void *ih; + int intr; rid = PCI_CBMEM; res = bus_alloc_resource(self, SYS_RES_MEMORY, &rid, @@ -200,6 +200,14 @@ ohci_pci_attach(device_t self) sprintf(sc->sc_vendor, "(unknown)"); } + intr = pci_read_config(self, PCIR_INTLINE, 1); + if (intr == 0 || intr == 255) { + device_printf(self, "Invalid irq %d\n", intr); + device_printf(self, "Please switch on USB support and switch PNP-OS to 'No' in BIOS\n"); + device_delete_child(self, usbus); + return ENXIO; + } + err = BUS_SETUP_INTR(parent, self, res, INTR_TYPE_BIO, (driver_intr_t *) ohci_intr, sc, &ih); if (err) { |