summaryrefslogtreecommitdiff
path: root/sys/dev/pci/pciide.c
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2012-03-13 21:32:43 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2012-03-13 21:32:43 +0000
commit6c1ac428f59679642eb71703006dfe35995931d8 (patch)
tree5744b73f1858a19386cc636922e068381bafdeb8 /sys/dev/pci/pciide.c
parentd1791e07d87a07e63b341f75626b0f2baa0e0815 (diff)
Don't call wdcintr() for channels that aren't properly initialized or don't
have any drives on them. Fixes a panic seen on sparc64 machines with that pesky Acer Labs chipset. ok deraadt@, krw@, henning@
Diffstat (limited to 'sys/dev/pci/pciide.c')
-rw-r--r--sys/dev/pci/pciide.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/pci/pciide.c b/sys/dev/pci/pciide.c
index 475345bba18..545358db0d5 100644
--- a/sys/dev/pci/pciide.c
+++ b/sys/dev/pci/pciide.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pciide.c,v 1.337 2012/01/15 15:16:23 jsg Exp $ */
+/* $OpenBSD: pciide.c,v 1.338 2012/03/13 21:32:42 kettenis Exp $ */
/* $NetBSD: pciide.c,v 1.127 2001/08/03 01:31:08 tsutsui Exp $ */
/*
@@ -1838,6 +1838,9 @@ pciide_pci_intr(void *arg)
if (cp->compat)
continue;
+ if (cp->hw_ok == 0)
+ continue;
+
if (pciide_intr_flag(cp) == 0)
continue;