Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/kern mutex_vector_exit: if the arch doesn't have assembl...



details:   https://anonhg.NetBSD.org/src/rev/27ac9e83e1b6
branches:  trunk
changeset: 967498:27ac9e83e1b6
user:      ad <ad%NetBSD.org@localhost>
date:      Wed Dec 11 20:34:06 2019 +0000

description:
mutex_vector_exit: if the arch doesn't have assembly stubs, we need to
unconditionally release the lock if(cold), so mutexes can be used before
interrupts are set up.  Removed with panicstr checks in 1.81.

diffstat:

 sys/kern/kern_mutex.c |  12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diffs (33 lines):

diff -r 496902a28d32 -r 27ac9e83e1b6 sys/kern/kern_mutex.c
--- a/sys/kern/kern_mutex.c     Wed Dec 11 20:19:27 2019 +0000
+++ b/sys/kern/kern_mutex.c     Wed Dec 11 20:34:06 2019 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: kern_mutex.c,v 1.84 2019/12/10 13:36:44 kre Exp $      */
+/*     $NetBSD: kern_mutex.c,v 1.85 2019/12/11 20:34:06 ad Exp $       */
 
 /*-
  * Copyright (c) 2002, 2006, 2007, 2008, 2019 The NetBSD Foundation, Inc.
@@ -40,7 +40,7 @@
 #define        __MUTEX_PRIVATE
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_mutex.c,v 1.84 2019/12/10 13:36:44 kre Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_mutex.c,v 1.85 2019/12/11 20:34:06 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -719,6 +719,14 @@
                return;
        }
 
+#ifndef __HAVE_MUTEX_STUBS
+       if (__predict_false(cold)) {
+               MUTEX_UNLOCKED(mtx);
+               MUTEX_RELEASE(mtx);
+               return;
+       }
+#endif
+
        curthread = (uintptr_t)curlwp;
        MUTEX_DASSERT(mtx, curthread != 0);
        MUTEX_ASSERT(mtx, MUTEX_OWNER(mtx->mtx_owner) == curthread);



Home | Main Index | Thread Index | Old Index