summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2000-11-15 19:44:38 +0000
committerjhb <jhb@FreeBSD.org>2000-11-15 19:44:38 +0000
commit4b3e3264c701b8386027335c7428b02b92941ac7 (patch)
treec93c21886b38260bec043baa83b6ef5a264942a0 /sys
parent3303fdc1ee03c22b41f5f1a946b6b737b4e2f8e4 (diff)
downloadFreeBSD-src-4b3e3264c701b8386027335c7428b02b92941ac7.zip
FreeBSD-src-4b3e3264c701b8386027335c7428b02b92941ac7.tar.gz
Don't perform an mi_switch() when we release Giant during cpu_exit(). We
are about to call cpu_switch() anyways. Found by: witness
Diffstat (limited to 'sys')
-rw-r--r--sys/alpha/alpha/vm_machdep.c3
-rw-r--r--sys/ia64/ia64/vm_machdep.c3
-rw-r--r--sys/powerpc/aim/vm_machdep.c3
-rw-r--r--sys/powerpc/powerpc/vm_machdep.c3
4 files changed, 8 insertions, 4 deletions
diff --git a/sys/alpha/alpha/vm_machdep.c b/sys/alpha/alpha/vm_machdep.c
index f260a26..0aff5a9 100644
--- a/sys/alpha/alpha/vm_machdep.c
+++ b/sys/alpha/alpha/vm_machdep.c
@@ -255,7 +255,8 @@ cpu_exit(p)
(void) splhigh();
mtx_enter(&sched_lock, MTX_SPIN);
- mtx_exit(&Giant, MTX_DEF);
+ mtx_exit(&Giant, MTX_DEF | MTX_NOSWITCH);
+ mtx_assert(&Giant, MA_NOTOWNED);
cnt.v_swtch++;
cpu_switch();
panic("cpu_exit");
diff --git a/sys/ia64/ia64/vm_machdep.c b/sys/ia64/ia64/vm_machdep.c
index 1c57552..c1cbf50 100644
--- a/sys/ia64/ia64/vm_machdep.c
+++ b/sys/ia64/ia64/vm_machdep.c
@@ -304,7 +304,8 @@ cpu_exit(p)
(void) splhigh();
mtx_enter(&sched_lock, MTX_SPIN);
- mtx_exit(&Giant, MTX_DEF);
+ mtx_exit(&Giant, MTX_DEF | MTX_NOSWITCH);
+ mtx_assert(&Giant, MA_NOTOWNED);
cnt.v_swtch++;
cpu_switch();
panic("cpu_exit");
diff --git a/sys/powerpc/aim/vm_machdep.c b/sys/powerpc/aim/vm_machdep.c
index f260a26..0aff5a9 100644
--- a/sys/powerpc/aim/vm_machdep.c
+++ b/sys/powerpc/aim/vm_machdep.c
@@ -255,7 +255,8 @@ cpu_exit(p)
(void) splhigh();
mtx_enter(&sched_lock, MTX_SPIN);
- mtx_exit(&Giant, MTX_DEF);
+ mtx_exit(&Giant, MTX_DEF | MTX_NOSWITCH);
+ mtx_assert(&Giant, MA_NOTOWNED);
cnt.v_swtch++;
cpu_switch();
panic("cpu_exit");
diff --git a/sys/powerpc/powerpc/vm_machdep.c b/sys/powerpc/powerpc/vm_machdep.c
index f260a26..0aff5a9 100644
--- a/sys/powerpc/powerpc/vm_machdep.c
+++ b/sys/powerpc/powerpc/vm_machdep.c
@@ -255,7 +255,8 @@ cpu_exit(p)
(void) splhigh();
mtx_enter(&sched_lock, MTX_SPIN);
- mtx_exit(&Giant, MTX_DEF);
+ mtx_exit(&Giant, MTX_DEF | MTX_NOSWITCH);
+ mtx_assert(&Giant, MA_NOTOWNED);
cnt.v_swtch++;
cpu_switch();
panic("cpu_exit");
OpenPOWER on IntegriCloud