summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2007-06-20 16:50:44 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2007-06-20 16:50:44 +0000
commit796773aef1c85dfd54f8ae6a2fd89459a276b461 (patch)
tree5b834c2b2a5656b62c6f361d452e474c94ba183b /sys/arch
parent7a248a53ae6ca87c8bf92d9b6864d8bebe26bca1 (diff)
Make sure IPL_CLOCK blocks device interrupts.
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/mips64/mips64/interrupt.c11
-rw-r--r--sys/arch/sgi/include/intr.h16
-rw-r--r--sys/arch/sgi/localbus/macebus.c11
3 files changed, 18 insertions, 20 deletions
diff --git a/sys/arch/mips64/mips64/interrupt.c b/sys/arch/mips64/mips64/interrupt.c
index 19a2b952aa7..4b998b155e1 100644
--- a/sys/arch/mips64/mips64/interrupt.c
+++ b/sys/arch/mips64/mips64/interrupt.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: interrupt.c,v 1.28 2007/06/18 20:24:48 miod Exp $ */
+/* $OpenBSD: interrupt.c,v 1.29 2007/06/20 16:50:39 miod Exp $ */
/*
* Copyright (c) 2001-2004 Opsycon AB (www.opsycon.se / www.opsycon.com)
@@ -427,15 +427,14 @@ generic_intr_makemasks()
/*
* There are tty, network and disk drivers that use free() at interrupt
* time, so imp > (tty | net | bio).
- */
- imask[IPL_VM] |= imask[IPL_TTY] | imask[IPL_NET] | imask[IPL_BIO];
-
- /*
+ *
* Enforce a hierarchy that gives slow devices a better chance at not
* dropping data.
*/
- imask[IPL_TTY] |= imask[IPL_NET] | imask[IPL_BIO];
imask[IPL_NET] |= imask[IPL_BIO];
+ imask[IPL_TTY] |= imask[IPL_NET];
+ imask[IPL_VM] |= imask[IPL_TTY];
+ imask[IPL_CLOCK] |= imask[IPL_VM] | SPL_CLOCKMASK;
/*
* These are pseudo-levels.
diff --git a/sys/arch/sgi/include/intr.h b/sys/arch/sgi/include/intr.h
index e1e812202a2..16c3de6d5f7 100644
--- a/sys/arch/sgi/include/intr.h
+++ b/sys/arch/sgi/include/intr.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: intr.h,v 1.17 2007/05/07 18:42:13 kettenis Exp $ */
+/* $OpenBSD: intr.h,v 1.18 2007/06/20 16:50:41 miod Exp $ */
/*
* Copyright (c) 2001-2004 Opsycon AB (www.opsycon.se / www.opsycon.com)
@@ -52,13 +52,13 @@
/* Interrupt priority `levels'; not mutually exclusive. */
-#define IPL_BIO 0 /* block I/O */
+#define IPL_NONE 0 /* nothing */
+#define IPL_BIO 1 /* block I/O */
#define IPL_AUDIO IPL_BIO
-#define IPL_NET 1 /* network */
-#define IPL_TTY 2 /* terminal */
-#define IPL_VM 3 /* memory allocation */
-#define IPL_CLOCK 4 /* clock */
-#define IPL_NONE 5 /* nothing */
+#define IPL_NET 2 /* network */
+#define IPL_TTY 3 /* terminal */
+#define IPL_VM 4 /* memory allocation */
+#define IPL_CLOCK 5 /* clock */
#define IPL_HIGH 6 /* everything */
#define NIPLS 7 /* Number of levels */
@@ -85,7 +85,7 @@
#define splnet() splraise(imask[IPL_NET])
#define spltty() splraise(imask[IPL_TTY])
#define splaudio() splraise(imask[IPL_AUDIO])
-#define splclock() splraise(SPL_CLOCKMASK|SINT_ALLMASK)
+#define splclock() splraise(imask[IPL_CLOCK])
#define splvm() splraise(imask[IPL_VM])
#define splsoftclock() splraise(SINT_CLOCKMASK)
#define splsoftnet() splraise(SINT_NETMASK|SINT_CLOCKMASK)
diff --git a/sys/arch/sgi/localbus/macebus.c b/sys/arch/sgi/localbus/macebus.c
index 695ea79c46a..ca1f67e06f7 100644
--- a/sys/arch/sgi/localbus/macebus.c
+++ b/sys/arch/sgi/localbus/macebus.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: macebus.c,v 1.22 2007/06/18 20:24:50 miod Exp $ */
+/* $OpenBSD: macebus.c,v 1.23 2007/06/20 16:50:43 miod Exp $ */
/*
* Copyright (c) 2000-2004 Opsycon AB (www.opsycon.se)
@@ -560,15 +560,14 @@ macebus_intr_makemasks(void)
/*
* There are tty, network and disk drivers that use free() at interrupt
* time, so imp > (tty | net | bio).
- */
- imask[IPL_VM] |= imask[IPL_TTY] | imask[IPL_NET] | imask[IPL_BIO];
-
- /*
+ *
* Enforce a hierarchy that gives slow devices a better chance at not
* dropping data.
*/
- imask[IPL_TTY] |= imask[IPL_NET] | imask[IPL_BIO];
imask[IPL_NET] |= imask[IPL_BIO];
+ imask[IPL_TTY] |= imask[IPL_NET];
+ imask[IPL_VM] |= imask[IPL_TTY];
+ imask[IPL_CLOCK] |= imask[IPL_VM] | SPL_CLOCKMASK;
/*
* These are pseudo-levels.