diff options
author | 2015-07-18 00:27:44 +0000 | |
---|---|---|
committer | 2015-07-18 00:27:44 +0000 | |
commit | 7da6f2ba350a5f9ee6db29892cdacc7dbc4eb0af (patch) | |
tree | 0cae1b326114ff6bfb32e7024015d85be049812a | |
parent | Better track connected routes similar to bgpd/ospfd. (diff) | |
download | wireguard-openbsd-7da6f2ba350a5f9ee6db29892cdacc7dbc4eb0af.tar.xz wireguard-openbsd-7da6f2ba350a5f9ee6db29892cdacc7dbc4eb0af.zip |
Correctly set up interrupts; now the kernel no longer get stuck with an SCSI
interrupt storm at the end of autoconf.
-rw-r--r-- | sys/arch/alpha/pci/pci_alphabook1.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/sys/arch/alpha/pci/pci_alphabook1.c b/sys/arch/alpha/pci/pci_alphabook1.c index 7a036db50d8..832b71828b9 100644 --- a/sys/arch/alpha/pci/pci_alphabook1.c +++ b/sys/arch/alpha/pci/pci_alphabook1.c @@ -143,10 +143,9 @@ dec_alphabook1_intr_map(struct pci_attach_args *pa, pci_decompose_tag(pc, bustag, NULL, &device, NULL); /* - * There is only one interrupting PCI device on the AlphaBook: an - * NCR SCSI at device 6. Devices 7 and 8 are the SIO and a - * Cirrus PD6729 PCMCIA controller. There are no option slots - * available. + * There are only two interrupting PCI devices on the AlphaBook: + * the SCSI and PCMCIA controllers. The other PCI device is the + * SIO, and there are no option slots available. * * NOTE! Apparently, there was a later AlphaBook which uses * a different interrupt scheme, and has a built-in Tulip Ethernet @@ -157,10 +156,10 @@ dec_alphabook1_intr_map(struct pci_attach_args *pa, case 6: /* NCR SCSI */ irq = 14; break; - + case 8: /* Cirrus CL-PD6729 */ + irq = 15; + break; default: - printf("dec_alphabook1_intr_map: weird device number %d\n", - device); return 1; } @@ -184,7 +183,11 @@ void * dec_alphabook1_intr_establish(void *lcv, pci_intr_handle_t ih, int level, int (*func)(void *), void *arg, const char *name) { - return sio_intr_establish(NULL /*XXX*/, ih, IST_LEVEL, level, func, + /* + * PCI interrupts on that platform are ISA interrupts in disguise, + * and are edge- rather than level-triggered. + */ + return sio_intr_establish(NULL /*XXX*/, ih, IST_EDGE, level, func, arg, name); } |